diff --git a/.github/.markdownlint.yaml b/.github/.markdownlint.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6a93d89c46ad4601505dd75ac252816fa4af5c40
--- /dev/null
+++ b/.github/.markdownlint.yaml
@@ -0,0 +1,210 @@
+# Default state for all rules
+default: true
+
+# Path to configuration file to extend
+extends: null
+
+# MD001/heading-increment/header-increment - Heading levels should only increment by one level at a time
+MD001: true
+
+# MD002/first-heading-h1/first-header-h1 - First heading should be a top-level heading
+MD002:
+ # Heading level
+ level: 1
+
+# MD003/heading-style/header-style - Heading style
+MD003:
+ # Heading style
+ style: "consistent"
+
+# MD004/ul-style - Unordered list style
+MD004:
+ # List style
+ style: "consistent"
+
+# MD005/list-indent - Inconsistent indentation for list items at the same level
+MD005: false
+
+# MD006/ul-start-left - Consider starting bulleted lists at the beginning of the line
+MD006: false
+
+# MD007/ul-indent - Unordered list indentation
+MD007: false
+
+# MD009/no-trailing-spaces - Trailing spaces
+MD009:
+ # Spaces for line break
+ br_spaces: 2
+ # Allow spaces for empty lines in list items
+ list_item_empty_lines: false
+ # Include unnecessary breaks
+ strict: false
+
+# MD010/no-hard-tabs - Hard tabs
+MD010: false
+
+# MD011/no-reversed-links - Reversed link syntax
+MD011: true
+
+# MD012/no-multiple-blanks - Multiple consecutive blank lines
+MD012:
+ # Consecutive blank lines
+ maximum: 2
+
+# MD013/line-length - Line length
+MD013:
+ # Number of characters
+ line_length: 120
+ # Number of characters for headings
+ heading_line_length: 120
+ # Number of characters for code blocks
+ code_block_line_length: 150
+ # Include code blocks
+ code_blocks: true
+ # Include tables
+ tables: true
+ # Include headings
+ headings: true
+ # Include headings
+ headers: true
+ # Strict length checking
+ strict: false
+ # Stern length checking
+ stern: false
+
+# MD014/commands-show-output - Dollar signs used before commands without showing output
+MD014: true
+
+# MD018/no-missing-space-atx - No space after hash on atx style heading
+MD018: true
+
+# MD019/no-multiple-space-atx - Multiple spaces after hash on atx style heading
+MD019: true
+
+# MD020/no-missing-space-closed-atx - No space inside hashes on closed atx style heading
+MD020: true
+
+# MD021/no-multiple-space-closed-atx - Multiple spaces inside hashes on closed atx style heading
+MD021: true
+
+# MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines
+MD022: false
+
+# MD023/heading-start-left/header-start-left - Headings must start at the beginning of the line
+MD023: true
+
+# MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content
+MD024: false
+
+# MD025/single-title/single-h1 - Multiple top-level headings in the same document
+MD025: false
+
+# MD026/no-trailing-punctuation - Trailing punctuation in heading
+MD026:
+ # Punctuation characters
+ punctuation: ".,;:!。,;:!"
+
+# MD027/no-multiple-space-blockquote - Multiple spaces after blockquote symbol
+MD027: true
+
+# MD028/no-blanks-blockquote - Blank line inside blockquote
+MD028: true
+
+# MD029/ol-prefix - Ordered list item prefix
+MD029:
+ # List style
+ style: "one_or_ordered"
+
+# MD030/list-marker-space - Spaces after list markers
+MD030:
+ # Spaces for single-line unordered list items
+ ul_single: 1
+ # Spaces for single-line ordered list items
+ ol_single: 1
+ # Spaces for multi-line unordered list items
+ ul_multi: 1
+ # Spaces for multi-line ordered list items
+ ol_multi: 1
+
+# MD031/blanks-around-fences - Fenced code blocks should be surrounded by blank lines
+MD031: false
+
+# MD032/blanks-around-lists - Lists should be surrounded by blank lines
+MD032: false
+
+# MD033/no-inline-html - Inline HTML
+MD033: false
+
+# MD034/no-bare-urls - Bare URL used
+MD034: false
+
+# MD035/hr-style - Horizontal rule style
+MD035:
+ # Horizontal rule style
+ style: "consistent"
+
+# MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading
+MD036: false
+
+# MD037/no-space-in-emphasis - Spaces inside emphasis markers
+MD037: true
+
+# MD038/no-space-in-code - Spaces inside code span elements
+MD038: true
+
+# MD039/no-space-in-links - Spaces inside link text
+MD039: true
+
+# MD040/fenced-code-language - Fenced code blocks should have a language specified
+MD040: false
+
+# MD041/first-line-heading/first-line-h1 - First line in a file should be a top-level heading
+MD041: false
+
+# MD042/no-empty-links - No empty links
+MD042: true
+
+# MD043/required-headings/required-headers - Required heading structure
+MD043: false
+
+# MD044/proper-names - Proper names should have the correct capitalization
+MD044:
+ # List of proper names
+ names: ["Polkadot", "Substrate", "Cumulus", "Parity"]
+ # Include code blocks
+ code_blocks: false
+ # Include HTML elements
+ html_elements: false
+
+# MD045/no-alt-text - Images should have alternate text (alt text)
+MD045: false
+
+# MD046/code-block-style - Code block style
+MD046:
+ # Block style
+ style: "consistent"
+
+# MD047/single-trailing-newline - Files should end with a single newline character
+MD047: true
+
+# MD048/code-fence-style - Code fence style
+MD048:
+ # Code fence style
+ style: "consistent"
+
+# MD049/emphasis-style - Emphasis style should be consistent
+MD049: false
+
+# MD050/strong-style - Strong style should be consistent
+MD050:
+ # Strong style
+ style: "consistent"
+
+# MD051/link-fragments - Link fragments should be valid
+MD051: false
+
+# MD052/reference-links-images - Reference links and images should use a label that is defined
+MD052: false
+
+# MD053/link-image-reference-definitions - Link and image reference definitions should be needed
+MD053: false
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3277a6e4607a74b2b59e24fce951e68c8703fcfc
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,27 @@
+version: 2
+updates:
+ # Update github actions:
+ - package-ecosystem: github-actions
+ directory: '/'
+ labels: ["A1-insubstantial", "R0-silent"]
+ schedule:
+ interval: daily
+ # Update Rust dependencies:
+ - package-ecosystem: "cargo"
+ directory: "/"
+ labels: ["A1-insubstantial", "R0-silent"]
+ schedule:
+ interval: "daily"
+ groups:
+ # We assume these crates to be semver abiding and can therefore group them together.
+ known_good_semver:
+ patterns:
+ - "syn"
+ - "quote"
+ - "log"
+ - "paste"
+ - "*serde*"
+ - "clap"
+ update-types:
+ - "minor"
+ - "patch"
diff --git a/.github/pr-custom-review.yml b/.github/pr-custom-review.yml
index a453336bddb65aaf1a361b5c6e8de75f0e80f299..bc9a3cfb8d25f4af8d9cdd7f3b0d654839e8b4d6 100644
--- a/.github/pr-custom-review.yml
+++ b/.github/pr-custom-review.yml
@@ -14,28 +14,12 @@ rules:
- ci
- release-engineering
- - name: Audit rules
- check_type: changed_files
- condition:
- include: ^polkadot/runtime\/(kusama|polkadot|common)\/.*|^polkadot/primitives/src\/.+\.rs$|^substrate/primitives/.*|^substrate/frame/.*
- exclude: ^polkadot/runtime\/(kusama|polkadot)\/src\/weights\/.+\.rs$|^substrate\/frame\/.+\.md$
- all_distinct:
- - min_approvals: 1
- teams:
- - locks-review
- - min_approvals: 1
- teams:
- - polkadot-review
- - min_approvals: 1
- teams:
- - srlabs
-
- name: Core developers
check_type: changed_files
condition:
include: .*
# excluding files from 'Runtime files' and 'CI files' rules
- exclude: ^polkadot/runtime/(kusama|polkadot)/src/[^/]+\.rs$|^cumulus/parachains/runtimes/assets/(asset-hub-kusama|asset-hub-polkadot)/src/[^/]+\.rs$|^cumulus/parachains/runtimes/bridge-hubs/(bridge-hub-kusama|bridge-hub-polkadot)/src/[^/]+\.rs$|^cumulus/parachains/runtimes/collectives/collectives-polkadot/src/[^/]+\.rs$|^cumulus/parachains/common/src/[^/]+\.rs$|^substrate/frame/(?!.*(nfts/.*|uniques/.*|babe/.*|grandpa/.*|beefy|merkle-mountain-range/.*|contracts/.*|election|nomination-pools/.*|staking/.*|aura/.*))|^polkadot/runtime/(kusama|polkadot)/src/[^/]+\.rs$|^\.gitlab-ci\.yml|^(?!.*\.dic$|.*spellcheck\.toml$)scripts/ci/.*|^\.github/.*
+ exclude: ^polkadot/runtime/(kusama|polkadot)/src/[^/]+\.rs$|^cumulus/parachains/runtimes/assets/(asset-hub-kusama|asset-hub-polkadot)/src/[^/]+\.rs$|^cumulus/parachains/runtimes/bridge-hubs/(bridge-hub-kusama|bridge-hub-polkadot)/src/[^/]+\.rs$|^cumulus/parachains/runtimes/collectives/collectives-polkadot/src/[^/]+\.rs$|^cumulus/parachains/common/src/[^/]+\.rs$|^substrate/frame/(?!.*(nfts/.*|uniques/.*|babe/.*|grandpa/.*|beefy|merkle-mountain-range/.*|contracts/.*|election|nomination-pools/.*|staking/.*|aura/.*))|^polkadot/runtime/(kusama|polkadot)/src/[^/]+\.rs$|^\.gitlab-ci\.yml|^docker/.*|^\.github/.*|^\.gitlab/.*|^\.config/nextest.toml|^\.cargo/.*
min_approvals: 2
teams:
- core-devs
diff --git a/polkadot/scripts/ci/common/lib.sh b/.github/scripts/common/lib.sh
similarity index 98%
rename from polkadot/scripts/ci/common/lib.sh
rename to .github/scripts/common/lib.sh
index e490ec22d5bf4f845c6c662122f8849b0f39d534..b0f9cb32063a43cda58d2e6e8f25e0ff66a134eb 100755
--- a/polkadot/scripts/ci/common/lib.sh
+++ b/.github/scripts/common/lib.sh
@@ -201,6 +201,7 @@ check_bootnode(){
fetch_release_artifacts() {
echo "Release ID : $RELEASE_ID"
echo "Repo : $REPO"
+ echo "Binary : $BINARY"
curl -L -s \
-H "Accept: application/vnd.github+json" \
@@ -213,8 +214,8 @@ fetch_release_artifacts() {
count=$(jq '.assets|length' < release.json )
# Fetch artifacts
- mkdir -p "./release-artifacts"
- pushd "./release-artifacts" > /dev/null
+ mkdir -p "./release-artifacts/${BINARY}"
+ pushd "./release-artifacts/${BINARY}" > /dev/null
iter=1
for id in "${ids[@]}"
diff --git a/.github/workflows/check-licenses.yml b/.github/workflows/check-licenses.yml
index e0bdf908a167f80a9de53d116a108542506077e4..4d0afefc47aace08bff9af796f9fb9c30dee99a7 100644
--- a/.github/workflows/check-licenses.yml
+++ b/.github/workflows/check-licenses.yml
@@ -9,28 +9,37 @@ permissions:
jobs:
check-licenses:
runs-on: ubuntu-22.04
- strategy:
- fail-fast: false
- matrix:
- repo: [polkadot, substrate, cumulus]
+ env:
+ LICENSES: "'Apache-2.0' 'GPL-3.0-only' 'GPL-3.0-or-later WITH Classpath-exception-2.0'"
+ NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout sources
- uses: actions/checkout@v3
+ uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- uses: actions/setup-node@v3.8.1
with:
node-version: "18.x"
registry-url: "https://npm.pkg.github.com"
scope: "@paritytech"
- - name: Check the licenses for ${{ matrix.repo }}
+
+ - name: Check the licenses in Polkadot
run: |
shopt -s globstar
- echo "install"
- npm install -g @paritytech/license-scanner@0.0.5
- echo "run for ${{ matrix.repo }}"
- cd ${{ matrix.repo }}
npx @paritytech/license-scanner scan \
- --ensure-licenses=Apache-2.0 \
- --ensure-licenses=GPL-3.0-only \
- ./**/*.rs
- env:
- NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ --ensure-licenses ${{ env.LICENSES }} \
+ -- ./polkadot/**/*.rs
+
+ - name: Check the licenses in Cumulus
+ run: |
+ shopt -s globstar
+ npx @paritytech/license-scanner scan \
+ --ensure-licenses ${{ env.LICENSES }} \
+ --exclude ./cumulus/parachain-template \
+ -- ./cumulus/**/*.rs
+
+ - name: Check the licenses in Substrate
+ run: |
+ shopt -s globstar
+ npx @paritytech/license-scanner scan \
+ --ensure-licenses ${{ env.LICENSES }} \
+ --exclude ./substrate/bin/node-template \
+ -- ./substrate/**/*.rs
diff --git a/.github/workflows/check-markdown.yml b/.github/workflows/check-markdown.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f1e46ca273515d9081f9c5a7f6b8b4ff902c444a
--- /dev/null
+++ b/.github/workflows/check-markdown.yml
@@ -0,0 +1,33 @@
+name: Check Markdown
+
+on:
+ pull_request:
+ types: [opened, synchronize, reopened, ready_for_review]
+
+permissions:
+ packages: read
+
+jobs:
+ lint-markdown:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout sources
+ uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
+
+ - uses: actions/setup-node@v3.8.1
+ with:
+ node-version: "18.x"
+ registry-url: "https://npm.pkg.github.com"
+ scope: "@paritytech"
+
+ - name: Install tooling
+ run: |
+ npm install -g markdownlint-cli
+ markdownlint --version
+
+ - name: Check Markdown
+ env:
+ CONFIG: .github/.markdownlint.yaml
+ run: |
+ markdownlint --config "$CONFIG" --ignore target .
diff --git a/.github/workflows/check-prdoc.yml b/.github/workflows/check-prdoc.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d153184941ac1e05f341ae49c4c8d4e212c0d85b
--- /dev/null
+++ b/.github/workflows/check-prdoc.yml
@@ -0,0 +1,49 @@
+name: Check PRdoc
+
+on:
+ pull_request:
+ types: [labeled, opened, synchronize, unlabeled]
+
+env:
+ IMAGE: paritytech/prdoc:latest
+ API_BASE: https://api.github.com/repos
+ REPO: ${{ github.repository }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GITHUB_PR: ${{ github.event.pull_request.number }}
+ MOUNT: /prdoc
+ ENGINE: docker
+
+jobs:
+ check-prdoc:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Pull image
+ run: |
+ echo "Pulling $IMAGE"
+ docker pull $IMAGE
+ docker run --rm $IMAGE --version
+
+ - name: Check if PRdoc is required
+ id: get-labels
+ run: |
+ # Fetch the labels for the PR under test
+ echo "Fetch the labels for $API_BASE/${REPO}/pulls/${GITHUB_PR}"
+ labels=$( curl -H "Authorization: token ${GITHUB_TOKEN}" -s "$API_BASE/${REPO}/pulls/${GITHUB_PR}" | jq '.labels | .[] | .name' | tr "\n" ",")
+ echo "Labels: ${labels}"
+ echo "labels=${labels}" >> "$GITHUB_OUTPUT"
+
+ - name: No PRdoc required
+ if: ${{ contains(steps.get-labels.outputs.labels, 'R0') }}
+ run: |
+ echo "PR detected as silent, no PRdoc is required, exiting..."
+ exit 0
+
+ - name: Checkout repo
+ if: ${{ !contains(steps.get-labels.outputs.labels, 'R0') }}
+ uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac #v4.0.0
+
+ - name: PRdoc check for PR#${{ github.event.pull_request.number }}
+ if: ${{ !contains(steps.get-labels.outputs.labels, 'R0') }}
+ run: |
+ echo "Checking for PR#${GITHUB_PR} in $MOUNT"
+ $ENGINE run --rm -v $PWD/prdoc:/doc $IMAGE check -n ${GITHUB_PR} || true
diff --git a/.github/workflows/fmt-check.yml b/.github/workflows/fmt-check.yml
index fd4b72061b925dfb3f6e4193a6b1fb97c0de75d8..df785404036e138c78cf1818620dd9db8c30a243 100644
--- a/.github/workflows/fmt-check.yml
+++ b/.github/workflows/fmt-check.yml
@@ -16,7 +16,7 @@ jobs:
container:
image: paritytech/ci-unified:bullseye-1.70.0-2023-05-23-v20230706
steps:
- - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- name: Cargo fmt
run: cargo +nightly fmt --all -- --check
diff --git a/cumulus/.github/workflows/release-50_publish-docker.yml b/.github/workflows/release-50_publish-docker.yml
similarity index 57%
rename from cumulus/.github/workflows/release-50_publish-docker.yml
rename to .github/workflows/release-50_publish-docker.yml
index 6ad943c3903ca597b38dedf64061e62a6c39cf6e..512b91aa6e55450a7277bc01ea29f174e960d749 100644
--- a/cumulus/.github/workflows/release-50_publish-docker.yml
+++ b/.github/workflows/release-50_publish-docker.yml
@@ -7,9 +7,10 @@ name: Release - Publish Docker Image
# image and publishes it.
on:
- release:
- types:
- - published
+ #TODO: activate automated run later
+ # release:
+ # types:
+ # - published
workflow_dispatch:
inputs:
release_id:
@@ -39,6 +40,18 @@ on:
required: true
type: string
default: parity
+ binary:
+ description: Binary to be published
+ required: true
+ default: polkadot
+ type: choice
+ options:
+ - polkadot
+ - staking-miner
+ - polkadot-parachain
+
+permissions:
+ contents: write
env:
RELEASE_ID: ${{ inputs.release_id }}
@@ -47,8 +60,8 @@ env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCKER_OWNER: ${{ inputs.owner || github.repository_owner }}
REPO: ${{ github.repository }}
- BINARY: polkadot-parachain
- EVENT_ACTION: ${{ github.event.action }}
+ BINARY: ${{ inputs.binary }}
+ # EVENT_ACTION: ${{ github.event.action }}
EVENT_NAME: ${{ github.event_name }}
IMAGE_TYPE: ${{ inputs.image_type }}
@@ -58,59 +71,36 @@ jobs:
steps:
- name: Checkout sources
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
-
- - name: Prepare temp folder
- run: |
- TMP=$(mktemp -d)
- echo "TMP=$TMP" >> "$GITHUB_ENV"
- pwd
- ls -al "$TMP"
+ uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- - name: Fetch lib.sh from polkadot repo
- working-directory: ${{ env.TMP }}
- run: |
- curl -O -L \
- -H "Accept: application/vnd.github.v3.raw" \
- https://raw.githubusercontent.com/paritytech/polkadot/master/scripts/ci/common/lib.sh
-
- chmod a+x lib.sh
- ls -al
-
- - name: Fetch release artifacts based on final release tag
+ #TODO: this step will be needed when automated triggering will work
#this step runs only if the workflow is triggered automatically when new release is published
- if: ${{ env.EVENT_NAME == 'release' && env.EVENT_ACTION != '' && env.EVENT_ACTION == 'published' }}
- run: |
- mkdir -p release-artifacts && cd release-artifacts
-
- for f in $BINARY $BINARY.asc $BINARY.sha256; do
- URL="https://github.com/${{ github.event.repository.full_name }}/releases/download/${{ github.event.release.tag_name }}/$f"
- echo " - Fetching $f from $URL"
- wget "$URL" -O "$f"
- done
- chmod a+x $BINARY
- cp -f ${TMP}/lib.sh .
- ls -al
+ # if: ${{ env.EVENT_NAME == 'release' && env.EVENT_ACTION != '' && env.EVENT_ACTION == 'published' }}
+ # run: |
+ # mkdir -p release-artifacts && cd release-artifacts
+
+ # for f in $BINARY $BINARY.asc $BINARY.sha256; do
+ # URL="https://github.com/${{ github.event.repository.full_name }}/releases/download/${{ github.event.release.tag_name }}/$f"
+ # echo " - Fetching $f from $URL"
+ # wget "$URL" -O "$f"
+ # done
+ # chmod a+x $BINARY
+ # ls -al
- name: Fetch rc artifacts or release artifacts based on release id
#this step runs only if the workflow is triggered manually
if: ${{ env.EVENT_NAME == 'workflow_dispatch' }}
run: |
- . ${TMP}/lib.sh
+ . ./.github/scripts/common/lib.sh
fetch_release_artifacts
- chmod a+x release-artifacts/$BINARY
- ls -al
-
- cp -f ${TMP}/lib.sh release-artifacts/
-
- name: Cache the artifacts
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
+ uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
with:
- key: artifacts-${{ github.sha }}
+ key: artifacts-${{ env.BINARY }}-${{ github.sha }}
path: |
- ./release-artifacts/**/*
+ ./release-artifacts/${{ env.BINARY }}/**/*
build-container:
runs-on: ubuntu-latest
@@ -118,40 +108,31 @@ jobs:
steps:
- name: Checkout sources
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- name: Get artifacts from cache
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
+ uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2
with:
- key: artifacts-${{ github.sha }}
+ key: artifacts-${{ env.BINARY }}-${{ github.sha }}
fail-on-cache-miss: true
path: |
- ./release-artifacts/**/*
+ ./release-artifacts/${{ env.BINARY }}/**/*
- name: Check sha256 ${{ env.BINARY }}
- working-directory: ./release-artifacts
+ working-directory: ./release-artifacts/${{ env.BINARY }}
run: |
- . ./lib.sh
+ . ../../.github/scripts/common/lib.sh
echo "Checking binary $BINARY"
check_sha256 $BINARY && echo "OK" || echo "ERR"
- name: Check GPG ${{ env.BINARY }}
- working-directory: ./release-artifacts
+ working-directory: ./release-artifacts/${{ env.BINARY }}
run: |
- . ./lib.sh
+ . ../../.github/scripts/common/lib.sh
import_gpg_keys
check_gpg $BINARY
- - name: Build Injected Container image for ${{ env.BINARY }}
- env:
- IMAGE_NAME: ${{ env.BINARY }}
- OWNER: ${{ env.DOCKER_OWNER }}
- run: |
- ls -al
- echo "Building container for $BINARY"
- ./docker/scripts/build-injected-image.sh
-
- name: Fetch rc commit and tag
if: ${{ env.IMAGE_TYPE == 'rc' }}
id: fetch_rc_refs
@@ -167,14 +148,43 @@ jobs:
echo "No tag, doing without"
- name: Fetch release tags
- if: ${{ env.IMAGE_TYPE == 'release' || env.EVENT_NAME == 'release' && env.EVENT_ACTION != '' && env.EVENT_ACTION == 'published' }}
+ working-directory: ./release-artifacts/${{ env.BINARY }}
+ if: ${{ env.IMAGE_TYPE == 'release'}}
id: fetch_release_refs
run: |
- VERSION=$(docker run --pull never --rm $DOCKER_OWNER/$BINARY --version | awk '{ print $2 }' )
+ chmod a+rx $BINARY
+ VERSION=$(./$BINARY --version | awk '{ print $2 }' )
release=$( echo $VERSION | cut -f1 -d- )
echo "tag=latest" >> $GITHUB_OUTPUT
echo "release=${release}" >> $GITHUB_OUTPUT
+ - name: Build Injected Container image for polkadot/staking-miner
+ if: ${{ env.BINARY == 'polkadot' || env.BINARY == 'staking-miner' }}
+ env:
+ ARTIFACTS_FOLDER: ./release-artifacts
+ IMAGE_NAME: ${{ env.BINARY }}
+ OWNER: ${{ env.DOCKER_OWNER }}
+ TAGS: ${{ join(steps.fetch_rc_refs.outputs.*, ',') || join(steps.fetch_release_refs.outputs.*, ',') }}
+ run: |
+ ls -al
+ echo "Building container for $BINARY"
+ ./docker/scripts/build-injected.sh
+
+ - name: Build Injected Container image for polkadot-parachain
+ if: ${{ env.BINARY == 'polkadot-parachain' }}
+ env:
+ ARTIFACTS_FOLDER: ./release-artifacts
+ IMAGE_NAME: ${{ env.BINARY }}
+ OWNER: ${{ env.DOCKER_OWNER }}
+ DOCKERFILE: docker/dockerfiles/polkadot-parachain/polkadot-parachain_injected.Dockerfile
+ TAGS: ${{ join(steps.fetch_rc_refs.outputs.*, ',') || join(steps.fetch_release_refs.outputs.*, ',') }}
+ run: |
+ ls -al
+ mkdir -p $ARTIFACTS_FOLDER/specs
+ cp cumulus/parachains/chain-specs/*.json $ARTIFACTS_FOLDER/specs
+
+ echo "Building container for $BINARY"
+ ./docker/scripts/build-injected.sh
- name: Login to Dockerhub
uses: docker/login-action@v2
@@ -182,21 +192,11 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- - name: Tag and Push Container image for ${{ env.BINARY }}
+ - name: Push Container image for ${{ env.BINARY }}
id: docker_push
- env:
- TAGS: ${{ join(steps.fetch_rc_refs.outputs.*, ',') || join(steps.fetch_release_refs.outputs.*, ',') }}
run: |
- TAGS=${TAGS[@]:-latest}
- IFS=',' read -r -a TAG_ARRAY <<< "$TAGS"
-
- echo "The image ${BINARY} will be tagged with ${TAG_ARRAY[*]}"
- for TAG in "${TAG_ARRAY[@]}"; do
- $ENGINE tag ${DOCKER_OWNER}/${BINARY} ${DOCKER_OWNER}/${BINARY}:${TAG}
- $ENGINE push ${DOCKER_OWNER}/${BINARY}:${TAG}
- done
-
$ENGINE images | grep ${BINARY}
+ $ENGINE push --all-tags ${REGISTRY}/${DOCKER_OWNER}/${BINARY}
- name: Check version for the published image for ${{ env.BINARY }}
env:
diff --git a/.gitignore b/.gitignore
index b71c270d7368c10acd64ddf90258c3c584367664..35e02e706b4261dcac2a3f9c6686245a01de9a8a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,13 +1,39 @@
-target/
-**/target/
+!polkadot.service
+.cargo-remote.toml
+.direnv/
+.DS_Store
+.env*
.idea
+.local
.vscode
-.DS_Store
-/.cargo/config
-polkadot_argument_parsing
-**/node_modules
-**/chains/
+.wasm-binaries
+*.adoc
+*.bin
*.iml
-.env
+*.orig
+*.rej
+*.swp
**/._*
-
+**/.criterion/
+**/*.rs.bk
+**/chains/
+**/hfuzz_target/
+**/hfuzz_workspace/
+**/node_modules
+**/target/
+**/wip/*.stderr
+/.cargo/config
+/.envrc
+artifacts
+bin/node-template/Cargo.lock
+nohup.out
+polkadot_argument_parsing
+polkadot.*
+pwasm-alloc/Cargo.lock
+pwasm-libc/Cargo.lock
+release-artifacts
+release.json
+rls*.log
+runtime/wasm/target/
+substrate.code-workspace
+target/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b9b3cd2d63fbb739a008475a0ddab6a01b60cc6b..99381fae9ecdc3da399cb4f537c939b3b01d73d8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -22,7 +22,7 @@ workflow:
variables:
CI_IMAGE: "paritytech/ci-unified:bullseye-1.70.0-2023-05-23-v20230706"
- BUILDAH_IMAGE: "quay.io/buildah/stable:v1.29"
+ # BUILDAH_IMAGE is defined in group variables
BUILDAH_COMMAND: "buildah --storage-driver overlay2"
RELENG_SCRIPTS_BRANCH: "master"
RUSTY_CACHIER_SINGLE_BRANCH: master
@@ -30,7 +30,7 @@ variables:
RUSTY_CACHIER_COMPRESSION_METHOD: zstd
NEXTEST_FAILURE_OUTPUT: immediate-final
NEXTEST_SUCCESS_OUTPUT: final
- ZOMBIENET_IMAGE: "docker.io/paritytech/zombienet:v1.3.59"
+ ZOMBIENET_IMAGE: "docker.io/paritytech/zombienet:v1.3.67"
DOCKER_IMAGES_VERSION: "${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}"
default:
@@ -197,8 +197,6 @@ default:
extends: .build-refs
include:
- # weights jobs
- # - gitlab/pipeline/weights.yml
# check jobs
- .gitlab/pipeline/check.yml
# test jobs
@@ -211,11 +209,10 @@ include:
- .gitlab/pipeline/publish.yml
# zombienet jobs
- .gitlab/pipeline/zombienet.yml
- # # timestamp handler
+ # timestamp handler
- project: parity/infrastructure/ci_cd/shared
ref: v0.2
file: /common/timestamp.yml
-
# This job cancels the whole pipeline if any of provided jobs fail.
# In a DAG, every jobs chain is executed independently of others. The `fail_fast` principle suggests
# to fail the pipeline as soon as possible to shorten the feedback loop.
@@ -233,7 +230,6 @@ include:
PR_NUM: "${PR_NUM}"
trigger:
project: "parity/infrastructure/ci_cd/pipeline-stopper"
- branch: "as-improve"
remove-cancel-pipeline-message:
stage: .post
@@ -334,3 +330,58 @@ cancel-pipeline-cargo-clippy:
extends: .cancel-pipeline-template
needs:
- job: cargo-clippy
+
+cancel-pipeline-build-linux-stable:
+ extends: .cancel-pipeline-template
+ needs:
+ - job: build-linux-stable
+
+cancel-pipeline-build-linux-stable-cumulus:
+ extends: .cancel-pipeline-template
+ needs:
+ - job: build-linux-stable-cumulus
+
+cancel-pipeline-build-linux-substrate:
+ extends: .cancel-pipeline-template
+ needs:
+ - job: build-linux-substrate
+
+cancel-pipeline-test-node-metrics:
+ extends: .cancel-pipeline-template
+ needs:
+ - job: test-node-metrics
+
+cancel-pipeline-test-frame-ui:
+ extends: .cancel-pipeline-template
+ needs:
+ - job: test-frame-ui
+
+cancel-pipeline-quick-benchmarks:
+ extends: .cancel-pipeline-template
+ needs:
+ - job: quick-benchmarks
+
+cancel-pipeline-check-try-runtime:
+ extends: .cancel-pipeline-template
+ needs:
+ - job: check-try-runtime
+
+cancel-pipeline-test-frame-examples-compile-to-wasm:
+ extends: .cancel-pipeline-template
+ needs:
+ - job: test-frame-examples-compile-to-wasm
+
+cancel-pipeline-build-short-benchmark:
+ extends: .cancel-pipeline-template
+ needs:
+ - job: build-short-benchmark
+
+cancel-pipeline-check-runtime-migration-rococo:
+ extends: .cancel-pipeline-template
+ needs:
+ - job: check-runtime-migration-rococo
+
+cancel-pipeline-check-runtime-migration-westend:
+ extends: .cancel-pipeline-template
+ needs:
+ - job: check-runtime-migration-westend
diff --git a/.gitlab/common/lib.sh b/.gitlab/common/lib.sh
deleted file mode 100755
index ba5b171487288928f779f2db034f8d989213c647..0000000000000000000000000000000000000000
--- a/.gitlab/common/lib.sh
+++ /dev/null
@@ -1,195 +0,0 @@
-#!/bin/sh
-
-api_base="https://api.github.com/repos"
-
-# Function to take 2 git tags/commits and get any lines from commit messages
-# that contain something that looks like a PR reference: e.g., (#1234)
-sanitised_git_logs(){
- git --no-pager log --pretty=format:"%s" "$1...$2" |
- # Only find messages referencing a PR
- grep -E '\(#[0-9]+\)' |
- # Strip any asterisks
- sed 's/^* //g'
-}
-
-# Checks whether a tag on github has been verified
-# repo: 'organization/repo'
-# tagver: 'v1.2.3'
-# Usage: check_tag $repo $tagver
-check_tag () {
- repo=$1
- tagver=$2
- if [ -n "$GITHUB_RELEASE_TOKEN" ]; then
- echo '[+] Fetching tag using privileged token'
- tag_out=$(curl -H "Authorization: token $GITHUB_RELEASE_TOKEN" -s "$api_base/$repo/git/refs/tags/$tagver")
- else
- echo '[+] Fetching tag using unprivileged token'
- tag_out=$(curl -H "Authorization: token $GITHUB_PR_TOKEN" -s "$api_base/$repo/git/refs/tags/$tagver")
- fi
- tag_sha=$(echo "$tag_out" | jq -r .object.sha)
- object_url=$(echo "$tag_out" | jq -r .object.url)
- if [ "$tag_sha" = "null" ]; then
- return 2
- fi
- echo "[+] Tag object SHA: $tag_sha"
- verified_str=$(curl -H "Authorization: token $GITHUB_RELEASE_TOKEN" -s "$object_url" | jq -r .verification.verified)
- if [ "$verified_str" = "true" ]; then
- # Verified, everything is good
- return 0
- else
- # Not verified. Bad juju.
- return 1
- fi
-}
-
-# Checks whether a given PR has a given label.
-# repo: 'organization/repo'
-# pr_id: 12345
-# label: B1-silent
-# Usage: has_label $repo $pr_id $label
-has_label(){
- repo="$1"
- pr_id="$2"
- label="$3"
-
- # These will exist if the function is called in Gitlab.
- # If the function's called in Github, we should have GITHUB_ACCESS_TOKEN set
- # already.
- if [ -n "$GITHUB_RELEASE_TOKEN" ]; then
- GITHUB_TOKEN="$GITHUB_RELEASE_TOKEN"
- elif [ -n "$GITHUB_PR_TOKEN" ]; then
- GITHUB_TOKEN="$GITHUB_PR_TOKEN"
- fi
-
- out=$(curl -H "Authorization: token $GITHUB_TOKEN" -s "$api_base/$repo/pulls/$pr_id")
- [ -n "$(echo "$out" | tr -d '\r\n' | jq ".labels | .[] | select(.name==\"$label\")")" ]
-}
-
-github_label () {
- echo
- echo "# run github-api job for labeling it ${1}"
- curl -sS -X POST \
- -F "token=${CI_JOB_TOKEN}" \
- -F "ref=master" \
- -F "variables[LABEL]=${1}" \
- -F "variables[PRNO]=${CI_COMMIT_REF_NAME}" \
- -F "variables[PROJECT]=paritytech/polkadot" \
- "${GITLAB_API}/projects/${GITHUB_API_PROJECT}/trigger/pipeline"
-}
-
-# Formats a message into a JSON string for posting to Matrix
-# message: 'any plaintext message'
-# formatted_message: 'optional message formatted in html'
-# Usage: structure_message $content $formatted_content (optional)
-structure_message() {
- if [ -z "$2" ]; then
- body=$(jq -Rs --arg body "$1" '{"msgtype": "m.text", $body}' < /dev/null)
- else
- body=$(jq -Rs --arg body "$1" --arg formatted_body "$2" '{"msgtype": "m.text", $body, "format": "org.matrix.custom.html", $formatted_body}' < /dev/null)
- fi
- echo "$body"
-}
-
-# Post a message to a matrix room
-# body: '{body: "JSON string produced by structure_message"}'
-# room_id: !fsfSRjgjBWEWffws:matrix.parity.io
-# access_token: see https://matrix.org/docs/guides/client-server-api/
-# Usage: send_message $body (json formatted) $room_id $access_token
-send_message() {
-curl -XPOST -d "$1" "https://matrix.parity.io/_matrix/client/r0/rooms/$2/send/m.room.message?access_token=$3"
-}
-
-# Pretty-printing functions
-boldprint () { printf "|\n| \033[1m%s\033[0m\n|\n" "${@}"; }
-boldcat () { printf "|\n"; while read -r l; do printf "| \033[1m%s\033[0m\n" "${l}"; done; printf "|\n" ; }
-
-skip_if_companion_pr() {
- url="https://api.github.com/repos/paritytech/polkadot/pulls/${CI_COMMIT_REF_NAME}"
- echo "[+] API URL: $url"
-
- pr_title=$(curl -sSL -H "Authorization: token ${GITHUB_PR_TOKEN}" "$url" | jq -r .title)
- echo "[+] PR title: $pr_title"
-
- if echo "$pr_title" | grep -qi '^companion'; then
- echo "[!] PR is a companion PR. Build is already done in substrate"
- exit 0
- else
- echo "[+] PR is not a companion PR. Proceeding test"
- fi
-}
-
-# Fetches the tag name of the latest release from a repository
-# repo: 'organisation/repo'
-# Usage: latest_release 'paritytech/polkadot'
-latest_release() {
- curl -s "$api_base/$1/releases/latest" | jq -r '.tag_name'
-}
-
-# Check for runtime changes between two commits. This is defined as any changes
-# to /primitives/src/* and any *production* chains under /runtime
-has_runtime_changes() {
- from=$1
- to=$2
-
- if git diff --name-only "${from}...${to}" \
- | grep -q -e '^runtime/polkadot' -e '^runtime/kusama' -e '^primitives/src/' -e '^runtime/common'
- then
- return 0
- else
- return 1
- fi
-}
-
-# given a bootnode and the path to a chainspec file, this function will create a new chainspec file
-# with only the bootnode specified and test whether that bootnode provides peers
-# The optional third argument is the index of the bootnode in the list of bootnodes, this is just used to pick an ephemeral
-# port for the node to run on. If you're only testing one, it'll just use the first ephemeral port
-# BOOTNODE: /dns/polkadot-connect-0.parity.io/tcp/443/wss/p2p/12D3KooWEPmjoRpDSUuiTjvyNDd8fejZ9eNWH5bE965nyBMDrB4o
-# CHAINSPEC_FILE: /path/to/polkadot.json
-check_bootnode(){
- BOOTNODE=$1
- BASE_CHAINSPEC=$2
- RUNTIME=$(basename "$BASE_CHAINSPEC" | cut -d '.' -f 1)
- MIN_PEERS=1
-
- # Generate a temporary chainspec file containing only the bootnode we care about
- TMP_CHAINSPEC_FILE="$RUNTIME.$(echo "$BOOTNODE" | tr '/' '_').tmp.json"
- jq ".bootNodes = [\"$BOOTNODE\"] " < "$CHAINSPEC_FILE" > "$TMP_CHAINSPEC_FILE"
-
- # Grab an unused port by binding to port 0 and then immediately closing the socket
- # This is a bit of a hack, but it's the only way to do it in the shell
- RPC_PORT=$(python -c "import socket; s=socket.socket(); s.bind(('', 0)); print(s.getsockname()[1]); s.close()")
-
- echo "[+] Checking bootnode $BOOTNODE"
- polkadot --chain "$TMP_CHAINSPEC_FILE" --no-mdns --rpc-port="$RPC_PORT" --tmp > /dev/null 2>&1 &
- # Wait a few seconds for the node to start up
- sleep 5
- POLKADOT_PID=$!
-
- MAX_POLLS=10
- TIME_BETWEEN_POLLS=3
- for _ in $(seq 1 "$MAX_POLLS"); do
- # Check the health endpoint of the RPC node
- PEERS="$(curl -s -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"system_health","params":[],"id":1}' http://localhost:"$RPC_PORT" | jq -r '.result.peers')"
- # Sometimes due to machine load or other reasons, we don't get a response from the RPC node
- # If $PEERS is an empty variable, make it 0 so we can still do the comparison
- if [ -z "$PEERS" ]; then
- PEERS=0
- fi
- if [ "$PEERS" -ge $MIN_PEERS ]; then
- echo "[+] $PEERS peers found for $BOOTNODE"
- echo " Bootnode appears contactable"
- kill $POLKADOT_PID
- # Delete the temporary chainspec file now we're done running the node
- rm "$TMP_CHAINSPEC_FILE"
- return 0
- fi
- sleep "$TIME_BETWEEN_POLLS"
- done
- kill $POLKADOT_PID
- # Delete the temporary chainspec file now we're done running the node
- rm "$TMP_CHAINSPEC_FILE"
- echo "[!] No peers found for $BOOTNODE"
- echo " Bootnode appears unreachable"
- return 1
-}
diff --git a/.gitlab/pipeline/build.yml b/.gitlab/pipeline/build.yml
index 684f6dd5c25296f35eb51a1d3150f77d26dfd259..e34dd40e08142780a843e7e270e706f8389bf9da 100644
--- a/.gitlab/pipeline/build.yml
+++ b/.gitlab/pipeline/build.yml
@@ -82,10 +82,13 @@ build-staking-miner:
extends:
- .docker-env
- .common-refs
- - .run-immediately
- - .collect-artifacts
+ # - .collect-artifacts
+ # DAG
+ needs:
+ - job: build-malus
+ artifacts: false
script:
- - time cargo build --locked --release --package staking-miner
+ - time cargo build -q --locked --release --package staging-staking-miner
# # pack artifacts
# - mkdir -p ./artifacts
# - mv ./target/release/staking-miner ./artifacts/.
@@ -102,20 +105,37 @@ build-rustdoc:
- .run-immediately
variables:
SKIP_WASM_BUILD: 1
- # artifacts:
- # name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}-doc"
- # when: on_success
- # expire_in: 1 days
- # paths:
- # - ./crate-docs/
+ artifacts:
+ name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}-doc"
+ when: on_success
+ expire_in: 1 days
+ paths:
+ - ./crate-docs/
script:
# FIXME: it fails with `RUSTDOCFLAGS="-Dwarnings"` and `--all-features`
# FIXME: return to stable when https://github.com/rust-lang/rust/issues/96937 gets into stable
- - time cargo doc --workspace --no-deps
+ - time cargo doc --features try-runtime,experimental --workspace --no-deps
- rm -f ./target/doc/.lock
- mv ./target/doc ./crate-docs
- # FIXME: remove me after CI image gets nonroot
- - chown -R nonroot:nonroot ./crate-docs
+ # Inject Simple Analytics (https://www.simpleanalytics.com/) privacy preserving tracker into
+ # all .html files
+ - |
+ inject_simple_analytics() {
+ local path="$1"
+ local script_content=""
+
+ # Function that inject script into the head of an html file using sed.
+ process_file() {
+ local file="$1"
+ echo "Adding Simple Analytics script to $file"
+ sed -i "s||$script_content|" "$file"
+ }
+ export -f process_file
+
+ # Modify .html files in parallel using xargs, otherwise it can take a long time.
+ find "$path" -name '*.html' | xargs -I {} -P "$(nproc)" bash -c 'process_file "$@"' _ {}
+ }
+ inject_simple_analytics "./crate-docs"
- echo "" > ./crate-docs/index.html
build-implementers-guide:
@@ -143,7 +163,7 @@ build-short-benchmark:
- .run-immediately
- .collect-artifacts
script:
- - cargo build --profile release --locked --features=runtime-benchmarks
+ - cargo build --profile release --locked --features=runtime-benchmarks --bin polkadot
- mkdir -p artifacts
- target/release/polkadot --version
- cp ./target/release/polkadot ./artifacts/
@@ -262,6 +282,19 @@ build-runtime-testing:
- job: build-runtime-starters
artifacts: false
+build-short-benchmark-cumulus:
+ stage: build
+ extends:
+ - .docker-env
+ - .common-refs
+ - .run-immediately
+ - .collect-artifacts
+ script:
+ - cargo build --profile release --locked --features=runtime-benchmarks --bin polkadot-parachain
+ - mkdir -p artifacts
+ - target/release/polkadot-parachain --version
+ - cp ./target/release/polkadot-parachain ./artifacts/
+
# substrate
build-linux-substrate:
@@ -269,8 +302,11 @@ build-linux-substrate:
extends:
- .docker-env
- .common-refs
- - .run-immediately
- .collect-artifacts
+ # DAG
+ needs:
+ - job: build-linux-stable
+ artifacts: false
variables:
# this variable gets overriden by "rusty-cachier environment inject", use the value as default
CARGO_TARGET_DIR: "$CI_PROJECT_DIR/target"
@@ -290,7 +326,7 @@ build-linux-substrate:
cut -d ' ' -f 2 | tee ./artifacts/substrate/VERSION;
fi
- sha256sum ./artifacts/substrate/substrate | tee ./artifacts/substrate/substrate.sha256
- - cp -r ./docker/substrate_injected.Dockerfile ./artifacts/substrate/
+ - cp -r ./docker/dockerfiles/substrate_injected.Dockerfile ./artifacts/substrate/
# - printf '\n# building node-template\n\n'
# - ./scripts/ci/node-template-release.sh ./artifacts/substrate/substrate-node-template.tar.gz
@@ -320,6 +356,10 @@ build-linux-substrate:
build-subkey-linux:
extends: .build-subkey
+ # DAG
+ needs:
+ - job: build-staking-miner
+ artifacts: false
# tbd
# build-subkey-macos:
# extends: .build-subkey
@@ -343,4 +383,3 @@ build-subkey-linux:
# after_script: [""]
# tags:
# - osx
-
diff --git a/.gitlab/pipeline/check.yml b/.gitlab/pipeline/check.yml
index 4e1cd833040b3692180d47c13849a52e018b79b0..446f5dde12e821a41f0ce37d6a606103e771a7d7 100644
--- a/.gitlab/pipeline/check.yml
+++ b/.gitlab/pipeline/check.yml
@@ -32,7 +32,8 @@ cargo-fmt-manifest:
- zepter format features --check
allow_failure: true # Experimental
-cargo-deny-licenses:
+# FIXME
+.cargo-deny-licenses:
stage: check
extends:
- .docker-env
@@ -102,7 +103,6 @@ test-rust-feature-propagation:
- zepter lint propagate-feature --feature try-runtime --left-side-feature-missing=ignore --workspace --feature-enables-dep="try-runtime:frame-try-runtime" --locked
- zepter lint propagate-feature --feature runtime-benchmarks --left-side-feature-missing=ignore --workspace --feature-enables-dep="runtime-benchmarks:frame-benchmarking" --locked
- zepter lint propagate-feature --feature std --left-side-feature-missing=ignore --workspace --locked
- allow_failure: true # Experimental
# More info can be found here: https://github.com/paritytech/polkadot/pull/5865
.check-runtime-migration:
@@ -120,26 +120,6 @@ test-rust-feature-propagation:
--runtime ./target/release/wbuild/"$NETWORK"-runtime/target/wasm32-unknown-unknown/release/"$NETWORK"_runtime.wasm \
on-runtime-upgrade --checks=pre-and-post live --uri wss://${NETWORK}-try-runtime-node.parity-chains.parity.io:443
-check-runtime-migration-polkadot:
- stage: check
- extends:
- - .docker-env
- - .test-pr-refs
- - .check-runtime-migration
- variables:
- NETWORK: "polkadot"
- allow_failure: true # FIXME https://github.com/paritytech/substrate/issues/13107
-
-check-runtime-migration-kusama:
- stage: check
- extends:
- - .docker-env
- - .test-pr-refs
- - .check-runtime-migration
- variables:
- NETWORK: "kusama"
- allow_failure: true # FIXME https://github.com/paritytech/substrate/issues/13107
-
check-runtime-migration-westend:
stage: check
extends:
@@ -148,17 +128,19 @@ check-runtime-migration-westend:
- .check-runtime-migration
variables:
NETWORK: "westend"
- allow_failure: true # FIXME https://github.com/paritytech/substrate/issues/13107
check-runtime-migration-rococo:
stage: check
+ # DAG
+ needs:
+ - job: check-runtime-migration-westend
+ artifacts: false
extends:
- .docker-env
- .test-pr-refs
- .check-runtime-migration
variables:
NETWORK: "rococo"
- allow_failure: true # FIXME https://github.com/paritytech/substrate/issues/13107
find-fail-ci-phrase:
stage: check
diff --git a/.gitlab/pipeline/publish.yml b/.gitlab/pipeline/publish.yml
index ed18082344f02b719471e50b21d8db0765343a5e..1a513e5970d5af55d2bbf1a8f78b1239af443d4d 100644
--- a/.gitlab/pipeline/publish.yml
+++ b/.gitlab/pipeline/publish.yml
@@ -1,6 +1,60 @@
# This file is part of .gitlab-ci.yml
# Here are all jobs that are executed during "publish" stage
+publish-rustdoc:
+ stage: publish
+ extends: .kubernetes-env
+ variables:
+ CI_IMAGE: node:18
+ GIT_DEPTH: 100
+ RUSTDOCS_DEPLOY_REFS: "master"
+ rules:
+ - if: $CI_PIPELINE_SOURCE == "pipeline"
+ when: never
+ - if: $CI_PIPELINE_SOURCE == "web" && $CI_COMMIT_REF_NAME == "master"
+ - if: $CI_COMMIT_REF_NAME == "master"
+ needs:
+ - job: build-rustdoc
+ artifacts: true
+ script:
+ # If $CI_COMMIT_REF_NAME doesn't match one of $RUSTDOCS_DEPLOY_REFS space-separated values, we
+ # exit immediately.
+ # Putting spaces at the front and back to ensure we are not matching just any substring, but the
+ # whole space-separated value.
+ # setup ssh
+ - eval $(ssh-agent)
+ - ssh-add - <<< ${GITHUB_SSH_PRIV_KEY}
+ - mkdir ~/.ssh && touch ~/.ssh/known_hosts
+ - ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
+ # Set git config
+ - git config user.email "devops-team@parity.io"
+ - git config user.name "${GITHUB_USER}"
+ - git config remote.origin.url "git@github.com:/paritytech/${CI_PROJECT_NAME}.git"
+ - git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
+ - git fetch origin gh-pages
+ # Save README and docs
+ - cp -r ./crate-docs/ /tmp/doc/
+ - cp README.md /tmp/doc/
+ # we don't need to commit changes because we copy docs to /tmp
+ - git checkout gh-pages --force
+ # Install `index-tpl-crud` and generate index.html based on RUSTDOCS_DEPLOY_REFS
+ - which index-tpl-crud &> /dev/null || yarn global add @substrate/index-tpl-crud
+ - index-tpl-crud upsert ./index.html ${CI_COMMIT_REF_NAME}
+ # Ensure the destination dir doesn't exist.
+ - rm -rf ${CI_COMMIT_REF_NAME}
+ - mv -f /tmp/doc ${CI_COMMIT_REF_NAME}
+ # Upload files
+ - git add --all
+ # `git commit` has an exit code of > 0 if there is nothing to commit.
+ # This causes GitLab to exit immediately and marks this job failed.
+ # We don't want to mark the entire job failed if there's nothing to
+ # publish though, hence the `|| true`.
+ - git commit -m "___Updated docs for ${CI_COMMIT_REF_NAME}___" ||
+ echo "___Nothing to commit___"
+ - git push origin gh-pages --force
+ after_script:
+ - rm -rf .git/ ./*
+
# cumulus
.build-push-image:
@@ -35,7 +89,7 @@ build-push-image-polkadot-parachain-debug:
- job: build-linux-stable-cumulus
artifacts: true
variables:
- DOCKERFILE: "docker/polkadot-parachain-debug_unsigned_injected.Dockerfile"
+ DOCKERFILE: "docker/dockerfiles/polkadot-parachain/polkadot-parachain-debug_unsigned_injected.Dockerfile"
IMAGE_NAME: "docker.io/paritypr/polkadot-parachain-debug"
build-push-image-test-parachain:
@@ -48,7 +102,7 @@ build-push-image-test-parachain:
- job: build-test-parachain
artifacts: true
variables:
- DOCKERFILE: "docker/test-parachain_injected.Dockerfile"
+ DOCKERFILE: "docker/dockerfiles/test-parachain_injected.Dockerfile"
IMAGE_NAME: "docker.io/paritypr/test-parachain"
# publish-s3:
# stage: publish
@@ -114,7 +168,7 @@ build-push-image-polkadot-debug:
- job: build-linux-stable
artifacts: true
variables:
- DOCKERFILE: "docker/polkadot_injected_debug.Dockerfile"
+ DOCKERFILE: "docker/dockerfiles/polkadot/polkadot_injected_debug.Dockerfile"
IMAGE_NAME: "docker.io/paritypr/polkadot-debug"
build-push-image-colander:
@@ -127,7 +181,7 @@ build-push-image-colander:
- job: build-test-collators
artifacts: true
variables:
- DOCKERFILE: "docker/collator_injected.Dockerfile"
+ DOCKERFILE: "docker/dockerfiles/collator_injected.Dockerfile"
IMAGE_NAME: "docker.io/paritypr/colander"
build-push-image-malus:
@@ -140,7 +194,7 @@ build-push-image-malus:
- job: build-malus
artifacts: true
variables:
- DOCKERFILE: "docker/malus_injected.Dockerfile"
+ DOCKERFILE: "docker/dockerfiles/malus_injected.Dockerfile"
IMAGE_NAME: "docker.io/paritypr/malus"
build-push-image-substrate-pr:
@@ -153,7 +207,7 @@ build-push-image-substrate-pr:
- job: build-linux-substrate
artifacts: true
variables:
- DOCKERFILE: "docker/substrate_injected.Dockerfile"
+ DOCKERFILE: "docker/dockerfiles/substrate_injected.Dockerfile"
IMAGE_NAME: "docker.io/paritypr/substrate"
# old way
@@ -201,7 +255,7 @@ build-push-image-substrate-pr:
# GIT_STRATEGY: none
# DOCKER_USER: ${PARITYPR_USER}
# DOCKER_PASS: ${PARITYPR_PASS}
-# # scripts/ci/dockerfiles/polkadot_injected_debug.Dockerfile
+# # docker/dockerfiles/polkadot/polkadot_injected_debug.Dockerfile
# DOCKERFILE: polkadot_injected_debug.Dockerfile
# IMAGE_NAME: docker.io/paritypr/polkadot-debug
# needs:
@@ -230,7 +284,7 @@ build-push-image-substrate-pr:
# GIT_STRATEGY: none
# DOCKER_USER: ${PARITYPR_USER}
# DOCKER_PASS: ${PARITYPR_PASS}
-# # scripts/ci/dockerfiles/collator_injected.Dockerfile
+# # docker/dockerfiles/collator_injected.Dockerfile
# DOCKERFILE: collator_injected.Dockerfile
# IMAGE_NAME: docker.io/paritypr/colander
# needs:
@@ -258,7 +312,7 @@ build-push-image-substrate-pr:
# GIT_STRATEGY: none
# DOCKER_USER: ${PARITYPR_USER}
# DOCKER_PASS: ${PARITYPR_PASS}
-# # scripts/ci/dockerfiles/malus_injected.Dockerfile
+# # docker/dockerfiles/malus_injected.Dockerfile
# DOCKERFILE: malus_injected.Dockerfile
# IMAGE_NAME: docker.io/paritypr/malus
# needs:
diff --git a/.gitlab/pipeline/short-benchmarks.yml b/.gitlab/pipeline/short-benchmarks.yml
index 2993338cabb15f5d3c01b91d39e0d5a1b4477f35..81601fba32acfcc57415d1da57bb7b5a7c724956 100644
--- a/.gitlab/pipeline/short-benchmarks.yml
+++ b/.gitlab/pipeline/short-benchmarks.yml
@@ -2,6 +2,9 @@
# Here are all jobs that are executed during "short-benchmarks" stage
# Run all pallet benchmarks only once to check if there are any errors
+
+# run short-benchmarks for relay chain runtimes from polkadot
+
short-benchmark-polkadot: &short-bench
stage: short-benchmarks
extends:
@@ -12,6 +15,8 @@ short-benchmark-polkadot: &short-bench
artifacts: true
variables:
RUNTIME: polkadot
+ tags:
+ - benchmark
script:
- ./artifacts/polkadot benchmark pallet --execution wasm --wasm-execution compiled --chain $RUNTIME-dev --pallet "*" --extrinsic "*" --steps 2 --repeat 1
@@ -24,3 +29,60 @@ short-benchmark-westend:
<<: *short-bench
variables:
RUNTIME: westend
+
+# run short-benchmarks for system parachain runtimes from cumulus
+
+.short-benchmark-cumulus: &short-bench-cumulus
+ stage: short-benchmarks
+ extends:
+ - .common-refs
+ - .docker-env
+ needs:
+ - job: build-short-benchmark-cumulus
+ artifacts: true
+ variables:
+ RUNTIME_CHAIN: benchmarked-runtime-chain
+ tags:
+ - benchmark
+ script:
+ - ./artifacts/polkadot-parachain benchmark pallet --wasm-execution compiled --chain $RUNTIME_CHAIN --pallet "*" --extrinsic "*" --steps 2 --repeat 1
+
+short-benchmark-asset-hub-polkadot:
+ <<: *short-bench-cumulus
+ variables:
+ RUNTIME_CHAIN: asset-hub-polkadot-dev
+
+short-benchmark-asset-hub-kusama:
+ <<: *short-bench-cumulus
+ variables:
+ RUNTIME_CHAIN: asset-hub-kusama-dev
+
+short-benchmark-asset-hub-westend:
+ <<: *short-bench-cumulus
+ variables:
+ RUNTIME_CHAIN: asset-hub-westend-dev
+
+short-benchmark-bridge-hub-polkadot:
+ <<: *short-bench-cumulus
+ variables:
+ RUNTIME_CHAIN: bridge-hub-polkadot-dev
+
+short-benchmark-bridge-hub-kusama:
+ <<: *short-bench-cumulus
+ variables:
+ RUNTIME_CHAIN: bridge-hub-kusama-dev
+
+short-benchmark-bridge-hub-rococo:
+ <<: *short-bench-cumulus
+ variables:
+ RUNTIME_CHAIN: bridge-hub-rococo-dev
+
+short-benchmark-collectives-polkadot:
+ <<: *short-bench-cumulus
+ variables:
+ RUNTIME_CHAIN: collectives-polkadot-dev
+
+short-benchmark-glutton-kusama:
+ <<: *short-bench-cumulus
+ variables:
+ RUNTIME_CHAIN: glutton-kusama-dev-1300
diff --git a/.gitlab/pipeline/test.yml b/.gitlab/pipeline/test.yml
index cbba5dfe422c398e50fe5906d7657387481a4d0a..406c87923ccb8cb489943faba93a24095d7ae946 100644
--- a/.gitlab/pipeline/test.yml
+++ b/.gitlab/pipeline/test.yml
@@ -34,11 +34,25 @@ test-linux-stable:
--locked \
--release \
--no-fail-fast \
- --features runtime-benchmarks,try-runtime,experimental \
+ --features try-runtime,experimental \
--partition count:${CI_NODE_INDEX}/${CI_NODE_TOTAL}
+ # Upload tests results to Elasticsearch
+ - echo "Upload test results to Elasticsearch"
+ - cat target/nextest/default/junit.xml | xq . > target/nextest/default/junit.json
+ - |
+ curl -v -XPOST --http1.1 \
+ -u ${ELASTIC_USERNAME}:${ELASTIC_PASSWORD} \
+ https://elasticsearch.parity-build.parity.io/unit-tests/_doc/${CI_JOB_ID} \
+ -H 'Content-Type: application/json' \
+ -d @target/nextest/default/junit.json || echo "failed to upload junit report"
# run runtime-api tests with `enable-staging-api` feature on the 1st node
- if [ ${CI_NODE_INDEX} == 1 ]; then time cargo nextest run -p sp-api-test --features enable-staging-api; fi
- # todo: add flacky-test collector
+ artifacts:
+ when: always
+ paths:
+ - target/nextest/default/junit.xml
+ reports:
+ junit: target/nextest/default/junit.xml
test-linux-oldkernel-stable:
extends: test-linux-stable
@@ -92,7 +106,22 @@ test-linux-stable-additional-tests:
--locked \
--release \
--features runtime-benchmarks,try-runtime
- allow_failure: true
+
+# https://github.com/paritytech/ci_cd/issues/864
+test-linux-stable-runtime-benchmarks:
+ stage: test
+ extends:
+ - .docker-env
+ - .common-refs
+ - .run-immediately
+ - .pipeline-stopper-artifacts
+ variables:
+ RUST_TOOLCHAIN: stable
+ # Enable debug assertions since we are running optimized builds for testing
+ # but still want to have debug assertions.
+ RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
+ script:
+ - time cargo nextest run --features runtime-benchmarks benchmark --locked --cargo-profile testnet
# these ones can be really slow so it's better to run them separately
test-linux-stable-slow:
@@ -147,7 +176,10 @@ test-doc:
extends:
- .docker-env
- .common-refs
- - .run-immediately
+ # DAG
+ needs:
+ - job: test-rustdoc
+ artifacts: false
variables:
# Enable debug assertions since we are running optimized builds for testing
# but still want to have debug assertions.
@@ -173,7 +205,10 @@ cargo-check-all-benches:
extends:
- .docker-env
- .common-refs
- - .run-immediately
+ # DAG
+ needs:
+ - job: cargo-hfuzz
+ artifacts: false
script:
- time cargo check --all --benches
@@ -190,21 +225,32 @@ test-node-metrics:
# but still want to have debug assertions.
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
script:
+ # Build the required workers.
+ - cargo build --bin polkadot-execute-worker --bin polkadot-prepare-worker --profile testnet --verbose --locked
- mkdir -p artifacts
- time cargo test --profile testnet
--locked
--features=runtime-metrics -p polkadot-node-metrics > artifacts/log.txt
- # FIXME!
- allow_failure: true
test-deterministic-wasm:
stage: test
extends:
- .docker-env
- .common-refs
- - .run-immediately
+ # DAG
+ needs:
+ - job: test-frame-ui
+ artifacts: false
script:
- - .gitlab/test_deterministic_wasm.sh
+ # build runtime
+ - WASM_BUILD_NO_COLOR=1 cargo build -q --locked --release -p staging-kusama-runtime -p polkadot-runtime -p westend-runtime
+ # make checksum
+ - sha256sum target/release/wbuild/*-runtime/target/wasm32-unknown-unknown/release/*.wasm > checksum.sha256
+ - cargo clean
+ # build again
+ - WASM_BUILD_NO_COLOR=1 cargo build -q --locked --release -p staging-kusama-runtime -p polkadot-runtime -p westend-runtime
+ # confirm checksum
+ - sha256sum -c checksum.sha256
cargo-check-benches:
stage: test
@@ -284,12 +330,15 @@ node-bench-regression-guard:
# if this fails (especially after rust version upgrade) run
# ./substrate/.maintain/update-rust-stable.sh
-test-frame-support:
+test-frame-ui:
stage: test
extends:
- .docker-env
- .common-refs
- - .run-immediately
+ # DAG
+ needs:
+ - job: test-frame-examples-compile-to-wasm
+ artifacts: false
variables:
# Enable debug assertions since we are running optimized builds for testing
# but still want to have debug assertions.
@@ -300,9 +349,8 @@ test-frame-support:
# Ensure we run the UI tests.
RUN_UI_TESTS: 1
script:
- - time cargo test --locked -p frame-support-test --features=frame-feature-testing,no-metadata-docs,try-runtime,experimental --manifest-path ./substrate/frame/support/test/Cargo.toml
- - time cargo test --locked -p frame-support-test --features=frame-feature-testing,frame-feature-testing-2,no-metadata-docs,try-runtime,experimental --manifest-path ./substrate/frame/support/test/Cargo.toml
- - SUBSTRATE_TEST_TIMEOUT=1 time cargo test -p substrate-test-utils --release --locked -- --ignored timeout
+ - time cargo test --locked -q --profile testnet -p frame-support-test --features=frame-feature-testing,no-metadata-docs,try-runtime,experimental
+ - time cargo test --locked -q --profile testnet -p frame-support-test --features=frame-feature-testing,frame-feature-testing-2,no-metadata-docs,try-runtime,experimental
- cat /cargo_target_dir/debug/.fingerprint/memory_units-759eddf317490d2b/lib-memory_units.json || true
# This job runs all benchmarks defined in the `/bin/node/runtime` once to check that there are no errors.
@@ -328,7 +376,10 @@ test-frame-examples-compile-to-wasm:
extends:
- .docker-env
- .common-refs
- - .run-immediately
+ # DAG
+ needs:
+ - job: test-full-crypto-feature
+ artifacts: false
variables:
# Enable debug assertions since we are running optimized builds for testing
# but still want to have debug assertions.
@@ -439,7 +490,10 @@ cargo-hfuzz:
extends:
- .docker-env
- .common-refs
- - .run-immediately
+ # DAG
+ needs:
+ - job: check-tracing
+ artifacts: false
variables:
# max 10s per iteration, 60s per file
HFUZZ_RUN_ARGS: >
diff --git a/.gitlab/pipeline/zombienet/cumulus.yml b/.gitlab/pipeline/zombienet/cumulus.yml
index ca96828a1a553c437fa40c2b446e346c479d5a4d..3347eda1baae5ebb943ac2c2250154f69e86db56 100644
--- a/.gitlab/pipeline/zombienet/cumulus.yml
+++ b/.gitlab/pipeline/zombienet/cumulus.yml
@@ -31,6 +31,7 @@
LOCAL_DIR: "/builds/parity/mirrors/polkadot-sdk/cumulus/zombienet/tests"
COL_IMAGE: "docker.io/paritypr/test-parachain:${DOCKER_IMAGES_VERSION}"
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: 1
+ RUN_IN_CONTAINER: "1"
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
when: always
diff --git a/.gitlab/pipeline/zombienet/polkadot.yml b/.gitlab/pipeline/zombienet/polkadot.yml
index 82dd13cd290c5d205f4354812522ace1eb09b42c..349807a610d414e5eaacb610d40419cbd390af71 100644
--- a/.gitlab/pipeline/zombienet/polkadot.yml
+++ b/.gitlab/pipeline/zombienet/polkadot.yml
@@ -4,25 +4,34 @@
# common settings for all zombienet jobs
.zombienet-polkadot-common:
before_script:
+ - export BUILD_RELEASE_VERSION="$(cat ./artifacts/BUILD_RELEASE_VERSION)" # from build-linux-stable job
- export DEBUG=zombie,zombie::network-node
- export ZOMBIENET_INTEGRATION_TEST_IMAGE="${POLKADOT_IMAGE}":${PIPELINE_IMAGE_TAG}
+ - export ZOMBIENET_INTEGRATION_TEST_SECONDARY_IMAGE="docker.io/parity/polkadot:${BUILD_RELEASE_VERSION}"
- export COL_IMAGE="${COLANDER_IMAGE}":${PIPELINE_IMAGE_TAG}
+ - export CUMULUS_IMAGE="docker.io/paritypr/polkadot-parachain-debug:${DOCKER_IMAGES_VERSION}"
- export MALUS_IMAGE="${MALUS_IMAGE}":${PIPELINE_IMAGE_TAG}
- echo "Zombienet Tests Config"
- echo "gh-dir ${GH_DIR}"
- echo "local-dir ${LOCAL_DIR}"
- echo "polkadot image ${ZOMBIENET_INTEGRATION_TEST_IMAGE}"
+ - echo "polkadot secondary image ${ZOMBIENET_INTEGRATION_TEST_SECONDARY_IMAGE}"
- echo "colander image ${COL_IMAGE}"
+ - echo "cumulus image ${CUMULUS_IMAGE}"
- echo "malus image ${MALUS_IMAGE}"
stage: zombienet
image: "${ZOMBIENET_IMAGE}"
needs:
+ - job: build-linux-stable
+ artifacts: true
- job: build-push-image-malus
artifacts: true
- job: build-push-image-polkadot-debug
artifacts: true
- job: build-push-image-colander
artifacts: true
+ - job: build-push-image-polkadot-parachain-debug
+ artifacts: true
extends:
- .kubernetes-env
- .zombienet-refs
@@ -34,6 +43,7 @@
GH_DIR: "https://github.com/paritytech/substrate/tree/${CI_COMMIT_SHA}/zombienet"
LOCAL_DIR: "/builds/parity/mirrors/polkadot-sdk/polkadot/zombienet_tests"
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: 1
+ RUN_IN_CONTAINER: "1"
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
when: always
@@ -63,21 +73,29 @@ zombienet-polkadot-functional-0002-parachains-disputes:
--local-dir="${LOCAL_DIR}/functional"
--test="0002-parachains-disputes.zndsl"
-zombienet-polkadot-functional-0003-parachains-disputes-garbage-candidate:
+zombienet-polkadot-functional-0003-beefy-and-mmr:
extends:
- .zombienet-polkadot-common
script:
- /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh
--local-dir="${LOCAL_DIR}/functional"
- --test="0003-parachains-garbage-candidate.zndsl"
+ --test="0003-beefy-and-mmr.zndsl"
-zombienet-polkadot-functional-0004-beefy-and-mmr:
+zombienet-polkadot-functional-0004-parachains-disputes-garbage-candidate:
extends:
- .zombienet-polkadot-common
script:
- /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh
--local-dir="${LOCAL_DIR}/functional"
- --test="0003-beefy-and-mmr.zndsl"
+ --test="0004-parachains-garbage-candidate.zndsl"
+
+zombienet-polkadot-functional-0005-parachains-disputes-past-session:
+ extends:
+ - .zombienet-polkadot-common
+ script:
+ - /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh
+ --local-dir="${LOCAL_DIR}/functional"
+ --test="0005-parachains-disputes-past-session.zndsl"
zombienet-polkadot-smoke-0001-parachains-smoke-test:
extends:
@@ -146,7 +164,7 @@ zombienet-polkadot-misc-0002-upgrade-node:
- echo "Overrided poladot image ${ZOMBIENET_INTEGRATION_TEST_IMAGE}"
- export COL_IMAGE="${COLANDER_IMAGE}":${PIPELINE_IMAGE_TAG}
- BUILD_LINUX_JOB_ID="$(cat ./artifacts/BUILD_LINUX_JOB_ID)"
- - export POLKADOT_PR_BIN_URL="https://gitlab-stg.parity.io/parity/mirrors/polkadot-sdk/-/jobs/${BUILD_LINUX_JOB_ID}/artifacts/raw/artifacts/polkadot"
+ - export POLKADOT_PR_ARTIFACTS_URL="https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/${BUILD_LINUX_JOB_ID}/artifacts/raw/artifacts"
- echo "Zombienet Tests Config"
- echo "gh-dir ${GH_DIR}"
- echo "local-dir ${LOCAL_DIR}"
@@ -167,3 +185,27 @@ zombienet-polkadot-malus-0001-dispute-valid:
- /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh
--local-dir="${LOCAL_DIR}/integrationtests"
--test="0001-dispute-valid-block.zndsl"
+
+zombienet-polkadot-async-backing-compatibility:
+ extends:
+ - .zombienet-polkadot-common
+ script:
+ - /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh
+ --local-dir="${LOCAL_DIR}/async_backing"
+ --test="001-async-backing-compatibility.zndsl"
+
+zombienet-polkadot-async-backing-runtime-upgrade:
+ extends:
+ - .zombienet-polkadot-common
+ script:
+ - /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh
+ --local-dir="${LOCAL_DIR}/async_backing"
+ --test="002-async-backing-runtime-upgrade.zndsl"
+
+zombienet-polkadot-async-backing-collator-mix:
+ extends:
+ - .zombienet-polkadot-common
+ script:
+ - /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh
+ --local-dir="${LOCAL_DIR}/async_backing"
+ --test="003-async-backing-collator-mix.zndsl"
diff --git a/.gitlab/pipeline/zombienet/substrate.yml b/.gitlab/pipeline/zombienet/substrate.yml
index 9a461ca41709948c17344e8bc4ca440aedff2108..9fb2f161ad73367a86279a6e7268f9116eae8f54 100644
--- a/.gitlab/pipeline/zombienet/substrate.yml
+++ b/.gitlab/pipeline/zombienet/substrate.yml
@@ -24,6 +24,7 @@
GH_DIR: "https://github.com/paritytech/substrate/tree/${CI_COMMIT_SHA}/zombienet"
LOCAL_DIR: "/builds/parity/mirrors/polkadot-sdk/substrate/zombienet"
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: 1
+ RUN_IN_CONTAINER: "1"
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
when: always
diff --git a/.gitlab/test_deterministic_wasm.sh b/.gitlab/test_deterministic_wasm.sh
deleted file mode 100755
index 5b04013e1df3d5d6b49f5c78c230ceb2e56cf3f8..0000000000000000000000000000000000000000
--- a/.gitlab/test_deterministic_wasm.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-
-#shellcheck source=../common/lib.sh
-source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/common/lib.sh"
-
-# build runtime
-WASM_BUILD_NO_COLOR=1 cargo build --verbose --release -p kusama-runtime -p polkadot-runtime -p westend-runtime
-# make checksum
-sha256sum target/release/wbuild/*-runtime/target/wasm32-unknown-unknown/release/*.wasm > checksum.sha256
-# clean up - FIXME: can we reuse some of the artifacts?
-cargo clean
-# build again
-WASM_BUILD_NO_COLOR=1 cargo build --verbose --release -p kusama-runtime -p polkadot-runtime -p westend-runtime
-# confirm checksum
-sha256sum -c checksum.sha256
diff --git a/cumulus/.rustfmt.toml b/.rustfmt.toml
similarity index 99%
rename from cumulus/.rustfmt.toml
rename to .rustfmt.toml
index e2c4a037f37fe229bd237cf50c4bb218814b890f..c34215391239c1f39a1beab05e61b81b6ad60cab 100644
--- a/cumulus/.rustfmt.toml
+++ b/.rustfmt.toml
@@ -3,18 +3,11 @@ edition = "2021"
hard_tabs = true
max_width = 100
use_small_heuristics = "Max"
-
# Imports
imports_granularity = "Crate"
reorder_imports = true
-
# Consistency
newline_style = "Unix"
-
-# Format comments
-comment_width = 100
-wrap_comments = true
-
# Misc
chain_width = 80
spaces_around_ranges = false
@@ -26,3 +19,6 @@ match_block_trailing_comma = true
trailing_comma = "Vertical"
trailing_semicolon = false
use_field_init_shorthand = true
+# Format comments
+comment_width = 100
+wrap_comments = true
diff --git a/Cargo.lock b/Cargo.lock
index 6511cb1639071eac1d0bba00b9d4d78b37dada12..c2f6d300b34ddf5525be54a1cd5df26f8c69e470 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -499,11 +499,12 @@ dependencies = [
[[package]]
name = "ark-scale"
-version = "0.0.3"
+version = "0.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d028cd1025d002fa88c10cd644d29028a7b40806579b608c6ba843b937bbb23"
+checksum = "49b08346a3e38e2be792ef53ee168623c9244d968ff00cd70fb9932f6fe36393"
dependencies = [
"ark-ec",
+ "ark-ff",
"ark-serialize",
"ark-std",
"parity-scale-codec",
@@ -512,7 +513,7 @@ dependencies = [
[[package]]
name = "ark-secret-scalar"
version = "0.0.2"
-source = "git+https://github.com/w3f/ring-vrf?rev=c86ebd4#c86ebd4114d3165d05f9ce28c1d9e8d7a9a4e801"
+source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1"
dependencies = [
"ark-ec",
"ark-ff",
@@ -560,7 +561,7 @@ dependencies = [
[[package]]
name = "ark-transcript"
version = "0.0.2"
-source = "git+https://github.com/w3f/ring-vrf?rev=c86ebd4#c86ebd4114d3165d05f9ce28c1d9e8d7a9a4e801"
+source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1"
dependencies = [
"ark-ff",
"ark-serialize",
@@ -616,7 +617,7 @@ dependencies = [
"num-traits",
"rusticata-macros",
"thiserror",
- "time 0.3.27",
+ "time",
]
[[package]]
@@ -632,7 +633,7 @@ dependencies = [
"num-traits",
"rusticata-macros",
"thiserror",
- "time 0.3.27",
+ "time",
]
[[package]]
@@ -697,9 +698,6 @@ version = "1.0.0"
dependencies = [
"assert_matches",
"asset-hub-kusama-runtime",
- "cumulus-pallet-dmp-queue",
- "cumulus-pallet-parachain-system",
- "cumulus-pallet-xcmp-queue",
"frame-support",
"frame-system",
"integration-tests-common",
@@ -710,15 +708,12 @@ dependencies = [
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime",
"polkadot-runtime-parachains",
- "sp-core",
"sp-runtime",
- "sp-weights",
- "xcm",
+ "staging-xcm",
"xcm-emulator",
- "xcm-executor",
]
[[package]]
@@ -742,7 +737,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"kusama-runtime-constants",
"log",
"pallet-asset-conversion",
@@ -770,7 +765,7 @@ dependencies = [
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-common",
"primitive-types",
"scale-info",
@@ -788,37 +783,33 @@ dependencies = [
"sp-transaction-pool",
"sp-version",
"sp-weights",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
name = "asset-hub-polkadot-integration-tests"
version = "1.0.0"
dependencies = [
- "cumulus-pallet-dmp-queue",
- "cumulus-pallet-parachain-system",
- "cumulus-pallet-xcmp-queue",
+ "asset-hub-kusama-runtime",
"frame-support",
"frame-system",
"integration-tests-common",
+ "pallet-asset-conversion",
"pallet-assets",
"pallet-balances",
"pallet-xcm",
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime",
"polkadot-runtime-parachains",
- "sp-core",
"sp-runtime",
- "sp-weights",
- "xcm",
+ "staging-xcm",
"xcm-emulator",
- "xcm-executor",
]
[[package]]
@@ -842,7 +833,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-asset-tx-payment",
"pallet-assets",
@@ -866,7 +857,7 @@ dependencies = [
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-common",
"polkadot-runtime-constants",
"scale-info",
@@ -884,10 +875,10 @@ dependencies = [
"sp-transaction-pool",
"sp-version",
"sp-weights",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -896,9 +887,6 @@ version = "1.0.0"
dependencies = [
"assert_matches",
"asset-hub-westend-runtime",
- "cumulus-pallet-dmp-queue",
- "cumulus-pallet-parachain-system",
- "cumulus-pallet-xcmp-queue",
"frame-support",
"frame-system",
"integration-tests-common",
@@ -909,15 +897,12 @@ dependencies = [
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime",
"polkadot-runtime-parachains",
- "sp-core",
"sp-runtime",
- "sp-weights",
- "xcm",
+ "staging-xcm",
"xcm-emulator",
- "xcm-executor",
]
[[package]]
@@ -941,7 +926,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-asset-conversion",
"pallet-asset-conversion-tx-payment",
@@ -967,7 +952,7 @@ dependencies = [
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-common",
"primitive-types",
"scale-info",
@@ -985,11 +970,11 @@ dependencies = [
"sp-storage",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
"westend-runtime-constants",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -1005,7 +990,7 @@ dependencies = [
"cumulus-test-relay-sproof-builder",
"frame-support",
"frame-system",
- "hex-literal 0.4.1",
+ "hex-literal",
"pallet-assets",
"pallet-balances",
"pallet-collator-selection",
@@ -1015,15 +1000,15 @@ dependencies = [
"parachains-common",
"parachains-runtimes-test-utils",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"sp-consensus-aura",
"sp-core",
"sp-io",
"sp-runtime",
"sp-std",
+ "staging-xcm",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-executor",
]
[[package]]
@@ -1043,10 +1028,10 @@ dependencies = [
"sp-api",
"sp-runtime",
"sp-std",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -1153,7 +1138,7 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -1175,7 +1160,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -1192,7 +1177,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -1255,12 +1240,13 @@ dependencies = [
[[package]]
name = "bandersnatch_vrfs"
version = "0.0.1"
-source = "git+https://github.com/w3f/ring-vrf?rev=c86ebd4#c86ebd4114d3165d05f9ce28c1d9e8d7a9a4e801"
+source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1"
dependencies = [
"ark-bls12-381",
"ark-ec",
"ark-ed-on-bls12-381-bandersnatch",
"ark-ff",
+ "ark-scale",
"ark-serialize",
"ark-std",
"dleq_vrf",
@@ -1366,7 +1352,7 @@ dependencies = [
"regex",
"rustc-hash",
"shlex",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -1650,7 +1636,7 @@ dependencies = [
"finality-grandpa",
"frame-support",
"hex",
- "hex-literal 0.4.1",
+ "hex-literal",
"parity-scale-codec",
"scale-info",
"serde",
@@ -1680,7 +1666,7 @@ dependencies = [
"bp-runtime",
"frame-support",
"hex",
- "hex-literal 0.4.1",
+ "hex-literal",
"parity-scale-codec",
"scale-info",
"serde",
@@ -1742,7 +1728,7 @@ dependencies = [
"bp-runtime",
"frame-support",
"hex",
- "hex-literal 0.4.1",
+ "hex-literal",
"parity-scale-codec",
"scale-info",
"sp-runtime",
@@ -1768,7 +1754,7 @@ dependencies = [
"frame-support",
"frame-system",
"hash-db",
- "hex-literal 0.4.1",
+ "hex-literal",
"impl-trait-for-tuples",
"log",
"num-traits",
@@ -1792,7 +1778,7 @@ dependencies = [
"bp-parachains",
"bp-polkadot-core",
"bp-runtime",
- "ed25519-dalek 1.0.1",
+ "ed25519-dalek",
"finality-grandpa",
"parity-scale-codec",
"sp-application-crypto",
@@ -1846,7 +1832,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"kusama-runtime-constants",
"log",
"pallet-aura",
@@ -1865,7 +1851,7 @@ dependencies = [
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-common",
"scale-info",
"serde",
@@ -1883,10 +1869,10 @@ dependencies = [
"sp-storage",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -1909,7 +1895,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-aura",
"pallet-authorship",
@@ -1927,7 +1913,7 @@ dependencies = [
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-common",
"polkadot-runtime-constants",
"scale-info",
@@ -1946,10 +1932,10 @@ dependencies = [
"sp-storage",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -1957,27 +1943,20 @@ name = "bridge-hub-rococo-integration-tests"
version = "1.0.0"
dependencies = [
"bp-messages",
- "cumulus-pallet-parachain-system",
+ "cumulus-pallet-dmp-queue",
"cumulus-pallet-xcmp-queue",
"frame-support",
- "frame-system",
"integration-tests-common",
- "pallet-assets",
- "pallet-balances",
"pallet-bridge-messages",
"pallet-xcm",
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime",
"polkadot-runtime-parachains",
- "sp-core",
- "sp-runtime",
- "sp-weights",
- "xcm",
+ "staging-xcm",
"xcm-emulator",
- "xcm-executor",
]
[[package]]
@@ -2011,7 +1990,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-aura",
"pallet-authorship",
@@ -2033,7 +2012,7 @@ dependencies = [
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-common",
"rococo-runtime-constants",
"scale-info",
@@ -2053,11 +2032,11 @@ dependencies = [
"sp-storage",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"static_assertions",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -2102,9 +2081,9 @@ dependencies = [
"sp-io",
"sp-keyring",
"sp-runtime",
- "xcm",
- "xcm-builder",
- "xcm-executor",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
]
[[package]]
@@ -2138,9 +2117,9 @@ dependencies = [
"sp-runtime",
"sp-std",
"sp-trie",
+ "staging-xcm",
+ "staging-xcm-builder",
"static_assertions",
- "xcm",
- "xcm-builder",
]
[[package]]
@@ -2355,7 +2334,7 @@ name = "chain-spec-builder"
version = "2.0.0"
dependencies = [
"ansi_term",
- "clap 4.4.0",
+ "clap 4.4.2",
"node-cli",
"rand 0.8.5",
"sc-chain-spec",
@@ -2366,17 +2345,16 @@ dependencies = [
[[package]]
name = "chrono"
-version = "0.4.26"
+version = "0.4.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5"
+checksum = "defd4e7873dbddba6c7c91e199c7fcb946abc4a6a4ac3195400bcfb01b5de877"
dependencies = [
"android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
- "time 0.1.45",
"wasm-bindgen",
- "winapi",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -2486,20 +2464,19 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.4.0"
+version = "4.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d5f1946157a96594eb2d2c10eb7ad9a2b27518cb3000209dec700c35df9197d"
+checksum = "6a13b88d2c62ff462f88e4a121f17a82c1af05693a2f192b5c38d14de73c19f6"
dependencies = [
"clap_builder",
- "clap_derive 4.4.0",
- "once_cell",
+ "clap_derive 4.4.2",
]
[[package]]
name = "clap_builder"
-version = "4.4.0"
+version = "4.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78116e32a042dd73c2901f0dc30790d20ff3447f3e3472fad359e8c3d282bcd6"
+checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08"
dependencies = [
"anstream",
"anstyle",
@@ -2513,7 +2490,7 @@ version = "4.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "586a385f7ef2f8b4d86bddaa0c094794e7ccbfe5ffef1f434fe928143fc783a5"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
]
[[package]]
@@ -2531,14 +2508,14 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.4.0"
+version = "4.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9fd1a5729c4548118d7d70ff234a44868d00489a4b6597b0b020918a0e91a1a"
+checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873"
dependencies = [
"heck",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -2582,30 +2559,25 @@ dependencies = [
name = "collectives-polkadot-integration-tests"
version = "0.1.0"
dependencies = [
- "asset-hub-polkadot-runtime",
"collectives-polkadot-runtime",
"cumulus-pallet-parachain-system",
"cumulus-pallet-xcmp-queue",
"frame-support",
- "frame-system",
"integration-tests-common",
"pallet-assets",
- "pallet-balances",
"pallet-core-fellowship",
"pallet-salary",
"pallet-xcm",
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime",
"polkadot-runtime-parachains",
"sp-core",
"sp-runtime",
- "sp-weights",
- "xcm",
+ "staging-xcm",
"xcm-emulator",
- "xcm-executor",
]
[[package]]
@@ -2627,7 +2599,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-alliance",
"pallet-aura",
@@ -2653,7 +2625,7 @@ dependencies = [
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-common",
"polkadot-runtime-constants",
"scale-info",
@@ -2672,10 +2644,10 @@ dependencies = [
"sp-storage",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -2732,7 +2704,7 @@ dependencies = [
[[package]]
name = "common"
version = "0.1.0"
-source = "git+https://github.com/w3f/ring-proof#0e948f3c28cbacecdd3020403c4841c0eb339213"
+source = "git+https://github.com/w3f/ring-proof?rev=0e948f3#0e948f3c28cbacecdd3020403c4841c0eb339213"
dependencies = [
"ark-ec",
"ark-ff",
@@ -2842,7 +2814,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-aura",
"pallet-authorship",
@@ -2863,7 +2835,7 @@ dependencies = [
"parachains-common",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-common",
"rococo-runtime-constants",
"scale-info",
@@ -2880,10 +2852,10 @@ dependencies = [
"sp-storage",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -3113,7 +3085,7 @@ dependencies = [
"anes",
"cast",
"ciborium",
- "clap 4.4.0",
+ "clap 4.4.2",
"criterion-plot",
"futures",
"is-terminal",
@@ -3278,7 +3250,7 @@ dependencies = [
name = "cumulus-client-cli"
version = "0.1.0"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"parity-scale-codec",
"sc-chain-spec",
"sc-cli",
@@ -3442,7 +3414,7 @@ dependencies = [
"parity-scale-codec",
"parking_lot 0.12.1",
"polkadot-node-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-test-client",
"portpicker",
@@ -3555,7 +3527,7 @@ dependencies = [
"sp-runtime",
"sp-std",
"sp-version",
- "xcm",
+ "staging-xcm",
]
[[package]]
@@ -3572,12 +3544,12 @@ dependencies = [
"environmental",
"frame-support",
"frame-system",
- "hex-literal 0.4.1",
+ "hex-literal",
"impl-trait-for-tuples",
"lazy_static",
"log",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"sc-client-api",
"scale-info",
"sp-core",
@@ -3591,8 +3563,8 @@ dependencies = [
"sp-tracing",
"sp-trie",
"sp-version",
+ "staging-xcm",
"trie-db",
- "xcm",
]
[[package]]
@@ -3602,7 +3574,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -3645,7 +3617,7 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-std",
- "xcm",
+ "staging-xcm",
]
[[package]]
@@ -3668,9 +3640,9 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-std",
- "xcm",
- "xcm-builder",
- "xcm-executor",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
]
[[package]]
@@ -3685,7 +3657,7 @@ dependencies = [
"scale-info",
"sp-runtime",
"sp-std",
- "xcm",
+ "staging-xcm",
]
[[package]]
@@ -3707,14 +3679,14 @@ version = "0.1.0"
dependencies = [
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"scale-info",
"sp-api",
"sp-runtime",
"sp-std",
"sp-trie",
- "xcm",
+ "staging-xcm",
]
[[package]]
@@ -3763,9 +3735,9 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-std",
- "xcm",
- "xcm-builder",
- "xcm-executor",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
]
[[package]]
@@ -3897,7 +3869,7 @@ dependencies = [
"pallet-balances",
"pallet-transaction-payment",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"sc-block-builder",
"sc-consensus",
@@ -3972,7 +3944,7 @@ name = "cumulus-test-service"
version = "0.1.0"
dependencies = [
"async-trait",
- "clap 4.4.0",
+ "clap 4.4.2",
"criterion 0.5.1",
"cumulus-client-cli",
"cumulus-client-consensus-common",
@@ -4095,7 +4067,7 @@ checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -4135,7 +4107,7 @@ dependencies = [
"proc-macro2",
"quote",
"scratch",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -4152,7 +4124,7 @@ checksum = "50c49547d73ba8dcfd4ad7325d64c6d5391ff4224d498fc39a6f3f49825a530d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -4450,7 +4422,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -4462,10 +4434,11 @@ checksum = "86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632"
[[package]]
name = "dleq_vrf"
version = "0.0.2"
-source = "git+https://github.com/w3f/ring-vrf?rev=c86ebd4#c86ebd4114d3165d05f9ce28c1d9e8d7a9a4e801"
+source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1"
dependencies = [
"ark-ec",
"ark-ff",
+ "ark-scale",
"ark-secret-scalar",
"ark-serialize",
"ark-std",
@@ -4511,7 +4484,7 @@ dependencies = [
"proc-macro2",
"quote",
"regex",
- "syn 2.0.29",
+ "syn 2.0.31",
"termcolor",
"toml 0.7.6",
"walkdir",
@@ -4588,15 +4561,6 @@ dependencies = [
"spki 0.7.2",
]
-[[package]]
-name = "ed25519"
-version = "1.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7"
-dependencies = [
- "signature 1.6.4",
-]
-
[[package]]
name = "ed25519"
version = "2.2.2"
@@ -4607,20 +4571,6 @@ dependencies = [
"signature 2.1.0",
]
-[[package]]
-name = "ed25519-dalek"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d"
-dependencies = [
- "curve25519-dalek 3.2.0",
- "ed25519 1.5.3",
- "rand 0.7.3",
- "serde",
- "sha2 0.9.9",
- "zeroize",
-]
-
[[package]]
name = "ed25519-dalek"
version = "2.0.0"
@@ -4628,7 +4578,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980"
dependencies = [
"curve25519-dalek 4.0.0",
- "ed25519 2.2.2",
+ "ed25519",
"rand_core 0.6.4",
"serde",
"sha2 0.10.7",
@@ -4656,7 +4606,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e83e509bcd060ca4b54b72bde5bb306cb2088cb01e14797ebae90a24f70f5f7"
dependencies = [
"curve25519-dalek 4.0.0",
- "ed25519 2.2.2",
+ "ed25519",
"hashbrown 0.14.0",
"hex",
"rand_core 0.6.4",
@@ -4755,18 +4705,18 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
name = "enumn"
-version = "0.1.11"
+version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b893c4eb2dc092c811165f84dc7447fae16fb66521717968c34c509b39b1a5c5"
+checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -4929,7 +4879,7 @@ dependencies = [
"fs-err",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -5219,7 +5169,7 @@ dependencies = [
"Inflector",
"array-bytes",
"chrono",
- "clap 4.4.0",
+ "clap 4.4.2",
"comfy-table",
"frame-benchmarking",
"frame-support",
@@ -5285,7 +5235,7 @@ dependencies = [
"quote",
"scale-info",
"sp-arithmetic",
- "syn 2.0.29",
+ "syn 2.0.31",
"trybuild",
]
@@ -5311,7 +5261,7 @@ dependencies = [
name = "frame-election-solution-type-fuzzer"
version = "2.0.0-alpha.5"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"frame-election-provider-solution-type",
"frame-election-provider-support",
"frame-support",
@@ -5437,7 +5387,7 @@ dependencies = [
"proc-macro-warning",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -5448,7 +5398,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -5457,7 +5407,7 @@ version = "3.0.0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -5680,7 +5630,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -5893,10 +5843,10 @@ dependencies = [
"sp-storage",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -6031,12 +5981,6 @@ version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-[[package]]
-name = "hex-literal"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0"
-
[[package]]
name = "hex-literal"
version = "0.4.1"
@@ -6436,7 +6380,6 @@ dependencies = [
"asset-hub-polkadot-runtime",
"asset-hub-westend-runtime",
"bp-messages",
- "bp-runtime",
"bridge-hub-kusama-runtime",
"bridge-hub-polkadot-runtime",
"bridge-hub-rococo-runtime",
@@ -6447,24 +6390,19 @@ dependencies = [
"cumulus-pallet-xcmp-queue",
"cumulus-primitives-core",
"frame-support",
- "frame-system",
- "kusama-runtime",
"kusama-runtime-constants",
- "lazy_static",
"pallet-assets",
- "pallet-balances",
"pallet-bridge-messages",
"pallet-im-online",
"pallet-message-queue",
"pallet-staking",
"pallet-xcm",
- "parachain-info",
"parachains-common",
"parity-scale-codec",
"paste",
"penpal-runtime",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-runtime",
"polkadot-runtime-constants",
@@ -6478,13 +6416,11 @@ dependencies = [
"sp-consensus-beefy",
"sp-core",
"sp-runtime",
- "sp-tracing",
- "sp-weights",
+ "staging-kusama-runtime",
+ "staging-xcm",
"westend-runtime",
"westend-runtime-constants",
- "xcm",
"xcm-emulator",
- "xcm-executor",
]
[[package]]
@@ -6506,12 +6442,6 @@ dependencies = [
"webrtc-util",
]
-[[package]]
-name = "intx"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f38a50a899dc47a6d0ed5508e7f601a2e34c3a85303514b5d137f3c10a0c75"
-
[[package]]
name = "io-lifetimes"
version = "1.0.11"
@@ -6916,119 +6846,6 @@ dependencies = [
"substrate-wasm-builder",
]
-[[package]]
-name = "kusama-runtime"
-version = "1.0.0"
-dependencies = [
- "binary-merkle-tree",
- "bitvec",
- "frame-benchmarking",
- "frame-election-provider-support",
- "frame-executive",
- "frame-remote-externalities",
- "frame-support",
- "frame-system",
- "frame-system-benchmarking",
- "frame-system-rpc-runtime-api",
- "frame-try-runtime",
- "hex-literal 0.4.1",
- "kusama-runtime-constants",
- "log",
- "pallet-authority-discovery",
- "pallet-authorship",
- "pallet-babe",
- "pallet-bags-list",
- "pallet-balances",
- "pallet-beefy",
- "pallet-beefy-mmr",
- "pallet-bounties",
- "pallet-child-bounties",
- "pallet-collective",
- "pallet-conviction-voting",
- "pallet-democracy",
- "pallet-election-provider-multi-phase",
- "pallet-election-provider-support-benchmarking",
- "pallet-elections-phragmen",
- "pallet-fast-unstake",
- "pallet-grandpa",
- "pallet-identity",
- "pallet-im-online",
- "pallet-indices",
- "pallet-membership",
- "pallet-message-queue",
- "pallet-mmr",
- "pallet-multisig",
- "pallet-nis",
- "pallet-nomination-pools",
- "pallet-nomination-pools-benchmarking",
- "pallet-nomination-pools-runtime-api",
- "pallet-offences",
- "pallet-offences-benchmarking",
- "pallet-preimage",
- "pallet-proxy",
- "pallet-ranked-collective",
- "pallet-recovery",
- "pallet-referenda",
- "pallet-scheduler",
- "pallet-session",
- "pallet-session-benchmarking",
- "pallet-society",
- "pallet-staking",
- "pallet-staking-runtime-api",
- "pallet-state-trie-migration",
- "pallet-timestamp",
- "pallet-tips",
- "pallet-transaction-payment",
- "pallet-transaction-payment-rpc-runtime-api",
- "pallet-treasury",
- "pallet-utility",
- "pallet-vesting",
- "pallet-whitelist",
- "pallet-xcm",
- "pallet-xcm-benchmarks",
- "parity-scale-codec",
- "polkadot-primitives",
- "polkadot-runtime-common",
- "polkadot-runtime-parachains",
- "rustc-hex",
- "scale-info",
- "separator",
- "serde",
- "serde_derive",
- "serde_json",
- "smallvec",
- "sp-api",
- "sp-application-crypto",
- "sp-arithmetic",
- "sp-authority-discovery",
- "sp-block-builder",
- "sp-consensus-babe",
- "sp-consensus-beefy",
- "sp-core",
- "sp-inherents",
- "sp-io",
- "sp-keyring",
- "sp-mmr-primitives",
- "sp-npos-elections",
- "sp-offchain",
- "sp-runtime",
- "sp-session",
- "sp-staking",
- "sp-std",
- "sp-storage",
- "sp-tracing",
- "sp-transaction-pool",
- "sp-trie",
- "sp-version",
- "static_assertions",
- "substrate-wasm-builder",
- "tiny-keccak",
- "tokio",
- "xcm",
- "xcm-builder",
- "xcm-executor",
-]
-
[[package]]
name = "kusama-runtime-constants"
version = "1.0.0"
@@ -7040,7 +6857,7 @@ dependencies = [
"sp-core",
"sp-runtime",
"sp-weights",
- "xcm",
+ "staging-xcm",
]
[[package]]
@@ -7285,7 +7102,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce"
dependencies = [
"bs58 0.4.0",
- "ed25519-dalek 2.0.0",
+ "ed25519-dalek",
"log",
"multiaddr",
"multihash",
@@ -7815,7 +7632,7 @@ dependencies = [
"macro_magic_core",
"macro_magic_macros",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -7829,7 +7646,7 @@ dependencies = [
"macro_magic_core_macros",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -7840,7 +7657,7 @@ checksum = "c12469fc165526520dff2807c2975310ab47cf7190a45b99b49a7dc8befab17b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -7851,7 +7668,7 @@ checksum = "b8fb85ec1620619edf2984a7693497d4ec88a9665d8b87e942856884c92dbf2a"
dependencies = [
"macro_magic_core",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -8347,7 +8164,7 @@ name = "node-bench"
version = "0.9.0-dev"
dependencies = [
"array-bytes",
- "clap 4.4.0",
+ "clap 4.4.2",
"derive_more",
"fs_extra",
"futures",
@@ -8384,7 +8201,7 @@ version = "3.0.0-dev"
dependencies = [
"array-bytes",
"assert_cmd",
- "clap 4.4.0",
+ "clap 4.4.2",
"clap_complete",
"criterion 0.4.0",
"frame-benchmarking-cli",
@@ -8510,7 +8327,7 @@ dependencies = [
name = "node-inspect"
version = "0.9.0-dev"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"parity-scale-codec",
"sc-cli",
"sc-client-api",
@@ -8564,7 +8381,7 @@ dependencies = [
name = "node-runtime-generate-bags"
version = "3.0.0"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"generate-bags",
"kitchensink-runtime",
]
@@ -8573,7 +8390,7 @@ dependencies = [
name = "node-template"
version = "4.0.0-dev"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"frame-benchmarking",
"frame-benchmarking-cli",
"frame-system",
@@ -8616,7 +8433,7 @@ dependencies = [
name = "node-template-release"
version = "3.0.0"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"flate2",
"fs_extra",
"glob",
@@ -9536,7 +9353,7 @@ dependencies = [
"sp-runtime",
"sp-std",
"wasm-instrument 0.4.0",
- "wasmi 0.30.0",
+ "wasmi",
"wat",
]
@@ -9558,7 +9375,7 @@ version = "4.0.0-dev"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -10085,7 +9902,6 @@ dependencies = [
name = "pallet-nfts-runtime-api"
version = "4.0.0-dev"
dependencies = [
- "frame-support",
"pallet-nfts",
"parity-scale-codec",
"sp-api",
@@ -10630,7 +10446,7 @@ dependencies = [
"proc-macro2",
"quote",
"sp-runtime",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -10944,7 +10760,7 @@ dependencies = [
"log",
"pallet-balances",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-parachains",
"scale-info",
"serde",
@@ -10952,9 +10768,9 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-std",
- "xcm",
- "xcm-builder",
- "xcm-executor",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
]
[[package]]
@@ -10977,9 +10793,9 @@ dependencies = [
"sp-runtime",
"sp-std",
"sp-tracing",
- "xcm",
- "xcm-builder",
- "xcm-executor",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
]
[[package]]
@@ -10997,8 +10813,8 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-std",
- "xcm",
- "xcm-builder",
+ "staging-xcm",
+ "staging-xcm-builder",
]
[[package]]
@@ -11018,7 +10834,7 @@ dependencies = [
name = "parachain-template-node"
version = "0.1.0"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"color-print",
"cumulus-client-cli",
"cumulus-client-collator",
@@ -11065,10 +10881,10 @@ dependencies = [
"sp-keystore",
"sp-runtime",
"sp-timestamp",
+ "staging-xcm",
"substrate-build-script-utils",
"substrate-frame-rpc-system",
"substrate-prometheus-endpoint",
- "xcm",
]
[[package]]
@@ -11090,7 +10906,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-aura",
"pallet-authorship",
@@ -11105,7 +10921,7 @@ dependencies = [
"pallet-xcm",
"parachain-info",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-common",
"scale-info",
"smallvec",
@@ -11120,10 +10936,10 @@ dependencies = [
"sp-std",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -11134,6 +10950,7 @@ dependencies = [
"cumulus-primitives-utility",
"frame-support",
"frame-system",
+ "kusama-runtime-constants",
"log",
"num-traits",
"pallet-asset-tx-payment",
@@ -11143,17 +10960,22 @@ dependencies = [
"pallet-collator-selection",
"parachain-info",
"parity-scale-codec",
+ "polkadot-core-primitives",
"polkadot-primitives",
+ "polkadot-runtime-constants",
+ "rococo-runtime-constants",
"scale-info",
+ "smallvec",
"sp-consensus-aura",
"sp-core",
"sp-io",
"sp-runtime",
"sp-std",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
+ "westend-runtime-constants",
]
[[package]]
@@ -11169,7 +10991,7 @@ dependencies = [
"cumulus-test-relay-sproof-builder",
"frame-support",
"frame-system",
- "hex-literal 0.4.1",
+ "hex-literal",
"pallet-assets",
"pallet-balances",
"pallet-collator-selection",
@@ -11178,16 +11000,16 @@ dependencies = [
"parachain-info",
"parachains-common",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"sp-consensus-aura",
"sp-core",
"sp-io",
"sp-runtime",
"sp-std",
"sp-tracing",
+ "staging-xcm",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-executor",
]
[[package]]
@@ -11414,7 +11236,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-asset-tx-payment",
"pallet-assets",
@@ -11431,7 +11253,7 @@ dependencies = [
"parachain-info",
"parachains-common",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-runtime-common",
"scale-info",
@@ -11448,10 +11270,10 @@ dependencies = [
"sp-storage",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -11490,7 +11312,7 @@ dependencies = [
"pest_meta",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -11531,7 +11353,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -11749,7 +11571,7 @@ dependencies = [
name = "polkadot-cli"
version = "1.0.0"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"frame-benchmarking-cli",
"futures",
"log",
@@ -12066,7 +11888,7 @@ dependencies = [
"polkadot-node-subsystem-test-helpers",
"polkadot-node-subsystem-util",
"polkadot-overseer",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-primitives-test-helpers",
"sp-core",
@@ -12212,7 +12034,7 @@ dependencies = [
"assert_matches",
"futures",
"futures-timer",
- "hex-literal 0.3.4",
+ "hex-literal",
"libc",
"parity-scale-codec",
"pin-project",
@@ -12223,7 +12045,7 @@ dependencies = [
"polkadot-node-core-pvf-prepare-worker",
"polkadot-node-metrics",
"polkadot-node-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"rand 0.8.5",
"slotmap",
@@ -12272,7 +12094,7 @@ dependencies = [
"landlock",
"libc",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"sc-executor",
"sc-executor-common",
@@ -12294,13 +12116,12 @@ dependencies = [
"futures",
"parity-scale-codec",
"polkadot-node-core-pvf-common",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"rayon",
"sp-core",
"sp-maybe-compressed-blob",
"sp-tracing",
- "tikv-jemalloc-ctl",
"tokio",
"tracing-gum",
]
@@ -12313,7 +12134,7 @@ dependencies = [
"libc",
"parity-scale-codec",
"polkadot-node-core-pvf-common",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"rayon",
"sc-executor",
@@ -12370,7 +12191,7 @@ name = "polkadot-node-metrics"
version = "1.0.0"
dependencies = [
"assert_cmd",
- "bs58 0.4.0",
+ "bs58 0.5.0",
"futures",
"futures-timer",
"hyper",
@@ -12423,7 +12244,7 @@ dependencies = [
"futures",
"parity-scale-codec",
"polkadot-erasure-coding",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"schnorrkel 0.9.1",
"serde",
@@ -12434,7 +12255,7 @@ dependencies = [
"sp-maybe-compressed-blob",
"sp-runtime",
"thiserror",
- "zstd 0.11.2+zstd.1.5.2",
+ "zstd 0.12.4",
]
[[package]]
@@ -12455,9 +12276,10 @@ dependencies = [
"parking_lot 0.12.1",
"polkadot-node-subsystem",
"polkadot-node-subsystem-util",
- "polkadot-overseer",
"polkadot-primitives",
+ "sc-client-api",
"sc-keystore",
+ "sc-utils",
"sp-application-crypto",
"sp-core",
"sp-keyring",
@@ -12477,6 +12299,7 @@ dependencies = [
"polkadot-node-primitives",
"polkadot-primitives",
"polkadot-statement-table",
+ "sc-client-api",
"sc-network",
"sc-transaction-pool-api",
"smallvec",
@@ -12514,11 +12337,13 @@ dependencies = [
"polkadot-node-primitives",
"polkadot-node-subsystem",
"polkadot-node-subsystem-test-helpers",
+ "polkadot-node-subsystem-types",
"polkadot-overseer",
"polkadot-primitives",
"polkadot-primitives-test-helpers",
"prioritized-metered-channel",
"rand 0.8.5",
+ "sc-client-api",
"schnellru",
"sp-application-crypto",
"sp-core",
@@ -12542,6 +12367,7 @@ dependencies = [
"polkadot-node-metrics",
"polkadot-node-network-protocol",
"polkadot-node-primitives",
+ "polkadot-node-subsystem-test-helpers",
"polkadot-node-subsystem-types",
"polkadot-primitives",
"polkadot-primitives-test-helpers",
@@ -12554,22 +12380,6 @@ dependencies = [
"tracing-gum",
]
-[[package]]
-name = "polkadot-parachain"
-version = "1.0.0"
-dependencies = [
- "bounded-collections",
- "derive_more",
- "frame-support",
- "parity-scale-codec",
- "polkadot-core-primitives",
- "scale-info",
- "serde",
- "sp-core",
- "sp-runtime",
- "sp-std",
-]
-
[[package]]
name = "polkadot-parachain-bin"
version = "1.0.0"
@@ -12582,7 +12392,7 @@ dependencies = [
"bridge-hub-kusama-runtime",
"bridge-hub-polkadot-runtime",
"bridge-hub-rococo-runtime",
- "clap 4.4.0",
+ "clap 4.4.2",
"collectives-polkadot-runtime",
"color-print",
"contracts-rococo-runtime",
@@ -12600,7 +12410,7 @@ dependencies = [
"frame-benchmarking-cli",
"futures",
"glutton-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"jsonrpsee",
"log",
"nix 0.26.2",
@@ -12643,6 +12453,7 @@ dependencies = [
"sp-session",
"sp-timestamp",
"sp-transaction-pool",
+ "staging-xcm",
"substrate-build-script-utils",
"substrate-frame-rpc-system",
"substrate-prometheus-endpoint",
@@ -12650,7 +12461,22 @@ dependencies = [
"tempfile",
"tokio",
"wait-timeout",
- "xcm",
+]
+
+[[package]]
+name = "polkadot-parachain-primitives"
+version = "1.0.0"
+dependencies = [
+ "bounded-collections",
+ "derive_more",
+ "frame-support",
+ "parity-scale-codec",
+ "polkadot-core-primitives",
+ "scale-info",
+ "serde",
+ "sp-core",
+ "sp-runtime",
+ "sp-std",
]
[[package]]
@@ -12658,7 +12484,6 @@ name = "polkadot-performance-test"
version = "1.0.0"
dependencies = [
"env_logger 0.9.3",
- "kusama-runtime",
"log",
"polkadot-erasure-coding",
"polkadot-node-core-pvf-prepare-worker",
@@ -12667,6 +12492,7 @@ dependencies = [
"quote",
"sc-executor-common",
"sp-maybe-compressed-blob",
+ "staging-kusama-runtime",
"thiserror",
]
@@ -12675,10 +12501,10 @@ name = "polkadot-primitives"
version = "1.0.0"
dependencies = [
"bitvec",
- "hex-literal 0.4.1",
+ "hex-literal",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"scale-info",
"serde",
"sp-api",
@@ -12752,7 +12578,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-authority-discovery",
"pallet-authorship",
@@ -12833,13 +12659,13 @@ dependencies = [
"sp-transaction-pool",
"sp-trie",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"static_assertions",
"substrate-wasm-builder",
"tiny-keccak",
"tokio",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -12852,7 +12678,7 @@ dependencies = [
"frame-support",
"frame-support-test",
"frame-system",
- "hex-literal 0.4.1",
+ "hex-literal",
"impl-trait-for-tuples",
"libsecp256k1",
"log",
@@ -12890,9 +12716,9 @@ dependencies = [
"sp-session",
"sp-staking",
"sp-std",
+ "staging-xcm",
+ "staging-xcm-executor",
"static_assertions",
- "xcm",
- "xcm-executor",
]
[[package]]
@@ -12906,14 +12732,14 @@ dependencies = [
"sp-core",
"sp-runtime",
"sp-weights",
- "xcm",
+ "staging-xcm",
]
[[package]]
name = "polkadot-runtime-metrics"
version = "1.0.0"
dependencies = [
- "bs58 0.4.0",
+ "bs58 0.5.0",
"frame-benchmarking",
"parity-scale-codec",
"polkadot-primitives",
@@ -12934,7 +12760,8 @@ dependencies = [
"frame-support-test",
"frame-system",
"futures",
- "hex-literal 0.4.1",
+ "hex-literal",
+ "impl-trait-for-tuples",
"log",
"pallet-authority-discovery",
"pallet-authorship",
@@ -12946,7 +12773,8 @@ dependencies = [
"pallet-timestamp",
"pallet-vesting",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-core-primitives",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-primitives-test-helpers",
"polkadot-runtime-metrics",
@@ -12969,10 +12797,10 @@ dependencies = [
"sp-staking",
"sp-std",
"sp-tracing",
+ "staging-xcm",
+ "staging-xcm-executor",
"static_assertions",
"thousands",
- "xcm",
- "xcm-executor",
]
[[package]]
@@ -12988,9 +12816,8 @@ dependencies = [
"frame-system",
"frame-system-rpc-runtime-api",
"futures",
- "hex-literal 0.4.1",
+ "hex-literal",
"is_executable",
- "kusama-runtime",
"kusama-runtime-constants",
"kvdb",
"kvdb-rocksdb",
@@ -13034,7 +12861,7 @@ dependencies = [
"polkadot-node-subsystem-types",
"polkadot-node-subsystem-util",
"polkadot-overseer",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-rpc",
"polkadot-runtime",
@@ -13095,6 +12922,7 @@ dependencies = [
"sp-transaction-pool",
"sp-version",
"sp-weights",
+ "staging-kusama-runtime",
"substrate-prometheus-endpoint",
"tempfile",
"thiserror",
@@ -13182,7 +13010,7 @@ version = "1.0.0"
dependencies = [
"assert_matches",
"async-trait",
- "clap 4.4.0",
+ "clap 4.4.2",
"color-eyre",
"futures",
"futures-timer",
@@ -13217,7 +13045,7 @@ dependencies = [
"frame-support",
"frame-system",
"frame-system-rpc-runtime-api",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-authority-discovery",
"pallet-authorship",
@@ -13236,7 +13064,7 @@ dependencies = [
"pallet-vesting",
"pallet-xcm",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-runtime-common",
"polkadot-runtime-parachains",
@@ -13264,12 +13092,12 @@ dependencies = [
"sp-transaction-pool",
"sp-trie",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
"test-runtime-constants",
"tiny-keccak",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -13285,7 +13113,7 @@ dependencies = [
"polkadot-node-primitives",
"polkadot-node-subsystem",
"polkadot-overseer",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-rpc",
"polkadot-runtime-common",
@@ -13328,11 +13156,11 @@ dependencies = [
name = "polkadot-voter-bags"
version = "1.0.0"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"generate-bags",
- "kusama-runtime",
"polkadot-runtime",
"sp-io",
+ "staging-kusama-runtime",
"westend-runtime",
]
@@ -13508,7 +13336,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62"
dependencies = [
"proc-macro2",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -13584,13 +13412,13 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
[[package]]
name = "proc-macro-warning"
-version = "0.4.1"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70550716265d1ec349c41f70dd4f964b4fd88394efe4405f0c1da679c4799a07"
+checksum = "3d1eaa7fa0aa1929ffdf7eeb6eac234dde6268914a14ad44d23521ab6a9b258e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -13636,7 +13464,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -13951,7 +13779,7 @@ checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd"
dependencies = [
"pem",
"ring 0.16.20",
- "time 0.3.27",
+ "time",
"x509-parser 0.13.2",
"yasna",
]
@@ -13964,7 +13792,7 @@ checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b"
dependencies = [
"pem",
"ring 0.16.20",
- "time 0.3.27",
+ "time",
"yasna",
]
@@ -14027,7 +13855,7 @@ checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -14090,9 +13918,8 @@ checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
name = "remote-ext-tests-bags-list"
version = "1.0.0"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"frame-system",
- "kusama-runtime",
"kusama-runtime-constants",
"log",
"pallet-bags-list-remote-tests",
@@ -14100,6 +13927,7 @@ dependencies = [
"polkadot-runtime-constants",
"sp-core",
"sp-tracing",
+ "staging-kusama-runtime",
"tokio",
"westend-runtime",
"westend-runtime-constants",
@@ -14178,7 +14006,7 @@ dependencies = [
[[package]]
name = "ring"
version = "0.1.0"
-source = "git+https://github.com/w3f/ring-proof#0e948f3c28cbacecdd3020403c4841c0eb339213"
+source = "git+https://github.com/w3f/ring-proof?rev=0e948f3#0e948f3c28cbacecdd3020403c4841c0eb339213"
dependencies = [
"ark-ec",
"ark-ff",
@@ -14259,7 +14087,7 @@ dependencies = [
"parachain-info",
"parachains-common",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"scale-info",
"sp-api",
"sp-block-builder",
@@ -14272,10 +14100,10 @@ dependencies = [
"sp-std",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -14291,7 +14119,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-authority-discovery",
"pallet-authorship",
@@ -14333,7 +14161,7 @@ dependencies = [
"pallet-xcm",
"pallet-xcm-benchmarks",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-runtime-common",
"polkadot-runtime-parachains",
@@ -14364,13 +14192,13 @@ dependencies = [
"sp-transaction-pool",
"sp-trie",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"static_assertions",
"substrate-wasm-builder",
"tiny-keccak",
"tokio",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -14384,7 +14212,7 @@ dependencies = [
"sp-core",
"sp-runtime",
"sp-weights",
- "xcm",
+ "staging-xcm",
]
[[package]]
@@ -14790,7 +14618,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -14799,7 +14627,7 @@ version = "0.10.0-dev"
dependencies = [
"array-bytes",
"chrono",
- "clap 4.4.0",
+ "clap 4.4.2",
"fdlimit",
"futures",
"futures-timer",
@@ -15903,7 +15731,7 @@ dependencies = [
name = "sc-storage-monitor"
version = "0.1.0"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"fs4",
"log",
"sc-client-db",
@@ -16003,7 +15831,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -16342,22 +16170,22 @@ checksum = "f97841a747eef040fcd2e7b3b9a220a7205926e60488e673d9e4926d27772ce5"
[[package]]
name = "serde"
-version = "1.0.186"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f5db24220c009de9bd45e69fb2938f4b6d2df856aa9304ce377b3180f83b7c1"
+checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.186"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ad697f7e0b65af4983a4ce8f56ed5b357e8d3c36651bf6a7e13639c17b8e670"
+checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -16423,7 +16251,7 @@ checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -16541,10 +16369,10 @@ dependencies = [
"sp-std",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -16730,7 +16558,7 @@ dependencies = [
"smallvec",
"soketto",
"twox-hash",
- "wasmi 0.31.0",
+ "wasmi",
"x25519-dalek 2.0.0",
"zeroize",
]
@@ -16863,7 +16691,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -16942,9 +16770,9 @@ dependencies = [
[[package]]
name = "sp-ark-bls12-377"
-version = "0.4.0-beta"
+version = "0.4.1-beta"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b8e61a06f286f4e8565a67865ef52e83edabf447881898c94527ffc7b839177"
+checksum = "f9b60ba7d8fbb82e21f5be499b02438c9a79365acb441a4dc3993179f09c4cc9"
dependencies = [
"ark-bls12-377",
"ark-ff",
@@ -16957,9 +16785,9 @@ dependencies = [
[[package]]
name = "sp-ark-bls12-381"
-version = "0.4.0-beta"
+version = "0.4.1-beta"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3352feef6c9c34022fa766a0c9a86a88a83d280a3e5b34781a1a9af98377a130"
+checksum = "c2cd101171d2e988a4e1b2320ad3f26f8746a263110c7153213fe86293e0552b"
dependencies = [
"ark-bls12-381",
"ark-ff",
@@ -16972,9 +16800,9 @@ dependencies = [
[[package]]
name = "sp-ark-bw6-761"
-version = "0.4.0-beta"
+version = "0.4.1-beta"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bf069165e230aef3c4680edea2d8ab3caa89c039e0b61fad2b8e061fb393668"
+checksum = "d94d66ba98893cc42dfe81d5b5dee9142577176bdbdba80ec25a37d8cdffdbd5"
dependencies = [
"ark-bw6-761",
"ark-ff",
@@ -16986,9 +16814,9 @@ dependencies = [
[[package]]
name = "sp-ark-ed-on-bls12-377"
-version = "0.4.0-beta"
+version = "0.4.1-beta"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e63f1fe8e7e87cb0258d61212b019d4d0fd230293ec42a564eb671c83d437497"
+checksum = "37f6ea96c9b1cd4cbd05d741225ff7f6328ab035bda16cf3fac105c87ad98959"
dependencies = [
"ark-ed-on-bls12-377",
"ark-ff",
@@ -17002,9 +16830,9 @@ dependencies = [
[[package]]
name = "sp-ark-ed-on-bls12-381-bandersnatch"
-version = "0.4.0-beta"
+version = "0.4.1-beta"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "838ddc5508aff3e89f930e7e7f3565d0786ac27868cfd61587afe681011e1140"
+checksum = "4db7a801260397cd58077befcee87acfdde8c189f48718bba1bc3783c799b67b"
dependencies = [
"ark-ec",
"ark-ed-on-bls12-381-bandersnatch",
@@ -17019,9 +16847,9 @@ dependencies = [
[[package]]
name = "sp-ark-models"
-version = "0.4.0"
+version = "0.4.1-beta"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28fa906b809d7a346b2aa32a4bd0c884a75f9f588f9a4a07272f63eaf8a10765"
+checksum = "cd77599e09f12893739e1ef822ae065f2f46c3be040ba1979bb786ae21059f44"
dependencies = [
"ark-ec",
"ark-ff",
@@ -17170,6 +16998,21 @@ dependencies = [
"sp-std",
]
+[[package]]
+name = "sp-consensus-sassafras"
+version = "0.3.4-dev"
+dependencies = [
+ "parity-scale-codec",
+ "scale-info",
+ "serde",
+ "sp-api",
+ "sp-application-crypto",
+ "sp-consensus-slots",
+ "sp-core",
+ "sp-runtime",
+ "sp-std",
+]
+
[[package]]
name = "sp-consensus-slots"
version = "0.10.0-dev"
@@ -17191,7 +17034,7 @@ dependencies = [
"bitflags 1.3.2",
"blake2",
"bounded-collections",
- "bs58 0.4.0",
+ "bs58 0.5.0",
"criterion 0.4.0",
"dyn-clonable",
"ed25519-zebra 3.1.0",
@@ -17249,7 +17092,7 @@ version = "9.0.0"
dependencies = [
"quote",
"sp-core-hashing",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -17293,7 +17136,7 @@ version = "8.0.0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -17335,7 +17178,7 @@ name = "sp-io"
version = "23.0.0"
dependencies = [
"bytes",
- "ed25519-dalek 2.0.0",
+ "ed25519-dalek",
"libsecp256k1",
"log",
"parity-scale-codec",
@@ -17431,7 +17274,7 @@ dependencies = [
name = "sp-npos-elections-fuzzer"
version = "2.0.0-alpha.5"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"honggfuzz",
"rand 0.8.5",
"sp-npos-elections",
@@ -17524,7 +17367,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -17622,7 +17465,7 @@ version = "4.0.0-dev"
dependencies = [
"aes-gcm 0.10.2",
"curve25519-dalek 4.0.0",
- "ed25519-dalek 2.0.0",
+ "ed25519-dalek",
"hkdf",
"parity-scale-codec",
"rand 0.8.5",
@@ -17764,7 +17607,7 @@ dependencies = [
"proc-macro2",
"quote",
"sp-version",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -17858,19 +17701,131 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
[[package]]
-name = "staking-miner"
+name = "staging-kusama-runtime"
version = "1.0.0"
dependencies = [
- "assert_cmd",
- "clap 4.4.0",
- "exitcode",
+ "binary-merkle-tree",
+ "bitvec",
+ "frame-benchmarking",
+ "frame-election-provider-support",
+ "frame-executive",
+ "frame-remote-externalities",
+ "frame-support",
+ "frame-system",
+ "frame-system-benchmarking",
+ "frame-system-rpc-runtime-api",
+ "frame-try-runtime",
+ "hex-literal",
+ "kusama-runtime-constants",
+ "log",
+ "pallet-authority-discovery",
+ "pallet-authorship",
+ "pallet-babe",
+ "pallet-bags-list",
+ "pallet-balances",
+ "pallet-beefy",
+ "pallet-beefy-mmr",
+ "pallet-bounties",
+ "pallet-child-bounties",
+ "pallet-collective",
+ "pallet-conviction-voting",
+ "pallet-democracy",
+ "pallet-election-provider-multi-phase",
+ "pallet-election-provider-support-benchmarking",
+ "pallet-elections-phragmen",
+ "pallet-fast-unstake",
+ "pallet-grandpa",
+ "pallet-identity",
+ "pallet-im-online",
+ "pallet-indices",
+ "pallet-membership",
+ "pallet-message-queue",
+ "pallet-mmr",
+ "pallet-multisig",
+ "pallet-nis",
+ "pallet-nomination-pools",
+ "pallet-nomination-pools-benchmarking",
+ "pallet-nomination-pools-runtime-api",
+ "pallet-offences",
+ "pallet-offences-benchmarking",
+ "pallet-preimage",
+ "pallet-proxy",
+ "pallet-ranked-collective",
+ "pallet-recovery",
+ "pallet-referenda",
+ "pallet-scheduler",
+ "pallet-session",
+ "pallet-session-benchmarking",
+ "pallet-society",
+ "pallet-staking",
+ "pallet-staking-runtime-api",
+ "pallet-state-trie-migration",
+ "pallet-timestamp",
+ "pallet-tips",
+ "pallet-transaction-payment",
+ "pallet-transaction-payment-rpc-runtime-api",
+ "pallet-treasury",
+ "pallet-utility",
+ "pallet-vesting",
+ "pallet-whitelist",
+ "pallet-xcm",
+ "pallet-xcm-benchmarks",
+ "parity-scale-codec",
+ "polkadot-primitives",
+ "polkadot-runtime-common",
+ "polkadot-runtime-parachains",
+ "rustc-hex",
+ "scale-info",
+ "separator",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "smallvec",
+ "sp-api",
+ "sp-application-crypto",
+ "sp-arithmetic",
+ "sp-authority-discovery",
+ "sp-block-builder",
+ "sp-consensus-babe",
+ "sp-consensus-beefy",
+ "sp-core",
+ "sp-inherents",
+ "sp-io",
+ "sp-keyring",
+ "sp-mmr-primitives",
+ "sp-npos-elections",
+ "sp-offchain",
+ "sp-runtime",
+ "sp-session",
+ "sp-staking",
+ "sp-std",
+ "sp-storage",
+ "sp-tracing",
+ "sp-transaction-pool",
+ "sp-trie",
+ "sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
+ "static_assertions",
+ "substrate-wasm-builder",
+ "tiny-keccak",
+ "tokio",
+]
+
+[[package]]
+name = "staging-staking-miner"
+version = "1.0.0"
+dependencies = [
+ "assert_cmd",
+ "clap 4.4.2",
+ "exitcode",
"frame-election-provider-support",
"frame-remote-externalities",
"frame-support",
"frame-system",
"futures-util",
"jsonrpsee",
- "kusama-runtime",
"log",
"pallet-balances",
"pallet-election-provider-multi-phase",
@@ -17891,6 +17846,7 @@ dependencies = [
"sp-runtime",
"sp-state-machine",
"sp-version",
+ "staging-kusama-runtime",
"sub-tokens",
"thiserror",
"tokio",
@@ -17898,6 +17854,74 @@ dependencies = [
"westend-runtime",
]
+[[package]]
+name = "staging-xcm"
+version = "1.0.0"
+dependencies = [
+ "bounded-collections",
+ "derivative",
+ "environmental",
+ "hex",
+ "hex-literal",
+ "impl-trait-for-tuples",
+ "log",
+ "parity-scale-codec",
+ "scale-info",
+ "serde",
+ "sp-io",
+ "sp-weights",
+ "xcm-procedural",
+]
+
+[[package]]
+name = "staging-xcm-builder"
+version = "1.0.0"
+dependencies = [
+ "assert_matches",
+ "frame-support",
+ "frame-system",
+ "impl-trait-for-tuples",
+ "log",
+ "pallet-assets",
+ "pallet-balances",
+ "pallet-salary",
+ "pallet-transaction-payment",
+ "pallet-xcm",
+ "parity-scale-codec",
+ "polkadot-parachain-primitives",
+ "polkadot-primitives",
+ "polkadot-runtime-parachains",
+ "polkadot-test-runtime",
+ "primitive-types",
+ "scale-info",
+ "sp-arithmetic",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
+ "sp-weights",
+ "staging-xcm",
+ "staging-xcm-executor",
+]
+
+[[package]]
+name = "staging-xcm-executor"
+version = "1.0.0"
+dependencies = [
+ "environmental",
+ "frame-benchmarking",
+ "frame-support",
+ "impl-trait-for-tuples",
+ "log",
+ "parity-scale-codec",
+ "sp-arithmetic",
+ "sp-core",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
+ "sp-weights",
+ "staging-xcm",
+]
+
[[package]]
name = "static_assertions"
version = "1.1.0"
@@ -18016,7 +18040,7 @@ dependencies = [
name = "subkey"
version = "3.0.0"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"sc-cli",
]
@@ -18058,7 +18082,7 @@ dependencies = [
name = "substrate-frame-cli"
version = "4.0.0-dev"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"frame-support",
"frame-system",
"sc-cli",
@@ -18261,30 +18285,10 @@ version = "4.0.0-dev"
dependencies = [
"futures",
"sc-service",
- "substrate-test-utils-derive",
"tokio",
"trybuild",
]
-[[package]]
-name = "substrate-test-utils-derive"
-version = "0.10.0-dev"
-dependencies = [
- "proc-macro-crate",
- "proc-macro2",
- "quote",
- "syn 2.0.29",
-]
-
-[[package]]
-name = "substrate-test-utils-test-crate"
-version = "0.1.0"
-dependencies = [
- "sc-service",
- "substrate-test-utils",
- "tokio",
-]
-
[[package]]
name = "substrate-wasm-builder"
version = "5.0.0-dev"
@@ -18427,9 +18431,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.29"
+version = "2.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"
+checksum = "718fa2415bcb8d8bd775917a1bf12a7931b6dfa890753378538118181e0cb398"
dependencies = [
"proc-macro2",
"quote",
@@ -18526,7 +18530,7 @@ version = "1.0.0"
dependencies = [
"dlmalloc",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"sp-io",
"sp-std",
"substrate-wasm-builder",
@@ -18537,7 +18541,7 @@ dependencies = [
name = "test-parachain-adder-collator"
version = "1.0.0"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"futures",
"futures-timer",
"log",
@@ -18546,7 +18550,7 @@ dependencies = [
"polkadot-node-core-pvf",
"polkadot-node-primitives",
"polkadot-node-subsystem",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-service",
"polkadot-test-service",
@@ -18575,7 +18579,7 @@ dependencies = [
"dlmalloc",
"log",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"sp-io",
"sp-std",
"substrate-wasm-builder",
@@ -18586,7 +18590,7 @@ dependencies = [
name = "test-parachain-undying-collator"
version = "1.0.0"
dependencies = [
- "clap 4.4.0",
+ "clap 4.4.2",
"futures",
"futures-timer",
"log",
@@ -18595,7 +18599,7 @@ dependencies = [
"polkadot-node-core-pvf",
"polkadot-node-primitives",
"polkadot-node-subsystem",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-service",
"polkadot-test-service",
@@ -18641,9 +18645,9 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
[[package]]
name = "thiserror"
-version = "1.0.47"
+version = "1.0.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f"
+checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7"
dependencies = [
"thiserror-impl",
]
@@ -18670,13 +18674,13 @@ dependencies = [
[[package]]
name = "thiserror-impl"
-version = "1.0.47"
+version = "1.0.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b"
+checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -18748,17 +18752,6 @@ dependencies = [
"tikv-jemalloc-sys",
]
-[[package]]
-name = "time"
-version = "0.1.45"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
-dependencies = [
- "libc",
- "wasi 0.10.0+wasi-snapshot-preview1",
- "winapi",
-]
-
[[package]]
name = "time"
version = "0.3.27"
@@ -18867,7 +18860,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -19048,7 +19041,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -19091,7 +19084,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -19262,7 +19255,7 @@ version = "0.10.0-dev"
dependencies = [
"assert_cmd",
"async-trait",
- "clap 4.4.0",
+ "clap 4.4.2",
"frame-remote-externalities",
"frame-try-runtime",
"hex",
@@ -19629,12 +19622,6 @@ version = "0.9.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
-[[package]]
-name = "wasi"
-version = "0.10.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
-
[[package]]
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
@@ -19664,7 +19651,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
"wasm-bindgen-shared",
]
@@ -19698,7 +19685,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -19791,20 +19778,6 @@ dependencies = [
"web-sys",
]
-[[package]]
-name = "wasmi"
-version = "0.30.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51fb5c61993e71158abf5bb863df2674ca3ec39ed6471c64f07aeaf751d67b4"
-dependencies = [
- "intx",
- "smallvec",
- "spin 0.9.8",
- "wasmi_arena",
- "wasmi_core 0.12.0",
- "wasmparser-nostd",
-]
-
[[package]]
name = "wasmi"
version = "0.31.0"
@@ -19814,7 +19787,7 @@ dependencies = [
"smallvec",
"spin 0.9.8",
"wasmi_arena",
- "wasmi_core 0.13.0",
+ "wasmi_core",
"wasmparser-nostd",
]
@@ -19824,18 +19797,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "401c1f35e413fac1846d4843745589d9ec678977ab35a384db8ae7830525d468"
-[[package]]
-name = "wasmi_core"
-version = "0.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "624e6333e861ef49095d2d678b76ebf30b06bf37effca845be7e5b87c90071b7"
-dependencies = [
- "downcast-rs",
- "libm",
- "num-traits",
- "paste",
-]
-
[[package]]
name = "wasmi_core"
version = "0.13.0"
@@ -20163,7 +20124,7 @@ dependencies = [
"sha2 0.10.7",
"stun",
"thiserror",
- "time 0.3.27",
+ "time",
"tokio",
"turn",
"url",
@@ -20360,7 +20321,7 @@ dependencies = [
"frame-system-benchmarking",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
- "hex-literal 0.4.1",
+ "hex-literal",
"log",
"pallet-authority-discovery",
"pallet-authorship",
@@ -20409,7 +20370,7 @@ dependencies = [
"pallet-xcm",
"pallet-xcm-benchmarks",
"parity-scale-codec",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-runtime-common",
"polkadot-runtime-parachains",
@@ -20440,13 +20401,13 @@ dependencies = [
"sp-tracing",
"sp-transaction-pool",
"sp-version",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"substrate-wasm-builder",
"tiny-keccak",
"tokio",
"westend-runtime-constants",
- "xcm",
- "xcm-builder",
- "xcm-executor",
]
[[package]]
@@ -20460,7 +20421,7 @@ dependencies = [
"sp-core",
"sp-runtime",
"sp-weights",
- "xcm",
+ "staging-xcm",
]
[[package]]
@@ -20772,7 +20733,7 @@ dependencies = [
"ring 0.16.20",
"rusticata-macros",
"thiserror",
- "time 0.3.27",
+ "time",
]
[[package]]
@@ -20790,7 +20751,7 @@ dependencies = [
"oid-registry 0.6.1",
"rusticata-macros",
"thiserror",
- "time 0.3.27",
+ "time",
]
[[package]]
@@ -20802,61 +20763,11 @@ dependencies = [
"libc",
]
-[[package]]
-name = "xcm"
-version = "1.0.0"
-dependencies = [
- "bounded-collections",
- "derivative",
- "hex",
- "hex-literal 0.4.1",
- "impl-trait-for-tuples",
- "log",
- "parity-scale-codec",
- "scale-info",
- "serde",
- "sp-io",
- "sp-weights",
- "xcm-procedural",
-]
-
-[[package]]
-name = "xcm-builder"
-version = "1.0.0"
-dependencies = [
- "assert_matches",
- "frame-support",
- "frame-system",
- "impl-trait-for-tuples",
- "log",
- "pallet-assets",
- "pallet-balances",
- "pallet-salary",
- "pallet-transaction-payment",
- "pallet-xcm",
- "parity-scale-codec",
- "polkadot-parachain",
- "polkadot-primitives",
- "polkadot-runtime-parachains",
- "polkadot-test-runtime",
- "primitive-types",
- "scale-info",
- "sp-arithmetic",
- "sp-io",
- "sp-runtime",
- "sp-std",
- "sp-weights",
- "xcm",
- "xcm-executor",
-]
-
[[package]]
name = "xcm-emulator"
version = "0.1.0"
dependencies = [
- "cumulus-pallet-dmp-queue",
"cumulus-pallet-parachain-system",
- "cumulus-pallet-xcmp-queue",
"cumulus-primitives-core",
"cumulus-primitives-parachain-inherent",
"cumulus-test-relay-sproof-builder",
@@ -20867,10 +20778,10 @@ dependencies = [
"log",
"pallet-balances",
"pallet-message-queue",
- "parachain-info",
"parachains-common",
"parity-scale-codec",
"paste",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-runtime-parachains",
"sp-arithmetic",
@@ -20878,28 +20789,9 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-std",
- "sp-trie",
- "xcm",
- "xcm-executor",
-]
-
-[[package]]
-name = "xcm-executor"
-version = "1.0.0"
-dependencies = [
- "environmental",
- "frame-benchmarking",
- "frame-support",
- "impl-trait-for-tuples",
- "log",
- "parity-scale-codec",
- "sp-arithmetic",
- "sp-core",
- "sp-io",
- "sp-runtime",
- "sp-std",
- "sp-weights",
- "xcm",
+ "sp-tracing",
+ "staging-xcm",
+ "staging-xcm-executor",
]
[[package]]
@@ -20919,8 +20811,8 @@ dependencies = [
"sp-runtime",
"sp-state-machine",
"sp-tracing",
- "xcm",
- "xcm-executor",
+ "staging-xcm",
+ "staging-xcm-executor",
]
[[package]]
@@ -20930,7 +20822,7 @@ dependencies = [
"Inflector",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
@@ -20941,13 +20833,13 @@ dependencies = [
"parity-scale-codec",
"paste",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-parachains",
"sp-io",
"sp-std",
- "xcm",
- "xcm-builder",
- "xcm-executor",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
]
[[package]]
@@ -20963,7 +20855,7 @@ dependencies = [
"pallet-xcm",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-parachains",
"scale-info",
"sp-core",
@@ -20971,9 +20863,9 @@ dependencies = [
"sp-runtime",
"sp-std",
"sp-tracing",
- "xcm",
- "xcm-builder",
- "xcm-executor",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"xcm-simulator",
]
@@ -20990,16 +20882,16 @@ dependencies = [
"pallet-xcm",
"parity-scale-codec",
"polkadot-core-primitives",
- "polkadot-parachain",
+ "polkadot-parachain-primitives",
"polkadot-runtime-parachains",
"scale-info",
"sp-core",
"sp-io",
"sp-runtime",
"sp-std",
- "xcm",
- "xcm-builder",
- "xcm-executor",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"xcm-simulator",
]
@@ -21029,7 +20921,7 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd"
dependencies = [
- "time 0.3.27",
+ "time",
]
[[package]]
@@ -21049,7 +20941,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.31",
]
[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index ab10fe5bb75958fd85fbaeeb76339bf1b8adc28f..4db27b98e90788775663aed31cbc10c851316318 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,3 +1,9 @@
+[workspace.package]
+authors = ["Parity Technologies "]
+edition = "2021"
+repository = "https://github.com/paritytech/polkadot-sdk.git"
+license = "GPL-3.0-only"
+
[workspace]
resolver = "2"
@@ -379,6 +385,7 @@ members = [
"substrate/primitives/consensus/common",
"substrate/primitives/consensus/grandpa",
"substrate/primitives/consensus/pow",
+ "substrate/primitives/consensus/sassafras",
"substrate/primitives/consensus/slots",
"substrate/primitives/core",
"substrate/primitives/core/hashing",
@@ -426,11 +433,9 @@ members = [
"substrate/test-utils",
"substrate/test-utils/cli",
"substrate/test-utils/client",
- "substrate/test-utils/derive",
"substrate/test-utils/runtime",
"substrate/test-utils/runtime/client",
"substrate/test-utils/runtime/transaction-pool",
- "substrate/test-utils/test-crate",
"substrate/utils/binary-merkle-tree",
"substrate/utils/build-script-utils",
"substrate/utils/fork-tree",
@@ -448,15 +453,78 @@ members = [
"substrate/utils/wasm-builder",
]
-[workspace.package]
-authors = ["Parity Technologies "]
-edition = "2021"
-repository = "https://github.com/paritytech/polkadot-sdk.git"
-license = "GPL-3.0-only"
-version = "1.0.0"
+[profile.release]
+# Polkadot runtime requires unwinding.
+panic = "unwind"
+opt-level = 3
+
+# make sure dev builds with backtrace do
+# not slow us down
+[profile.dev.package.backtrace]
+inherits = "release"
+
+[profile.production]
+inherits = "release"
+lto = true
+codegen-units = 1
[profile.testnet]
inherits = "release"
debug = 1 # debug symbols are useful for profilers
debug-assertions = true
overflow-checks = true
+
+# The list of dependencies below (which can be both direct and indirect dependencies) are crates
+# that are suspected to be CPU-intensive, and that are unlikely to require debugging (as some of
+# their debug info might be missing) or to require to be frequently recompiled. We compile these
+# dependencies with `opt-level=3` even in "dev" mode in order to make "dev" mode more usable.
+# The majority of these crates are cryptographic libraries.
+#
+# If you see an error mentioning "profile package spec ... did not match any packages", it
+# probably concerns this list.
+#
+# This list is ordered alphabetically.
+[profile.dev.package]
+blake2 = { opt-level = 3 }
+blake2b_simd = { opt-level = 3 }
+chacha20poly1305 = { opt-level = 3 }
+cranelift-codegen = { opt-level = 3 }
+cranelift-wasm = { opt-level = 3 }
+crc32fast = { opt-level = 3 }
+crossbeam-deque = { opt-level = 3 }
+crypto-mac = { opt-level = 3 }
+curve25519-dalek = { opt-level = 3 }
+ed25519-dalek = { opt-level = 3 }
+flate2 = { opt-level = 3 }
+futures-channel = { opt-level = 3 }
+hash-db = { opt-level = 3 }
+hashbrown = { opt-level = 3 }
+hmac = { opt-level = 3 }
+httparse = { opt-level = 3 }
+integer-sqrt = { opt-level = 3 }
+keccak = { opt-level = 3 }
+libm = { opt-level = 3 }
+librocksdb-sys = { opt-level = 3 }
+libsecp256k1 = { opt-level = 3 }
+libz-sys = { opt-level = 3 }
+mio = { opt-level = 3 }
+nalgebra = { opt-level = 3 }
+num-bigint = { opt-level = 3 }
+parking_lot = { opt-level = 3 }
+parking_lot_core = { opt-level = 3 }
+percent-encoding = { opt-level = 3 }
+primitive-types = { opt-level = 3 }
+reed-solomon-novelpoly = { opt-level = 3 }
+ring = { opt-level = 3 }
+rustls = { opt-level = 3 }
+sha2 = { opt-level = 3 }
+sha3 = { opt-level = 3 }
+smallvec = { opt-level = 3 }
+snow = { opt-level = 3 }
+substrate-bip39 = { opt-level = 3 }
+twox-hash = { opt-level = 3 }
+uint = { opt-level = 3 }
+wasmi = { opt-level = 3 }
+x25519-dalek = { opt-level = 3 }
+yamux = { opt-level = 3 }
+zeroize = { opt-level = 3 }
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..56b3481bafc038f7d3dd0606558e9e37243dcd53
--- /dev/null
+++ b/README.md
@@ -0,0 +1,60 @@
+> NOTE: We have recently made significant changes to our repository structure. In order to streamline our development
+process and foster better contributions, we have merged three separate repositories Cumulus, Substrate and Polkadot into
+this repository. Read more about the changes [
+here](https://polkadot-public.notion.site/Polkadot-SDK-FAQ-fbc4cecc2c46443fb37b9eeec2f0d85f).
+
+# Polkadot SDK
+
+![](https://cms.polkadot.network/content/images/2021/06/1-xPcVR_fkITd0ssKBvJ3GMw.png)
+
+[![StackExchange](https://img.shields.io/badge/StackExchange-Community%20&%20Support-222222?logo=stackexchange)](https://substrate.stackexchange.com/)
+
+The Polkadot SDK repository provides all the resources needed to start building on the Polkadot network, a multi-chain
+blockchain platform that enables different blockchains to interoperate and share information in a secure and scalable
+way. The Polkadot SDK comprises three main pieces of software:
+
+## [Polkadot](./polkadot/)
+[![PolkadotForum](https://img.shields.io/badge/Polkadot_Forum-e6007a?logo=polkadot)](https://forum.polkadot.network/)
+[![Polkadot-license](https://img.shields.io/badge/License-GPL3-blue)](./polkadot/LICENSE)
+
+Implementation of a node for the https://polkadot.network in Rust, using the Substrate framework. This directory
+currently contains runtimes for the Polkadot, Kusama, Westend, and Rococo networks. In the future, these will be
+relocated to the [`runtimes`](https://github.com/polkadot-fellows/runtimes/) repository.
+
+## [Substrate](./substrate/)
+ [![SubstrateRustDocs](https://img.shields.io/badge/Rust_Docs-Substrate-24CC85?logo=rust)](https://paritytech.github.io/substrate/master/substrate/index.html)
+ [![Substrate-license](https://img.shields.io/badge/License-GPL3%2FApache2.0-blue)](./substrate/README.md#LICENSE)
+
+Substrate is the primary blockchain SDK used by developers to create the parachains that make up the Polkadot network.
+Additionally, it allows for the development of self-sovereign blockchains that operate completely independently of
+Polkadot.
+
+## [Cumulus](./cumulus/)
+[![CumulusRustDocs](https://img.shields.io/badge/Rust_Docs-Cumulus-222222?logo=rust)](https://paritytech.github.io/cumulus/cumulus_client_collator/index.html)
+[![Cumulus-license](https://img.shields.io/badge/License-GPL3-blue)](./cumulus/LICENSE)
+
+Cumulus is a set of tools for writing Substrate-based Polkadot parachains.
+
+## Upstream Dependencies
+
+Below are the primary upstream dependencies utilized in this project:
+
+- [`parity-scale-codec`](https://crates.io/crates/parity-scale-codec)
+- [`parity-db`](https://crates.io/crates/parity-db)
+- [`parity-common`](https://github.com/paritytech/parity-common)
+- [`trie`](https://github.com/paritytech/trie)
+
+## Security
+
+The security policy and procedures can be found in [docs/SECURITY.md](./docs/SECURITY.md).
+
+## Contributing & Code of Conduct
+
+Ensure you follow our [contribution guidelines](./docs/CONTRIBUTING.md). In every interaction and contribution, this
+project adheres to the [Contributor Covenant Code of Conduct](./docs/CODE_OF_CONDUCT.md).
+
+## Additional Resources
+
+- For monitoring upcoming changes and current proposals related to the technical implementation of the Polkadot network,
+ visit the [`Requests for Comment (RFC)`](https://github.com/polkadot-fellows/RFCs) repository. While it's maintained
+ by the Polkadot Fellowship, the RFC process welcomes contributions from everyone.
diff --git a/cumulus/.cargo/config.toml b/cumulus/.cargo/config.toml
deleted file mode 100644
index 4796a2c26965c1021d14c6acc854bca1aea76941..0000000000000000000000000000000000000000
--- a/cumulus/.cargo/config.toml
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# An auto defined `clippy` feature was introduced,
-# but it was found to clash with user defined features,
-# so was renamed to `cargo-clippy`.
-#
-# If you want standard clippy run:
-# RUSTFLAGS= cargo clippy
-[target.'cfg(feature = "cargo-clippy")']
-rustflags = [
- "-Aclippy::all",
- "-Dclippy::correctness",
- "-Aclippy::if-same-then-else",
- "-Aclippy::clone-double-ref",
- "-Dclippy::complexity",
- "-Aclippy::zero-prefixed-literal", # 00_1000_000
- "-Aclippy::type_complexity", # raison d'etre
- "-Aclippy::nonminimal-bool", # maybe
- "-Aclippy::borrowed-box", # Reasonable to fix this one
- "-Aclippy::too-many-arguments", # (Turning this on would lead to)
- "-Aclippy::unnecessary_cast", # Types may change
- "-Aclippy::identity-op", # One case where we do 0 +
- "-Aclippy::useless_conversion", # Types may change
- "-Aclippy::unit_arg", # styalistic.
- "-Aclippy::option-map-unit-fn", # styalistic
- "-Aclippy::bind_instead_of_map", # styalistic
- "-Aclippy::erasing_op", # E.g. 0 * DOLLARS
- "-Aclippy::eq_op", # In tests we test equality.
- "-Aclippy::while_immutable_condition", # false positives
- "-Aclippy::needless_option_as_deref", # false positives
- "-Aclippy::derivable_impls", # false positives
- "-Aclippy::stable_sort_primitive", # prefer stable sort
- "-Aclippy::extra-unused-type-parameters", # stylistic
-]
diff --git a/cumulus/.gitignore b/cumulus/.gitignore
deleted file mode 100644
index 225be857745879e7e8f15ec09c68f65b0da34c48..0000000000000000000000000000000000000000
--- a/cumulus/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-**/target/
-.idea
-.vscode
-.DS_Store
-/.cargo/config
-polkadot_argument_parsing
-**/node_modules
-**/chains/
-*.iml
-.env
-**/._*
diff --git a/cumulus/BRIDGES.md b/cumulus/BRIDGES.md
index 8766de92c17e3b5b0d4596453cbf6bfce1893297..a6f00aec09283e10d1a697bcef3f523881941663 100644
--- a/cumulus/BRIDGES.md
+++ b/cumulus/BRIDGES.md
@@ -1,13 +1,13 @@
-# Using Parity Bridges Common dependency (`git subtree`).
+# Using Parity Bridges Common dependency (`git subtree`)
In `./bridges` sub-directory you can find a `git subtree` imported version of:
-[parity-bridges-common](https://github.com/paritytech/parity-bridges-common/) repository.
+[`parity-bridges-common`](https://github.com/paritytech/parity-bridges-common/) repository.
(For regular Cumulus contributor 1. is relevant) \
(For Cumulus maintainer 1. and 2. are relevant) \
(For Bridges team 1. and 2. and 3. are relevant)
-# 1. How to fix broken Bridges code?
+## How to fix broken Bridges code?
To fix Bridges code simply create a commit in current (`Cumulus`) repo. Best if
the commit is isolated to changes in `./bridges` sub-directory, because it makes
@@ -16,7 +16,7 @@ it easier to import that change back to upstream repo.
(Any changes to `bridges` subtree require Bridges team approve and they should manage backport to Bridges repo)
-# 2. How to pull latest Bridges code to the `bridges` subtree
+## How to pull latest Bridges code to the `bridges` subtree
(in practice)
The `bridges` repo has a stabilized branch `polkadot-staging` dedicated for releasing.
@@ -25,7 +25,7 @@ The `bridges` repo has a stabilized branch `polkadot-staging` dedicated for rele
cd
# this will update new git branches from bridges repo
-# there could be unresolved conflicts, but dont worry,
+# there could be unresolved conflicts, but don't worry,
# lots of them are caused because of removed unneeded files with patch step,
BRANCH=polkadot-staging ./scripts/bridges_update_subtree.sh fetch
@@ -45,9 +45,9 @@ BRANCH=polkadot-staging ./scripts/bridges_update_subtree.sh fetch
# so after all conflicts are solved and patch passes and compiles,
# then we need to finish merge with:
git merge --continue
-````
+```
-# 3. How to pull latest Bridges code or contribute back?
+## How to pull latest Bridges code or contribute back?
(in theory)
Note that it's totally fine to ping the **Bridges Team** to do that for you. The point
@@ -58,34 +58,34 @@ If you still would like to either update the code to match latest code from the
or create an upstream PR read below. The following commands should be run in the
current (`polkadot`) repo.
-1. Add Bridges repo as a local remote:
+### Add Bridges repo as a local remote
```
-$ git remote add -f bridges git@github.com:paritytech/parity-bridges-common.git
+git remote add -f bridges git@github.com:paritytech/parity-bridges-common.git
```
If you plan to contribute back, consider forking the repository on Github and adding
your personal fork as a remote as well.
```
-$ git remote add -f my-bridges git@github.com:tomusdrw/parity-bridges-common.git
+git remote add -f my-bridges git@github.com:tomusdrw/parity-bridges-common.git
```
-2. To update Bridges:
+### To update Bridges
+```
+git fetch bridges polkadot-staging
+git subtree pull --prefix=bridges bridges polkadot-staging --squash
```
-$ git fetch bridges polkadot-staging
-$ git subtree pull --prefix=bridges bridges polkadot-staging --squash
-````
We use `--squash` to avoid adding individual commits and rather squashing them
all into one.
-3. Clean unneeded files here:
+### Clean unneeded files here
```
./bridges/scripts/verify-pallets-build.sh --ignore-git-state --no-revert
```
-4. Contributing back to Bridges (creating upstream PR)
+### Contributing back to Bridges (creating upstream PR)
```
-$ git subtree push --prefix=bridges my-bridges polkadot-staging
+git subtree push --prefix=bridges my-bridges polkadot-staging
```
This command will push changes to your personal fork of Bridges repo, from where
you can simply create a PR to the main repo.
diff --git a/cumulus/README.md b/cumulus/README.md
index 59e0cff015d39c5d3bdbdb83668b81ab019a4112..19f9f3f113dd06655c418a4caf6b30a9cad6ee9f 100644
--- a/cumulus/README.md
+++ b/cumulus/README.md
@@ -1,13 +1,258 @@
-Dear contributors and users,
+# Cumulus ☁️
-We would like to inform you that we have recently made significant changes to our repository structure. In order to streamline our development process and foster better contributions, we have merged three separate repositories Cumulus, Substrate and Polkadot into a single new repository: [the Polkadot SDK](https://github.com/paritytech/polkadot-sdk). Go ahead and make sure to support us by giving a star ⭐️ to the new repo.
+[![Doc](https://img.shields.io/badge/cumulus%20docs-master-brightgreen)](https://paritytech.github.io/cumulus/)
-By consolidating our codebase, we aim to enhance collaboration and provide a more efficient platform for future development.
+This repository contains both the Cumulus SDK and also specific chains implemented on top of this SDK.
-If you currently have an open pull request in any of the merged repositories, we kindly request that you resubmit your PR in the new repository. This will ensure that your contributions are considered within the updated context and enable us to review and merge them more effectively.
+If you only want to run a **Polkadot Parachain Node**, check out our [container section](./docs/container.md).
-We appreciate your understanding and ongoing support throughout this transition. Should you have any questions or require further assistance, please don't hesitate to [reach out to us](https://forum.polkadot.network/t/psa-parity-is-currently-working-on-merging-the-polkadot-stack-repositories-into-one-single-repository/2883).
+## Cumulus SDK
-Best Regards,
+A set of tools for writing [Substrate](https://substrate.io/)-based [Polkadot](https://wiki.polkadot.network/en/)
+[parachains](https://wiki.polkadot.network/docs/en/learn-parachains). Refer to the included [overview](docs/overview.md)
+for architectural details, and the [Connect to a relay chain how-to
+guide](https://docs.substrate.io/reference/how-to-guides/parachains/connect-to-a-relay-chain/) for a guided walk-through
+of using these tools.
-Parity Technologies
\ No newline at end of file
+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`](https://github.com/paritytech/polkadot-sdk/blob/master/cumulus/client/consensus/common/src/parachain_consensus.rs)
+is a [consensus engine](https://docs.substrate.io/v3/advanced/consensus) for Substrate that follows a Polkadot [relay
+chain](https://wiki.polkadot.network/docs/en/learn-architecture#relay-chain). This will run a Polkadot node internally,
+and dictate to the client and synchronization algorithms which chain to follow,
+[finalize](https://wiki.polkadot.network/docs/en/learn-consensus#probabilistic-vs-provable-finality), and treat as best.
+
+### Collator
+
+A Polkadot [collator](https://wiki.polkadot.network/docs/en/learn-collator) for the parachain is implemented by the
+`polkadot-parachain` binary (previously called `polkadot-collator`).
+
+You may run `polkadot-parachain` locally after building it or using one of the container option described
+[here](./docs/container.md).
+
+### Relay Chain Interaction
+To operate a parachain node, a connection to the corresponding relay chain is necessary. This can be achieved in one of
+three ways:
+1. Run a full relay chain node within the parachain node (default)
+2. Connect to an external relay chain node via WebSocket RPC
+3. Run a light client for the relay chain
+
+#### In-process Relay Chain Node
+If an external relay chain node is not specified (default behavior), then a full relay chain node is spawned within the
+same process.
+
+This node has all of the typical components of a regular Polkadot node and will have to fully sync with the relay chain
+to work.
+
+##### Example command
+```bash
+polkadot-parachain \
+ --chain parachain-chainspec.json \
+ --tmp \
+ -- \
+ --chain relaychain-chainspec.json
+```
+
+#### External Relay Chain Node
+An external relay chain node is connected via WebsSocket RPC by using the `--relay-chain-rpc-urls` command line
+argument. This option accepts one or more space-separated WebSocket URLs to a full relay chain node. By default, only
+the first URL will be used, with the rest as a backup in case the connection to the first node is lost.
+
+Parachain nodes using this feature won't have to fully sync with the relay chain to work, so in general they will use
+fewer system resources.
+
+**Note:** At this time, any parachain nodes using this feature will still spawn a significantly cut-down relay chain
+node in-process. Even though they lack the majority of normal Polkadot subsystems, they will still need to connect
+directly to the relay chain network.
+
+##### Example command
+
+```bash
+polkadot-parachain \
+ --chain parachain-chainspec.json \
+ --tmp \
+ --relay-chain-rpc-urls \
+ "ws://relaychain-rpc-endpoint:9944" \
+ "ws://relaychain-rpc-endpoint-backup:9944" \
+ -- \
+ --chain relaychain-chainspec.json
+```
+
+#### Relay Chain Light Client
+An internal relay chain light client provides a fast and lightweight approach for connecting to the relay chain network.
+It provides relay chain notifications and facilitates runtime calls.
+
+To specify which chain the light client should connect to, users need to supply a relay chain chain-spec as part of the
+relay chain arguments.
+
+**Note:** At this time, any parachain nodes using this feature will still spawn a significantly cut-down relay chain
+node in-process. Even though they lack the majority of normal Polkadot subsystems, they will still need to connect
+directly to the relay chain network.
+
+
+##### Example command
+```bash
+polkadot-parachain \
+ --chain parachain-chainspec.json \
+ --tmp \
+ --relay-chain-light-client \
+ -- \
+ --chain relaychain-chainspec.json
+```
+
+## Installation and Setup
+Before building Cumulus SDK based nodes / runtimes prepare your environment by following Substrate [installation
+instructions](https://docs.substrate.io/main-docs/install/).
+
+To launch a local network, you can use [zombienet](https://github.com/paritytech/zombienet) for quick setup and
+experimentation or follow the [manual setup](#manual-setup).
+
+### Zombienet
+We use Zombienet to spin up networks for integration tests and local networks. Follow [these installation
+steps](https://github.com/paritytech/zombienet#requirements-by-provider) to set it up on your machine. A simple network
+specification with two relay chain nodes and one collator is located at
+[zombienet/examples/small_network.toml](zombienet/examples/small_network.toml).
+
+#### Which provider should I use?
+Zombienet offers multiple providers to run networks. Choose the one that best fits your needs:
+- **Podman:** Choose this if you want to spin up a network quick and easy.
+- **Native:** Choose this if you want to develop and deploy your changes. Requires compilation of the binaries.
+- **Kubernetes:** Choose this for advanced use-cases or running on cloud-infrastructure.
+
+#### How to run
+To run the example network, use the following commands:
+```bash
+# Podman provider
+zombienet --provider podman spawn ./zombienet/examples/small_network.toml
+
+# Native provider, assumes polkadot and polkadot-parachains binary in $PATH
+zombienet --provider native spawn ./zombienet/examples/small_network.toml
+```
+
+### Manual Setup
+#### Launch the Relay Chain
+
+```bash
+# Clone
+git clone https://github.com/paritytech/polkadot-sdk
+
+# Compile Polkadot
+cargo build --release --bin polkadot
+
+# 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
+
+```bash
+# Clone
+git clone https://github.com/paritytech/polkadot-sdk
+
+# Compile
+cargo build --release --bin polkadot-parachain
+
+# 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 --rpc-port 9946 -- --chain ../polkadot/rococo-local-cfde.json --port 30335
+
+# Collator2
+./target/release/polkadot-parachain --collator --bob --force-authoring \
+ --tmp --port 40336 --rpc-port 9947 -- --chain ../polkadot/rococo-local-cfde.json --port 30336
+
+# Parachain Full Node 1
+./target/release/polkadot-parachain --tmp --port 40337 --rpc-port 9948 -- \
+ --chain ../polkadot/rococo-local-cfde.json --port 30337
+```
+
+#### Register the parachain
+
+![image](https://user-images.githubusercontent.com/2915325/99548884-1be13580-2987-11eb-9a8b-20be658d34f9.png)
+
+
+## Asset Hub 🪙
+
+This repository also contains the Asset Hub runtimes. Asset Hub is a system parachain providing an asset store for the
+Polkadot ecosystem.
+
+### Build & Launch a Node
+
+To run an Asset Hub node, you will need to compile the `polkadot-parachain` binary:
+
+```bash
+cargo build --release --locked --bin polkadot-parachain
+```
+
+Once the executable is built, launch the parachain node via:
+
+```bash
+CHAIN=asset-hub-westend # or asset-hub-kusama
+./target/release/polkadot-parachain --chain $CHAIN
+```
+
+Refer to the [setup instructions](#manual-setup) to run a local network for development.
+
+## Contracts 📝
+
+See [the `contracts-rococo` readme](parachains/runtimes/contracts/contracts-rococo/README.md) for details.
+
+## Bridge-hub 📝
+
+See [the `bridge-hubs` readme](parachains/runtimes/bridge-hubs/README.md) for details.
+
+## Rococo 👑
+[Rococo](https://polkadot.js.org/apps/?rpc=wss://rococo-rpc.polkadot.io) is becoming a [Community Parachain
+Testbed](https://polkadot.network/blog/rococo-revamp-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](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-rpc.polkadot.io#/parachains).
+
+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:
+
+
+```bash
+cargo build --release --locked --bin polkadot-parachain
+```
+
+Once the executable is built, launch collators for each parachain (repeat once each for chain `tick`, `trick`, `track`):
+
+```bash
+./target/release/polkadot-parachain --chain $CHAIN --validator
+```
+
+You can also build [using a container](./docs/container.md).
+
+### Parachains
+
+- [Asset Hub](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-statemint-rpc.polkadot.io#/explorer)
+- [Contracts on Rococo](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo-contracts-rpc.polkadot.io#/explorer)
+- [RILT](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frococo.kilt.io#/explorer)
+
+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.
diff --git a/cumulus/bridges/CODE_OF_CONDUCT.md b/cumulus/bridges/CODE_OF_CONDUCT.md
index 70541fb72fa25af86a4268b947cdeb880d1d739c..23411da2e048c758d56d511c792e020a37d0ee0d 100644
--- a/cumulus/bridges/CODE_OF_CONDUCT.md
+++ b/cumulus/bridges/CODE_OF_CONDUCT.md
@@ -34,9 +34,9 @@ of preference. We see that blockchains are naturally community platforms with u
ultimate decision makers. We assert that good software will maximise user agency by facilitate
user-expression on the network. As such:
-- This project will strive to give users as much choice as is both reasonable and possible over what
+* This project will strive to give users as much choice as is both reasonable and possible over what
protocol they adhere to; but
-- use of the project's technical forums, commenting systems, pull requests and issue trackers as a
+* use of the project's technical forums, commenting systems, pull requests and issue trackers as a
means to express individual protocol preferences is forbidden.
## Our Responsibilities
diff --git a/cumulus/bridges/README.md b/cumulus/bridges/README.md
index 2f8c5ca9abb293699fc9510ed60ef4be117dd783..da46fe67d924acb2afffcf971bacb60b560f0cd5 100644
--- a/cumulus/bridges/README.md
+++ b/cumulus/bridges/README.md
@@ -2,11 +2,10 @@
This is a collection of components for building bridges.
-These components include Substrate pallets for syncing headers, passing arbitrary messages, as well
-as libraries for building relayers to provide cross-chain communication capabilities.
+These components include Substrate pallets for syncing headers, passing arbitrary messages, as well as libraries for
+building relayers to provide cross-chain communication capabilities.
-Three bridge nodes are also available. The nodes can be used to run test networks which bridge other
-Substrate chains.
+Three bridge nodes are also available. The nodes can be used to run test networks which bridge other Substrate chains.
🚧 The bridges are currently under construction - a hardhat is recommended beyond this point 🚧
@@ -21,8 +20,8 @@ Substrate chains.
## Installation
-To get up and running you need both stable and nightly Rust. Rust nightly is used to build the Web
-Assembly (WASM) runtime for the node. You can configure the WASM support as so:
+To get up and running you need both stable and nightly Rust. Rust nightly is used to build the Web Assembly (WASM)
+runtime for the node. You can configure the WASM support as so:
```bash
rustup install nightly
@@ -38,8 +37,8 @@ cargo build --all
cargo test --all
```
-Also you can build the repo with
-[Parity CI Docker image](https://github.com/paritytech/scripts/tree/master/dockerfiles/bridges-ci):
+Also you can build the repo with [Parity CI Docker
+image](https://github.com/paritytech/scripts/tree/master/dockerfiles/bridges-ci):
```bash
docker pull paritytech/bridges-ci:production
@@ -57,16 +56,14 @@ docker run --rm -it -w /shellhere/parity-bridges-common \
If you want to reproduce other steps of CI process you can use the following
[guide](https://github.com/paritytech/scripts#reproduce-ci-locally).
-If you need more information about setting up your development environment [Substrate's
-Installation page](https://docs.substrate.io/main-docs/install/) is a good
-resource.
+If you need more information about setting up your development environment [Substrate's Installation
+page](https://docs.substrate.io/main-docs/install/) is a good resource.
## High-Level Architecture
-This repo has support for bridging foreign chains together using a combination of Substrate pallets
-and external processes called relayers. A bridge chain is one that is able to follow the consensus
-of a foreign chain independently. For example, consider the case below where we want to bridge two
-Substrate based chains.
+This repo has support for bridging foreign chains together using a combination of Substrate pallets and external
+processes called relayers. A bridge chain is one that is able to follow the consensus of a foreign chain independently.
+For example, consider the case below where we want to bridge two Substrate based chains.
```
+---------------+ +---------------+
@@ -82,19 +79,19 @@ Substrate based chains.
+---------------+
```
-The Millau chain must be able to accept Rialto headers and verify their integrity. It does this by
-using a runtime module designed to track GRANDPA finality. Since two blockchains can't interact
-directly they need an external service, called a relayer, to communicate. The relayer will subscribe
-to new Rialto headers via RPC and submit them to the Millau chain for verification.
+The Millau chain must be able to accept Rialto headers and verify their integrity. It does this by using a runtime
+module designed to track GRANDPA finality. Since two blockchains can't interact directly they need an external service,
+called a relayer, to communicate. The relayer will subscribe to new Rialto headers via RPC and submit them to the Millau
+chain for verification.
-Take a look at [Bridge High Level Documentation](./docs/high-level-overview.md) for more in-depth
-description of the bridge interaction.
+Take a look at [Bridge High Level Documentation](./docs/high-level-overview.md) for more in-depth description of the
+bridge interaction.
## Project Layout
-Here's an overview of how the project is laid out. The main bits are the `bin`, which is the actual
-"blockchain", the `modules` which are used to build the blockchain's logic (a.k.a the runtime) and
-the `relays` which are used to pass messages between chains.
+Here's an overview of how the project is laid out. The main bits are the `bin`, which is the actual "blockchain", the
+`modules` which are used to build the blockchain's logic (a.k.a the runtime) and the `relays` which are used to pass
+messages between chains.
```
├── bin // Node and Runtime for the various Substrate chains
@@ -117,16 +114,16 @@ the `relays` which are used to pass messages between chains.
## Running the Bridge
-To run the Bridge you need to be able to connect the bridge relay node to the RPC interface of nodes
-on each side of the bridge (source and target chain).
+To run the Bridge you need to be able to connect the bridge relay node to the RPC interface of nodes on each side of the
+bridge (source and target chain).
There are 2 ways to run the bridge, described below:
-- building & running from source: with this option, you'll be able to run the bridge between two standalone
-chains that are running GRANDPA finality gadget to achieve finality;
+- building & running from source: with this option, you'll be able to run the bridge between two standalone chains that
+are running GRANDPA finality gadget to achieve finality;
-- running a Docker Compose setup: this is a recommended option, where you'll see bridges with parachains,
-complex relays and more.
+- running a Docker Compose setup: this is a recommended option, where you'll see bridges with parachains, complex relays
+and more.
### Using the Source
@@ -141,16 +138,15 @@ cargo build -p substrate-relay
### Running a Dev network
-We will launch a dev network to demonstrate how to relay a message between two Substrate based
-chains (named Rialto and Millau).
+We will launch a dev network to demonstrate how to relay a message between two Substrate based chains (named Rialto and
+Millau).
-To do this we will need two nodes, two relayers which will relay headers, and two relayers which
-will relay messages.
+To do this we will need two nodes, two relayers which will relay headers, and two relayers which will relay messages.
#### Running from local scripts
-To run a simple dev network you can use the scripts located in the
-[`deployments/local-scripts` folder](./deployments/local-scripts).
+To run a simple dev network you can use the scripts located in the [`deployments/local-scripts`
+folder](./deployments/local-scripts).
First, we must run the two Substrate nodes.
@@ -167,8 +163,8 @@ After the nodes are up we can run the header relayers.
./deployments/local-scripts/relay-rialto-to-millau.sh
```
-At this point you should see the relayer submitting headers from the Millau Substrate chain to the
-Rialto Substrate chain.
+At this point you should see the relayer submitting headers from the Millau Substrate chain to the Rialto Substrate
+chain.
```
# Header Relayer Logs
@@ -192,20 +188,23 @@ You will also see the message lane relayers listening for new messages.
[Millau_to_Rialto_MessageLane_00000000] [date] DEBUG bridge Asking Millau::ReceivingConfirmationsDelivery about best message nonces
[...] [date] INFO bridge Synced Some(2) of Some(3) nonces in Millau::MessagesDelivery -> Rialto::MessagesDelivery race
[...] [date] DEBUG bridge Asking Millau::MessagesDelivery about message nonces
-[...] [date] DEBUG bridge Received best nonces from Millau::ReceivingConfirmationsDelivery: TargetClientNonces { latest_nonce: 0, nonces_data: () }
+[...] [date] DEBUG bridge Received best nonces from Millau::ReceivingConfirmationsDelivery: TargetClientNonces {
+ latest_nonce: 0, nonces_data: () }
[...] [date] DEBUG bridge Asking Millau::ReceivingConfirmationsDelivery about finalized message nonces
-[...] [date] DEBUG bridge Received finalized nonces from Millau::ReceivingConfirmationsDelivery: TargetClientNonces { latest_nonce: 0, nonces_data: () }
+[...] [date] DEBUG bridge Received finalized nonces from Millau::ReceivingConfirmationsDelivery: TargetClientNonces {
+ latest_nonce: 0, nonces_data: () }
[...] [date] DEBUG bridge Received nonces from Millau::MessagesDelivery: SourceClientNonces { new_nonces: {}, confirmed_nonce: Some(0) }
[...] [date] DEBUG bridge Asking Millau node about its state
-[...] [date] DEBUG bridge Received state from Millau node: ClientState { best_self: HeaderId(1593, 0xacac***), best_finalized_self: HeaderId(1590, 0x0be81d...), best_finalized_peer_at_best_self: HeaderId(0, 0xdcdd89...) }
+[...] [date] DEBUG bridge Received state from Millau node: ClientState { best_self: HeaderId(1593, 0xacac***), best_finalized_self:
+ HeaderId(1590, 0x0be81d...), best_finalized_peer_at_best_self: HeaderId(0, 0xdcdd89...) }
```
To send a message see the ["How to send a message" section](#how-to-send-a-message).
### How to send a message
-In this section we'll show you how to quickly send a bridge message. The message is just an encoded XCM
-`Trap(43)` message.
+In this section we'll show you how to quickly send a bridge message. The message is just an encoded XCM `Trap(43)`
+message.
```bash
# In `parity-bridges-common` folder
@@ -222,20 +221,20 @@ TRACE bridge Sent transaction to Millau node: 0x5e68...
And at the Rialto node logs you'll something like this:
```
-... runtime::bridge-messages: Received messages: total=1, valid=1. Weight used: Weight(ref_time: 1215065371, proof_size: 48559)/Weight(ref_time: 1215065371, proof_size: 54703).
-```
+... runtime::bridge-messages: Received messages: total=1, valid=1. Weight used: Weight(ref_time: 1215065371, proof_size:
+ 48559)/Weight(ref_time: 1215065371, proof_size: 54703).
+```
-It means that the message has been delivered and dispatched. Message may be dispatched with an
-error, though - the goal of our test bridge is to ensure that messages are successfully delivered
-and all involved components are working.
+It means that the message has been delivered and dispatched. Message may be dispatched with an error, though - the goal
+of our test bridge is to ensure that messages are successfully delivered and all involved components are working.
## Full Network Docker Compose Setup
-For a more sophisticated deployment which includes bidirectional header sync, message passing,
-monitoring dashboards, etc. see the [Deployments README](./deployments/README.md).
+For a more sophisticated deployment which includes bidirectional header sync, message passing, monitoring dashboards,
+etc. see the [Deployments README](./deployments/README.md).
-You should note that you can find images for all the bridge components published on
-[Docker Hub](https://hub.docker.com/u/paritytech).
+You should note that you can find images for all the bridge components published on [Docker
+Hub](https://hub.docker.com/u/paritytech).
To run a Rialto node for example, you can use the following command:
@@ -247,13 +246,12 @@ docker run -p 30333:30333 -p 9933:9933 -p 9944:9944 \
## Community
-Main hangout for the community is [Element](https://element.io/) (formerly Riot). Element is a chat
-server like, for example, Discord. Most discussions around Polkadot and Substrate happen
-in various Element "rooms" (channels). So, joining Element might be a good idea, anyway.
+Main hangout for the community is [Element](https://element.io/) (formerly Riot). Element is a chat server like, for
+example, Discord. Most discussions around Polkadot and Substrate happen in various Element "rooms" (channels). So,
+joining Element might be a good idea, anyway.
-If you are interested in information exchange and development of Polkadot related bridges please
-feel free to join the [Polkadot Bridges](https://app.element.io/#/room/#bridges:web3.foundation)
-Element channel.
+If you are interested in information exchange and development of Polkadot related bridges please feel free to join the
+[Polkadot Bridges](https://app.element.io/#/room/#bridges:web3.foundation) Element channel.
-The [Substrate Technical](https://app.element.io/#/room/#substrate-technical:matrix.org) Element
-channel is most suited for discussions regarding Substrate itself.
+The [Substrate Technical](https://app.element.io/#/room/#substrate-technical:matrix.org) Element channel is most suited
+for discussions regarding Substrate itself.
diff --git a/cumulus/bridges/SECURITY.md b/cumulus/bridges/SECURITY.md
index 65f2f3bff05dd94786f7f3c8d084af2ca9fe236f..9f215c88765474e6b211882296c8cf190f216780 100644
--- a/cumulus/bridges/SECURITY.md
+++ b/cumulus/bridges/SECURITY.md
@@ -4,11 +4,15 @@ Thanks for helping make the Parity ecosystem more secure. Security is one of our
## Reporting a vulnerability
-If you find something that can be treated as a security vulnerability, please do not use the issue tracker or discuss it in the public forum as it can cause more damage, rather than giving real help to the ecosystem.
+If you find something that can be treated as a security vulnerability, please do not use the issue tracker or discuss it
+in the public forum as it can cause more damage, rather than giving real help to the ecosystem.
Security vulnerabilities should be reported by the [contact form](https://security-submission.parity.io/).
-If you think that your report might be eligible for the Bug Bounty Program, please mark this during the submission. Please check up-to-date [Parity Bug Bounty Program rules](https://www.parity.io/bug-bounty) to find out the information about our Bug Bounty Program.
-
-**Warning**: This is an unified SECURITY.md file for Paritytech GitHub Organization. The presence of this file does not mean that this repository is covered by the Bug Bounty program. Please always check the Bug Bounty Program scope for information.
+If you think that your report might be eligible for the Bug Bounty Program, please mark this during the submission.
+Please check up-to-date [Parity Bug Bounty Program rules](https://www.parity.io/bug-bounty) to find out the information
+about our Bug Bounty Program.
+**Warning**: This is an unified SECURITY.md file for Paritytech GitHub Organization. The presence of this file does not
+mean that this repository is covered by the Bug Bounty program. Please always check the Bug Bounty Program scope for
+information.
diff --git a/cumulus/bridges/bin/runtime-common/Cargo.toml b/cumulus/bridges/bin/runtime-common/Cargo.toml
index f9d69aec16c23e37315fbe808224983408af22e9..b139f835c1a013b049f5c621f571d4377f234475 100644
--- a/cumulus/bridges/bin/runtime-common/Cargo.toml
+++ b/cumulus/bridges/bin/runtime-common/Cargo.toml
@@ -1,9 +1,9 @@
[package]
name = "bridge-runtime-common"
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
-repository = "https://github.com/paritytech/parity-bridges-common/"
+authors.workspace = true
+edition.workspace = true
+repository.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
@@ -41,8 +41,8 @@ sp-std = { path = "../../../../substrate/primitives/std", default-features = fal
sp-trie = { path = "../../../../substrate/primitives/trie", default-features = false }
# Polkadot dependencies
-xcm = { path = "../../../../polkadot/xcm", default-features = false }
-xcm-builder = { path = "../../../../polkadot/xcm/xcm-builder", default-features = false }
+xcm = { package = "staging-xcm", path = "../../../../polkadot/xcm", default-features = false }
+xcm-builder = { package = "staging-xcm-builder", path = "../../../../polkadot/xcm/xcm-builder", default-features = false }
[dev-dependencies]
bp-test-utils = { path = "../../primitives/test-utils" }
diff --git a/cumulus/bridges/bin/runtime-common/src/integrity.rs b/cumulus/bridges/bin/runtime-common/src/integrity.rs
index a0af3b981f307dfa1592b8a9199dcd8fb002aced..290c22f835d2a488e4f312f0a4811f730925fc15 100644
--- a/cumulus/bridges/bin/runtime-common/src/integrity.rs
+++ b/cumulus/bridges/bin/runtime-common/src/integrity.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/bin/runtime-common/src/lib.rs b/cumulus/bridges/bin/runtime-common/src/lib.rs
index 817922bc907d8d5f27d7c698a1df460361865f9f..ae6f40b142145dc265a69e8c78ef313f5ce9340f 100644
--- a/cumulus/bridges/bin/runtime-common/src/lib.rs
+++ b/cumulus/bridges/bin/runtime-common/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/bin/runtime-common/src/messages.rs b/cumulus/bridges/bin/runtime-common/src/messages.rs
index a650f082774618881fc1c635a75f9f211e429047..ac66adae6614b168855b285b4ef4f3cd74ecb068 100644
--- a/cumulus/bridges/bin/runtime-common/src/messages.rs
+++ b/cumulus/bridges/bin/runtime-common/src/messages.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/bin/runtime-common/src/messages_api.rs b/cumulus/bridges/bin/runtime-common/src/messages_api.rs
index 199e062fe9826cc44527ffe825a44a530fb618ef..ccf1c754041ed84dc302f0660fdd5bde8dc8d533 100644
--- a/cumulus/bridges/bin/runtime-common/src/messages_api.rs
+++ b/cumulus/bridges/bin/runtime-common/src/messages_api.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/bin/runtime-common/src/messages_benchmarking.rs b/cumulus/bridges/bin/runtime-common/src/messages_benchmarking.rs
index b067523c305b99aeb5ec9859b9c6b7b6eb77df1e..d80a88f1068c8975426105f881d963e1c3053ee5 100644
--- a/cumulus/bridges/bin/runtime-common/src/messages_benchmarking.rs
+++ b/cumulus/bridges/bin/runtime-common/src/messages_benchmarking.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
@@ -29,7 +29,7 @@ use crate::{
},
};
-use bp_messages::storage_keys;
+use bp_messages::{storage_keys, MessagePayload};
use bp_polkadot_core::parachains::ParaHash;
use bp_runtime::{
record_all_trie_keys, Chain, Parachain, RawStorageProof, StorageProofSize, UnderlyingChainOf,
@@ -45,8 +45,8 @@ use xcm::v3::prelude::*;
/// Prepare inbound bridge message according to given message proof parameters.
fn prepare_inbound_message(
params: &MessageProofParams,
- destination: InteriorMultiLocation,
-) -> Vec {
+ successful_dispatch_message_generator: impl Fn(usize) -> MessagePayload,
+) -> MessagePayload {
// we only care about **this** message size when message proof needs to be `Minimal`
let expected_size = match params.size {
StorageProofSize::Minimal(size) => size as usize,
@@ -58,20 +58,15 @@ fn prepare_inbound_message(
return vec![0u8; expected_size]
}
- // else let's prepare successful message. For XCM bridge hubs, it is the message that
- // will be pushed further to some XCM queue (XCMP/UMP)
- let location = xcm::VersionedInteriorMultiLocation::V3(destination);
- let location_encoded_size = location.encoded_size();
-
- // we don't need to be super-precise with `expected_size` here
- let xcm_size = expected_size.saturating_sub(location_encoded_size);
- let xcm = xcm::VersionedXcm::<()>::V3(vec![Instruction::ClearOrigin; xcm_size].into());
-
- // this is the `BridgeMessage` from polkadot xcm builder, but it has no constructor
- // or public fields, so just tuple
- // (double encoding, because `.encode()` is called on original Xcm BLOB when it is pushed
- // to the storage)
- (location, xcm).encode().encode()
+ // else let's prepare successful message.
+ let msg = successful_dispatch_message_generator(expected_size);
+ assert!(
+ msg.len() >= expected_size,
+ "msg.len(): {} does not match expected_size: {}",
+ expected_size,
+ msg.len()
+ );
+ msg
}
/// Prepare proof of messages for the `receive_messages_proof` call.
@@ -84,7 +79,7 @@ fn prepare_inbound_message(
/// function.
pub fn prepare_message_proof_from_grandpa_chain(
params: MessageProofParams,
- message_destination: InteriorMultiLocation,
+ message_generator: impl Fn(usize) -> MessagePayload,
) -> (FromBridgedChainMessagesProof>>, Weight)
where
R: pallet_bridge_grandpa::Config>>,
@@ -97,7 +92,7 @@ where
params.message_nonces.clone(),
params.outbound_lane_data.clone(),
params.size,
- prepare_inbound_message(¶ms, message_destination),
+ prepare_inbound_message(¶ms, message_generator),
encode_all_messages,
encode_lane_data,
);
@@ -127,7 +122,7 @@ where
/// `prepare_message_proof_from_grandpa_chain` function.
pub fn prepare_message_proof_from_parachain(
params: MessageProofParams,
- message_destination: InteriorMultiLocation,
+ message_generator: impl Fn(usize) -> MessagePayload,
) -> (FromBridgedChainMessagesProof>>, Weight)
where
R: pallet_bridge_parachains::Config,
@@ -141,7 +136,7 @@ where
params.message_nonces.clone(),
params.outbound_lane_data.clone(),
params.size,
- prepare_inbound_message(¶ms, message_destination),
+ prepare_inbound_message(¶ms, message_generator),
encode_all_messages,
encode_lane_data,
);
@@ -291,3 +286,53 @@ where
pallet_bridge_parachains::initialize_for_benchmarks::(bridged_header);
(bridged_block_number, bridged_header_hash)
}
+
+/// Returns callback which generates `BridgeMessage` from Polkadot XCM builder based on
+/// `expected_message_size` for benchmark.
+pub fn generate_xcm_builder_bridge_message_sample(
+ destination: InteriorMultiLocation,
+) -> impl Fn(usize) -> MessagePayload {
+ move |expected_message_size| -> MessagePayload {
+ // For XCM bridge hubs, it is the message that
+ // will be pushed further to some XCM queue (XCMP/UMP)
+ let location = xcm::VersionedInteriorMultiLocation::V3(destination);
+ let location_encoded_size = location.encoded_size();
+
+ // we don't need to be super-precise with `expected_size` here
+ let xcm_size = expected_message_size.saturating_sub(location_encoded_size);
+ let xcm_data_size = xcm_size.saturating_sub(
+ // minus empty instruction size
+ xcm::v3::Instruction::<()>::ExpectPallet {
+ index: 0,
+ name: vec![],
+ module_name: vec![],
+ crate_major: 0,
+ min_crate_minor: 0,
+ }
+ .encoded_size(),
+ );
+
+ log::trace!(
+ target: "runtime::bridge-benchmarks",
+ "generate_xcm_builder_bridge_message_sample with expected_message_size: {}, location_encoded_size: {}, xcm_size: {}, xcm_data_size: {}",
+ expected_message_size, location_encoded_size, xcm_size, xcm_data_size,
+ );
+
+ let xcm = xcm::VersionedXcm::<()>::V3(
+ vec![xcm::v3::Instruction::<()>::ExpectPallet {
+ index: 0,
+ name: vec![42; xcm_data_size],
+ module_name: vec![],
+ crate_major: 0,
+ min_crate_minor: 0,
+ }]
+ .into(),
+ );
+
+ // this is the `BridgeMessage` from polkadot xcm builder, but it has no constructor
+ // or public fields, so just tuple
+ // (double encoding, because `.encode()` is called on original Xcm BLOB when it is pushed
+ // to the storage)
+ (location, xcm).encode().encode()
+ }
+}
diff --git a/cumulus/bridges/bin/runtime-common/src/messages_call_ext.rs b/cumulus/bridges/bin/runtime-common/src/messages_call_ext.rs
index badb17efa0841430721ab07ce293bc086306a988..07a99d2c0a16c381799c02e58cb9c4b574e2ad1c 100644
--- a/cumulus/bridges/bin/runtime-common/src/messages_call_ext.rs
+++ b/cumulus/bridges/bin/runtime-common/src/messages_call_ext.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/bin/runtime-common/src/messages_generation.rs b/cumulus/bridges/bin/runtime-common/src/messages_generation.rs
index 8dbf3abd683cfff79e3068f70d6c4ecab5e91bd3..3c550a9bd0fd546ba90753b8871e049e65a702e3 100644
--- a/cumulus/bridges/bin/runtime-common/src/messages_generation.rs
+++ b/cumulus/bridges/bin/runtime-common/src/messages_generation.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2022 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/bin/runtime-common/src/messages_xcm_extension.rs b/cumulus/bridges/bin/runtime-common/src/messages_xcm_extension.rs
index 44e554ecb24f807cfc716f6dbf14f124382382f0..77c23db3b2ba2d01aef0d2c45a20377eaf8ea129 100644
--- a/cumulus/bridges/bin/runtime-common/src/messages_xcm_extension.rs
+++ b/cumulus/bridges/bin/runtime-common/src/messages_xcm_extension.rs
@@ -1,4 +1,4 @@
-// Copyright 2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
@@ -29,7 +29,7 @@ use bp_messages::{
use bp_runtime::messages::MessageDispatchResult;
use bp_xcm_bridge_hub_router::XcmChannelStatusProvider;
use codec::{Decode, Encode};
-use frame_support::{dispatch::Weight, traits::Get, CloneNoBound, EqNoBound, PartialEqNoBound};
+use frame_support::{traits::Get, weights::Weight, CloneNoBound, EqNoBound, PartialEqNoBound};
use pallet_bridge_messages::{
Config as MessagesConfig, OutboundLanesCongestedSignals, Pallet as MessagesPallet,
WeightInfoExt as MessagesPalletWeights,
diff --git a/cumulus/bridges/bin/runtime-common/src/mock.rs b/cumulus/bridges/bin/runtime-common/src/mock.rs
index 9c41d17fa9957fd5dd5bf43fd868bcac06fe50f3..45ef790d74482b01948a74cdb0a53c332aa41896 100644
--- a/cumulus/bridges/bin/runtime-common/src/mock.rs
+++ b/cumulus/bridges/bin/runtime-common/src/mock.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/bin/runtime-common/src/parachains_benchmarking.rs b/cumulus/bridges/bin/runtime-common/src/parachains_benchmarking.rs
index aad53673c3ad3eb36b1b16b2543203e50986c794..63dc78385e46ebb537f06e88a139efacaeeb3832 100644
--- a/cumulus/bridges/bin/runtime-common/src/parachains_benchmarking.rs
+++ b/cumulus/bridges/bin/runtime-common/src/parachains_benchmarking.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/bin/runtime-common/src/priority_calculator.rs b/cumulus/bridges/bin/runtime-common/src/priority_calculator.rs
index 590de05fb1c66c839c711e8dce37963136488de9..3d53f9da8c20e9503959b2aa8dc97807eacd5c67 100644
--- a/cumulus/bridges/bin/runtime-common/src/priority_calculator.rs
+++ b/cumulus/bridges/bin/runtime-common/src/priority_calculator.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
@@ -51,13 +51,13 @@ mod integrity_tests {
use bp_messages::MessageNonce;
use bp_runtime::PreComputedSize;
use frame_support::{
- dispatch::{DispatchClass, DispatchInfo, Dispatchable, Pays, PostDispatchInfo},
+ dispatch::{DispatchClass, DispatchInfo, Pays, PostDispatchInfo},
traits::Get,
};
use pallet_bridge_messages::WeightInfoExt;
use pallet_transaction_payment::OnChargeTransaction;
use sp_runtime::{
- traits::{UniqueSaturatedInto, Zero},
+ traits::{Dispatchable, UniqueSaturatedInto, Zero},
transaction_validity::TransactionPriority,
FixedPointOperand, SaturatedConversion, Saturating,
};
diff --git a/cumulus/bridges/bin/runtime-common/src/refund_relayer_extension.rs b/cumulus/bridges/bin/runtime-common/src/refund_relayer_extension.rs
index 4e577e88a4118283127392db926d219411334c33..f0c2cbf44509b3340028927a5b374461c2e94d12 100644
--- a/cumulus/bridges/bin/runtime-common/src/refund_relayer_extension.rs
+++ b/cumulus/bridges/bin/runtime-common/src/refund_relayer_extension.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
@@ -27,7 +27,7 @@ use bp_relayers::{RewardsAccountOwner, RewardsAccountParams};
use bp_runtime::{Parachain, ParachainIdOf, RangeInclusiveExt, StaticStrProvider};
use codec::{Decode, Encode};
use frame_support::{
- dispatch::{CallableCallFor, DispatchInfo, Dispatchable, PostDispatchInfo},
+ dispatch::{CallableCallFor, DispatchInfo, PostDispatchInfo},
traits::IsSubType,
weights::Weight,
CloneNoBound, DefaultNoBound, EqNoBound, PartialEqNoBound, RuntimeDebugNoBound,
@@ -47,7 +47,7 @@ use pallet_transaction_payment::{Config as TransactionPaymentConfig, OnChargeTra
use pallet_utility::{Call as UtilityCall, Config as UtilityConfig, Pallet as UtilityPallet};
use scale_info::TypeInfo;
use sp_runtime::{
- traits::{DispatchInfoOf, Get, PostDispatchInfoOf, SignedExtension, Zero},
+ traits::{DispatchInfoOf, Dispatchable, Get, PostDispatchInfoOf, SignedExtension, Zero},
transaction_validity::{
TransactionPriority, TransactionValidity, TransactionValidityError, ValidTransactionBuilder,
},
diff --git a/cumulus/bridges/docs/high-level-overview.md b/cumulus/bridges/docs/high-level-overview.md
index 449224124afd77a4e53d55e7cf6b3b9a65961802..42efc8100bd080763c22ea3e4e813f3c3c87db37 100644
--- a/cumulus/bridges/docs/high-level-overview.md
+++ b/cumulus/bridges/docs/high-level-overview.md
@@ -1,83 +1,85 @@
# High-Level Bridge Documentation
-This document gives a brief, abstract description of main components that may be found in this repository.
-If you want to see how we're using them to build Rococo <> Wococo (Kusama <> Polkadot) bridge, please
-refer to the [Polkadot <> Kusama Bridge](./polkadot-kusama-bridge-overview.md).
+This document gives a brief, abstract description of main components that may be found in this repository. If you want
+to see how we're using them to build Rococo <> Wococo (Kusama <> Polkadot) bridge, please refer to the [Polkadot <>
+Kusama Bridge](./polkadot-kusama-bridge-overview.md).
## Purpose
-This repo contains all components required to build a trustless connection between standalone Substrate chains,
-that are using GRANDPA finality, their parachains or any combination of those. On top of this connection, we
-offer a messaging pallet that provides means to organize messages exchange.
+This repo contains all components required to build a trustless connection between standalone Substrate chains, that are
+using GRANDPA finality, their parachains or any combination of those. On top of this connection, we offer a messaging
+pallet that provides means to organize messages exchange.
-On top of that layered infrastructure, anyone may build their own bridge applications - e.g. [XCM messaging](./polkadot-kusama-bridge-overview.md),
-[encoded calls messaging](https://github.com/paritytech/parity-bridges-common/releases/tag/encoded-calls-messaging) and so on.
+On top of that layered infrastructure, anyone may build their own bridge applications - e.g. [XCM
+messaging](./polkadot-kusama-bridge-overview.md), [encoded calls
+messaging](https://github.com/paritytech/parity-bridges-common/releases/tag/encoded-calls-messaging) and so on.
## Terminology
-Even though we support (and require) two-way bridging, the documentation will generally talk about
-a one-sided interaction. That's to say, we will only talk about syncing finality proofs and messages
-from a _source_ chain to a _target_ chain. This is because the two-sided interaction is really just the
-one-sided interaction with the source and target chains switched.
+Even though we support (and require) two-way bridging, the documentation will generally talk about a one-sided
+interaction. That's to say, we will only talk about syncing finality proofs and messages from a _source_ chain to a
+_target_ chain. This is because the two-sided interaction is really just the one-sided interaction with the source and
+target chains switched.
The bridge has both on-chain (pallets) and offchain (relayers) components.
## On-chain components
-On-chain bridge components are pallets that are deployed at the chain runtime. Finality pallets require
-deployment at the target chain, while messages pallet needs to be deployed at both, source
-and target chains.
+On-chain bridge components are pallets that are deployed at the chain runtime. Finality pallets require deployment at
+the target chain, while messages pallet needs to be deployed at both, source and target chains.
### Bridge GRANDPA Finality Pallet
-A GRANDPA light client of the source chain built into the target chain's runtime. It provides a "source of truth"
-about the source chain headers which have been finalized. This is useful for higher level applications.
+A GRANDPA light client of the source chain built into the target chain's runtime. It provides a "source of truth" about
+the source chain headers which have been finalized. This is useful for higher level applications.
-The pallet tracks current GRANDPA authorities set and only accepts finality proofs (GRANDPA justifications),
-generated by the current authorities set. The GRANDPA protocol itself requires current authorities set to
-generate explicit justification for the header that enacts next authorities set. Such headers and their finality
-proofs are called mandatory in the pallet and relayer pays no fee for such headers submission.
+The pallet tracks current GRANDPA authorities set and only accepts finality proofs (GRANDPA justifications), generated
+by the current authorities set. The GRANDPA protocol itself requires current authorities set to generate explicit
+justification for the header that enacts next authorities set. Such headers and their finality proofs are called
+mandatory in the pallet and relayer pays no fee for such headers submission.
-The pallet does not require all headers to be imported or provided. The relayer itself chooses which headers
-he wants to submit (with the exception of mandatory headers).
+The pallet does not require all headers to be imported or provided. The relayer itself chooses which headers he wants to
+submit (with the exception of mandatory headers).
More: [pallet level documentation and code](../modules/grandpa/).
### Bridge Parachains Finality Pallet
-Parachains are not supposed to have their own finality, so we can't use bridge GRANDPA pallet to verify their
-finality proofs. Instead, they rely on their relay chain finality. The parachain header is considered final,
-when it is accepted by the [`paras` pallet](https://github.com/paritytech/polkadot/tree/1a034bd6de0e76721d19aed02a538bcef0787260/runtime/parachains/src/paras)
-at its relay chain. Obviously, the relay chain block, where it is accepted, must also be finalized by the relay
-chain GRANDPA gadget.
+Parachains are not supposed to have their own finality, so we can't use bridge GRANDPA pallet to verify their finality
+proofs. Instead, they rely on their relay chain finality. The parachain header is considered final, when it is accepted
+by the [`paras`
+pallet](https://github.com/paritytech/polkadot/tree/1a034bd6de0e76721d19aed02a538bcef0787260/runtime/parachains/src/paras)
+at its relay chain. Obviously, the relay chain block, where it is accepted, must also be finalized by the relay chain
+GRANDPA gadget.
That said, the bridge parachains pallet accepts storage proof of one or several parachain heads, inserted to the
[`Heads`](https://github.com/paritytech/polkadot/blob/1a034bd6de0e76721d19aed02a538bcef0787260/runtime/parachains/src/paras/mod.rs#L642)
-map of the [`paras` pallet](https://github.com/paritytech/polkadot/tree/1a034bd6de0e76721d19aed02a538bcef0787260/runtime/parachains/src/paras).
+map of the [`paras`
+pallet](https://github.com/paritytech/polkadot/tree/1a034bd6de0e76721d19aed02a538bcef0787260/runtime/parachains/src/paras).
To verify this storage proof, the pallet uses relay chain header, imported earlier by the bridge GRANDPA pallet.
-The pallet may track multiple parachains at once and those parachains may use different primitives. So the
-parachain header decoding never happens at the pallet level. For maintaining the headers order, the pallet
-uses relay chain header number.
+The pallet may track multiple parachains at once and those parachains may use different primitives. So the parachain
+header decoding never happens at the pallet level. For maintaining the headers order, the pallet uses relay chain header
+number.
More: [pallet level documentation and code](../modules/parachains/).
### Bridge Messages Pallet
-The pallet is responsible for queuing messages at the source chain and receiving the messages proofs at the
-target chain. The messages are sent to the particular _lane_, where they are guaranteed to be received in the
-same order they are sent. The pallet supports many lanes.
+The pallet is responsible for queuing messages at the source chain and receiving the messages proofs at the target
+chain. The messages are sent to the particular _lane_, where they are guaranteed to be received in the same order they
+are sent. The pallet supports many lanes.
-The lane has two ends. Outbound lane end is storing number of messages that have been sent and the number of
-messages that have been received. Inbound lane end stores the number of messages that have been received and
-also a map that maps messages to relayers that have delivered those messages to the target chain.
+The lane has two ends. Outbound lane end is storing number of messages that have been sent and the number of messages
+that have been received. Inbound lane end stores the number of messages that have been received and also a map that maps
+messages to relayers that have delivered those messages to the target chain.
The pallet has three main entrypoints:
- the `send_message` may be used by the other runtime pallets to send the messages;
-- the `receive_messages_proof` is responsible for parsing the messages proof and handing messages over to the
-dispatch code;
-- the `receive_messages_delivery_proof` is responsible for parsing the messages delivery proof and rewarding
-relayers that have delivered the message.
+- the `receive_messages_proof` is responsible for parsing the messages proof and handing messages over to the dispatch
+code;
+- the `receive_messages_delivery_proof` is responsible for parsing the messages delivery proof and rewarding relayers
+that have delivered the message.
Many things are abstracted by the pallet:
- the message itself may mean anything, the pallet doesn't care about its content;
@@ -85,97 +87,98 @@ Many things are abstracted by the pallet:
- the messages proof and messages delivery proof are verified outside of the pallet;
- the relayers incentivization scheme is defined outside of the pallet.
-Outside of the messaging pallet, we have a set of adapters, where messages and delivery proofs are regular
-storage proofs. The proofs are generated at the bridged chain and require bridged chain finality. So messages
-pallet, in this case, depends on one of the finality pallets. The messages are XCM messages and we are using
-XCM executor to dispatch them on receival. You may find more info in [Polkadot <> Kusama Bridge](./polkadot-kusama-bridge-overview.md)
-document.
+Outside of the messaging pallet, we have a set of adapters, where messages and delivery proofs are regular storage
+proofs. The proofs are generated at the bridged chain and require bridged chain finality. So messages pallet, in this
+case, depends on one of the finality pallets. The messages are XCM messages and we are using XCM executor to dispatch
+them on receival. You may find more info in [Polkadot <> Kusama Bridge](./polkadot-kusama-bridge-overview.md) document.
More: [pallet level documentation and code](../modules/messages/).
### Bridge Relayers Pallet
-The pallet is quite simple. It just registers relayer rewards and has an entrypoint to collect them. When
-the rewards are registered and the reward amount is configured outside of the pallet.
+The pallet is quite simple. It just registers relayer rewards and has an entrypoint to collect them. When the rewards
+are registered and the reward amount is configured outside of the pallet.
More: [pallet level documentation and code](../modules/relayers/).
## Offchain Components
-Offchain bridge components are separate processes, called relayers. Relayers are connected both to the
-source chain and target chain nodes. Relayers are reading state of the source chain, compare it to the
-state of the target chain and, if state at target chain needs to be updated, submits target chain
-transaction.
+Offchain bridge components are separate processes, called relayers. Relayers are connected both to the source chain and
+target chain nodes. Relayers are reading state of the source chain, compare it to the state of the target chain and, if
+state at target chain needs to be updated, submits target chain transaction.
### GRANDPA Finality Relay
-The task of relay is to submit source chain GRANDPA justifications and their corresponding headers to
-the Bridge GRANDPA Finality Pallet, deployed at the target chain. For that, the relay subscribes to
-the source chain GRANDPA justifications stream and submits every new justification it sees to the
-target chain GRANDPA light client. In addition, relay is searching for mandatory headers and
-submits their justifications - without that the pallet will be unable to move forward.
+The task of relay is to submit source chain GRANDPA justifications and their corresponding headers to the Bridge GRANDPA
+Finality Pallet, deployed at the target chain. For that, the relay subscribes to the source chain GRANDPA justifications
+stream and submits every new justification it sees to the target chain GRANDPA light client. In addition, relay is
+searching for mandatory headers and submits their justifications - without that the pallet will be unable to move
+forward.
-More: [GRANDPA Finality Relay Sequence Diagram](./grandpa-finality-relay.html), [pallet level documentation and code](../relays/finality/).
+More: [GRANDPA Finality Relay Sequence Diagram](./grandpa-finality-relay.html), [pallet level documentation and
+code](../relays/finality/).
### Parachains Finality Relay
-The relay connects to the source _relay_ chain and the target chain nodes. It doesn't need to connect to the
-tracked parachain nodes. The relay looks at the [`Heads`](https://github.com/paritytech/polkadot/blob/1a034bd6de0e76721d19aed02a538bcef0787260/runtime/parachains/src/paras/mod.rs#L642)
-map of the [`paras` pallet](https://github.com/paritytech/polkadot/tree/1a034bd6de0e76721d19aed02a538bcef0787260/runtime/parachains/src/paras)
-in source chain, and compares the value with the best parachain head, stored in the bridge parachains pallet at
-the target chain. If new parachain head appears at the relay chain block `B`, the relay process **waits**
-until header `B` or one of its ancestors appears at the target chain. Once it is available, the storage
-proof of the map entry is generated and is submitted to the target chain.
+The relay connects to the source _relay_ chain and the target chain nodes. It doesn't need to connect to the tracked
+parachain nodes. The relay looks at the
+[`Heads`](https://github.com/paritytech/polkadot/blob/1a034bd6de0e76721d19aed02a538bcef0787260/runtime/parachains/src/paras/mod.rs#L642)
+map of the [`paras`
+pallet](https://github.com/paritytech/polkadot/tree/1a034bd6de0e76721d19aed02a538bcef0787260/runtime/parachains/src/paras)
+in source chain, and compares the value with the best parachain head, stored in the bridge parachains pallet at the
+target chain. If new parachain head appears at the relay chain block `B`, the relay process **waits** until header `B`
+or one of its ancestors appears at the target chain. Once it is available, the storage proof of the map entry is
+generated and is submitted to the target chain.
-As its on-chain component (which requires bridge GRANDPA pallet to be deployed nearby), the parachains
-finality relay requires GRANDPA finality relay to be running in parallel. Without it, the header `B` or
-any of its children's finality at source won't be relayed at target, and target chain
-won't be able to verify generated storage proof.
+As its on-chain component (which requires bridge GRANDPA pallet to be deployed nearby), the parachains finality relay
+requires GRANDPA finality relay to be running in parallel. Without it, the header `B` or any of its children's finality
+at source won't be relayed at target, and target chain won't be able to verify generated storage proof.
More: [Parachains Finality Relay Sequence Diagram](./parachains-finality-relay.html), [code](../relays/parachains/).
### Messages Relay
-Messages relay is actually two relays that are running in a single process: messages delivery relay and
-delivery confirmation relay. Even though they are more complex and have many caveats, the overall algorithm
-is the same as in other relays.
+Messages relay is actually two relays that are running in a single process: messages delivery relay and delivery
+confirmation relay. Even though they are more complex and have many caveats, the overall algorithm is the same as in
+other relays.
-Message delivery relay connects to the source chain and looks at the outbound lane end, waiting until new
-messages are queued there. Once they appear at the source block `B`, the relay start waiting for the block
-`B` or its descendant appear at the target chain. Then the messages storage proof is generated and submitted
-to the bridge messages pallet at the target chain. In addition, the transaction may include the storage proof
-of the outbound lane state - that proves that relayer rewards have been paid and this data (map of relay
-accounts to the delivered messages) may be pruned from the inbound lane state at the target chain.
+Message delivery relay connects to the source chain and looks at the outbound lane end, waiting until new messages are
+queued there. Once they appear at the source block `B`, the relay start waiting for the block `B` or its descendant
+appear at the target chain. Then the messages storage proof is generated and submitted to the bridge messages pallet at
+the target chain. In addition, the transaction may include the storage proof of the outbound lane state - that proves
+that relayer rewards have been paid and this data (map of relay accounts to the delivered messages) may be pruned from
+the inbound lane state at the target chain.
-Delivery confirmation relay connects to the target chain and starts watching the inbound lane end. When new
-messages are delivered to the target chain, the corresponding _source chain account_ is inserted to the
-map in the inbound lane data. Relay detects that, say, at the target chain block `B` and waits until that
-block or its descendant appears at the source chain. Once that happens, the relay crafts a storage proof of
-that data and sends it to the messages pallet, deployed at the source chain.
+Delivery confirmation relay connects to the target chain and starts watching the inbound lane end. When new messages are
+delivered to the target chain, the corresponding _source chain account_ is inserted to the map in the inbound lane data.
+Relay detects that, say, at the target chain block `B` and waits until that block or its descendant appears at the
+source chain. Once that happens, the relay crafts a storage proof of that data and sends it to the messages pallet,
+deployed at the source chain.
-As you can see, the messages relay also requires finality relay to be operating in parallel. Since messages
-relay submits transactions to both source and target chains, it requires both _source-to-target_ and
-_target-to-source_ finality relays. They can be GRANDPA finality relays or GRANDPA+parachains finality relays,
-depending on the type of connected chain.
+As you can see, the messages relay also requires finality relay to be operating in parallel. Since messages relay
+submits transactions to both source and target chains, it requires both _source-to-target_ and _target-to-source_
+finality relays. They can be GRANDPA finality relays or GRANDPA+parachains finality relays, depending on the type of
+connected chain.
-More: [Messages Relay Sequence Diagram](./messages-relay.html), [pallet level documentation and code](../relays/messages/).
+More: [Messages Relay Sequence Diagram](./messages-relay.html), [pallet level documentation and
+code](../relays/messages/).
### Complex Relay
-Every relay transaction has its cost. The only transaction, that is "free" to relayer is when the mandatory
-GRANDPA header is submitted. The relay that feeds the bridge with every relay chain and/or parachain head it
-sees, will have to pay a (quite large) cost. And if no messages are sent through the bridge, that is just
-waste of money.
+Every relay transaction has its cost. The only transaction, that is "free" to relayer is when the mandatory GRANDPA
+header is submitted. The relay that feeds the bridge with every relay chain and/or parachain head it sees, will have to
+pay a (quite large) cost. And if no messages are sent through the bridge, that is just waste of money.
-We have a special relay mode, called _complex relay_, where relay mostly sleeps and only submits transactions
-that are required for the messages/confirmations delivery. This mode starts two message relays (in both
-directions). All required finality relays are also started in a special _on-demand_ mode. In this mode they
-do not submit any headers without special request. As always, the only exception is when GRANDPA finality
-relay sees the mandatory header - it is submitted without such request.
+We have a special relay mode, called _complex relay_, where relay mostly sleeps and only submits transactions that are
+required for the messages/confirmations delivery. This mode starts two message relays (in both directions). All required
+finality relays are also started in a special _on-demand_ mode. In this mode they do not submit any headers without
+special request. As always, the only exception is when GRANDPA finality relay sees the mandatory header - it is
+submitted without such request.
-The message relays are watching their lanes and when, at some block `B`, they see new messages/confirmations
-to be delivered, they are asking on-demand relays to relay this block `B`. On-demand relays does that and
-then message relay may perform its job. If on-demand relay is a parachain finality relay, it also runs its
-own on-demand GRANDPA relay, which is used to relay required relay chain headers.
+The message relays are watching their lanes and when, at some block `B`, they see new messages/confirmations to be
+delivered, they are asking on-demand relays to relay this block `B`. On-demand relays does that and then message relay
+may perform its job. If on-demand relay is a parachain finality relay, it also runs its own on-demand GRANDPA relay,
+which is used to relay required relay chain headers.
-More: [Complex Relay Sequence Diagram](./complex-relay.html), [code](../relays/bin-substrate/src/cli/relay_headers_and_messages/).
+More: [Complex Relay Sequence Diagram](./complex-relay.html),
+[code](../relays/bin-substrate/src/cli/relay_headers_and_messages/).
diff --git a/cumulus/bridges/docs/polkadot-kusama-bridge-overview.md b/cumulus/bridges/docs/polkadot-kusama-bridge-overview.md
index b469720f65b2bb5b8b941ec34e89df505d13ac67..08036f0b0722b869786ae3d0abfc6ae7ea7c2c18 100644
--- a/cumulus/bridges/docs/polkadot-kusama-bridge-overview.md
+++ b/cumulus/bridges/docs/polkadot-kusama-bridge-overview.md
@@ -1,35 +1,35 @@
# Polkadot <> Kusama Bridge Overview
-This document describes how we use all components, described in the [High-Level Bridge Documentation](./high-level-overview.md),
-to build the XCM bridge between Kusama and Polkadot. In this case, our components merely work as a XCM transport
-(like XCMP/UMP/HRMP), between chains that are not a part of the same consensus system.
+This document describes how we use all components, described in the [High-Level Bridge
+Documentation](./high-level-overview.md), to build the XCM bridge between Kusama and Polkadot. In this case, our
+components merely work as a XCM transport (like XCMP/UMP/HRMP), between chains that are not a part of the same consensus
+system.
The overall architecture may be seen in [this diagram](./polkadot-kusama-bridge.html).
## Bridge Hubs
-All operations at relay chain are expensive. Ideally all non-mandatory transactions must happen on parachains.
-That's why we are planning to have two parachains - Polkadot Bridge Hub under Polkadot consensus and Kusama
-Bridge Hub under Kusama consensus.
+All operations at relay chain are expensive. Ideally all non-mandatory transactions must happen on parachains. That's
+why we are planning to have two parachains - Polkadot Bridge Hub under Polkadot consensus and Kusama Bridge Hub under
+Kusama consensus.
-The Bridge Hub will have all required bridge pallets in its runtime. We hope that later, other teams will be able to
-use our bridge hubs too and have their pallets there.
+The Bridge Hub will have all required bridge pallets in its runtime. We hope that later, other teams will be able to use
+our bridge hubs too and have their pallets there.
-The Bridge Hub will use the base token of the ecosystem - KSM at Kusama Bridge Hub and DOT at Polkadot Bridge Hub.
-The runtime will have minimal set of non-bridge pallets, so there's not much you can do directly on bridge hubs.
+The Bridge Hub will use the base token of the ecosystem - KSM at Kusama Bridge Hub and DOT at Polkadot Bridge Hub. The
+runtime will have minimal set of non-bridge pallets, so there's not much you can do directly on bridge hubs.
## Connecting Parachains
-You won't be able to directly use bridge hub transactions to send XCM messages over the bridge. Instead, you'll need
-to use other parachains transactions, which will use HRMP to deliver messages to the Bridge Hub. The Bridge Hub will
-just queue these messages in its outbound lane, which is dedicated to deliver messages between two parachains.
+You won't be able to directly use bridge hub transactions to send XCM messages over the bridge. Instead, you'll need to
+use other parachains transactions, which will use HRMP to deliver messages to the Bridge Hub. The Bridge Hub will just
+queue these messages in its outbound lane, which is dedicated to deliver messages between two parachains.
-Our first planned bridge will connect the Polkadot and Kusama Asset Hubs. A bridge between those two
-parachains would allow Asset Hub Polkadot accounts to hold wrapped KSM tokens and Asset Hub Kusama
-accounts to hold wrapped DOT tokens.
+Our first planned bridge will connect the Polkadot and Kusama Asset Hubs. A bridge between those two parachains would
+allow Asset Hub Polkadot accounts to hold wrapped KSM tokens and Asset Hub Kusama accounts to hold wrapped DOT tokens.
-For that bridge (pair of parachains under different consensus systems) we'll be using the lane 00000000. Later,
-when other parachains will join the bridge, they will be using other lanes for their messages.
+For that bridge (pair of parachains under different consensus systems) we'll be using the lane 00000000. Later, when
+other parachains will join the bridge, they will be using other lanes for their messages.
## Running Relayers
@@ -38,9 +38,9 @@ justifications to the bridge hubs at the other side. It'll also relay finalized
Hub heads. This will only happen when messages will be queued at hubs. So most of time relayer will be idle.
There's no any active relayer sets, or something like that. Anyone may start its own relayer and relay queued messages.
-We are not against that and, as always, appreciate any community efforts. Of course, running relayer has the cost.
-Apart from paying for the CPU and network, the relayer pays for transactions at both sides of the bridge. We have
-a mechanism for rewarding relayers.
+We are not against that and, as always, appreciate any community efforts. Of course, running relayer has the cost. Apart
+from paying for the CPU and network, the relayer pays for transactions at both sides of the bridge. We have a mechanism
+for rewarding relayers.
### Compensating the Cost of Message Delivery Transactions
@@ -56,51 +56,49 @@ is the relayer, which is following our rules:
- we compensate the cost of message delivery transactions that have actually delivered the messages. So if your
transaction has claimed to deliver messages `[42, 43, 44]`, but, because of some reasons, has actually delivered
- messages `[42, 43]`, the transaction will be free for relayer. If it has not delivered any messages, then
- the relayer pays the full cost of the transaction;
+ messages `[42, 43]`, the transaction will be free for relayer. If it has not delivered any messages, then the relayer
+ pays the full cost of the transaction;
- we compensate the cost of message delivery and all required finality calls, if they are part of the same
[`frame_utility::batch_all`](https://github.com/paritytech/substrate/blob/891d6a5c870ab88521183facafc811a203bb6541/frame/utility/src/lib.rs#L326)
- transaction. Of course, the calls inside the batch must be linked - e.g. the submitted parachain head must be used
- to prove messages. Relay header must be used to prove parachain head finality. If one of calls fails, or if they
- are not linked together, the relayer pays the full transaction cost.
+ transaction. Of course, the calls inside the batch must be linked - e.g. the submitted parachain head must be used to
+ prove messages. Relay header must be used to prove parachain head finality. If one of calls fails, or if they are not
+ linked together, the relayer pays the full transaction cost.
Please keep in mind that the fee of "zero-cost" transactions is still withdrawn from the relayer account. But the
-compensation is registered in the `pallet_bridge_relayers::RelayerRewards` map at the target bridge hub. The relayer
-may later claim all its rewards later, using the `pallet_bridge_relayers::claim_rewards` call.
+compensation is registered in the `pallet_bridge_relayers::RelayerRewards` map at the target bridge hub. The relayer may
+later claim all its rewards later, using the `pallet_bridge_relayers::claim_rewards` call.
*A side note*: why we don't simply set the cost of useful transactions to zero? That's because the bridge has its cost.
If we won't take any fees, it would mean that the sender is not obliged to pay for its messages. And Bridge Hub
-collators (and, maybe, "treasury") are not receiving any payment for including transactions. More about this later,
-in the [Who is Rewarding Relayers](#who-is-rewarding-relayers) section.
+collators (and, maybe, "treasury") are not receiving any payment for including transactions. More about this later, in
+the [Who is Rewarding Relayers](#who-is-rewarding-relayers) section.
### Message Delivery Confirmation Rewards
In addition to the "zero-cost" message delivery transactions, the relayer is also rewarded for:
-- delivering every message. The reward is registered during delivery confirmation transaction at the Source Bridge
- Hub.;
+- delivering every message. The reward is registered during delivery confirmation transaction at the Source Bridge Hub.;
-- submitting delivery confirmation transaction. The relayer may submit delivery confirmation that e.g. confirms
- delivery of four messages, of which the only one (or zero) messages is actually delivered by this relayer. It
- receives some fee for confirming messages, delivered by other relayers.
+- submitting delivery confirmation transaction. The relayer may submit delivery confirmation that e.g. confirms delivery
+ of four messages, of which the only one (or zero) messages is actually delivered by this relayer. It receives some fee
+ for confirming messages, delivered by other relayers.
Both rewards may be claimed using the `pallet_bridge_relayers::claim_rewards` call at the Source Bridge Hub.
### Who is Rewarding Relayers
Obviously, there should be someone who is paying relayer rewards. We want bridge transactions to have a cost, so we
-can't use fees for rewards. Instead, the parachains using the bridge, use sovereign accounts on both sides
-of the bridge to cover relayer rewards.
+can't use fees for rewards. Instead, the parachains using the bridge, use sovereign accounts on both sides of the bridge
+to cover relayer rewards.
-Bridged Parachains will have sovereign accounts at bridge hubs. For example, the Kusama Asset Hub will
-have an account at the Polkadot Bridge Hub. The Polkadot Asset Hub will have an account at the Kusama
-Bridge Hub. The sovereign accounts are used as a source of funds when the relayer is calling the
-`pallet_bridge_relayers::claim_rewards`.
+Bridged Parachains will have sovereign accounts at bridge hubs. For example, the Kusama Asset Hub will have an account
+at the Polkadot Bridge Hub. The Polkadot Asset Hub will have an account at the Kusama Bridge Hub. The sovereign accounts
+are used as a source of funds when the relayer is calling the `pallet_bridge_relayers::claim_rewards`.
-Since messages lane is only used by the pair of parachains, there's no collision between different bridges. E.g.
-Kusama Asset Hub will only reward relayers that are delivering messages from Kusama Asset Hub. The Kusama Asset Hub sovereign account
-is not used to cover rewards of bridging with some other Polkadot Parachain.
+Since messages lane is only used by the pair of parachains, there's no collision between different bridges. E.g. Kusama
+Asset Hub will only reward relayers that are delivering messages from Kusama Asset Hub. The Kusama Asset Hub sovereign
+account is not used to cover rewards of bridging with some other Polkadot Parachain.
### Multiple Relayers and Rewards
@@ -108,25 +106,24 @@ Our goal is to incentivize running honest relayers. But we have no relayers sets
message delivery transaction, hoping that the cost of this transaction will be compensated. So what if some message is
currently queued and two relayers are submitting two identical message delivery transactions at once? Without any
special means, the cost of first included transaction will be compensated and the cost of the other one won't. A honest,
-but unlucky relayer will lose some money. In addition, we'll waste some portion of block size and weight, which
-may be used by other useful transactions.
+but unlucky relayer will lose some money. In addition, we'll waste some portion of block size and weight, which may be
+used by other useful transactions.
-To solve the problem, we have two signed extensions ([generate_bridge_reject_obsolete_headers_and_messages! {}](../bin/runtime-common/src/lib.rs)
-and [RefundRelayerForMessagesFromParachain](../bin/runtime-common/src/refund_relayer_extension.rs)), that are
-preventing bridge transactions with obsolete data from including into the block. We are rejecting following
-transactions:
+To solve the problem, we have two signed extensions ([generate_bridge_reject_obsolete_headers_and_messages!
+{}](../bin/runtime-common/src/lib.rs) and
+[RefundRelayerForMessagesFromParachain](../bin/runtime-common/src/refund_relayer_extension.rs)), that are preventing
+bridge transactions with obsolete data from including into the block. We are rejecting following transactions:
- transactions, that are submitting the GRANDPA justification for the best finalized header, or one of its ancestors;
- transactions, that are submitting the proof of the current best parachain head, or one of its ancestors;
-- transactions, that are delivering already delivered messages. If at least one of messages is not yet delivered,
- the transaction is not rejected;
+- transactions, that are delivering already delivered messages. If at least one of messages is not yet delivered, the
+ transaction is not rejected;
-- transactions, that are confirming delivery of already confirmed messages. If at least one of confirmations is new,
- the transaction is not rejected;
+- transactions, that are confirming delivery of already confirmed messages. If at least one of confirmations is new, the
+ transaction is not rejected;
- [`frame_utility::batch_all`](https://github.com/paritytech/substrate/blob/891d6a5c870ab88521183facafc811a203bb6541/frame/utility/src/lib.rs#L326)
- transactions, that have both finality and message delivery calls. All restrictions from the
- [Compensating the Cost of Message Delivery Transactions](#compensating-the-cost-of-message-delivery-transactions)
- are applied.
+ transactions, that have both finality and message delivery calls. All restrictions from the [Compensating the Cost of
+ Message Delivery Transactions](#compensating-the-cost-of-message-delivery-transactions) are applied.
diff --git a/cumulus/bridges/modules/grandpa/Cargo.toml b/cumulus/bridges/modules/grandpa/Cargo.toml
index 2f04ed474800c6213cf28f6febf2efd11cebc1a7..87eda6b29a703599dcc8afd6a2b88191e458a3c9 100644
--- a/cumulus/bridges/modules/grandpa/Cargo.toml
+++ b/cumulus/bridges/modules/grandpa/Cargo.toml
@@ -1,8 +1,8 @@
[package]
name = "pallet-bridge-grandpa"
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
diff --git a/cumulus/bridges/modules/grandpa/src/benchmarking.rs b/cumulus/bridges/modules/grandpa/src/benchmarking.rs
index aa222d6e4de6f0ffa9eabe93436bb3726129bd31..182b2f56eb1c57a165cf2eb1e86b585d70fd1801 100644
--- a/cumulus/bridges/modules/grandpa/src/benchmarking.rs
+++ b/cumulus/bridges/modules/grandpa/src/benchmarking.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/grandpa/src/call_ext.rs b/cumulus/bridges/modules/grandpa/src/call_ext.rs
index 7a6c61007dec86def244014d8b33e964dd994cef..e0648d5dd0f1d9cd26b2d9cdcc6dc983ef082bb2 100644
--- a/cumulus/bridges/modules/grandpa/src/call_ext.rs
+++ b/cumulus/bridges/modules/grandpa/src/call_ext.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/grandpa/src/lib.rs b/cumulus/bridges/modules/grandpa/src/lib.rs
index 425712ad9a20e4d2f21fe40e47127c6bc3c6ba23..22df604bf18951073996f8f2195aefc78c62639b 100644
--- a/cumulus/bridges/modules/grandpa/src/lib.rs
+++ b/cumulus/bridges/modules/grandpa/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/grandpa/src/mock.rs b/cumulus/bridges/modules/grandpa/src/mock.rs
index bd305dfef9dc05967d6fc966fe599318c9acb6d2..f88a0a3e6a6ee187222a6fb8eb1628e22b37abbe 100644
--- a/cumulus/bridges/modules/grandpa/src/mock.rs
+++ b/cumulus/bridges/modules/grandpa/src/mock.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/grandpa/src/storage_types.rs b/cumulus/bridges/modules/grandpa/src/storage_types.rs
index 59fcb5d3f077ff624c0aa360215e46cf8be696e3..6d1a7882dd4996c600e8ae1cb149410b60af3bf4 100644
--- a/cumulus/bridges/modules/grandpa/src/storage_types.rs
+++ b/cumulus/bridges/modules/grandpa/src/storage_types.rs
@@ -1,4 +1,4 @@
-// Copyright 2022 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/grandpa/src/weights.rs b/cumulus/bridges/modules/grandpa/src/weights.rs
index 4b94f7adfe73b8b65180a0652c46a72a1521342e..89ed70d13ac3359f23fa6b756d3a8e07ff8b7092 100644
--- a/cumulus/bridges/modules/grandpa/src/weights.rs
+++ b/cumulus/bridges/modules/grandpa/src/weights.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/messages/Cargo.toml b/cumulus/bridges/modules/messages/Cargo.toml
index 53ba7a3ff5be5b90a0eaac8fbecaf7bdebdbb712..5eecdb147fada8100866280af3c81b7ede77605f 100644
--- a/cumulus/bridges/modules/messages/Cargo.toml
+++ b/cumulus/bridges/modules/messages/Cargo.toml
@@ -2,8 +2,8 @@
name = "pallet-bridge-messages"
description = "Module that allows bridged chains to exchange messages using lane concept."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/modules/messages/README.md b/cumulus/bridges/modules/messages/README.md
index b5250d0dca0b23be3943fecb3926be4ea7097be0..457d5f5facfa70fdb11d05c5d544e75eb44f975f 100644
--- a/cumulus/bridges/modules/messages/README.md
+++ b/cumulus/bridges/modules/messages/README.md
@@ -1,8 +1,7 @@
# Bridge Messages Pallet
-The messages pallet is used to deliver messages from source chain to target chain. Message is
-(almost) opaque to the module and the final goal is to hand message to the message dispatch
-mechanism.
+The messages pallet is used to deliver messages from source chain to target chain. Message is (almost) opaque to the
+module and the final goal is to hand message to the message dispatch mechanism.
## Contents
@@ -14,229 +13,203 @@ mechanism.
## Overview
-Message lane is an unidirectional channel, where messages are sent from source chain to the target
-chain. At the same time, a single instance of messages module supports both outbound lanes and
-inbound lanes. So the chain where the module is deployed (this chain), may act as a source chain for
-outbound messages (heading to a bridged chain) and as a target chain for inbound messages (coming
-from a bridged chain).
+Message lane is an unidirectional channel, where messages are sent from source chain to the target chain. At the same
+time, a single instance of messages module supports both outbound lanes and inbound lanes. So the chain where the module
+is deployed (this chain), may act as a source chain for outbound messages (heading to a bridged chain) and as a target
+chain for inbound messages (coming from a bridged chain).
-Messages module supports multiple message lanes. Every message lane is identified with a 4-byte
-identifier. Messages sent through the lane are assigned unique (for this lane) increasing integer
-value that is known as nonce ("number that can only be used once"). Messages that are sent over the
-same lane are guaranteed to be delivered to the target chain in the same order they're sent from
-the source chain. In other words, message with nonce `N` will be delivered right before delivering a
-message with nonce `N+1`.
+Messages module supports multiple message lanes. Every message lane is identified with a 4-byte identifier. Messages
+sent through the lane are assigned unique (for this lane) increasing integer value that is known as nonce ("number that
+can only be used once"). Messages that are sent over the same lane are guaranteed to be delivered to the target chain in
+the same order they're sent from the source chain. In other words, message with nonce `N` will be delivered right before
+delivering a message with nonce `N+1`.
-Single message lane may be seen as a transport channel for single application (onchain, offchain or
-mixed). At the same time the module itself never dictates any lane or message rules. In the end, it
-is the runtime developer who defines what message lane and message mean for this runtime.
+Single message lane may be seen as a transport channel for single application (onchain, offchain or mixed). At the same
+time the module itself never dictates any lane or message rules. In the end, it is the runtime developer who defines
+what message lane and message mean for this runtime.
-In our [Kusama<>Polkadot bridge](../../docs/polkadot-kusama-bridge-overview.md) we are using lane
-as a channel of communication between two parachains of different relay chains. For example, lane
-`[0, 0, 0, 0]` is used for Polkadot <> Kusama Asset Hub communications. Other lanes may be used to
-bridge other parachains.
+In our [Kusama<>Polkadot bridge](../../docs/polkadot-kusama-bridge-overview.md) we are using lane as a channel of
+communication between two parachains of different relay chains. For example, lane `[0, 0, 0, 0]` is used for Polkadot <>
+Kusama Asset Hub communications. Other lanes may be used to bridge other parachains.
## Message Workflow
-The pallet is not intended to be used by end users and provides no public calls to send the message.
-Instead, it provides runtime-internal method that allows other pallets (or other runtime code) to queue
-outbound messages.
-
-The message "appears" when some runtime code calls the `send_message()` method of the pallet.
-The submitter specifies the lane that they're willing to use and the message itself. If some fee must
-be paid for sending the message, it must be paid outside of the pallet. If a message passes all checks
-(that include, for example, message size check, disabled lane check, ...), the nonce is assigned and
-the message is stored in the module storage. The message is in an "undelivered" state now.
-
-We assume that there are external, offchain actors, called relayers, that are submitting module
-related transactions to both target and source chains. The pallet itself has no assumptions about
-relayers incentivization scheme, but it has some callbacks for paying rewards. See
-[Integrating Messages Module into runtime](#Integrating-Messages-Module-into-runtime)
-for details.
-
-Eventually, some relayer would notice this message in the "undelivered" state and it would decide to
-deliver this message. Relayer then crafts `receive_messages_proof()` transaction (aka delivery
-transaction) for the messages module instance, deployed at the target chain. Relayer provides
-its account id at the source chain, the proof of message (or several messages), the number of
-messages in the transaction and their cumulative dispatch weight. Once a transaction is mined, the
-message is considered "delivered".
-
-Once a message is delivered, the relayer may want to confirm delivery back to the source chain.
-There are two reasons why it would want to do that. The first is that we intentionally limit number
-of "delivered", but not yet "confirmed" messages at inbound lanes
-(see [What about other Constants in the Messages Module Configuration Trait](#What-about-other-Constants-in-the-Messages-Module-Configuration-Trait) for explanation).
-So at some point, the target chain may stop accepting new messages until relayers confirm some of
-these. The second is that if the relayer wants to be rewarded for delivery, it must prove the fact
-that it has actually delivered the message. And this proof may only be generated after the delivery
-transaction is mined. So relayer crafts the `receive_messages_delivery_proof()` transaction (aka
-confirmation transaction) for the messages module instance, deployed at the source chain. Once
-this transaction is mined, the message is considered "confirmed".
-
-The "confirmed" state is the final state of the message. But there's one last thing related to the
-message - the fact that it is now "confirmed" and reward has been paid to the relayer (or at least
-callback for this has been called), must be confirmed to the target chain. Otherwise, we may reach
-the limit of "unconfirmed" messages at the target chain and it will stop accepting new messages. So
-relayer sometimes includes a nonce of the latest "confirmed" message in the next
+The pallet is not intended to be used by end users and provides no public calls to send the message. Instead, it
+provides runtime-internal method that allows other pallets (or other runtime code) to queue outbound messages.
+
+The message "appears" when some runtime code calls the `send_message()` method of the pallet. The submitter specifies
+the lane that they're willing to use and the message itself. If some fee must be paid for sending the message, it must
+be paid outside of the pallet. If a message passes all checks (that include, for example, message size check, disabled
+lane check, ...), the nonce is assigned and the message is stored in the module storage. The message is in an
+"undelivered" state now.
+
+We assume that there are external, offchain actors, called relayers, that are submitting module related transactions to
+both target and source chains. The pallet itself has no assumptions about relayers incentivization scheme, but it has
+some callbacks for paying rewards. See [Integrating Messages Module into
+runtime](#Integrating-Messages-Module-into-runtime) for details.
+
+Eventually, some relayer would notice this message in the "undelivered" state and it would decide to deliver this
+message. Relayer then crafts `receive_messages_proof()` transaction (aka delivery transaction) for the messages module
+instance, deployed at the target chain. Relayer provides its account id at the source chain, the proof of message (or
+several messages), the number of messages in the transaction and their cumulative dispatch weight. Once a transaction is
+mined, the message is considered "delivered".
+
+Once a message is delivered, the relayer may want to confirm delivery back to the source chain. There are two reasons
+why it would want to do that. The first is that we intentionally limit number of "delivered", but not yet "confirmed"
+messages at inbound lanes (see [What about other Constants in the Messages Module Configuration
+Trait](#What-about-other-Constants-in-the-Messages-Module-Configuration-Trait) for explanation). So at some point, the
+target chain may stop accepting new messages until relayers confirm some of these. The second is that if the relayer
+wants to be rewarded for delivery, it must prove the fact that it has actually delivered the message. And this proof may
+only be generated after the delivery transaction is mined. So relayer crafts the `receive_messages_delivery_proof()`
+transaction (aka confirmation transaction) for the messages module instance, deployed at the source chain. Once this
+transaction is mined, the message is considered "confirmed".
+
+The "confirmed" state is the final state of the message. But there's one last thing related to the message - the fact
+that it is now "confirmed" and reward has been paid to the relayer (or at least callback for this has been called), must
+be confirmed to the target chain. Otherwise, we may reach the limit of "unconfirmed" messages at the target chain and it
+will stop accepting new messages. So relayer sometimes includes a nonce of the latest "confirmed" message in the next
`receive_messages_proof()` transaction, proving that some messages have been confirmed.
## Integrating Messages Module into Runtime
-As it has been said above, the messages module supports both outbound and inbound message lanes.
-So if we will integrate a module in some runtime, it may act as the source chain runtime for
-outbound messages and as the target chain runtime for inbound messages. In this section, we'll
-sometimes refer to the chain we're currently integrating with, as "this chain" and the other
-chain as "bridged chain".
-
-Messages module doesn't simply accept transactions that are claiming that the bridged chain has
-some updated data for us. Instead of this, the module assumes that the bridged chain is able to
-prove that updated data in some way. The proof is abstracted from the module and may be of any kind.
-In our Substrate-to-Substrate bridge we're using runtime storage proofs. Other bridges may use
-transaction proofs, Substrate header digests or anything else that may be proved.
-
-**IMPORTANT NOTE**: everything below in this chapter describes details of the messages module
-configuration. But if you're interested in well-probed and relatively easy integration of two
-Substrate-based chains, you may want to look at the
-[bridge-runtime-common](../../bin/runtime-common/) crate. This crate is providing a lot of
-helpers for integration, which may be directly used from within your runtime. Then if you'll decide
-to change something in this scheme, get back here for detailed information.
+As it has been said above, the messages module supports both outbound and inbound message lanes. So if we will integrate
+a module in some runtime, it may act as the source chain runtime for outbound messages and as the target chain runtime
+for inbound messages. In this section, we'll sometimes refer to the chain we're currently integrating with, as "this
+chain" and the other chain as "bridged chain".
+
+Messages module doesn't simply accept transactions that are claiming that the bridged chain has some updated data for
+us. Instead of this, the module assumes that the bridged chain is able to prove that updated data in some way. The proof
+is abstracted from the module and may be of any kind. In our Substrate-to-Substrate bridge we're using runtime storage
+proofs. Other bridges may use transaction proofs, Substrate header digests or anything else that may be proved.
+
+**IMPORTANT NOTE**: everything below in this chapter describes details of the messages module configuration. But if
+you're interested in well-probed and relatively easy integration of two Substrate-based chains, you may want to look at
+the [bridge-runtime-common](../../bin/runtime-common/) crate. This crate is providing a lot of helpers for integration,
+which may be directly used from within your runtime. Then if you'll decide to change something in this scheme, get back
+here for detailed information.
### General Information
-The messages module supports instances. Every module instance is supposed to bridge this chain
-and some bridged chain. To bridge with another chain, using another instance is suggested (this
-isn't forced anywhere in the code, though). Keep in mind, that the pallet may be used to build
-virtual channels between multiple chains, as we do in our [Polkadot <> Kusama bridge](../../docs/polkadot-kusama-bridge-overview.md).
-There, the pallet actually bridges only two parachains - Kusama Bridge Hub and Polkadot
-Bridge Hub. However, other Kusama and Polkadot parachains are able to send (XCM) messages to their
-Bridge Hubs. The messages will be delivered to the other side of the bridge and routed to the proper
+The messages module supports instances. Every module instance is supposed to bridge this chain and some bridged chain.
+To bridge with another chain, using another instance is suggested (this isn't forced anywhere in the code, though). Keep
+in mind, that the pallet may be used to build virtual channels between multiple chains, as we do in our [Polkadot <>
+Kusama bridge](../../docs/polkadot-kusama-bridge-overview.md). There, the pallet actually bridges only two parachains -
+Kusama Bridge Hub and Polkadot Bridge Hub. However, other Kusama and Polkadot parachains are able to send (XCM) messages
+to their Bridge Hubs. The messages will be delivered to the other side of the bridge and routed to the proper
destination parachain within the bridged chain consensus.
-Message submitters may track message progress by inspecting module events. When Message is accepted,
-the `MessageAccepted` event is emitted. The event contains both message lane identifier and nonce that
-has been assigned to the message. When a message is delivered to the target chain, the `MessagesDelivered`
-event is emitted from the `receive_messages_delivery_proof()` transaction. The `MessagesDelivered` contains
-the message lane identifier and inclusive range of delivered message nonces.
+Message submitters may track message progress by inspecting module events. When Message is accepted, the
+`MessageAccepted` event is emitted. The event contains both message lane identifier and nonce that has been assigned to
+the message. When a message is delivered to the target chain, the `MessagesDelivered` event is emitted from the
+`receive_messages_delivery_proof()` transaction. The `MessagesDelivered` contains the message lane identifier and
+inclusive range of delivered message nonces.
-The pallet provides no means to get the result of message dispatch at the target chain. If that is
-required, it must be done outside of the pallet. For example, XCM messages, when dispatched, have
-special instructions to send some data back to the sender. Other dispatchers may use similar
-mechanism for that.
+The pallet provides no means to get the result of message dispatch at the target chain. If that is required, it must be
+done outside of the pallet. For example, XCM messages, when dispatched, have special instructions to send some data back
+to the sender. Other dispatchers may use similar mechanism for that.
### How to plug-in Messages Module to Send Messages to the Bridged Chain?
-The `pallet_bridge_messages::Config` trait has 3 main associated types that are used to work with
-outbound messages. The `pallet_bridge_messages::Config::TargetHeaderChain` defines how we see the
-bridged chain as the target for our outbound messages. It must be able to check that the bridged
-chain may accept our message - like that the message has size below maximal possible transaction
-size of the chain and so on. And when the relayer sends us a confirmation transaction, this
-implementation must be able to parse and verify the proof of messages delivery. Normally, you would
-reuse the same (configurable) type on all chains that are sending messages to the same bridged
-chain.
-
-The `pallet_bridge_messages::Config::LaneMessageVerifier` defines a single callback to verify outbound
-messages. The simplest callback may just accept all messages. But in this case you'll need to answer
-many questions first. Who will pay for the delivery and confirmation transaction? Are we sure that
-someone will ever deliver this message to the bridged chain? Are we sure that we don't bloat our
-runtime storage by accepting this message? What if the message is improperly encoded or has some
-fields set to invalid values? Answering all those (and similar) questions would lead to correct
-implementation.
+The `pallet_bridge_messages::Config` trait has 3 main associated types that are used to work with outbound messages. The
+`pallet_bridge_messages::Config::TargetHeaderChain` defines how we see the bridged chain as the target for our outbound
+messages. It must be able to check that the bridged chain may accept our message - like that the message has size below
+maximal possible transaction size of the chain and so on. And when the relayer sends us a confirmation transaction, this
+implementation must be able to parse and verify the proof of messages delivery. Normally, you would reuse the same
+(configurable) type on all chains that are sending messages to the same bridged chain.
+
+The `pallet_bridge_messages::Config::LaneMessageVerifier` defines a single callback to verify outbound messages. The
+simplest callback may just accept all messages. But in this case you'll need to answer many questions first. Who will
+pay for the delivery and confirmation transaction? Are we sure that someone will ever deliver this message to the
+bridged chain? Are we sure that we don't bloat our runtime storage by accepting this message? What if the message is
+improperly encoded or has some fields set to invalid values? Answering all those (and similar) questions would lead to
+correct implementation.
There's another thing to consider when implementing type for use in
-`pallet_bridge_messages::Config::LaneMessageVerifier`. It is whether we treat all message lanes
-identically, or they'll have different sets of verification rules? For example, you may reserve
-lane#1 for messages coming from some 'wrapped-token' pallet - then you may verify in your
-implementation that the origin is associated with this pallet. Lane#2 may be reserved for 'system'
-messages and you may charge zero fee for such messages. You may have some rate limiting for messages
-sent over the lane#3. Or you may just verify the same rules set for all outbound messages - it is
+`pallet_bridge_messages::Config::LaneMessageVerifier`. It is whether we treat all message lanes identically, or they'll
+have different sets of verification rules? For example, you may reserve lane#1 for messages coming from some
+'wrapped-token' pallet - then you may verify in your implementation that the origin is associated with this pallet.
+Lane#2 may be reserved for 'system' messages and you may charge zero fee for such messages. You may have some rate
+limiting for messages sent over the lane#3. Or you may just verify the same rules set for all outbound messages - it is
all up to the `pallet_bridge_messages::Config::LaneMessageVerifier` implementation.
-The last type is the `pallet_bridge_messages::Config::DeliveryConfirmationPayments`. When confirmation
-transaction is received, we call the `pay_reward()` method, passing the range of delivered messages.
-You may use the [`pallet-bridge-relayers`](../relayers/) pallet and its
-[`DeliveryConfirmationPaymentsAdapter`](../relayers/src/payment_adapter.rs) adapter as a possible
-implementation. It allows you to pay fixed reward for relaying the message and some of its portion
-for confirming delivery.
+The last type is the `pallet_bridge_messages::Config::DeliveryConfirmationPayments`. When confirmation transaction is
+received, we call the `pay_reward()` method, passing the range of delivered messages. You may use the
+[`pallet-bridge-relayers`](../relayers/) pallet and its
+[`DeliveryConfirmationPaymentsAdapter`](../relayers/src/payment_adapter.rs) adapter as a possible implementation. It
+allows you to pay fixed reward for relaying the message and some of its portion for confirming delivery.
### I have a Messages Module in my Runtime, but I Want to Reject all Outbound Messages. What shall I do?
You should be looking at the `bp_messages::source_chain::ForbidOutboundMessages` structure
-[`bp_messages::source_chain`](../../primitives/messages/src/source_chain.rs). It implements
-all required traits and will simply reject all transactions, related to outbound messages.
+[`bp_messages::source_chain`](../../primitives/messages/src/source_chain.rs). It implements all required traits and will
+simply reject all transactions, related to outbound messages.
### How to plug-in Messages Module to Receive Messages from the Bridged Chain?
-The `pallet_bridge_messages::Config` trait has 2 main associated types that are used to work with
-inbound messages. The `pallet_bridge_messages::Config::SourceHeaderChain` defines how we see the
-bridged chain as the source of our inbound messages. When relayer sends us a delivery transaction,
-this implementation must be able to parse and verify the proof of messages wrapped in this
-transaction. Normally, you would reuse the same (configurable) type on all chains that are sending
-messages to the same bridged chain.
+The `pallet_bridge_messages::Config` trait has 2 main associated types that are used to work with inbound messages. The
+`pallet_bridge_messages::Config::SourceHeaderChain` defines how we see the bridged chain as the source of our inbound
+messages. When relayer sends us a delivery transaction, this implementation must be able to parse and verify the proof
+of messages wrapped in this transaction. Normally, you would reuse the same (configurable) type on all chains that are
+sending messages to the same bridged chain.
-The `pallet_bridge_messages::Config::MessageDispatch` defines a way on how to dispatch delivered
-messages. Apart from actually dispatching the message, the implementation must return the correct
-dispatch weight of the message before dispatch is called.
+The `pallet_bridge_messages::Config::MessageDispatch` defines a way on how to dispatch delivered messages. Apart from
+actually dispatching the message, the implementation must return the correct dispatch weight of the message before
+dispatch is called.
### I have a Messages Module in my Runtime, but I Want to Reject all Inbound Messages. What shall I do?
-You should be looking at the `bp_messages::target_chain::ForbidInboundMessages` structure from
-the [`bp_messages::target_chain`](../../primitives/messages/src/target_chain.rs) module. It
-implements all required traits and will simply reject all transactions, related to inbound messages.
+You should be looking at the `bp_messages::target_chain::ForbidInboundMessages` structure from the
+[`bp_messages::target_chain`](../../primitives/messages/src/target_chain.rs) module. It implements all required traits
+and will simply reject all transactions, related to inbound messages.
### What about other Constants in the Messages Module Configuration Trait?
Two settings that are used to check messages in the `send_message()` function. The
-`pallet_bridge_messages::Config::ActiveOutboundLanes` is an array of all message lanes, that
-may be used to send messages. All messages sent using other lanes are rejected. All messages that have
-size above `pallet_bridge_messages::Config::MaximalOutboundPayloadSize` will also be rejected.
-
-To be able to reward the relayer for delivering messages, we store a map of message nonces range =>
-identifier of the relayer that has delivered this range at the target chain runtime storage. If a
-relayer delivers multiple consequent ranges, they're merged into single entry. So there may be more
-than one entry for the same relayer. Eventually, this whole map must be delivered back to the source
-chain to confirm delivery and pay rewards. So to make sure we are able to craft this confirmation
-transaction, we need to: (1) keep the size of this map below a certain limit and (2) make sure that
-the weight of processing this map is below a certain limit. Both size and processing weight mostly
-depend on the number of entries. The number of entries is limited with the
-`pallet_bridge_messages::ConfigMaxUnrewardedRelayerEntriesAtInboundLane` parameter. Processing weight
-also depends on the total number of messages that are being confirmed, because every confirmed
-message needs to be read. So there's another
-`pallet_bridge_messages::Config::MaxUnconfirmedMessagesAtInboundLane` parameter for that.
-
-When choosing values for these parameters, you must also keep in mind that if proof in your scheme
-is based on finality of headers (and it is the most obvious option for Substrate-based chains with
-finality notion), then choosing too small values for these parameters may cause significant delays
-in message delivery. That's because there are too many actors involved in this scheme: 1) authorities
-that are finalizing headers of the target chain need to finalize header with non-empty map; 2) the
-headers relayer then needs to submit this header and its finality proof to the source chain; 3) the
-messages relayer must then send confirmation transaction (storage proof of this map) to the source
-chain; 4) when the confirmation transaction will be mined at some header, source chain authorities
-must finalize this header; 5) the headers relay then needs to submit this header and its finality
-proof to the target chain; 6) only now the messages relayer may submit new messages from the source
-to target chain and prune the entry from the map.
-
-Delivery transaction requires the relayer to provide both number of entries and total number of
-messages in the map. This means that the module never charges an extra cost for delivering a map -
-the relayer would need to pay exactly for the number of entries+messages it has delivered. So the
-best guess for values of these parameters would be the pair that would occupy `N` percent of the
-maximal transaction size and weight of the source chain. The `N` should be large enough to process
-large maps, at the same time keeping reserve for future source chain upgrades.
+`pallet_bridge_messages::Config::ActiveOutboundLanes` is an array of all message lanes, that may be used to send
+messages. All messages sent using other lanes are rejected. All messages that have size above
+`pallet_bridge_messages::Config::MaximalOutboundPayloadSize` will also be rejected.
+
+To be able to reward the relayer for delivering messages, we store a map of message nonces range => identifier of the
+relayer that has delivered this range at the target chain runtime storage. If a relayer delivers multiple consequent
+ranges, they're merged into single entry. So there may be more than one entry for the same relayer. Eventually, this
+whole map must be delivered back to the source chain to confirm delivery and pay rewards. So to make sure we are able to
+craft this confirmation transaction, we need to: (1) keep the size of this map below a certain limit and (2) make sure
+that the weight of processing this map is below a certain limit. Both size and processing weight mostly depend on the
+number of entries. The number of entries is limited with the
+`pallet_bridge_messages::ConfigMaxUnrewardedRelayerEntriesAtInboundLane` parameter. Processing weight also depends on
+the total number of messages that are being confirmed, because every confirmed message needs to be read. So there's
+another `pallet_bridge_messages::Config::MaxUnconfirmedMessagesAtInboundLane` parameter for that.
+
+When choosing values for these parameters, you must also keep in mind that if proof in your scheme is based on finality
+of headers (and it is the most obvious option for Substrate-based chains with finality notion), then choosing too small
+values for these parameters may cause significant delays in message delivery. That's because there are too many actors
+involved in this scheme: 1) authorities that are finalizing headers of the target chain need to finalize header with
+non-empty map; 2) the headers relayer then needs to submit this header and its finality proof to the source chain; 3)
+the messages relayer must then send confirmation transaction (storage proof of this map) to the source chain; 4) when
+the confirmation transaction will be mined at some header, source chain authorities must finalize this header; 5) the
+headers relay then needs to submit this header and its finality proof to the target chain; 6) only now the messages
+relayer may submit new messages from the source to target chain and prune the entry from the map.
+
+Delivery transaction requires the relayer to provide both number of entries and total number of messages in the map.
+This means that the module never charges an extra cost for delivering a map - the relayer would need to pay exactly for
+the number of entries+messages it has delivered. So the best guess for values of these parameters would be the pair that
+would occupy `N` percent of the maximal transaction size and weight of the source chain. The `N` should be large enough
+to process large maps, at the same time keeping reserve for future source chain upgrades.
## Non-Essential Functionality
-There may be a special account in every runtime where the messages module is deployed. This
-account, named 'module owner', is like a module-level sudo account - he's able to halt and
-resume all module operations without requiring runtime upgrade. Calls that are related to this
-account are:
+There may be a special account in every runtime where the messages module is deployed. This account, named 'module
+owner', is like a module-level sudo account - he's able to halt and resume all module operations without requiring
+runtime upgrade. Calls that are related to this account are:
- `fn set_owner()`: current module owner may call it to transfer "ownership" to another account;
-- `fn halt_operations()`: the module owner (or sudo account) may call this function to stop all
- module operations. After this call, all message-related transactions will be rejected until
- further `resume_operations` call'. This call may be used when something extraordinary happens with
- the bridge;
-- `fn resume_operations()`: module owner may call this function to resume bridge operations. The
- module will resume its regular operations after this call.
+- `fn halt_operations()`: the module owner (or sudo account) may call this function to stop all module operations. After
+ this call, all message-related transactions will be rejected until further `resume_operations` call'. This call may be
+ used when something extraordinary happens with the bridge;
+- `fn resume_operations()`: module owner may call this function to resume bridge operations. The module will resume its
+ regular operations after this call.
If pallet owner is not defined, the governance may be used to make those calls.
## Messages Relay
-We have an offchain actor, who is watching for new messages and submits them to the bridged chain.
-It is the messages relay - you may look at the [crate level documentation and the code](../../relays/messages/).
+We have an offchain actor, who is watching for new messages and submits them to the bridged chain. It is the messages
+relay - you may look at the [crate level documentation and the code](../../relays/messages/).
diff --git a/cumulus/bridges/modules/messages/src/benchmarking.rs b/cumulus/bridges/modules/messages/src/benchmarking.rs
index 04f64b53b305f74600d151d539f7b32b5dc4ce78..8c4e6fbf00ca42dd4a61c85c14d90fbff72ed042 100644
--- a/cumulus/bridges/modules/messages/src/benchmarking.rs
+++ b/cumulus/bridges/modules/messages/src/benchmarking.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/messages/src/inbound_lane.rs b/cumulus/bridges/modules/messages/src/inbound_lane.rs
index 359e9022b0b60c1e155648582ab0066b0281999d..966ec939e70e22e830ee30157d2d7da74d59733c 100644
--- a/cumulus/bridges/modules/messages/src/inbound_lane.rs
+++ b/cumulus/bridges/modules/messages/src/inbound_lane.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/messages/src/lib.rs b/cumulus/bridges/modules/messages/src/lib.rs
index 67c6fb23cf16765067ef815b91521e349b1ebf1c..b87c64d160752862a59a14f6591bf64f363004e8 100644
--- a/cumulus/bridges/modules/messages/src/lib.rs
+++ b/cumulus/bridges/modules/messages/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/messages/src/mock.rs b/cumulus/bridges/modules/messages/src/mock.rs
index 67f7b78a487aa64dfddf74cc215cbed9207de6f2..aebb7eafa7871d13cd8140d5a352978ca36433dd 100644
--- a/cumulus/bridges/modules/messages/src/mock.rs
+++ b/cumulus/bridges/modules/messages/src/mock.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/messages/src/outbound_lane.rs b/cumulus/bridges/modules/messages/src/outbound_lane.rs
index 45b0f4e680955e9faf868b3503bdbc4bc3f747dd..f92e9ccfd95c61ac9797e6423eae5d4e8f02dc2c 100644
--- a/cumulus/bridges/modules/messages/src/outbound_lane.rs
+++ b/cumulus/bridges/modules/messages/src/outbound_lane.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/messages/src/weights.rs b/cumulus/bridges/modules/messages/src/weights.rs
index 9880f1dd1ea3d45fb1aa6a3cee3255468fa11a0b..5b6863984ec78c0e250c54a0ed3363d1278f196f 100644
--- a/cumulus/bridges/modules/messages/src/weights.rs
+++ b/cumulus/bridges/modules/messages/src/weights.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/messages/src/weights_ext.rs b/cumulus/bridges/modules/messages/src/weights_ext.rs
index 3aefd6be7ca787202c83935bf25eda8d55811922..aeb3a581a69ee6ebb233ca6ec5e0f0bd4d25a408 100644
--- a/cumulus/bridges/modules/messages/src/weights_ext.rs
+++ b/cumulus/bridges/modules/messages/src/weights_ext.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
@@ -29,8 +29,8 @@ pub const EXPECTED_DEFAULT_MESSAGE_LENGTH: u32 = 128;
/// calls we're checking here would fit 1KB.
const SIGNED_EXTENSIONS_SIZE: u32 = 1024;
-/// Number of extra bytes (excluding size of storage value itself) of storage proof, built at
-/// Rialto chain. This mostly depends on number of entries (and their density) in the storage trie.
+/// Number of extra bytes (excluding size of storage value itself) of storage proof.
+/// This mostly depends on number of entries (and their density) in the storage trie.
/// Some reserve is reserved to account future chain growth.
pub const EXTRA_STORAGE_PROOF_SIZE: u32 = 1024;
diff --git a/cumulus/bridges/modules/parachains/Cargo.toml b/cumulus/bridges/modules/parachains/Cargo.toml
index 203b855f5689829a42d45d54ffd5d06e08ac2556..50a838edf56db3a7b94014b692eb8575b4f9e499 100644
--- a/cumulus/bridges/modules/parachains/Cargo.toml
+++ b/cumulus/bridges/modules/parachains/Cargo.toml
@@ -1,8 +1,8 @@
[package]
name = "pallet-bridge-parachains"
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/modules/parachains/README.md b/cumulus/bridges/modules/parachains/README.md
index 5982c65ad3166107128b9256f89f337f8de7c69e..d3f52c791ab5899c438bf902acd85d3e8a96153a 100644
--- a/cumulus/bridges/modules/parachains/README.md
+++ b/cumulus/bridges/modules/parachains/README.md
@@ -19,7 +19,7 @@ validators. Validators validate the block and register the new parachain head in
[`Heads` map](https://github.com/paritytech/polkadot/blob/88013730166ba90745ae7c9eb3e0c1be1513c7cc/runtime/parachains/src/paras/mod.rs#L645)
of the [`paras`](https://github.com/paritytech/polkadot/tree/master/runtime/parachains/src/paras) pallet,
deployed at the relay chain. Keep in mind that this pallet, deployed at a relay chain, is **NOT** a bridge pallet,
-even though the names are similar.
+even though the names are similar.
And what the bridge parachains pallet does, is simply verifying storage proofs of parachain heads within that
`Heads` map. It does that using relay chain header, that has been previously imported by the
diff --git a/cumulus/bridges/modules/parachains/src/benchmarking.rs b/cumulus/bridges/modules/parachains/src/benchmarking.rs
index 59c4642cde9997b5046afa491f59fc11b88ae17b..27e06a12a1d93486d93aa258afc1d7de4713df2c 100644
--- a/cumulus/bridges/modules/parachains/src/benchmarking.rs
+++ b/cumulus/bridges/modules/parachains/src/benchmarking.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/parachains/src/call_ext.rs b/cumulus/bridges/modules/parachains/src/call_ext.rs
index ea842a61b3e800e5c745a5616a3bc2ad35b068f2..99640dadc61f4a422ec41db4fe196f752b206d06 100644
--- a/cumulus/bridges/modules/parachains/src/call_ext.rs
+++ b/cumulus/bridges/modules/parachains/src/call_ext.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/parachains/src/lib.rs b/cumulus/bridges/modules/parachains/src/lib.rs
index be46fae3c9253d5276fc4dec6d96ba8e0579623a..b2ef0bf52bd3d5b5f619a6b8e28bbf8228c1a72c 100644
--- a/cumulus/bridges/modules/parachains/src/lib.rs
+++ b/cumulus/bridges/modules/parachains/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/parachains/src/mock.rs b/cumulus/bridges/modules/parachains/src/mock.rs
index a7030f0ae0310ecacaae6361d42facf0129a3cca..14afe38417105a789f9eb13ca913c1be91e6f789 100644
--- a/cumulus/bridges/modules/parachains/src/mock.rs
+++ b/cumulus/bridges/modules/parachains/src/mock.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/parachains/src/weights.rs b/cumulus/bridges/modules/parachains/src/weights.rs
index 1e81dba72fe99ea1ecd968feb93f73d0e5417680..9182ec466117b2c642910148a1240a10ae438b8a 100644
--- a/cumulus/bridges/modules/parachains/src/weights.rs
+++ b/cumulus/bridges/modules/parachains/src/weights.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/parachains/src/weights_ext.rs b/cumulus/bridges/modules/parachains/src/weights_ext.rs
index eecdfe903593eb7b62cf3e5f7ddf9971699272fe..13bc9ad2bbce0f26d5946cf8198e689597e5f968 100644
--- a/cumulus/bridges/modules/parachains/src/weights_ext.rs
+++ b/cumulus/bridges/modules/parachains/src/weights_ext.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/relayers/Cargo.toml b/cumulus/bridges/modules/relayers/Cargo.toml
index 116257c94fb7fec9aef4077d538b52878bcefb3c..3a7a57e18018967c35c2d3b72d317787333cedad 100644
--- a/cumulus/bridges/modules/relayers/Cargo.toml
+++ b/cumulus/bridges/modules/relayers/Cargo.toml
@@ -2,8 +2,8 @@
name = "pallet-bridge-relayers"
description = "Module used to store relayer rewards and coordinate relayers set."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/modules/relayers/src/benchmarking.rs b/cumulus/bridges/modules/relayers/src/benchmarking.rs
index d66a11ff06d027ede93518d5fb79f6b906c7998d..2d74ab38f9dbd1711b62df5e6bebd697fda1b988 100644
--- a/cumulus/bridges/modules/relayers/src/benchmarking.rs
+++ b/cumulus/bridges/modules/relayers/src/benchmarking.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/relayers/src/lib.rs b/cumulus/bridges/modules/relayers/src/lib.rs
index a71c218443b3d40f7fda1eb81d2317b2b5518075..b9b98ca7e253fdb952125e2079752484e37241a2 100644
--- a/cumulus/bridges/modules/relayers/src/lib.rs
+++ b/cumulus/bridges/modules/relayers/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/relayers/src/mock.rs b/cumulus/bridges/modules/relayers/src/mock.rs
index b3fcb24cdd20d6c5aeb4471719caffafd9c945e7..4713ec91658afa9ad4e0c2d13055a0921cf1be88 100644
--- a/cumulus/bridges/modules/relayers/src/mock.rs
+++ b/cumulus/bridges/modules/relayers/src/mock.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/relayers/src/payment_adapter.rs b/cumulus/bridges/modules/relayers/src/payment_adapter.rs
index a9536cfc0275f319c32e20d48500aacfe7eba991..b2d9c676bddc493700a45fc957235dbb9516296b 100644
--- a/cumulus/bridges/modules/relayers/src/payment_adapter.rs
+++ b/cumulus/bridges/modules/relayers/src/payment_adapter.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/relayers/src/stake_adapter.rs b/cumulus/bridges/modules/relayers/src/stake_adapter.rs
index 055b6a111ec724a457e9919b93c986d03f650137..88af9b1877bfe85614f081ee66dbb28586b1d34b 100644
--- a/cumulus/bridges/modules/relayers/src/stake_adapter.rs
+++ b/cumulus/bridges/modules/relayers/src/stake_adapter.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/relayers/src/weights.rs b/cumulus/bridges/modules/relayers/src/weights.rs
index 1bc195a5424728d2b1e4df39d058b72511091e81..2e064a3936df3a0661fc08af48be87520c04dba0 100644
--- a/cumulus/bridges/modules/relayers/src/weights.rs
+++ b/cumulus/bridges/modules/relayers/src/weights.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/relayers/src/weights_ext.rs b/cumulus/bridges/modules/relayers/src/weights_ext.rs
index d459b0686bd7e51eed4fdd88113ec9b507842559..9cd25c47c3782f709249dd9b1fd24e4c6ec8ab7f 100644
--- a/cumulus/bridges/modules/relayers/src/weights_ext.rs
+++ b/cumulus/bridges/modules/relayers/src/weights_ext.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/xcm-bridge-hub-router/Cargo.toml b/cumulus/bridges/modules/xcm-bridge-hub-router/Cargo.toml
index fb347232a3ccd388a15e2847ebb3b9db283316b4..6ad3c57ca73a788cc09d8fb9e9b1d3510027e4c2 100644
--- a/cumulus/bridges/modules/xcm-bridge-hub-router/Cargo.toml
+++ b/cumulus/bridges/modules/xcm-bridge-hub-router/Cargo.toml
@@ -2,8 +2,8 @@
name = "pallet-xcm-bridge-hub-router"
description = "Bridge hub interface for sibling/parent chains with dynamic fees support."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
@@ -26,8 +26,8 @@ sp-std = { path = "../../../../substrate/primitives/std", default-features = fal
# Polkadot Dependencies
-xcm = { path = "../../../../polkadot/xcm", default-features = false }
-xcm-builder = { path = "../../../../polkadot/xcm/xcm-builder", default-features = false }
+xcm = { package = "staging-xcm", path = "../../../../polkadot/xcm", default-features = false }
+xcm-builder = { package = "staging-xcm-builder", path = "../../../../polkadot/xcm/xcm-builder", default-features = false }
[dev-dependencies]
sp-io = { path = "../../../../substrate/primitives/io" }
diff --git a/cumulus/bridges/modules/xcm-bridge-hub-router/src/benchmarking.rs b/cumulus/bridges/modules/xcm-bridge-hub-router/src/benchmarking.rs
index b32b983daf72c9ed4b104a3a28cc43011a0865d0..4bbe414f66355bfb2fc866cc74b89f7b97988837 100644
--- a/cumulus/bridges/modules/xcm-bridge-hub-router/src/benchmarking.rs
+++ b/cumulus/bridges/modules/xcm-bridge-hub-router/src/benchmarking.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
@@ -22,10 +22,7 @@ use crate::{Bridge, Call};
use bp_xcm_bridge_hub_router::{BridgeState, MINIMAL_DELIVERY_FEE_FACTOR};
use frame_benchmarking::benchmarks_instance_pallet;
-use frame_support::{
- dispatch::UnfilteredDispatchable,
- traits::{EnsureOrigin, Get, Hooks},
-};
+use frame_support::traits::{EnsureOrigin, Get, Hooks, UnfilteredDispatchable};
use sp_runtime::traits::Zero;
use xcm::prelude::*;
diff --git a/cumulus/bridges/modules/xcm-bridge-hub-router/src/lib.rs b/cumulus/bridges/modules/xcm-bridge-hub-router/src/lib.rs
index 87e050b45c73645ac169cbf68480929d3662b53f..5cf94fc83fd9dffda2e1fa614608eb53ea13922e 100644
--- a/cumulus/bridges/modules/xcm-bridge-hub-router/src/lib.rs
+++ b/cumulus/bridges/modules/xcm-bridge-hub-router/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/xcm-bridge-hub-router/src/mock.rs b/cumulus/bridges/modules/xcm-bridge-hub-router/src/mock.rs
index 5ad7be4890a176c16cd88037207361a952fafe78..cd50b98a168853eec6a37c9a4806271574454cca 100644
--- a/cumulus/bridges/modules/xcm-bridge-hub-router/src/mock.rs
+++ b/cumulus/bridges/modules/xcm-bridge-hub-router/src/mock.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/modules/xcm-bridge-hub-router/src/weights.rs b/cumulus/bridges/modules/xcm-bridge-hub-router/src/weights.rs
index 04909f3b2e838c058fc12fc9314333fa78ca3e8a..62936e997f3cd0aaea17859b49d7c0edf6b65989 100644
--- a/cumulus/bridges/modules/xcm-bridge-hub-router/src/weights.rs
+++ b/cumulus/bridges/modules/xcm-bridge-hub-router/src/weights.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/chain-asset-hub-kusama/Cargo.toml b/cumulus/bridges/primitives/chain-asset-hub-kusama/Cargo.toml
index 9bc7c46e07e3b579ca8a6080164de54701dbc3f0..557f56bfb62e2b26c80a48e99f8a4c7e0898d76f 100644
--- a/cumulus/bridges/primitives/chain-asset-hub-kusama/Cargo.toml
+++ b/cumulus/bridges/primitives/chain-asset-hub-kusama/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-asset-hub-kusama"
description = "Primitives of AssetHubKusama parachain runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/chain-asset-hub-kusama/src/lib.rs b/cumulus/bridges/primitives/chain-asset-hub-kusama/src/lib.rs
index b3b25ba6eddd7b36991db10d3a6165b7d9933e3c..94016c1da0cb1235dec6717bd6da79ff4dab74f4 100644
--- a/cumulus/bridges/primitives/chain-asset-hub-kusama/src/lib.rs
+++ b/cumulus/bridges/primitives/chain-asset-hub-kusama/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2022 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/chain-asset-hub-polkadot/Cargo.toml b/cumulus/bridges/primitives/chain-asset-hub-polkadot/Cargo.toml
index b5b5fcde4e20228e62be1e4115767b27110c913e..6fe9ffab44b800bd2308635a6ef91572fd2ded3d 100644
--- a/cumulus/bridges/primitives/chain-asset-hub-polkadot/Cargo.toml
+++ b/cumulus/bridges/primitives/chain-asset-hub-polkadot/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-asset-hub-polkadot"
description = "Primitives of AssetHubPolkadot parachain runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/chain-asset-hub-polkadot/src/lib.rs b/cumulus/bridges/primitives/chain-asset-hub-polkadot/src/lib.rs
index 7363e5af02a2ccff76e2f1d54883673ead3583bd..486fba60e1f8836d0eec2feece7919205cf6c372 100644
--- a/cumulus/bridges/primitives/chain-asset-hub-polkadot/src/lib.rs
+++ b/cumulus/bridges/primitives/chain-asset-hub-polkadot/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2022 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/chain-bridge-hub-cumulus/Cargo.toml b/cumulus/bridges/primitives/chain-bridge-hub-cumulus/Cargo.toml
index af916665814b345cd5b61983218dce96d66682d8..865cead3c878023cce8fefe3b4c64ca0c4b4c13c 100644
--- a/cumulus/bridges/primitives/chain-bridge-hub-cumulus/Cargo.toml
+++ b/cumulus/bridges/primitives/chain-bridge-hub-cumulus/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-bridge-hub-cumulus"
description = "Primitives of BridgeHubRococo parachain runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/chain-bridge-hub-cumulus/src/lib.rs b/cumulus/bridges/primitives/chain-bridge-hub-cumulus/src/lib.rs
index 525b2e62ceab0583c43791aae850c2cd6b7715e5..feef61c7f20a1655f86ffbcc52809bfd9fef41e5 100644
--- a/cumulus/bridges/primitives/chain-bridge-hub-cumulus/src/lib.rs
+++ b/cumulus/bridges/primitives/chain-bridge-hub-cumulus/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2022 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/chain-bridge-hub-kusama/Cargo.toml b/cumulus/bridges/primitives/chain-bridge-hub-kusama/Cargo.toml
index d6d92ebb578da4823e81c556f7a13664a7942a52..92b0c9bf447562b4523077a996c6ea702ccf5af7 100644
--- a/cumulus/bridges/primitives/chain-bridge-hub-kusama/Cargo.toml
+++ b/cumulus/bridges/primitives/chain-bridge-hub-kusama/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-bridge-hub-kusama"
description = "Primitives of BridgeHubRococo parachain runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/chain-bridge-hub-kusama/src/lib.rs b/cumulus/bridges/primitives/chain-bridge-hub-kusama/src/lib.rs
index af50a97b28b3dc486023dfeb38de9a005aa0aa96..3a919648df47f091b76f0e16b9cd98b22f1970ff 100644
--- a/cumulus/bridges/primitives/chain-bridge-hub-kusama/src/lib.rs
+++ b/cumulus/bridges/primitives/chain-bridge-hub-kusama/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2022 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/chain-bridge-hub-polkadot/Cargo.toml b/cumulus/bridges/primitives/chain-bridge-hub-polkadot/Cargo.toml
index cb5ebf3b478c68d8ef5a61fe31340e4e9b0bcad9..7468d5be60d3f53e80ee8c3b36bddaeea235a7d4 100644
--- a/cumulus/bridges/primitives/chain-bridge-hub-polkadot/Cargo.toml
+++ b/cumulus/bridges/primitives/chain-bridge-hub-polkadot/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-bridge-hub-polkadot"
description = "Primitives of BridgeHubWococo parachain runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/chain-bridge-hub-polkadot/src/lib.rs b/cumulus/bridges/primitives/chain-bridge-hub-polkadot/src/lib.rs
index a1f6ae1a1a9a37a1ed11d52c37993c8c0b570695..bf8d8e07c3a61c83a8f1f0cc253c45557dd1b703 100644
--- a/cumulus/bridges/primitives/chain-bridge-hub-polkadot/src/lib.rs
+++ b/cumulus/bridges/primitives/chain-bridge-hub-polkadot/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/chain-bridge-hub-rococo/Cargo.toml b/cumulus/bridges/primitives/chain-bridge-hub-rococo/Cargo.toml
index cb11afff7af787f854142b324801c6e5a426402f..8dde903701c7c6dd900d9b6a93038b1262bfd1de 100644
--- a/cumulus/bridges/primitives/chain-bridge-hub-rococo/Cargo.toml
+++ b/cumulus/bridges/primitives/chain-bridge-hub-rococo/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-bridge-hub-rococo"
description = "Primitives of BridgeHubRococo parachain runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/chain-bridge-hub-rococo/src/lib.rs b/cumulus/bridges/primitives/chain-bridge-hub-rococo/src/lib.rs
index 37b1a9ebb927ca5e58987d38c481b75a197ccfaf..b726c62ac42b3270d72c7eebc6d3f5faff54c166 100644
--- a/cumulus/bridges/primitives/chain-bridge-hub-rococo/src/lib.rs
+++ b/cumulus/bridges/primitives/chain-bridge-hub-rococo/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2022 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/chain-bridge-hub-wococo/Cargo.toml b/cumulus/bridges/primitives/chain-bridge-hub-wococo/Cargo.toml
index 7302d9ff76d03ee3504525133a3f91241c4c2df9..c93cdad5110b484488c0d661c894e612557b559b 100644
--- a/cumulus/bridges/primitives/chain-bridge-hub-wococo/Cargo.toml
+++ b/cumulus/bridges/primitives/chain-bridge-hub-wococo/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-bridge-hub-wococo"
description = "Primitives of BridgeHubWococo parachain runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/chain-bridge-hub-wococo/src/lib.rs b/cumulus/bridges/primitives/chain-bridge-hub-wococo/src/lib.rs
index 635a4c96054ad40d4f47394c547591674c2b68f1..5e4758645d9ea63fedbd17b39c88ee208e725f96 100644
--- a/cumulus/bridges/primitives/chain-bridge-hub-wococo/src/lib.rs
+++ b/cumulus/bridges/primitives/chain-bridge-hub-wococo/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/chain-kusama/Cargo.toml b/cumulus/bridges/primitives/chain-kusama/Cargo.toml
index 4ad39858df347a2857e0b93057933a53c2537c09..e404bdb3d94f17bfff662e7c33c43dc9d71c44f3 100644
--- a/cumulus/bridges/primitives/chain-kusama/Cargo.toml
+++ b/cumulus/bridges/primitives/chain-kusama/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-kusama"
description = "Primitives of Kusama runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/chain-kusama/src/lib.rs b/cumulus/bridges/primitives/chain-kusama/src/lib.rs
index b758484aefeb41c3adb80f2c47189c2e4cddd8f0..e234a87b6cf680e1b0b2aba39d04704b85b8c896 100644
--- a/cumulus/bridges/primitives/chain-kusama/src/lib.rs
+++ b/cumulus/bridges/primitives/chain-kusama/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/chain-polkadot/Cargo.toml b/cumulus/bridges/primitives/chain-polkadot/Cargo.toml
index 3cec5d267ea02cd475f0e1e563e1cd0a82c37df1..4d9bf8c182f9e38db8868126f76531f12146e3f9 100644
--- a/cumulus/bridges/primitives/chain-polkadot/Cargo.toml
+++ b/cumulus/bridges/primitives/chain-polkadot/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-polkadot"
description = "Primitives of Polkadot runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/chain-polkadot/src/lib.rs b/cumulus/bridges/primitives/chain-polkadot/src/lib.rs
index eb62c1729adfdeb4865d826fd342deecfb969bc7..9585fd4d71634ea9af59d6a64206e7dcfc3c80ca 100644
--- a/cumulus/bridges/primitives/chain-polkadot/src/lib.rs
+++ b/cumulus/bridges/primitives/chain-polkadot/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/chain-rococo/Cargo.toml b/cumulus/bridges/primitives/chain-rococo/Cargo.toml
index 9a2eb1069095714c4dbc0e890a2f6e4b35ccf6db..72c6d4c03b66641b97244a0d9ff67ee666d44348 100644
--- a/cumulus/bridges/primitives/chain-rococo/Cargo.toml
+++ b/cumulus/bridges/primitives/chain-rococo/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-rococo"
description = "Primitives of Rococo runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/chain-rococo/src/lib.rs b/cumulus/bridges/primitives/chain-rococo/src/lib.rs
index 140069d756959ffcfddd6b10788ef660e66ebcd4..cf7cd16990f8642fbe039310d54de36b5859330e 100644
--- a/cumulus/bridges/primitives/chain-rococo/src/lib.rs
+++ b/cumulus/bridges/primitives/chain-rococo/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/chain-wococo/Cargo.toml b/cumulus/bridges/primitives/chain-wococo/Cargo.toml
index d3be18aa0647cef9a21e92bfcc0aaaa27ead7c32..f7feb7f96eb17b7f1f16c5abc77904a3cbc26c58 100644
--- a/cumulus/bridges/primitives/chain-wococo/Cargo.toml
+++ b/cumulus/bridges/primitives/chain-wococo/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-wococo"
description = "Primitives of Wococo runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/chain-wococo/src/lib.rs b/cumulus/bridges/primitives/chain-wococo/src/lib.rs
index 8247b63238ce4924a70f2797e3c82225f0df43c8..c64451993ee7a8bba32b7f7cd7e00cbeab5dd048 100644
--- a/cumulus/bridges/primitives/chain-wococo/src/lib.rs
+++ b/cumulus/bridges/primitives/chain-wococo/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/Cargo.toml b/cumulus/bridges/primitives/header-chain/Cargo.toml
index 8b59a2be8963d57446ad4b695544817cfac166fd..a7b53b0336dcc59c88bfd828e3af75b540cfe551 100644
--- a/cumulus/bridges/primitives/header-chain/Cargo.toml
+++ b/cumulus/bridges/primitives/header-chain/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-header-chain"
description = "A common interface for describing what a bridge pallet should be able to do."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/header-chain/src/justification/mod.rs b/cumulus/bridges/primitives/header-chain/src/justification/mod.rs
index 44548b8d3ffd95a26bf43780c1d0b391a2886dff..24c453a0790c90c04b4573a85a66a276a8e6fa89 100644
--- a/cumulus/bridges/primitives/header-chain/src/justification/mod.rs
+++ b/cumulus/bridges/primitives/header-chain/src/justification/mod.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/src/justification/verification/equivocation.rs b/cumulus/bridges/primitives/header-chain/src/justification/verification/equivocation.rs
index 2484fc4d6b2bf9df26e8a9cff72f4d0e65a6e2b4..e2d7a8e804c20bcaeef48e3ba96c29911a3c6012 100644
--- a/cumulus/bridges/primitives/header-chain/src/justification/verification/equivocation.rs
+++ b/cumulus/bridges/primitives/header-chain/src/justification/verification/equivocation.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/src/justification/verification/mod.rs b/cumulus/bridges/primitives/header-chain/src/justification/verification/mod.rs
index 353960734cc9dc9ccff37334e1859e672e02afbb..bb8aaadf327ecccde64365ce5860c5b3095079e7 100644
--- a/cumulus/bridges/primitives/header-chain/src/justification/verification/mod.rs
+++ b/cumulus/bridges/primitives/header-chain/src/justification/verification/mod.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/src/justification/verification/optimizer.rs b/cumulus/bridges/primitives/header-chain/src/justification/verification/optimizer.rs
index 99ccdd50616b0facc43359d5c27a32011a3f09b1..6552b359170a89d9b9816a8e933dacaf70d6d248 100644
--- a/cumulus/bridges/primitives/header-chain/src/justification/verification/optimizer.rs
+++ b/cumulus/bridges/primitives/header-chain/src/justification/verification/optimizer.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/src/justification/verification/strict.rs b/cumulus/bridges/primitives/header-chain/src/justification/verification/strict.rs
index a9d5f4c1f7362691745130365b5365e6e6bb6ed4..f899c6c8efc06c6a1dfa38c38c4050993b09b5af 100644
--- a/cumulus/bridges/primitives/header-chain/src/justification/verification/strict.rs
+++ b/cumulus/bridges/primitives/header-chain/src/justification/verification/strict.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/src/lib.rs b/cumulus/bridges/primitives/header-chain/src/lib.rs
index ea6c58f4c09791fb9784e9a5e80fce1aef7d497c..7008dfa6063aedaa2d4869eef87f3a076a7b2380 100644
--- a/cumulus/bridges/primitives/header-chain/src/lib.rs
+++ b/cumulus/bridges/primitives/header-chain/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/src/storage_keys.rs b/cumulus/bridges/primitives/header-chain/src/storage_keys.rs
index c4dbe53bd9a7f39c41dce8c6b550058cdce08174..55d095afbf2ae5ab00848676e455bf6da3c91166 100644
--- a/cumulus/bridges/primitives/header-chain/src/storage_keys.rs
+++ b/cumulus/bridges/primitives/header-chain/src/storage_keys.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/tests/implementation_match.rs b/cumulus/bridges/primitives/header-chain/tests/implementation_match.rs
index db96961832d4ba489e58178662c67829346dddb5..f664a419621f67e7153adf3d9195546cca80fd0f 100644
--- a/cumulus/bridges/primitives/header-chain/tests/implementation_match.rs
+++ b/cumulus/bridges/primitives/header-chain/tests/implementation_match.rs
@@ -1,4 +1,4 @@
-// Copyright 2020-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/tests/justification/equivocation.rs b/cumulus/bridges/primitives/header-chain/tests/justification/equivocation.rs
index f3c133481fb896a83ef42e9ffa642347822ddba9..0bc084cc1a97069dd4dff35f41ad53e6fde69319 100644
--- a/cumulus/bridges/primitives/header-chain/tests/justification/equivocation.rs
+++ b/cumulus/bridges/primitives/header-chain/tests/justification/equivocation.rs
@@ -1,4 +1,4 @@
-// Copyright 2020-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/tests/justification/optimizer.rs b/cumulus/bridges/primitives/header-chain/tests/justification/optimizer.rs
index bdc90a3b07cf6d3de85d67d8e6b05137eefb85a4..21bcd7e86b51e2f898024999a86c8ac403286bba 100644
--- a/cumulus/bridges/primitives/header-chain/tests/justification/optimizer.rs
+++ b/cumulus/bridges/primitives/header-chain/tests/justification/optimizer.rs
@@ -1,4 +1,4 @@
-// Copyright 2020-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/tests/justification/strict.rs b/cumulus/bridges/primitives/header-chain/tests/justification/strict.rs
index 9568f7f7cf9a3b7c71cca415e792af1a15f3ce52..188c9f5baba26b10f50fd8ed875b0cc856c3ec8d 100644
--- a/cumulus/bridges/primitives/header-chain/tests/justification/strict.rs
+++ b/cumulus/bridges/primitives/header-chain/tests/justification/strict.rs
@@ -1,4 +1,4 @@
-// Copyright 2020-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/header-chain/tests/tests.rs b/cumulus/bridges/primitives/header-chain/tests/tests.rs
index 7c525a9303adcd3ca9c9d469f19da59e030cad50..269fde09bb71ce3df3d955811f9da3e10c100ef3 100644
--- a/cumulus/bridges/primitives/header-chain/tests/tests.rs
+++ b/cumulus/bridges/primitives/header-chain/tests/tests.rs
@@ -1,3 +1,19 @@
+// Copyright (C) Parity Technologies (UK) Ltd.
+// This file is part of Parity Bridges Common.
+
+// Parity Bridges Common is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Parity Bridges Common is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Parity Bridges Common. If not, see .
+
mod justification {
mod equivocation;
mod optimizer;
diff --git a/cumulus/bridges/primitives/messages/Cargo.toml b/cumulus/bridges/primitives/messages/Cargo.toml
index 1e9e4db087ee88ce2dd87f80a23ab6af70c5e3e2..b1fa6d575aeb60a98c879ac0d4320b2d213408da 100644
--- a/cumulus/bridges/primitives/messages/Cargo.toml
+++ b/cumulus/bridges/primitives/messages/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-messages"
description = "Primitives of messages module."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/messages/src/lib.rs b/cumulus/bridges/primitives/messages/src/lib.rs
index 8cafd58650f35ef7a39f065c62b1415c287bb18a..e48914f7591866a5621c791193e26edd03959b9c 100644
--- a/cumulus/bridges/primitives/messages/src/lib.rs
+++ b/cumulus/bridges/primitives/messages/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/messages/src/source_chain.rs b/cumulus/bridges/primitives/messages/src/source_chain.rs
index 5e4be53c53a521758519c018a5e1f31b591b28e0..73092c3cce0a575283dd3a856bdfc197e0e4d969 100644
--- a/cumulus/bridges/primitives/messages/src/source_chain.rs
+++ b/cumulus/bridges/primitives/messages/src/source_chain.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/messages/src/storage_keys.rs b/cumulus/bridges/primitives/messages/src/storage_keys.rs
index 4edf9828cfde02e44f65ecc0d3d869f66e5d9b50..8eedf8fcc7ac98ae300ca0485a0827afd3cd1bb5 100644
--- a/cumulus/bridges/primitives/messages/src/storage_keys.rs
+++ b/cumulus/bridges/primitives/messages/src/storage_keys.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/messages/src/target_chain.rs b/cumulus/bridges/primitives/messages/src/target_chain.rs
index 3d73ca500139a2d01eacb36b502282425ed3e3af..388ce16ccdc06d3e2c42c3a094aae4d6180a0d09 100644
--- a/cumulus/bridges/primitives/messages/src/target_chain.rs
+++ b/cumulus/bridges/primitives/messages/src/target_chain.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/parachains/Cargo.toml b/cumulus/bridges/primitives/parachains/Cargo.toml
index 1e4acc6c50193858eca5b1b253406afe708af4c7..978296954bb7f2bcc716018eaa232f03562e6e89 100644
--- a/cumulus/bridges/primitives/parachains/Cargo.toml
+++ b/cumulus/bridges/primitives/parachains/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-parachains"
description = "Primitives of parachains module."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/parachains/src/lib.rs b/cumulus/bridges/primitives/parachains/src/lib.rs
index 21e78e0009f4f311079ddc551b6d71ba768edb82..262b9c6f977529e23d2a0b1515a578cc9455f7ac 100644
--- a/cumulus/bridges/primitives/parachains/src/lib.rs
+++ b/cumulus/bridges/primitives/parachains/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/polkadot-core/Cargo.toml b/cumulus/bridges/primitives/polkadot-core/Cargo.toml
index 33829e7a96c6bc1b20773274d32e7d2b0535eb5f..2563adaf219c9909c5e45f97fa3003057cc6cabc 100644
--- a/cumulus/bridges/primitives/polkadot-core/Cargo.toml
+++ b/cumulus/bridges/primitives/polkadot-core/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-polkadot-core"
description = "Primitives of Polkadot-like runtime."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/polkadot-core/src/lib.rs b/cumulus/bridges/primitives/polkadot-core/src/lib.rs
index 36ef58eed4dd78542d200f74f5455afa3aea001c..b35d97ec79ae2275a5ab885a2f7eb4948e45969d 100644
--- a/cumulus/bridges/primitives/polkadot-core/src/lib.rs
+++ b/cumulus/bridges/primitives/polkadot-core/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/polkadot-core/src/parachains.rs b/cumulus/bridges/primitives/polkadot-core/src/parachains.rs
index 7268d9c70afa0f7016a442bb157bf662554227d8..223956171f86499397842f491d809eb2f8d81a63 100644
--- a/cumulus/bridges/primitives/polkadot-core/src/parachains.rs
+++ b/cumulus/bridges/primitives/polkadot-core/src/parachains.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
@@ -37,7 +37,8 @@ use parity_util_mem::MallocSizeOf;
/// Parachain id.
///
-/// This is an equivalent of the `polkadot_parachain::Id`, which is a compact-encoded `u32`.
+/// This is an equivalent of the `polkadot_parachain_primitives::Id`, which is a compact-encoded
+/// `u32`.
#[derive(
Clone,
CompactAs,
@@ -64,7 +65,7 @@ impl From for ParaId {
/// Parachain head.
///
-/// This is an equivalent of the `polkadot_parachain::HeadData`.
+/// This is an equivalent of the `polkadot_parachain_primitives::HeadData`.
///
/// The parachain head means (at least in Cumulus) a SCALE-encoded parachain header.
#[derive(
diff --git a/cumulus/bridges/primitives/relayers/Cargo.toml b/cumulus/bridges/primitives/relayers/Cargo.toml
index 56edea067dc045ccb3e8f7937343e97a2d2882cf..bc674d4cb773682acdae3e7f90e546dd239cd6fb 100644
--- a/cumulus/bridges/primitives/relayers/Cargo.toml
+++ b/cumulus/bridges/primitives/relayers/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-relayers"
description = "Primitives of relayers module."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/relayers/src/lib.rs b/cumulus/bridges/primitives/relayers/src/lib.rs
index 21f66a2ffa10041107b9d02f3521ccd8f6db7309..c529eea536d73e91aa4293aa23813f9273f6f8b5 100644
--- a/cumulus/bridges/primitives/relayers/src/lib.rs
+++ b/cumulus/bridges/primitives/relayers/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/relayers/src/registration.rs b/cumulus/bridges/primitives/relayers/src/registration.rs
index 7ab20844bdf934ba37393c316f532cb7bcfbdfa1..bc2d0d127aefec3c6982b17915202cc0f87984f2 100644
--- a/cumulus/bridges/primitives/relayers/src/registration.rs
+++ b/cumulus/bridges/primitives/relayers/src/registration.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/runtime/Cargo.toml b/cumulus/bridges/primitives/runtime/Cargo.toml
index 0d6b9fb400c78b96633af0083c8a4c4fcf4f332c..f6134d6e3328004ff1e7cc50128abfe75dd5d014 100644
--- a/cumulus/bridges/primitives/runtime/Cargo.toml
+++ b/cumulus/bridges/primitives/runtime/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-runtime"
description = "Primitives that may be used at (bridges) runtime level."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/runtime/src/chain.rs b/cumulus/bridges/primitives/runtime/src/chain.rs
index 43fdaf8da1b7ffb4c29e6e3513f81b7b461a099e..5caaebd42babc32124ec724f10129f84f39423f7 100644
--- a/cumulus/bridges/primitives/runtime/src/chain.rs
+++ b/cumulus/bridges/primitives/runtime/src/chain.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/runtime/src/extensions.rs b/cumulus/bridges/primitives/runtime/src/extensions.rs
index 96ee9d1e6ec9130e173894624fe389198acce7ac..253350d17e74faa13c97ab2a0ee1876fce69693f 100644
--- a/cumulus/bridges/primitives/runtime/src/extensions.rs
+++ b/cumulus/bridges/primitives/runtime/src/extensions.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/runtime/src/lib.rs b/cumulus/bridges/primitives/runtime/src/lib.rs
index f4f52866de95d30b8e898a753d52bceed0d5445f..ece782e352bc21e6044cd93191957ac25a040b2a 100644
--- a/cumulus/bridges/primitives/runtime/src/lib.rs
+++ b/cumulus/bridges/primitives/runtime/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/runtime/src/messages.rs b/cumulus/bridges/primitives/runtime/src/messages.rs
index e3ce37ed5922da46521d96f125e2e95d6b3dcb53..0f219e984f7289b231c888c55e0e2acfb8829a88 100644
--- a/cumulus/bridges/primitives/runtime/src/messages.rs
+++ b/cumulus/bridges/primitives/runtime/src/messages.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/runtime/src/storage_proof.rs b/cumulus/bridges/primitives/runtime/src/storage_proof.rs
index 09641376666af9feecb3f9255dc02e6fdf2adca0..1b706aa66c16fc73a21ce83f550bea8a8fe128e5 100644
--- a/cumulus/bridges/primitives/runtime/src/storage_proof.rs
+++ b/cumulus/bridges/primitives/runtime/src/storage_proof.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/runtime/src/storage_types.rs b/cumulus/bridges/primitives/runtime/src/storage_types.rs
index e555f60e87f5fb1084914d541d5405a66e8e02e5..91c5451805a9861d9e58c462f9ab5849409d59a7 100644
--- a/cumulus/bridges/primitives/runtime/src/storage_types.rs
+++ b/cumulus/bridges/primitives/runtime/src/storage_types.rs
@@ -1,4 +1,4 @@
-// Copyright 2022 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/test-utils/Cargo.toml b/cumulus/bridges/primitives/test-utils/Cargo.toml
index 5ab4d22a7b52f3783d49e945b353269dcb1cac99..f6e8533705e02f80727620256a2d02f9f23fb2ff 100644
--- a/cumulus/bridges/primitives/test-utils/Cargo.toml
+++ b/cumulus/bridges/primitives/test-utils/Cargo.toml
@@ -1,9 +1,10 @@
[package]
name = "bp-test-utils"
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+publish = false
[dependencies]
bp-header-chain = { path = "../header-chain", default-features = false }
@@ -11,7 +12,7 @@ bp-parachains = { path = "../parachains", default-features = false }
bp-polkadot-core = { path = "../polkadot-core", default-features = false }
bp-runtime = { path = "../runtime", default-features = false }
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
-ed25519-dalek = { version = "1.0", default-features = false, features = ["u64_backend"] }
+ed25519-dalek = { version = "2.0", default-features = false }
finality-grandpa = { version = "0.16.2", default-features = false }
sp-application-crypto = { path = "../../../../substrate/primitives/application-crypto", default-features = false }
sp-consensus-grandpa = { path = "../../../../substrate/primitives/consensus/grandpa", default-features = false }
diff --git a/cumulus/bridges/primitives/test-utils/src/keyring.rs b/cumulus/bridges/primitives/test-utils/src/keyring.rs
index a4e818a3b88806b18e3394e506bb2fc4a167196c..eabf9c784eb8182f2824cd4c62defe4b92657450 100644
--- a/cumulus/bridges/primitives/test-utils/src/keyring.rs
+++ b/cumulus/bridges/primitives/test-utils/src/keyring.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
@@ -18,7 +18,7 @@
use bp_header_chain::{justification::JustificationVerificationContext, AuthoritySet};
use codec::Encode;
-use ed25519_dalek::{Keypair, PublicKey, SecretKey, Signature};
+use ed25519_dalek::{Signature, SigningKey, VerifyingKey};
use finality_grandpa::voter_set::VoterSet;
use sp_consensus_grandpa::{AuthorityId, AuthorityList, AuthorityWeight, SetId};
use sp_runtime::RuntimeDebug;
@@ -37,29 +37,15 @@ pub const FERDIE: Account = Account(5);
pub struct Account(pub u16);
impl Account {
- pub fn public(&self) -> PublicKey {
- (&self.secret()).into()
+ pub fn public(&self) -> VerifyingKey {
+ self.pair().verifying_key()
}
- pub fn secret(&self) -> SecretKey {
+ pub fn pair(&self) -> SigningKey {
let data = self.0.encode();
let mut bytes = [0_u8; 32];
bytes[0..data.len()].copy_from_slice(&data);
- SecretKey::from_bytes(&bytes)
- .expect("A static array of the correct length is a known good.")
- }
-
- pub fn pair(&self) -> Keypair {
- let mut pair: [u8; 64] = [0; 64];
-
- let secret = self.secret();
- pair[..32].copy_from_slice(&secret.to_bytes());
-
- let public = self.public();
- pair[32..].copy_from_slice(&public.to_bytes());
-
- Keypair::from_bytes(&pair)
- .expect("We expect the SecretKey to be good, so this must also be good.")
+ SigningKey::from_bytes(&bytes)
}
pub fn sign(&self, msg: &[u8]) -> Signature {
diff --git a/cumulus/bridges/primitives/test-utils/src/lib.rs b/cumulus/bridges/primitives/test-utils/src/lib.rs
index 5a7d0cca279a0c78c94e4e80ab671c59eb7d2262..4d3b84759938b98116a7157b5445804df464cc66 100644
--- a/cumulus/bridges/primitives/test-utils/src/lib.rs
+++ b/cumulus/bridges/primitives/test-utils/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/primitives/xcm-bridge-hub-router/Cargo.toml b/cumulus/bridges/primitives/xcm-bridge-hub-router/Cargo.toml
index dccb36af6de8c27a7400e11967f8813ba2fd0143..df2b00563deb1df184cf5969f81ea82d5816ae6a 100644
--- a/cumulus/bridges/primitives/xcm-bridge-hub-router/Cargo.toml
+++ b/cumulus/bridges/primitives/xcm-bridge-hub-router/Cargo.toml
@@ -2,8 +2,8 @@
name = "bp-xcm-bridge-hub-router"
description = "Primitives of the xcm-bridge-hub fee pallet."
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
[dependencies]
diff --git a/cumulus/bridges/primitives/xcm-bridge-hub-router/src/lib.rs b/cumulus/bridges/primitives/xcm-bridge-hub-router/src/lib.rs
index 0dd329f9e4a0e4fdf3571b0121793e4c78c33e3e..dbedb7a52c7fee85e35c7fadc67d11d8cfa434dc 100644
--- a/cumulus/bridges/primitives/xcm-bridge-hub-router/src/lib.rs
+++ b/cumulus/bridges/primitives/xcm-bridge-hub-router/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Parity Bridges Common.
// Parity Bridges Common is free software: you can redistribute it and/or modify
diff --git a/cumulus/bridges/rustfmt.toml b/cumulus/bridges/rustfmt.toml
deleted file mode 100644
index 082150daf04ee39ada660c315fd0f5bbcf99dea0..0000000000000000000000000000000000000000
--- a/cumulus/bridges/rustfmt.toml
+++ /dev/null
@@ -1,24 +0,0 @@
-# Basic
-hard_tabs = true
-max_width = 100
-use_small_heuristics = "Max"
-# Imports
-imports_granularity = "Crate"
-reorder_imports = true
-# Consistency
-newline_style = "Unix"
-# Format comments
-comment_width = 100
-wrap_comments = true
-# Misc
-chain_width = 80
-spaces_around_ranges = false
-binop_separator = "Back"
-reorder_impl_items = false
-match_arm_leading_pipes = "Preserve"
-match_arm_blocks = false
-match_block_trailing_comma = true
-trailing_comma = "Vertical"
-trailing_semicolon = false
-use_field_init_shorthand = true
-
diff --git a/cumulus/client/cli/Cargo.toml b/cumulus/client/cli/Cargo.toml
index f22d82f5be278ac13435434770b7114e0f31d74d..6c44d5f5fd3b6631a7cfa0449d9d04adaa300a1f 100644
--- a/cumulus/client/cli/Cargo.toml
+++ b/cumulus/client/cli/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "cumulus-client-cli"
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
[dependencies]
-clap = { version = "4.3.24", features = ["derive"] }
+clap = { version = "4.4.2", features = ["derive"] }
codec = { package = "parity-scale-codec", version = "3.0.0" }
url = "2.4.0"
diff --git a/cumulus/client/cli/src/lib.rs b/cumulus/client/cli/src/lib.rs
index 3ad68eb04ead3722489122155eaa483250360d06..1b18ed064373fdd58224b70da022a969ad641eb6 100644
--- a/cumulus/client/cli/src/lib.rs
+++ b/cumulus/client/cli/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
diff --git a/cumulus/client/collator/Cargo.toml b/cumulus/client/collator/Cargo.toml
index 2866793a21b55be3592d5ca81eead0b95c7a0b28..1d87efa443ce38f6b82a78d56c0fd090294e63d0 100644
--- a/cumulus/client/collator/Cargo.toml
+++ b/cumulus/client/collator/Cargo.toml
@@ -1,8 +1,8 @@
[package]
name = "cumulus-client-collator"
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
[dependencies]
parking_lot = "0.12.1"
diff --git a/cumulus/client/collator/src/lib.rs b/cumulus/client/collator/src/lib.rs
index 647107a7c7c73a58c7301cd26a461da3c3d7354e..f17ae488310608d461238a134597cd875311ba6b 100644
--- a/cumulus/client/collator/src/lib.rs
+++ b/cumulus/client/collator/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Substrate is free software: you can redistribute it and/or modify
diff --git a/cumulus/client/collator/src/service.rs b/cumulus/client/collator/src/service.rs
index c798cb84c23fd9a5f64df6b752b1048e7c6f98ab..c06be006fc17fd5153f0c0478a6786692f841ecb 100644
--- a/cumulus/client/collator/src/service.rs
+++ b/cumulus/client/collator/src/service.rs
@@ -1,4 +1,4 @@
-// Copyright 2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
diff --git a/cumulus/client/consensus/aura/Cargo.toml b/cumulus/client/consensus/aura/Cargo.toml
index 030ab705f1609583df7fe67e00da4c82551d30ae..8239a498746e3cfd8bda6190b125c95a17ebe735 100644
--- a/cumulus/client/consensus/aura/Cargo.toml
+++ b/cumulus/client/consensus/aura/Cargo.toml
@@ -2,8 +2,8 @@
name = "cumulus-client-consensus-aura"
description = "AURA consensus algorithm for parachains"
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
[dependencies]
async-trait = "0.1.73"
diff --git a/cumulus/client/consensus/aura/src/collator.rs b/cumulus/client/consensus/aura/src/collator.rs
index 37cf1ea57c3d5dca7f128c89e4578f515de97cdc..b00c3952e2bc90e057dc464ac4b9179927cd67da 100644
--- a/cumulus/client/consensus/aura/src/collator.rs
+++ b/cumulus/client/consensus/aura/src/collator.rs
@@ -1,4 +1,4 @@
-// Copyright 2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
diff --git a/cumulus/client/consensus/aura/src/collators/basic.rs b/cumulus/client/consensus/aura/src/collators/basic.rs
index d6f30aa672b51b187b2694ac04e5920514afbd21..3c904915ceafb9b97fa6493d4db21b8b1609585b 100644
--- a/cumulus/client/consensus/aura/src/collators/basic.rs
+++ b/cumulus/client/consensus/aura/src/collators/basic.rs
@@ -1,4 +1,4 @@
-// Copyright 2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
diff --git a/cumulus/client/consensus/aura/src/collators/lookahead.rs b/cumulus/client/consensus/aura/src/collators/lookahead.rs
index 9663ef5ad3ab238afbd883b4c3a0507000fef892..b1a7cde55c2c81f82dff6749c894263ffa3a86c3 100644
--- a/cumulus/client/consensus/aura/src/collators/lookahead.rs
+++ b/cumulus/client/consensus/aura/src/collators/lookahead.rs
@@ -1,4 +1,4 @@
-// Copyright 2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
@@ -34,7 +34,8 @@
use codec::{Codec, Encode};
use cumulus_client_collator::service::ServiceInterface as CollatorServiceInterface;
use cumulus_client_consensus_common::{
- self as consensus_common, ParachainBlockImportMarker, ParentSearchParams,
+ self as consensus_common, load_abridged_host_configuration, ParachainBlockImportMarker,
+ ParentSearchParams,
};
use cumulus_client_consensus_proposer::ProposerInterface;
use cumulus_primitives_aura::AuraUnincludedSegmentApi;
@@ -416,16 +417,30 @@ where
Some(SlotClaim::unchecked::
(author_pub, slot, timestamp))
}
+/// Reads allowed ancestry length parameter from the relay chain storage at the given relay parent.
+///
+/// Falls back to 0 in case of an error.
async fn max_ancestry_lookback(
- _relay_parent: PHash,
- _relay_client: &impl RelayChainInterface,
+ relay_parent: PHash,
+ relay_client: &impl RelayChainInterface,
) -> usize {
- // TODO [https://github.com/paritytech/cumulus/issues/2706]
- // We need to read the relay-chain state to know what the maximum
- // age truly is, but that depends on those pallets existing.
- //
- // For now, just provide the conservative value of '2'.
- // Overestimating can cause problems, as we'd be building on forks of the
- // chain that can never get included. Underestimating is less of an issue.
- 2
+ match load_abridged_host_configuration(relay_parent, relay_client).await {
+ Ok(Some(config)) => config.async_backing_params.allowed_ancestry_len as usize,
+ Ok(None) => {
+ tracing::error!(
+ target: crate::LOG_TARGET,
+ "Active config is missing in relay chain storage",
+ );
+ 0
+ },
+ Err(err) => {
+ tracing::error!(
+ target: crate::LOG_TARGET,
+ ?err,
+ ?relay_parent,
+ "Failed to read active config from relay chain client",
+ );
+ 0
+ },
+ }
}
diff --git a/cumulus/client/consensus/aura/src/collators/mod.rs b/cumulus/client/consensus/aura/src/collators/mod.rs
index 55128dfdc8502c8795109d256e7c223ece59ea28..4c7b759daf736f69de48b586b082a7d01534d7e3 100644
--- a/cumulus/client/consensus/aura/src/collators/mod.rs
+++ b/cumulus/client/consensus/aura/src/collators/mod.rs
@@ -1,4 +1,4 @@
-// Copyright 2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
diff --git a/cumulus/client/consensus/aura/src/equivocation_import_queue.rs b/cumulus/client/consensus/aura/src/equivocation_import_queue.rs
index 919e0da39b1a98663427dc632b0949037e526f7f..5cd65ed5546bae392df811e8043ac44214f6a7eb 100644
--- a/cumulus/client/consensus/aura/src/equivocation_import_queue.rs
+++ b/cumulus/client/consensus/aura/src/equivocation_import_queue.rs
@@ -1,4 +1,4 @@
-// Copyright 2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
diff --git a/cumulus/client/consensus/aura/src/import_queue.rs b/cumulus/client/consensus/aura/src/import_queue.rs
index 2f422b9edb174cf00acbacc6c4cc53d29af18aee..2611eaf532f8ffadebc1c2932f429803e561924e 100644
--- a/cumulus/client/consensus/aura/src/import_queue.rs
+++ b/cumulus/client/consensus/aura/src/import_queue.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
diff --git a/cumulus/client/consensus/aura/src/lib.rs b/cumulus/client/consensus/aura/src/lib.rs
index 792f7b230d62e25093aa7fef0d10812e0f02c32f..6ededa7a92c11cb8c313f7da01017eeef256fb06 100644
--- a/cumulus/client/consensus/aura/src/lib.rs
+++ b/cumulus/client/consensus/aura/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
diff --git a/cumulus/client/consensus/common/Cargo.toml b/cumulus/client/consensus/common/Cargo.toml
index 738434b910b648434fb5583d34314c04df3cc6bc..26d7ba1b142c07cd5a5e133d7e4594028755dccf 100644
--- a/cumulus/client/consensus/common/Cargo.toml
+++ b/cumulus/client/consensus/common/Cargo.toml
@@ -2,8 +2,8 @@
name = "cumulus-client-consensus-common"
description = "Cumulus specific common consensus implementations"
version = "0.1.0"
-authors = ["Parity Technologies "]
-edition = "2021"
+authors.workspace = true
+edition.workspace = true
[dependencies]
async-trait = "0.1.73"
diff --git a/cumulus/client/consensus/common/src/import_queue.rs b/cumulus/client/consensus/common/src/import_queue.rs
index e54598ac8568765e2d31b6b82913032622c7d13e..311a2b7ad8cfddf50abe0b18aeb5bf5f1f193c1d 100644
--- a/cumulus/client/consensus/common/src/import_queue.rs
+++ b/cumulus/client/consensus/common/src/import_queue.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2023 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
diff --git a/cumulus/client/consensus/common/src/level_monitor.rs b/cumulus/client/consensus/common/src/level_monitor.rs
index 8a6bbef62f35752a530089297f364698a09e818c..5f115ec2c4a3c885b60da5f5dd9f0fe3faefab16 100644
--- a/cumulus/client/consensus/common/src/level_monitor.rs
+++ b/cumulus/client/consensus/common/src/level_monitor.rs
@@ -1,4 +1,4 @@
-// Copyright 2022 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
diff --git a/cumulus/client/consensus/common/src/lib.rs b/cumulus/client/consensus/common/src/lib.rs
index 49e157481e7aa647eab0b1d7517248ba4a4812c2..29ee7356ee24deb9afa05b3429c6de9a9b537e8b 100644
--- a/cumulus/client/consensus/common/src/lib.rs
+++ b/cumulus/client/consensus/common/src/lib.rs
@@ -1,4 +1,4 @@
-// Copyright 2019-2021 Parity Technologies (UK) Ltd.
+// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Cumulus.
// Cumulus is free software: you can redistribute it and/or modify
@@ -20,8 +20,8 @@ use polkadot_primitives::{
};
use cumulus_primitives_core::{
- relay_chain::{BlockId as RBlockId, OccupiedCoreAssumption},
- ParaId,
+ relay_chain::{self, BlockId as RBlockId, OccupiedCoreAssumption},
+ AbridgedHostConfiguration, ParaId,
};
use cumulus_relay_chain_interface::{RelayChainError, RelayChainInterface};
@@ -412,3 +412,18 @@ pub fn relay_slot_and_timestamp(
})
.ok()
}
+
+/// Reads abridged host configuration from the relay chain storage at the given relay parent.
+pub async fn load_abridged_host_configuration(
+ relay_parent: PHash,
+ relay_client: &impl RelayChainInterface,
+) -> Result