diff --git a/.github/env b/.github/env
index bb61e1f4cd99..730c37f1db80 100644
--- a/.github/env
+++ b/.github/env
@@ -1 +1 @@
-IMAGE="docker.io/paritytech/ci-unified:bullseye-1.81.0-2024-09-11-v202409111034"
+IMAGE="docker.io/paritytech/ci-unified:bullseye-1.81.0-2024-11-19-v202411281558"
diff --git a/.github/scripts/common/lib.sh b/.github/scripts/common/lib.sh
index 6b8f70a26d7e..00f8c089831e 100755
--- a/.github/scripts/common/lib.sh
+++ b/.github/scripts/common/lib.sh
@@ -270,20 +270,19 @@ fetch_debian_package_from_s3() {
}
# Fetch the release artifacts like binary and signatures from S3. Assumes the ENV are set:
-# - RELEASE_ID
-# - GITHUB_TOKEN
-# - REPO in the form paritytech/polkadot
+# inputs: binary (polkadot), target(aarch64-apple-darwin)
fetch_release_artifacts_from_s3() {
BINARY=$1
- OUTPUT_DIR=${OUTPUT_DIR:-"./release-artifacts/${BINARY}"}
+ TARGET=$2
+ OUTPUT_DIR=${OUTPUT_DIR:-"./release-artifacts/${TARGET}/${BINARY}"}
echo "OUTPUT_DIR : $OUTPUT_DIR"
URL_BASE=$(get_s3_url_base $BINARY)
echo "URL_BASE=$URL_BASE"
- URL_BINARY=$URL_BASE/$VERSION/$BINARY
- URL_SHA=$URL_BASE/$VERSION/$BINARY.sha256
- URL_ASC=$URL_BASE/$VERSION/$BINARY.asc
+ URL_BINARY=$URL_BASE/$VERSION/$TARGET/$BINARY
+ URL_SHA=$URL_BASE/$VERSION/$TARGET/$BINARY.sha256
+ URL_ASC=$URL_BASE/$VERSION/$TARGET/$BINARY.asc
# Fetch artifacts
mkdir -p "$OUTPUT_DIR"
@@ -298,7 +297,7 @@ fetch_release_artifacts_from_s3() {
pwd
ls -al --color
popd > /dev/null
-
+ unset OUTPUT_DIR
}
# Pass the name of the binary as input, it will
@@ -306,15 +305,26 @@ fetch_release_artifacts_from_s3() {
function get_s3_url_base() {
name=$1
case $name in
- polkadot | polkadot-execute-worker | polkadot-prepare-worker | staking-miner)
+ polkadot | polkadot-execute-worker | polkadot-prepare-worker )
printf "https://releases.parity.io/polkadot"
;;
- polkadot-parachain)
- printf "https://releases.parity.io/cumulus"
+ polkadot-parachain)
+ printf "https://releases.parity.io/polkadot-parachain"
+ ;;
+
+ polkadot-omni-node)
+ printf "https://releases.parity.io/polkadot-omni-node"
;;
- *)
+ chain-spec-builder)
+ printf "https://releases.parity.io/chain-spec-builder"
+ ;;
+
+ frame-omni-bencher)
+ printf "https://releases.parity.io/frame-omni-bencher"
+ ;;
+ *)
printf "UNSUPPORTED BINARY $name"
exit 1
;;
@@ -497,3 +507,16 @@ validate_stable_tag() {
exit 1
fi
}
+
+# Prepare docker stable tag form the polkadot stable tag
+# input: tag (polkaodot-stableYYMM(-X) or polkadot-stableYYMM(-X)-rcX)
+# output: stableYYMM(-X) or stableYYMM(-X)-rcX
+prepare_docker_stable_tag() {
+ tag="$1"
+ if [[ "$tag" =~ stable[0-9]{4}(-[0-9]+)?(-rc[0-9]+)? ]]; then
+ echo "${BASH_REMATCH[0]}"
+ else
+ echo "Tag is invalid: $tag"
+ exit 1
+ fi
+}
diff --git a/.github/scripts/release/release_lib.sh b/.github/scripts/release/release_lib.sh
index 8b9254ec3f29..984709f2ea03 100644
--- a/.github/scripts/release/release_lib.sh
+++ b/.github/scripts/release/release_lib.sh
@@ -129,13 +129,69 @@ upload_s3_release() {
echo "Working on version: $version "
echo "Working on platform: $target "
+ URL_BASE=$(get_s3_url_base $product)
+
echo "Current content, should be empty on new uploads:"
- aws s3 ls "s3://releases.parity.io/${product}/${version}/${target}" --recursive --human-readable --summarize || true
+ aws s3 ls "s3://${URL_BASE}/${version}/${target}" --recursive --human-readable --summarize || true
echo "Content to be uploaded:"
- artifacts="artifacts/$product/"
+ artifacts="release-artifacts/$target/$product/"
ls "$artifacts"
- aws s3 sync --acl public-read "$artifacts" "s3://releases.parity.io/${product}/${version}/${target}"
+ aws s3 sync --acl public-read "$artifacts" "s3://${URL_BASE}/${version}/${target}"
echo "Uploaded files:"
- aws s3 ls "s3://releases.parity.io/${product}/${version}/${target}" --recursive --human-readable --summarize
- echo "✅ The release should be at https://releases.parity.io/${product}/${version}/${target}"
+ aws s3 ls "s3://${URL_BASE}/${version}/${target}" --recursive --human-readable --summarize
+ echo "✅ The release should be at https://${URL_BASE}/${version}/${target}"
+}
+
+# Upload runtimes artifacts to s3 release bucket
+#
+# input: version (stable release tage.g. polkadot-stable2412 or polkadot-stable2412-rc1)
+# output: none
+upload_s3_runtimes_release_artifacts() {
+ alias aws='podman run --rm -it docker.io/paritytech/awscli -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_BUCKET aws'
+
+ version=$1
+
+ echo "Working on version: $version "
+
+ echo "Current content, should be empty on new uploads:"
+ aws s3 ls "s3://releases.parity.io/polkadot/runtimes/${version}/" --recursive --human-readable --summarize || true
+ echo "Content to be uploaded:"
+ artifacts="artifacts/runtimes/"
+ ls "$artifacts"
+ aws s3 sync --acl public-read "$artifacts" "s3://releases.parity.io/polkadot/runtimes/${version}/"
+ echo "Uploaded files:"
+ aws s3 ls "s3://releases.parity.io/polkadot/runtimes/${version}/" --recursive --human-readable --summarize
+ echo "✅ The release should be at https://releases.parity.io/polkadot/runtimes/${version}"
+}
+
+
+# Pass the name of the binary as input, it will
+# return the s3 base url
+function get_s3_url_base() {
+ name=$1
+ case $name in
+ polkadot | polkadot-execute-worker | polkadot-prepare-worker )
+ printf "releases.parity.io/polkadot"
+ ;;
+
+ polkadot-parachain)
+ printf "releases.parity.io/polkadot-parachain"
+ ;;
+
+ polkadot-omni-node)
+ printf "releases.parity.io/polkadot-omni-node"
+ ;;
+
+ chain-spec-builder)
+ printf "releases.parity.io/chain-spec-builder"
+ ;;
+
+ frame-omni-bencher)
+ printf "releases.parity.io/frame-omni-bencher"
+ ;;
+ *)
+ printf "UNSUPPORTED BINARY $name"
+ exit 1
+ ;;
+ esac
}
diff --git a/.github/workflows/check-links.yml b/.github/workflows/check-links.yml
index dd9d3eaf824f..cea6b9a8636a 100644
--- a/.github/workflows/check-links.yml
+++ b/.github/workflows/check-links.yml
@@ -33,7 +33,7 @@ jobs:
- uses: actions/checkout@6d193bf28034eafb982f37bd894289fe649468fc # v4.1.0 (22. Sep 2023)
- name: Lychee link checker
- uses: lycheeverse/lychee-action@7cd0af4c74a61395d455af97419279d86aafaede # for v1.9.1 (10. Jan 2024)
+ uses: lycheeverse/lychee-action@f81112d0d2814ded911bd23e3beaa9dda9093915 # for v1.9.1 (10. Jan 2024)
with:
args: >-
--config .config/lychee.toml
diff --git a/.github/workflows/check-semver.yml b/.github/workflows/check-semver.yml
index 8d77b6a31b75..11b386da21e9 100644
--- a/.github/workflows/check-semver.yml
+++ b/.github/workflows/check-semver.yml
@@ -11,7 +11,7 @@ concurrency:
cancel-in-progress: true
env:
- TOOLCHAIN: nightly-2024-10-19
+ TOOLCHAIN: nightly-2024-11-19
jobs:
preflight:
@@ -74,10 +74,15 @@ jobs:
- name: install parity-publish
# Set the target dir to cache the build.
- run: CARGO_TARGET_DIR=./target/ cargo install parity-publish@0.10.1 --locked -q
+ run: CARGO_TARGET_DIR=./target/ cargo install parity-publish@0.10.2 --locked -q
- name: check semver
run: |
+ if [ -z "$PR" ]; then
+ echo "Skipping master/merge queue"
+ exit 0
+ fi
+
export CARGO_TARGET_DIR=target
export RUSTFLAGS='-A warnings -A missing_docs'
export SKIP_WASM_BUILD=1
diff --git a/.github/workflows/checks-quick.yml b/.github/workflows/checks-quick.yml
index c733a2517cb8..4c26b85a6303 100644
--- a/.github/workflows/checks-quick.yml
+++ b/.github/workflows/checks-quick.yml
@@ -97,7 +97,6 @@ jobs:
--exclude
"substrate/frame/contracts/fixtures/build"
"substrate/frame/contracts/fixtures/contracts/common"
- "substrate/frame/revive/fixtures/build"
"substrate/frame/revive/fixtures/contracts/common"
- name: deny git deps
run: python3 .github/scripts/deny-git-deps.py .
diff --git a/.github/workflows/command-backport.yml b/.github/workflows/command-backport.yml
index eecf0ac72d2c..db006e9bd907 100644
--- a/.github/workflows/command-backport.yml
+++ b/.github/workflows/command-backport.yml
@@ -16,6 +16,7 @@ jobs:
backport:
name: Backport pull request
runs-on: ubuntu-latest
+ environment: release
# The 'github.event.pull_request.merged' ensures that it got into master:
if: >
@@ -29,12 +30,13 @@ jobs:
steps:
- uses: actions/checkout@v4
- - name: Generate token
- id: generate_token
- uses: tibdex/github-app-token@v2.1.0
+ - name: Generate content write token for the release automation
+ id: generate_write_token
+ uses: actions/create-github-app-token@v1
with:
- app_id: ${{ secrets.CMD_BOT_APP_ID }}
- private_key: ${{ secrets.CMD_BOT_APP_KEY }}
+ app-id: ${{ vars.RELEASE_AUTOMATION_APP_ID }}
+ private-key: ${{ secrets.RELEASE_AUTOMATION_APP_PRIVATE_KEY }}
+ owner: paritytech
- name: Create backport pull requests
uses: korthout/backport-action@v3
@@ -42,7 +44,7 @@ jobs:
with:
target_branches: stable2407 stable2409 stable2412
merge_commits: skip
- github_token: ${{ steps.generate_token.outputs.token }}
+ github_token: ${{ steps.generate_write_token.outputs.token }}
pull_description: |
Backport #${pull_number} into `${target_branch}` from ${pull_author}.
@@ -86,7 +88,7 @@ jobs:
const reviewer = '${{ github.event.pull_request.user.login }}';
for (const pullNumber of pullNumbers) {
- await github.pulls.createReviewRequest({
+ await github.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: parseInt(pullNumber),
diff --git a/.github/workflows/publish-check-compile.yml b/.github/workflows/publish-check-compile.yml
new file mode 100644
index 000000000000..83cd3ff8fa90
--- /dev/null
+++ b/.github/workflows/publish-check-compile.yml
@@ -0,0 +1,48 @@
+name: Check publish build
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ types: [opened, synchronize, reopened, ready_for_review]
+ merge_group:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ preflight:
+ uses: ./.github/workflows/reusable-preflight.yml
+
+ check-publish:
+ timeout-minutes: 90
+ needs: [preflight]
+ runs-on: ${{ needs.preflight.outputs.RUNNER }}
+ container:
+ image: ${{ needs.preflight.outputs.IMAGE }}
+ steps:
+ - uses: actions/checkout@6d193bf28034eafb982f37bd894289fe649468fc # v4.1.7
+
+ - name: Rust Cache
+ uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2.7.5
+ with:
+ cache-on-failure: true
+
+ - name: install parity-publish
+ run: cargo install parity-publish@0.10.2 --locked -q
+
+ - name: parity-publish update plan
+ run: parity-publish --color always plan --skip-check --prdoc prdoc/
+
+ - name: parity-publish apply plan
+ run: parity-publish --color always apply --registry
+
+ - name: parity-publish check compile
+ run: |
+ packages="$(parity-publish apply --print)"
+
+ if [ -n "$packages" ]; then
+ cargo --color always check $(printf -- '-p %s ' $packages)
+ fi
diff --git a/.github/workflows/publish-check-crates.yml b/.github/workflows/publish-check-crates.yml
index 3fad3b641474..1e5a8054e2c7 100644
--- a/.github/workflows/publish-check-crates.yml
+++ b/.github/workflows/publish-check-crates.yml
@@ -24,7 +24,7 @@ jobs:
cache-on-failure: true
- name: install parity-publish
- run: cargo install parity-publish@0.8.0 --locked -q
+ run: cargo install parity-publish@0.10.2 --locked -q
- name: parity-publish check
run: parity-publish --color always check --allow-unpublished
diff --git a/.github/workflows/publish-claim-crates.yml b/.github/workflows/publish-claim-crates.yml
index 37bf06bb82d8..845b57a61b96 100644
--- a/.github/workflows/publish-claim-crates.yml
+++ b/.github/workflows/publish-claim-crates.yml
@@ -18,7 +18,7 @@ jobs:
cache-on-failure: true
- name: install parity-publish
- run: cargo install parity-publish@0.8.0 --locked -q
+ run: cargo install parity-publish@0.10.2 --locked -q
- name: parity-publish claim
env:
diff --git a/.github/workflows/release-branchoff-stable.yml b/.github/workflows/release-10_branchoff-stable.yml
similarity index 100%
rename from .github/workflows/release-branchoff-stable.yml
rename to .github/workflows/release-10_branchoff-stable.yml
diff --git a/.github/workflows/release-10_rc-automation.yml b/.github/workflows/release-11_rc-automation.yml
similarity index 100%
rename from .github/workflows/release-10_rc-automation.yml
rename to .github/workflows/release-11_rc-automation.yml
diff --git a/.github/workflows/release-build-rc.yml b/.github/workflows/release-20_build-rc.yml
similarity index 62%
rename from .github/workflows/release-build-rc.yml
rename to .github/workflows/release-20_build-rc.yml
index a43c2b282a8d..d4c7055c37c5 100644
--- a/.github/workflows/release-build-rc.yml
+++ b/.github/workflows/release-20_build-rc.yml
@@ -11,10 +11,12 @@ on:
- polkadot
- polkadot-parachain
- polkadot-omni-node
+ - frame-omni-bencher
+ - chain-spec-builder
- all
release_tag:
- description: Tag matching the actual release candidate with the format stableYYMM-rcX or stableYYMM
+ description: Tag matching the actual release candidate with the format polkadot-stableYYMM(-X)-rcX or polkadot-stableYYMM(-X)
type: string
jobs:
@@ -106,6 +108,50 @@ jobs:
attestations: write
contents: read
+ build-frame-omni-bencher-binary:
+ needs: [validate-inputs]
+ if: ${{ inputs.binary == 'frame-omni-bencher' || inputs.binary == 'all' }}
+ uses: "./.github/workflows/release-reusable-rc-buid.yml"
+ with:
+ binary: '["frame-omni-bencher"]'
+ package: "frame-omni-bencher"
+ release_tag: ${{ needs.validate-inputs.outputs.release_tag }}
+ target: x86_64-unknown-linux-gnu
+ secrets:
+ PGP_KMS_KEY: ${{ secrets.PGP_KMS_KEY }}
+ PGP_KMS_HASH: ${{ secrets.PGP_KMS_HASH }}
+ AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+ permissions:
+ id-token: write
+ attestations: write
+ contents: read
+
+ build-chain-spec-builder-binary:
+ needs: [validate-inputs]
+ if: ${{ inputs.binary == 'chain-spec-builder' || inputs.binary == 'all' }}
+ uses: "./.github/workflows/release-reusable-rc-buid.yml"
+ with:
+ binary: '["chain-spec-builder"]'
+ package: staging-chain-spec-builder
+ release_tag: ${{ needs.validate-inputs.outputs.release_tag }}
+ target: x86_64-unknown-linux-gnu
+ secrets:
+ PGP_KMS_KEY: ${{ secrets.PGP_KMS_KEY }}
+ PGP_KMS_HASH: ${{ secrets.PGP_KMS_HASH }}
+ AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+ permissions:
+ id-token: write
+ attestations: write
+ contents: read
+
build-polkadot-macos-binary:
needs: [validate-inputs]
if: ${{ inputs.binary == 'polkadot' || inputs.binary == 'all' }}
@@ -134,7 +180,7 @@ jobs:
uses: "./.github/workflows/release-reusable-rc-buid.yml"
with:
binary: '["polkadot-parachain"]'
- package: "polkadot-parachain-bin"
+ package: polkadot-parachain-bin
release_tag: ${{ needs.validate-inputs.outputs.release_tag }}
target: aarch64-apple-darwin
secrets:
@@ -156,7 +202,51 @@ jobs:
uses: "./.github/workflows/release-reusable-rc-buid.yml"
with:
binary: '["polkadot-omni-node"]'
- package: "polkadot-omni-node"
+ package: polkadot-omni-node
+ release_tag: ${{ needs.validate-inputs.outputs.release_tag }}
+ target: aarch64-apple-darwin
+ secrets:
+ PGP_KMS_KEY: ${{ secrets.PGP_KMS_KEY }}
+ PGP_KMS_HASH: ${{ secrets.PGP_KMS_HASH }}
+ AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+ permissions:
+ id-token: write
+ attestations: write
+ contents: read
+
+ build-frame-omni-bencher-macos-binary:
+ needs: [validate-inputs]
+ if: ${{ inputs.binary == 'frame-omni-bencher' || inputs.binary == 'all' }}
+ uses: "./.github/workflows/release-reusable-rc-buid.yml"
+ with:
+ binary: '["frame-omni-bencher"]'
+ package: frame-omni-bencher
+ release_tag: ${{ needs.validate-inputs.outputs.release_tag }}
+ target: aarch64-apple-darwin
+ secrets:
+ PGP_KMS_KEY: ${{ secrets.PGP_KMS_KEY }}
+ PGP_KMS_HASH: ${{ secrets.PGP_KMS_HASH }}
+ AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+ permissions:
+ id-token: write
+ attestations: write
+ contents: read
+
+ build-chain-spec-builder-macos-binary:
+ needs: [validate-inputs]
+ if: ${{ inputs.binary == 'chain-spec-builder' || inputs.binary == 'all' }}
+ uses: "./.github/workflows/release-reusable-rc-buid.yml"
+ with:
+ binary: '["chain-spec-builder"]'
+ package: staging-chain-spec-builder
release_tag: ${{ needs.validate-inputs.outputs.release_tag }}
target: aarch64-apple-darwin
secrets:
diff --git a/.github/workflows/release-30_publish_release_draft.yml b/.github/workflows/release-30_publish_release_draft.yml
index 4364b4f80457..78ceea91f100 100644
--- a/.github/workflows/release-30_publish_release_draft.yml
+++ b/.github/workflows/release-30_publish_release_draft.yml
@@ -1,19 +1,46 @@
name: Release - Publish draft
-on:
- push:
- tags:
- # Catches v1.2.3 and v1.2.3-rc1
- - v[0-9]+.[0-9]+.[0-9]+*
- # - polkadot-stable[0-9]+* Activate when the release process from release org is setteled
+# This workflow runs in paritytech-release and creates full release draft with:
+# - release notes
+# - info about the runtimes
+# - attached artifacts:
+# - runtimes
+# - binaries
+# - signatures
+on:
workflow_dispatch:
inputs:
- version:
- description: Current release/rc version
+ release_tag:
+ description: Tag matching the actual release candidate with the format polkadot-stableYYMM(-X)-rcX or polkadot-stableYYMM(-X)
+ required: true
+ type: string
jobs:
+ check-synchronization:
+ uses: paritytech-release/sync-workflows/.github/workflows/check-syncronization.yml@main
+
+ validate-inputs:
+ needs: [ check-synchronization ]
+ if: ${{ needs.check-synchronization.outputs.checks_passed }} == 'true'
+ runs-on: ubuntu-latest
+ outputs:
+ release_tag: ${{ steps.validate_inputs.outputs.release_tag }}
+
+ steps:
+ - name: Checkout sources
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - name: Validate inputs
+ id: validate_inputs
+ run: |
+ . ./.github/scripts/common/lib.sh
+
+ RELEASE_TAG=$(validate_stable_tag ${{ inputs.release_tag }})
+ echo "release_tag=${RELEASE_TAG}" >> $GITHUB_OUTPUT
+
get-rust-versions:
+ needs: [ validate-inputs ]
runs-on: ubuntu-latest
outputs:
rustc-stable: ${{ steps.get-rust-versions.outputs.stable }}
@@ -24,47 +51,28 @@ jobs:
echo "stable=$RUST_STABLE_VERSION" >> $GITHUB_OUTPUT
build-runtimes:
+ needs: [ validate-inputs ]
uses: "./.github/workflows/release-srtool.yml"
with:
excluded_runtimes: "asset-hub-rococo bridge-hub-rococo contracts-rococo coretime-rococo people-rococo rococo rococo-parachain substrate-test bp cumulus-test kitchensink minimal-template parachain-template penpal polkadot-test seedling shell frame-try sp solochain-template polkadot-sdk-docs-first"
build_opts: "--features on-chain-release-build"
-
- build-binaries:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- # Tuples of [package, binary-name]
- binary: [ [frame-omni-bencher, frame-omni-bencher], [staging-chain-spec-builder, chain-spec-builder] ]
- steps:
- - name: Checkout sources
- uses: actions/checkout@6d193bf28034eafb982f37bd894289fe649468fc # v4.0.0
-
- - name: Install protobuf-compiler
- run: |
- sudo apt update
- sudo apt install -y protobuf-compiler
-
- - name: Build ${{ matrix.binary[1] }} binary
- run: |
- cargo build --locked --profile=production -p ${{ matrix.binary[0] }} --bin ${{ matrix.binary[1] }}
- target/production/${{ matrix.binary[1] }} --version
-
- - name: Upload ${{ matrix.binary[1] }} binary
- uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
- with:
- name: ${{ matrix.binary[1] }}
- path: target/production/${{ matrix.binary[1] }}
-
+ profile: production
+ permissions:
+ id-token: write
+ attestations: write
+ contents: read
publish-release-draft:
runs-on: ubuntu-latest
- needs: [ get-rust-versions, build-runtimes ]
+ environment: release
+ needs: [ validate-inputs, get-rust-versions, build-runtimes ]
outputs:
release_url: ${{ steps.create-release.outputs.html_url }}
asset_upload_url: ${{ steps.create-release.outputs.upload_url }}
+
steps:
- name: Checkout
- uses: actions/checkout@6d193bf28034eafb982f37bd894289fe649468fc # v4.0.0
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Download artifacts
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
@@ -87,20 +95,21 @@ jobs:
GLUTTON_WESTEND_DIGEST: ${{ github.workspace}}/glutton-westend-runtime/glutton-westend-srtool-digest.json
PEOPLE_WESTEND_DIGEST: ${{ github.workspace}}/people-westend-runtime/people-westend-srtool-digest.json
WESTEND_DIGEST: ${{ github.workspace}}/westend-runtime/westend-srtool-digest.json
+ RELEASE_TAG: ${{ needs.validate-inputs.outputs.release_tag }}
shell: bash
run: |
. ./.github/scripts/common/lib.sh
export REF1=$(get_latest_release_tag)
- if [[ -z "${{ inputs.version }}" ]]; then
+ if [[ -z "$RELEASE_TAG" ]]; then
export REF2="${{ github.ref_name }}"
echo "REF2: ${REF2}"
else
- export REF2="${{ inputs.version }}"
+ export REF2="$RELEASE_TAG"
echo "REF2: ${REF2}"
fi
echo "REL_TAG=$REF2" >> $GITHUB_ENV
- export VERSION=$(echo "$REF2" | sed -E 's/.*(stable[0-9]+).*$/\1/')
+ export VERSION=$(echo "$REF2" | sed -E 's/.*(stable[0-9]{4}(-[0-9]+)?).*$/\1/')
./scripts/release/build-changelogs.sh
@@ -112,19 +121,29 @@ jobs:
scripts/release/context.json
**/*-srtool-digest.json
+ - name: Generate content write token for the release automation
+ id: generate_write_token
+ uses: actions/create-github-app-token@v1
+ with:
+ app-id: ${{ vars.POLKADOT_SDK_RELEASE_RW_APP_ID }}
+ private-key: ${{ secrets.POLKADOT_SDK_RELEASE_RW_APP_KEY }}
+ owner: paritytech
+ repositories: polkadot-sdk
+
- name: Create draft release
id: create-release
- uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1.1.4
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- tag_name: ${{ env.REL_TAG }}
- release_name: Polkadot ${{ env.REL_TAG }}
- body_path: ${{ github.workspace}}/scripts/release/RELEASE_DRAFT.md
- draft: true
+ GITHUB_TOKEN: ${{ steps.generate_write_token.outputs.token }}
+ run: |
+ gh release create ${{ env.REL_TAG }} \
+ --repo paritytech/polkadot-sdk \
+ --draft \
+ --title "Polkadot ${{ env.REL_TAG }}" \
+ --notes-file ${{ github.workspace}}/scripts/release/RELEASE_DRAFT.md
publish-runtimes:
- needs: [ build-runtimes, publish-release-draft ]
+ needs: [ validate-inputs, build-runtimes, publish-release-draft ]
+ environment: release
continue-on-error: true
runs-on: ubuntu-latest
strategy:
@@ -132,7 +151,7 @@ jobs:
steps:
- name: Checkout sources
- uses: actions/checkout@6d193bf28034eafb982f37bd894289fe649468fc # v4.0.0
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Download artifacts
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
@@ -144,44 +163,83 @@ jobs:
>>$GITHUB_ENV echo ASSET=$(find ${{ matrix.chain }}-runtime -name '*.compact.compressed.wasm')
>>$GITHUB_ENV echo SPEC=$(<${JSON} jq -r .runtimes.compact.subwasm.core_version.specVersion)
+ - name: Generate content write token for the release automation
+ id: generate_write_token
+ uses: actions/create-github-app-token@v1
+ with:
+ app-id: ${{ vars.POLKADOT_SDK_RELEASE_RW_APP_ID }}
+ private-key: ${{ secrets.POLKADOT_SDK_RELEASE_RW_APP_KEY }}
+ owner: paritytech
+ repositories: polkadot-sdk
+
- name: Upload compressed ${{ matrix.chain }} v${{ env.SPEC }} wasm
- if: ${{ matrix.chain != 'rococo-parachain' }}
- uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 #v1.0.2
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ needs.publish-release-draft.outputs.asset_upload_url }}
- asset_path: ${{ env.ASSET }}
- asset_name: ${{ matrix.chain }}_runtime-v${{ env.SPEC }}.compact.compressed.wasm
- asset_content_type: application/wasm
+ GITHUB_TOKEN: ${{ steps.generate_write_token.outputs.token }}
+ run: |
+ gh release upload ${{ needs.validate-inputs.outputs.release_tag }} \
+ --repo paritytech/polkadot-sdk \
+ '${{ env.ASSET }}#${{ matrix.chain }}_runtime-v${{ env.SPEC }}.compact.compressed.wasm'
- publish-binaries:
- needs: [ publish-release-draft, build-binaries ]
+ publish-release-artifacts:
+ needs: [ validate-inputs, publish-release-draft ]
+ environment: release
continue-on-error: true
runs-on: ubuntu-latest
strategy:
matrix:
- binary: [frame-omni-bencher, chain-spec-builder]
+ binary: [ polkadot, polkadot-execute-worker, polkadot-prepare-worker, polkadot-parachain, polkadot-omni-node, frame-omni-bencher, chain-spec-builder ]
+ target: [ x86_64-unknown-linux-gnu, aarch64-apple-darwin ]
steps:
- - name: Download artifacts
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
+ - name: Checkout sources
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - name: Fetch binaries from s3 based on version
+ run: |
+ . ./.github/scripts/common/lib.sh
+
+ VERSION="${{ needs.validate-inputs.outputs.release_tag }}"
+ fetch_release_artifacts_from_s3 ${{ matrix.binary }} ${{ matrix.target }}
+
+ - name: Rename aarch64-apple-darwin binaries
+ if: ${{ matrix.target == 'aarch64-apple-darwin' }}
+ working-directory: ${{ github.workspace}}/release-artifacts/${{ matrix.target }}/${{ matrix.binary }}
+ run: |
+ mv ${{ matrix.binary }} ${{ matrix.binary }}-aarch64-apple-darwin
+ mv ${{ matrix.binary }}.asc ${{ matrix.binary }}-aarch64-apple-darwin.asc
+ mv ${{ matrix.binary }}.sha256 ${{ matrix.binary }}-aarch64-apple-darwin.sha256
+
+ - name: Generate content write token for the release automation
+ id: generate_write_token
+ uses: actions/create-github-app-token@v1
with:
- name: ${{ matrix.binary }}
+ app-id: ${{ vars.POLKADOT_SDK_RELEASE_RW_APP_ID }}
+ private-key: ${{ secrets.POLKADOT_SDK_RELEASE_RW_APP_KEY }}
+ owner: paritytech
+ repositories: polkadot-sdk
- - name: Upload ${{ matrix.binary }} binary
- uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 #v1.0.2
+ - name: Upload ${{ matrix.binary }} binary to release draft
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ needs.publish-release-draft.outputs.asset_upload_url }}
- asset_path: ${{ github.workspace}}/${{ matrix.binary }}
- asset_name: ${{ matrix.binary }}
- asset_content_type: application/octet-stream
+ GITHUB_TOKEN: ${{ steps.generate_write_token.outputs.token }}
+ working-directory: ${{ github.workspace}}/release-artifacts/${{ matrix.target }}/${{ matrix.binary }}
+ run: |
+ if [[ ${{ matrix.target }} == "aarch64-apple-darwin" ]]; then
+ gh release upload ${{ needs.validate-inputs.outputs.release_tag }} \
+ --repo paritytech/polkadot-sdk \
+ ${{ matrix.binary }}-aarch64-apple-darwin \
+ ${{ matrix.binary }}-aarch64-apple-darwin.asc \
+ ${{ matrix.binary }}-aarch64-apple-darwin.sha256
+ else
+ gh release upload ${{ needs.validate-inputs.outputs.release_tag }} \
+ --repo paritytech/polkadot-sdk \
+ ${{ matrix.binary }} \
+ ${{ matrix.binary }}.asc \
+ ${{ matrix.binary }}.sha256
+ fi
post_to_matrix:
runs-on: ubuntu-latest
- needs: publish-release-draft
+ needs: [ validate-inputs, publish-release-draft ]
environment: release
strategy:
matrix:
@@ -197,5 +255,5 @@ jobs:
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
server: m.parity.io
message: |
- **New version of polkadot tagged**: ${{ github.ref_name }}
- Draft release created: ${{ needs.publish-release-draft.outputs.release_url }}
+ **New version of polkadot tagged**: ${{ needs.validate-inputs.outputs.release_tag }}
+ And release draft is release created in [polkadot-sdk repo](https://github.com/paritytech/polkadot-sdk/releases)
diff --git a/.github/workflows/release-31_promote-rc-to-final.yml b/.github/workflows/release-31_promote-rc-to-final.yml
new file mode 100644
index 000000000000..6aa9d4bddd1d
--- /dev/null
+++ b/.github/workflows/release-31_promote-rc-to-final.yml
@@ -0,0 +1,125 @@
+name: Release - Promote RC to final candidate on S3
+
+on:
+ workflow_dispatch:
+ inputs:
+ binary:
+ description: Binary to be build for the release
+ default: all
+ type: choice
+ options:
+ - polkadot
+ - polkadot-parachain
+ - polkadot-omni-node
+ - frame-omni-bencher
+ - chain-spec-builder
+ - all
+ release_tag:
+ description: Tag matching the actual release candidate with the format polkadot-stableYYMM(-X)-rcX
+ type: string
+
+
+jobs:
+
+ check-synchronization:
+ uses: paritytech-release/sync-workflows/.github/workflows/check-syncronization.yml@main
+
+ validate-inputs:
+ needs: [ check-synchronization ]
+ if: ${{ needs.check-synchronization.outputs.checks_passed }} == 'true'
+ runs-on: ubuntu-latest
+ outputs:
+ release_tag: ${{ steps.validate_inputs.outputs.release_tag }}
+ final_tag: ${{ steps.validate_inputs.outputs.final_tag }}
+
+ steps:
+ - name: Checkout sources
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - name: Validate inputs
+ id: validate_inputs
+ run: |
+ . ./.github/scripts/common/lib.sh
+
+ RELEASE_TAG=$(validate_stable_tag ${{ inputs.release_tag }})
+ echo "release_tag=${RELEASE_TAG}" >> $GITHUB_OUTPUT
+
+ promote-polkadot-rc-to-final:
+ if: ${{ inputs.binary == 'polkadot' || inputs.binary == 'all' }}
+ needs: [ validate-inputs ]
+ uses: ./.github/workflows/release-reusable-promote-to-final.yml
+ strategy:
+ matrix:
+ target: [ x86_64-unknown-linux-gnu, aarch64-apple-darwin ]
+ with:
+ package: polkadot
+ release_tag: ${{ needs.validate-inputs.outputs.release_tag }}
+ target: ${{ matrix.target }}
+ secrets:
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+
+ promote-polkadot-parachain-rc-to-final:
+ if: ${{ inputs.binary == 'polkadot-parachain' || inputs.binary == 'all' }}
+ needs: [ validate-inputs ]
+ uses: ./.github/workflows/release-reusable-promote-to-final.yml
+ strategy:
+ matrix:
+ target: [ x86_64-unknown-linux-gnu, aarch64-apple-darwin ]
+ with:
+ package: polkadot-parachain
+ release_tag: ${{ needs.validate-inputs.outputs.release_tag }}
+ target: ${{ matrix.target }}
+ secrets:
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+
+ promote-polkadot-omni-node-rc-to-final:
+ if: ${{ inputs.binary == 'polkadot-omni-node' || inputs.binary == 'all' }}
+ needs: [ validate-inputs ]
+ uses: ./.github/workflows/release-reusable-promote-to-final.yml
+ strategy:
+ matrix:
+ target: [ x86_64-unknown-linux-gnu, aarch64-apple-darwin ]
+ with:
+ package: polkadot-omni-node
+ release_tag: ${{ needs.validate-inputs.outputs.release_tag }}
+ target: ${{ matrix.target }}
+ secrets:
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+
+ promote-frame-omni-bencher-rc-to-final:
+ if: ${{ inputs.binary == 'frame-omni-bencher' || inputs.binary == 'all' }}
+ needs: [ validate-inputs ]
+ uses: ./.github/workflows/release-reusable-promote-to-final.yml
+ strategy:
+ matrix:
+ target: [ x86_64-unknown-linux-gnu, aarch64-apple-darwin ]
+ with:
+ package: frame-omni-bencher
+ release_tag: ${{ needs.validate-inputs.outputs.release_tag }}
+ target: ${{ matrix.target }}
+ secrets:
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+
+ promote-chain-spec-builder-rc-to-final:
+ if: ${{ inputs.binary == 'chain-spec-builder' || inputs.binary == 'all' }}
+ needs: [ validate-inputs ]
+ uses: ./.github/workflows/release-reusable-promote-to-final.yml
+ strategy:
+ matrix:
+ target: [ x86_64-unknown-linux-gnu, aarch64-apple-darwin ]
+ with:
+ package: chain-spec-builder
+ release_tag: ${{ needs.validate-inputs.outputs.release_tag }}
+ target: ${{ matrix.target }}
+ secrets:
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
diff --git a/.github/workflows/release-50_publish-docker.yml b/.github/workflows/release-50_publish-docker.yml
index 627e53bacd88..5c3c3a6e854d 100644
--- a/.github/workflows/release-50_publish-docker.yml
+++ b/.github/workflows/release-50_publish-docker.yml
@@ -4,10 +4,6 @@ name: Release - Publish Docker Image
# It builds and published releases and rc candidates.
on:
- #TODO: activate automated run later
- # release:
- # types:
- # - published
workflow_dispatch:
inputs:
image_type:
@@ -30,16 +26,6 @@ on:
- polkadot-parachain
- chain-spec-builder
- release_id:
- description: |
- Release ID.
- You can find it using the command:
- curl -s \
- -H "Authorization: Bearer ${GITHUB_TOKEN}" https://api.github.com/repos/$OWNER/$REPO/releases | \
- jq '.[] | { name: .name, id: .id }'
- required: true
- type: number
-
registry:
description: Container registry
required: true
@@ -55,7 +41,7 @@ on:
default: parity
version:
- description: version to build/release
+ description: Version of the polkadot node release in format v1.16.0 or v1.16.0-rc1
default: v0.9.18
required: true
@@ -78,11 +64,15 @@ env:
IMAGE_TYPE: ${{ inputs.image_type }}
jobs:
+ check-synchronization:
+ uses: paritytech-release/sync-workflows/.github/workflows/check-syncronization.yml@main
+
validate-inputs:
+ needs: [check-synchronization]
+ if: ${{ needs.check-synchronization.outputs.checks_passed }} == 'true'
runs-on: ubuntu-latest
outputs:
version: ${{ steps.validate_inputs.outputs.VERSION }}
- release_id: ${{ steps.validate_inputs.outputs.RELEASE_ID }}
stable_tag: ${{ steps.validate_inputs.outputs.stable_tag }}
steps:
@@ -97,11 +87,6 @@ jobs:
VERSION=$(filter_version_from_input "${{ inputs.version }}")
echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
- RELEASE_ID=$(check_release_id "${{ inputs.release_id }}")
- echo "RELEASE_ID=${RELEASE_ID}" >> $GITHUB_OUTPUT
-
- echo "Release ID: $RELEASE_ID"
-
STABLE_TAG=$(validate_stable_tag ${{ inputs.stable_tag }})
echo "stable_tag=${STABLE_TAG}" >> $GITHUB_OUTPUT
@@ -114,50 +99,26 @@ jobs:
- name: Checkout sources
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
- #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
- # ls -al
-
- name: Fetch rc artifacts or release artifacts from s3 based on version
- #this step runs only if the workflow is triggered manually
- if: ${{ env.EVENT_NAME == 'workflow_dispatch' && inputs.binary != 'polkadot-omni-node' && inputs.binary != 'chain-spec-builder'}}
+ # if: ${{ env.EVENT_NAME == 'workflow_dispatch' && inputs.binary != 'polkadot-omni-node' && inputs.binary != 'chain-spec-builder'}}
run: |
. ./.github/scripts/common/lib.sh
- VERSION="${{ needs.validate-inputs.outputs.VERSION }}"
+ VERSION="${{ needs.validate-inputs.outputs.stable_tag }}"
if [[ ${{ inputs.binary }} == 'polkadot' ]]; then
bins=(polkadot polkadot-prepare-worker polkadot-execute-worker)
for bin in "${bins[@]}"; do
- fetch_release_artifacts_from_s3 $bin
+ fetch_release_artifacts_from_s3 $bin x86_64-unknown-linux-gnu
done
else
- fetch_release_artifacts_from_s3 $BINARY
+ fetch_release_artifacts_from_s3 $BINARY x86_64-unknown-linux-gnu
fi
- - name: Fetch polkadot-omni-node/chain-spec-builder rc artifacts or release artifacts based on release id
- #this step runs only if the workflow is triggered manually and only for chain-spec-builder
- if: ${{ env.EVENT_NAME == 'workflow_dispatch' && (inputs.binary == 'polkadot-omni-node' || inputs.binary == 'chain-spec-builder') }}
- run: |
- . ./.github/scripts/common/lib.sh
-
- RELEASE_ID="${{ needs.validate-inputs.outputs.RELEASE_ID }}"
- fetch_release_artifacts
-
- name: Upload artifacts
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: release-artifacts
- path: release-artifacts/${{ env.BINARY }}/**/*
+ path: release-artifacts/x86_64-unknown-linux-gnu/${{ env.BINARY }}/**/*
build-container: # this job will be triggered for the polkadot-parachain rc and release or polkadot rc image build
if: ${{ inputs.binary == 'polkadot-omni-node' || inputs.binary == 'polkadot-parachain' || inputs.binary == 'chain-spec-builder' || inputs.image_type == 'rc' }}
@@ -173,7 +134,7 @@ jobs:
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
- name: Check sha256 ${{ env.BINARY }}
- if: ${{ inputs.binary == 'polkadot-parachain' || inputs.binary == 'polkadot' }}
+ # if: ${{ inputs.binary == 'polkadot-parachain' || inputs.binary == 'polkadot' }}
working-directory: release-artifacts
run: |
. ../.github/scripts/common/lib.sh
@@ -182,7 +143,7 @@ jobs:
check_sha256 $BINARY && echo "OK" || echo "ERR"
- name: Check GPG ${{ env.BINARY }}
- if: ${{ inputs.binary == 'polkadot-parachain' || inputs.binary == 'polkadot' }}
+ # if: ${{ inputs.binary == 'polkadot-parachain' || inputs.binary == 'polkadot' }}
working-directory: release-artifacts
run: |
. ../.github/scripts/common/lib.sh
@@ -190,35 +151,29 @@ jobs:
check_gpg $BINARY
- name: Fetch rc commit and tag
+ working-directory: release-artifacts
if: ${{ env.IMAGE_TYPE == 'rc' }}
id: fetch_rc_refs
+ shell: bash
run: |
- . ./.github/scripts/common/lib.sh
-
- echo "release=${{ needs.validate-inputs.outputs.stable_tag }}" >> $GITHUB_OUTPUT
+ . ../.github/scripts/common/lib.sh
commit=$(git rev-parse --short HEAD) && \
echo "commit=${commit}" >> $GITHUB_OUTPUT
-
- echo "tag=${{ needs.validate-inputs.outputs.version }}" >> $GITHUB_OUTPUT
+ echo "release=$(echo ${{ needs.validate-inputs.outputs.version }})" >> $GITHUB_OUTPUT
+ echo "tag=$(prepare_docker_stable_tag ${{ needs.validate-inputs.outputs.stable_tag }})" >> $GITHUB_OUTPUT
- name: Fetch release tags
working-directory: release-artifacts
if: ${{ env.IMAGE_TYPE == 'release'}}
id: fetch_release_refs
+ shell: bash
run: |
- chmod a+rx $BINARY
-
- if [[ $BINARY != 'chain-spec-builder' ]]; then
- VERSION=$(./$BINARY --version | awk '{ print $2 }' )
- release=$( echo $VERSION | cut -f1 -d- )
- else
- release=$(echo ${{ needs.validate-inputs.outputs.VERSION }} | sed 's/^v//')
- fi
+ . ../.github/scripts/common/lib.sh
echo "tag=latest" >> $GITHUB_OUTPUT
- echo "release=${release}" >> $GITHUB_OUTPUT
- echo "stable=${{ needs.validate-inputs.outputs.stable_tag }}" >> $GITHUB_OUTPUT
+ echo "release=$(echo ${{ needs.validate-inputs.outputs.version }})" >> $GITHUB_OUTPUT
+ echo "stable=$(prepare_docker_stable_tag ${{ needs.validate-inputs.outputs.stable_tag }})" >> $GITHUB_OUTPUT
- name: Build Injected Container image for polkadot rc
if: ${{ env.BINARY == 'polkadot' }}
@@ -342,8 +297,10 @@ jobs:
- name: Fetch values
id: fetch-data
run: |
+ . ./.github/scripts/common/lib.sh
date=$(date -u '+%Y-%m-%dT%H:%M:%SZ')
echo "date=$date" >> $GITHUB_OUTPUT
+ echo "stable=$(prepare_docker_stable_tag ${{ needs.validate-inputs.outputs.stable_tag }})" >> $GITHUB_OUTPUT
- name: Build and push
id: docker_build
@@ -354,9 +311,9 @@ jobs:
# TODO: The owner should be used below but buildx does not resolve the VARs
# TODO: It would be good to get rid of this GHA that we don't really need.
tags: |
- parity/polkadot:${{ needs.validate-inputs.outputs.stable_tag }}
- parity/polkadot:latest
- parity/polkadot:${{ needs.fetch-latest-debian-package-version.outputs.polkadot_container_tag }}
+ egorpop/polkadot:${{ steps.fetch-data.outputs.stable }}
+ egorpop/polkadot:latest
+ egorpop/polkadot:${{ needs.fetch-latest-debian-package-version.outputs.polkadot_container_tag }}
build-args: |
VCS_REF=${{ github.ref }}
POLKADOT_VERSION=${{ needs.fetch-latest-debian-package-version.outputs.polkadot_apt_version }}
diff --git a/.github/workflows/release-reusable-promote-to-final.yml b/.github/workflows/release-reusable-promote-to-final.yml
new file mode 100644
index 000000000000..ed4a80a01e82
--- /dev/null
+++ b/.github/workflows/release-reusable-promote-to-final.yml
@@ -0,0 +1,83 @@
+name: Promote rc to final
+
+on:
+ workflow_call:
+ inputs:
+ package:
+ description: Package to be promoted
+ required: true
+ type: string
+
+ release_tag:
+ description: Tag matching the actual release candidate with the format polkadot-stableYYMM(-X)-rcX taht will be changed to final in form of polkadot-stableYYMM(-X)
+ required: true
+ type: string
+
+ target:
+ description: Target triple for which the artifacts are being uploaded (e.g aarch64-apple-darwin)
+ required: true
+ type: string
+
+ secrets:
+ AWS_DEFAULT_REGION:
+ required: true
+ AWS_RELEASE_ACCESS_KEY_ID:
+ required: true
+ AWS_RELEASE_SECRET_ACCESS_KEY:
+ required: true
+
+jobs:
+
+ promote-release-artifacts:
+ environment: release
+ runs-on: ubuntu-latest
+ env:
+ AWS_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+ AWS_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+
+ steps:
+ - name: Checkout sources
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ - name: Prepare final tag
+ id: prepare_final_tag
+ shell: bash
+ run: |
+ tag="$(echo ${{ inputs.release_tag }} | sed 's/-rc[0-9]*$//')"
+ echo $tag
+ echo "FINAL_TAG=${tag}" >> $GITHUB_OUTPUT
+
+ - name: Fetch binaries from s3 based on version
+ run: |
+ . ./.github/scripts/common/lib.sh
+
+ VERSION="${{ inputs.release_tag }}"
+ if [[ ${{ inputs.package }} == 'polkadot' ]]; then
+ packages=(polkadot polkadot-prepare-worker polkadot-execute-worker)
+ for package in "${packages[@]}"; do
+ fetch_release_artifacts_from_s3 $package ${{ inputs.target }}
+ done
+ else
+ fetch_release_artifacts_from_s3 ${{ inputs.package }} ${{ inputs.target }}
+ fi
+
+ - name: Configure AWS Credentials
+ uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2
+ with:
+ aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
+ aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
+ aws-region: ${{ env.AWS_REGION }}
+
+ - name: Upload ${{ inputs.package }} ${{ inputs.target }} artifacts to s3
+ run: |
+ . ./.github/scripts/release/release_lib.sh
+
+ if [[ ${{ inputs.package }} == 'polkadot' ]]; then
+ packages=(polkadot polkadot-prepare-worker polkadot-execute-worker)
+ for package in "${packages[@]}"; do
+ upload_s3_release $package ${{ steps.prepare_final_tag.outputs.final_tag }} ${{ inputs.target }}
+ done
+ else
+ upload_s3_release ${{ inputs.package }} ${{ steps.prepare_final_tag.outputs.final_tag }} ${{ inputs.target }}
+ fi
diff --git a/.github/workflows/release-reusable-rc-buid.yml b/.github/workflows/release-reusable-rc-buid.yml
index 7e31a4744b59..0222b2aa91e2 100644
--- a/.github/workflows/release-reusable-rc-buid.yml
+++ b/.github/workflows/release-reusable-rc-buid.yml
@@ -104,7 +104,7 @@ jobs:
./.github/scripts/release/build-linux-release.sh ${{ matrix.binaries }} ${{ inputs.package }}
- name: Generate artifact attestation
- uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3
+ uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4
with:
subject-path: /artifacts/${{ matrix.binaries }}/${{ matrix.binaries }}
@@ -133,7 +133,7 @@ jobs:
- name: Upload ${{ matrix.binaries }} artifacts
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
- name: ${{ matrix.binaries }}
+ name: ${{ matrix.binaries }}_${{ inputs.target }}
path: /artifacts/${{ matrix.binaries }}
build-macos-rc:
@@ -220,7 +220,7 @@ jobs:
./.github/scripts/release/build-macos-release.sh ${{ matrix.binaries }} ${{ inputs.package }}
- name: Generate artifact attestation
- uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3
+ uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4
with:
subject-path: ${{ env.ARTIFACTS_PATH }}/${{ matrix.binaries }}
@@ -278,14 +278,14 @@ jobs:
. "${GITHUB_WORKSPACE}"/.github/scripts/release/build-deb.sh ${{ inputs.package }} ${VERSION}
- name: Generate artifact attestation
- uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3
+ uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4
with:
subject-path: target/production/*.deb
- name: Upload ${{inputs.package }} artifacts
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
- name: ${{ inputs.package }}
+ name: ${{ inputs.package }}_${{ inputs.target }}
path: target/production
overwrite: true
@@ -302,7 +302,6 @@ jobs:
AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
-
upload-polkadot-parachain-artifacts-to-s3:
if: ${{ inputs.package == 'polkadot-parachain-bin' && inputs.target == 'x86_64-unknown-linux-gnu' }}
needs: [build-rc]
@@ -329,6 +328,32 @@ jobs:
AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+ upload-frame-omni-bencher-artifacts-to-s3:
+ if: ${{ inputs.package == 'frame-omni-bencher' && inputs.target == 'x86_64-unknown-linux-gnu' }}
+ needs: [build-rc]
+ uses: ./.github/workflows/release-reusable-s3-upload.yml
+ with:
+ package: ${{ inputs.package }}
+ release_tag: ${{ inputs.release_tag }}
+ target: ${{ inputs.target }}
+ secrets:
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+
+ upload-chain-spec-builder-artifacts-to-s3:
+ if: ${{ inputs.package == 'staging-chain-spec-builder' && inputs.target == 'x86_64-unknown-linux-gnu' }}
+ needs: [build-rc]
+ uses: ./.github/workflows/release-reusable-s3-upload.yml
+ with:
+ package: chain-spec-builder
+ release_tag: ${{ inputs.release_tag }}
+ target: ${{ inputs.target }}
+ secrets:
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+
upload-polkadot-macos-artifacts-to-s3:
if: ${{ inputs.package == 'polkadot' && inputs.target == 'aarch64-apple-darwin' }}
# TODO: add and use a `build-polkadot-homebrew-package` which packs all `polkadot` binaries:
@@ -395,3 +420,29 @@ jobs:
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+
+ upload-frame-omni-bencher-macos-artifacts-to-s3:
+ if: ${{ inputs.package == 'frame-omni-bencher' && inputs.target == 'aarch64-apple-darwin' }}
+ needs: [build-macos-rc]
+ uses: ./.github/workflows/release-reusable-s3-upload.yml
+ with:
+ package: ${{ inputs.package }}
+ release_tag: ${{ inputs.release_tag }}
+ target: ${{ inputs.target }}
+ secrets:
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
+
+ upload-chain-spec-builder-macos-artifacts-to-s3:
+ if: ${{ inputs.package == 'staging-chain-spec-builder' && inputs.target == 'aarch64-apple-darwin' }}
+ needs: [build-macos-rc]
+ uses: ./.github/workflows/release-reusable-s3-upload.yml
+ with:
+ package: chain-spec-builder
+ release_tag: ${{ inputs.release_tag }}
+ target: ${{ inputs.target }}
+ secrets:
+ AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
+ AWS_RELEASE_ACCESS_KEY_ID: ${{ secrets.AWS_RELEASE_ACCESS_KEY_ID }}
+ AWS_RELEASE_SECRET_ACCESS_KEY: ${{ secrets.AWS_RELEASE_SECRET_ACCESS_KEY }}
diff --git a/.github/workflows/release-reusable-s3-upload.yml b/.github/workflows/release-reusable-s3-upload.yml
index f85466bc8c07..48c7e53c6c8f 100644
--- a/.github/workflows/release-reusable-s3-upload.yml
+++ b/.github/workflows/release-reusable-s3-upload.yml
@@ -9,7 +9,7 @@ on:
type: string
release_tag:
- description: Tag matching the actual release candidate with the format stableYYMM-rcX or stableYYMM-rcX
+ description: Tag matching the actual release candidate with the format polkadot-stableYYMM(-X)-rcX or polkadot-stableYYMM-rcX
required: true
type: string
@@ -40,18 +40,10 @@ jobs:
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
- name: Download amd64 artifacts
- if: ${{ inputs.target == 'x86_64-unknown-linux-gnu' }}
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
- name: ${{ inputs.package }}
- path: artifacts/${{ inputs.package }}
-
- - name: Download arm artifacts
- if: ${{ inputs.target == 'aarch64-apple-darwin' }}
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
- with:
- name: ${{ inputs.package }}_aarch64-apple-darwin
- path: artifacts/${{ inputs.package }}
+ name: ${{ inputs.package }}_${{ inputs.target }}
+ path: release-artifacts/${{ inputs.target }}/${{ inputs.package }}
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2
diff --git a/.github/workflows/release-srtool.yml b/.github/workflows/release-srtool.yml
index 9a29b46d2fc3..fc10496d481b 100644
--- a/.github/workflows/release-srtool.yml
+++ b/.github/workflows/release-srtool.yml
@@ -1,7 +1,7 @@
name: Srtool build
env:
- SUBWASM_VERSION: 0.20.0
+ SUBWASM_VERSION: 0.21.0
TOML_CLI_VERSION: 0.2.4
on:
@@ -11,14 +11,16 @@ on:
type: string
build_opts:
type: string
+ profile:
+ type: string
outputs:
published_runtimes:
value: ${{ jobs.find-runtimes.outputs.runtime }}
- schedule:
- - cron: "00 02 * * 1" # 2AM weekly on monday
-
- workflow_dispatch:
+permissions:
+ id-token: write
+ attestations: write
+ contents: read
jobs:
find-runtimes:
@@ -75,6 +77,7 @@ jobs:
with:
chain: ${{ matrix.chain }}
runtime_dir: ${{ matrix.runtime_dir }}
+ profile: ${{ inputs.profile }}
- name: Summary
run: |
@@ -83,6 +86,11 @@ jobs:
echo "Compact Runtime: ${{ steps.srtool_build.outputs.wasm }}"
echo "Compressed Runtime: ${{ steps.srtool_build.outputs.wasm_compressed }}"
+ - name: Generate artifact attestation
+ uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3
+ with:
+ subject-path: ${{ steps.srtool_build.outputs.wasm }}
+
# We now get extra information thanks to subwasm
- name: Install subwasm
run: |
diff --git a/.github/workflows/tests-linux-stable-coverage.yml b/.github/workflows/tests-linux-stable-coverage.yml
index c5af6bcae77f..61e01cda4428 100644
--- a/.github/workflows/tests-linux-stable-coverage.yml
+++ b/.github/workflows/tests-linux-stable-coverage.yml
@@ -102,7 +102,7 @@ jobs:
merge-multiple: true
- run: ls -al reports/
- name: Upload to Codecov
- uses: codecov/codecov-action@v4
+ uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f508404f1efa..42a7e87bda43 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -22,7 +22,7 @@ workflow:
variables:
# CI_IMAGE: !reference [ .ci-unified, variables, CI_IMAGE ]
- CI_IMAGE: "docker.io/paritytech/ci-unified:bullseye-1.81.0-2024-09-11-v202409111034"
+ CI_IMAGE: "docker.io/paritytech/ci-unified:bullseye-1.81.0-2024-11-19-v202411281558"
# BUILDAH_IMAGE is defined in group variables
BUILDAH_COMMAND: "buildah --storage-driver overlay2"
RELENG_SCRIPTS_BRANCH: "master"
diff --git a/.gitlab/pipeline/zombienet/parachain-template.yml b/.gitlab/pipeline/zombienet/parachain-template.yml
index 896ba7913be7..d5c1b6558b39 100644
--- a/.gitlab/pipeline/zombienet/parachain-template.yml
+++ b/.gitlab/pipeline/zombienet/parachain-template.yml
@@ -43,4 +43,4 @@ zombienet-parachain-template-smoke:
- ls -ltr $(pwd)/artifacts
- cargo test -p template-zombienet-tests --features zombienet --tests minimal_template_block_production_test
- cargo test -p template-zombienet-tests --features zombienet --tests parachain_template_block_production_test
- # - cargo test -p template-zombienet-tests --features zombienet --tests solochain_template_block_production_test
+ - cargo test -p template-zombienet-tests --features zombienet --tests solochain_template_block_production_test
diff --git a/.gitlab/pipeline/zombienet/polkadot.yml b/.gitlab/pipeline/zombienet/polkadot.yml
index 3dab49a118e5..ac4bdac7ad15 100644
--- a/.gitlab/pipeline/zombienet/polkadot.yml
+++ b/.gitlab/pipeline/zombienet/polkadot.yml
@@ -179,7 +179,7 @@ zombienet-polkadot-elastic-scaling-0001-basic-3cores-6s-blocks:
--local-dir="${LOCAL_DIR}/elastic_scaling"
--test="0001-basic-3cores-6s-blocks.zndsl"
-zombienet-polkadot-elastic-scaling-0002-elastic-scaling-doesnt-break-parachains:
+.zombienet-polkadot-elastic-scaling-0002-elastic-scaling-doesnt-break-parachains:
extends:
- .zombienet-polkadot-common
before_script:
@@ -233,7 +233,7 @@ zombienet-polkadot-functional-0015-coretime-shared-core:
--local-dir="${LOCAL_DIR}/functional"
--test="0016-approval-voting-parallel.zndsl"
-zombienet-polkadot-functional-0017-sync-backing:
+.zombienet-polkadot-functional-0017-sync-backing:
extends:
- .zombienet-polkadot-common
script:
diff --git a/Cargo.lock b/Cargo.lock
index 103d24f9675b..bab783b434c2 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -5975,6 +5975,15 @@ dependencies = [
"dirs-sys-next",
]
+[[package]]
+name = "dirs"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
+dependencies = [
+ "dirs-sys",
+]
+
[[package]]
name = "dirs-sys"
version = "0.4.1"
@@ -10216,9 +10225,9 @@ dependencies = [
[[package]]
name = "litep2p"
-version = "0.8.1"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b67484b8ac41e1cfdf012f65fa81e88c2ef5f8a7d6dec0e2678c2d06dc04530"
+checksum = "14e490b5a6d486711fd0284bd30e607a287343f2935a59a9192bd7109e85f443"
dependencies = [
"async-trait",
"bs58",
@@ -14641,6 +14650,7 @@ dependencies = [
"assert_matches",
"bitflags 1.3.2",
"derive_more 0.99.17",
+ "env_logger 0.11.3",
"environmental",
"ethereum-types 0.15.1",
"frame-benchmarking 28.0.0",
@@ -14663,7 +14673,7 @@ dependencies = [
"pallet-utility 28.0.0",
"parity-scale-codec",
"paste",
- "polkavm 0.13.0",
+ "polkavm 0.17.0",
"pretty_assertions",
"rlp 0.6.1",
"scale-info",
@@ -14759,12 +14769,10 @@ dependencies = [
"anyhow",
"frame-system 28.0.0",
"log",
- "parity-wasm",
- "polkavm-linker 0.14.0",
+ "polkavm-linker 0.17.1",
"sp-core 28.0.0",
"sp-io 30.0.0",
"sp-runtime 31.0.1",
- "tempfile",
"toml 0.8.12",
]
@@ -14881,7 +14889,7 @@ dependencies = [
"bitflags 1.3.2",
"parity-scale-codec",
"paste",
- "polkavm-derive 0.14.0",
+ "polkavm-derive 0.17.0",
"scale-info",
]
@@ -16672,6 +16680,7 @@ dependencies = [
"sp-runtime 31.0.1",
"staging-xcm 7.0.0",
"staging-xcm-executor 7.0.0",
+ "westend-runtime",
"westend-runtime-constants 7.0.0",
"westend-system-emulated-network",
]
@@ -18520,7 +18529,6 @@ dependencies = [
"pallet-asset-tx-payment 28.0.0",
"pallet-assets 29.1.0",
"pallet-assets-freezer 0.1.0",
- "pallet-assets-holder",
"pallet-atomic-swap 28.0.0",
"pallet-aura 27.0.0",
"pallet-authority-discovery 28.0.0",
@@ -18586,7 +18594,6 @@ dependencies = [
"pallet-remark 28.0.0",
"pallet-revive 0.1.0",
"pallet-revive-eth-rpc",
- "pallet-revive-fixtures 0.1.0",
"pallet-revive-mock-network 0.1.0",
"pallet-revive-proc-macro 0.1.0",
"pallet-revive-uapi 0.1.0",
@@ -19717,15 +19724,15 @@ dependencies = [
[[package]]
name = "polkavm"
-version = "0.13.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57e79a14b15ed38cb5b9a1e38d02e933f19e3d180ae5b325fed606c5e5b9177e"
+checksum = "84979be196ba2855f73616413e7b1d18258128aa396b3dc23f520a00a807720e"
dependencies = [
"libc",
"log",
- "polkavm-assembler 0.13.0",
- "polkavm-common 0.13.0",
- "polkavm-linux-raw 0.13.0",
+ "polkavm-assembler 0.17.0",
+ "polkavm-common 0.17.0",
+ "polkavm-linux-raw 0.17.0",
]
[[package]]
@@ -19748,9 +19755,9 @@ dependencies = [
[[package]]
name = "polkavm-assembler"
-version = "0.13.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e8da55465000feb0a61bbf556ed03024db58f3420eca37721fc726b3b2136bf"
+checksum = "0ba7b434ff630b0f73a1560e8baea807246ca22098abe49f97821e0e2d2accc4"
dependencies = [
"log",
]
@@ -19782,20 +19789,14 @@ dependencies = [
[[package]]
name = "polkavm-common"
-version = "0.13.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "084b4339aae7dfdaaa5aa7d634110afd95970e0737b6fb2a0cb10db8b56b753c"
+checksum = "8f0dbafef4ab6ceecb4982ac3b550df430ef4f9fdbf07c108b7d4f91a0682fce"
dependencies = [
"log",
- "polkavm-assembler 0.13.0",
+ "polkavm-assembler 0.17.0",
]
-[[package]]
-name = "polkavm-common"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "711952a783e9c5ad407cdacb1ed147f36d37c5d43417c1091d86456d2999417b"
-
[[package]]
name = "polkavm-derive"
version = "0.8.0"
@@ -19825,11 +19826,11 @@ dependencies = [
[[package]]
name = "polkavm-derive"
-version = "0.14.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4832a0aebf6cefc988bb7b2d74ea8c86c983164672e2fc96300f356a1babfc1"
+checksum = "c0c3dbb6c8c7bd3e5f5b05aa7fc9355acf14df7ce5d392911e77d01090a38d0d"
dependencies = [
- "polkavm-derive-impl-macro 0.14.0",
+ "polkavm-derive-impl-macro 0.17.0",
]
[[package]]
@@ -19870,11 +19871,11 @@ dependencies = [
[[package]]
name = "polkavm-derive-impl"
-version = "0.14.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e339fc7c11310fe5adf711d9342278ac44a75c9784947937cce12bd4f30842f2"
+checksum = "42565aed4adbc4034612d0b17dea8db3681fb1bd1aed040d6edc5455a9f478a1"
dependencies = [
- "polkavm-common 0.14.0",
+ "polkavm-common 0.17.0",
"proc-macro2 1.0.86",
"quote 1.0.37",
"syn 2.0.87",
@@ -19912,11 +19913,11 @@ dependencies = [
[[package]]
name = "polkavm-derive-impl-macro"
-version = "0.14.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b569754b15060d03000c09e3bf11509d527f60b75d79b4c30c3625b5071d9702"
+checksum = "86d9838e95241b0bce4fe269cdd4af96464160505840ed5a8ac8536119ba19e2"
dependencies = [
- "polkavm-derive-impl 0.14.0",
+ "polkavm-derive-impl 0.17.0",
"syn 2.0.87",
]
@@ -19952,15 +19953,16 @@ dependencies = [
[[package]]
name = "polkavm-linker"
-version = "0.14.0"
+version = "0.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0959ac3b0f4fd5caf5c245c637705f19493efe83dba31a83bbba928b93b0116a"
+checksum = "0422ead3030d5cde69e2206dbc7d65da872b121876507cd5363f6c6e6aa45157"
dependencies = [
+ "dirs",
"gimli 0.31.1",
"hashbrown 0.14.5",
"log",
"object 0.36.1",
- "polkavm-common 0.14.0",
+ "polkavm-common 0.17.0",
"regalloc2 0.9.3",
"rustc-demangle",
]
@@ -19979,9 +19981,9 @@ checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126"
[[package]]
name = "polkavm-linux-raw"
-version = "0.13.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "686c4dd9c9c16cc22565b51bdbb269792318d0fd2e6b966b5f6c788534cad0e9"
+checksum = "e64c3d93a58ffbc3099d1227f0da9675a025a9ea6c917038f266920c1de1e568"
[[package]]
name = "polling"
@@ -20977,7 +20979,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
"aho-corasick",
"memchr",
- "regex-automata 0.4.9",
+ "regex-automata 0.4.8",
"regex-syntax 0.8.5",
]
@@ -20998,9 +21000,9 @@ checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69"
[[package]]
name = "regex-automata"
-version = "0.4.9"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
dependencies = [
"aho-corasick",
"memchr",
@@ -23295,6 +23297,7 @@ dependencies = [
"futures",
"futures-util",
"hex",
+ "itertools 0.11.0",
"jsonrpsee",
"log",
"parity-scale-codec",
@@ -23730,9 +23733,9 @@ dependencies = [
[[package]]
name = "scale-info"
-version = "2.11.5"
+version = "2.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1aa7ffc1c0ef49b0452c6e2986abf2b07743320641ffd5fc63d552458e3b779b"
+checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b"
dependencies = [
"bitvec",
"cfg-if",
@@ -23744,9 +23747,9 @@ dependencies = [
[[package]]
name = "scale-info-derive"
-version = "2.11.5"
+version = "2.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46385cc24172cf615450267463f937c10072516359b3ff1cb24228a4a08bf951"
+checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf"
dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.86",
@@ -25563,6 +25566,7 @@ dependencies = [
"sp-api 26.0.0",
"sp-consensus",
"sp-core 28.0.0",
+ "sp-metadata-ir 0.6.0",
"sp-runtime 31.0.1",
"sp-state-machine 0.35.0",
"sp-tracing 16.0.0",
@@ -26508,7 +26512,7 @@ dependencies = [
"libsecp256k1",
"log",
"parity-scale-codec",
- "polkavm-derive 0.9.1",
+ "polkavm-derive 0.17.0",
"rustversion",
"secp256k1 0.28.2",
"sp-core 28.0.0",
@@ -26992,7 +26996,7 @@ dependencies = [
"bytes",
"impl-trait-for-tuples",
"parity-scale-codec",
- "polkavm-derive 0.9.1",
+ "polkavm-derive 0.17.0",
"primitive-types 0.13.1",
"rustversion",
"sp-core 28.0.0",
@@ -28636,7 +28640,7 @@ dependencies = [
"merkleized-metadata",
"parity-scale-codec",
"parity-wasm",
- "polkavm-linker 0.9.2",
+ "polkavm-linker 0.17.1",
"sc-executor 0.32.0",
"shlex",
"sp-core 28.0.0",
@@ -31688,6 +31692,7 @@ name = "xcm-procedural"
version = "7.0.0"
dependencies = [
"Inflector",
+ "frame-support 28.0.0",
"proc-macro2 1.0.86",
"quote 1.0.37",
"staging-xcm 7.0.0",
diff --git a/Cargo.toml b/Cargo.toml
index f8c3b191fcd4..1f07ec45f639 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -849,7 +849,7 @@ linked-hash-map = { version = "0.5.4" }
linked_hash_set = { version = "0.1.4" }
linregress = { version = "0.5.1" }
lite-json = { version = "0.2.0", default-features = false }
-litep2p = { version = "0.8.1", features = ["websocket"] }
+litep2p = { version = "0.8.3", features = ["websocket"] }
log = { version = "0.4.22", default-features = false }
macro_magic = { version = "0.5.1" }
maplit = { version = "1.0.2" }
@@ -1092,8 +1092,8 @@ polkadot-test-client = { path = "polkadot/node/test/client" }
polkadot-test-runtime = { path = "polkadot/runtime/test-runtime" }
polkadot-test-service = { path = "polkadot/node/test/service" }
polkavm = { version = "0.9.3", default-features = false }
-polkavm-derive = "0.9.1"
-polkavm-linker = "0.9.2"
+polkavm-derive = "0.17.0"
+polkavm-linker = "0.17.1"
portpicker = { version = "0.1.1" }
pretty_assertions = { version = "1.3.0" }
primitive-types = { version = "0.13.1", default-features = false, features = [
@@ -1199,7 +1199,7 @@ sc-tracing-proc-macro = { path = "substrate/client/tracing/proc-macro", default-
sc-transaction-pool = { path = "substrate/client/transaction-pool", default-features = false }
sc-transaction-pool-api = { path = "substrate/client/transaction-pool/api", default-features = false }
sc-utils = { path = "substrate/client/utils", default-features = false }
-scale-info = { version = "2.11.1", default-features = false }
+scale-info = { version = "2.11.6", default-features = false }
schemars = { version = "0.8.13", default-features = false }
schnellru = { version = "0.2.3" }
schnorrkel = { version = "0.11.4", default-features = false }
diff --git a/bridges/chains/chain-polkadot-bulletin/src/lib.rs b/bridges/chains/chain-polkadot-bulletin/src/lib.rs
index c5c18beb2cad..070bc7b0ba3d 100644
--- a/bridges/chains/chain-polkadot-bulletin/src/lib.rs
+++ b/bridges/chains/chain-polkadot-bulletin/src/lib.rs
@@ -225,4 +225,4 @@ impl ChainWithMessages for PolkadotBulletin {
}
decl_bridge_finality_runtime_apis!(polkadot_bulletin, grandpa);
-decl_bridge_messages_runtime_apis!(polkadot_bulletin, bp_messages::HashedLaneId);
+decl_bridge_messages_runtime_apis!(polkadot_bulletin, bp_messages::LegacyLaneId);
diff --git a/bridges/modules/relayers/src/extension/mod.rs b/bridges/modules/relayers/src/extension/mod.rs
index 34d280d26d6e..d562ed9bcd0e 100644
--- a/bridges/modules/relayers/src/extension/mod.rs
+++ b/bridges/modules/relayers/src/extension/mod.rs
@@ -129,7 +129,7 @@ pub struct BridgeRelayersTransactionExtension(
impl BridgeRelayersTransactionExtension
where
Self: 'static + Send + Sync,
- R: RelayersConfig
+ R: RelayersConfig
+ BridgeMessagesConfig
+ TransactionPaymentConfig,
C: ExtensionConfig,
@@ -250,7 +250,7 @@ where
// let's also replace the weight of slashing relayer with the weight of rewarding relayer
if call_info.is_receive_messages_proof_call() {
post_info_weight = post_info_weight.saturating_sub(
- ::WeightInfo::extra_weight_of_successful_receive_messages_proof_call(),
+ >::WeightInfo::extra_weight_of_successful_receive_messages_proof_call(),
);
}
@@ -278,7 +278,7 @@ impl TransactionExtension
for BridgeRelayersTransactionExtension
where
Self: 'static + Send + Sync,
- R: RelayersConfig
+ R: RelayersConfig
+ BridgeMessagesConfig
+ TransactionPaymentConfig,
C: ExtensionConfig,
@@ -326,7 +326,9 @@ where
};
// we only boost priority if relayer has staked required balance
- if !RelayersPallet::::is_registration_active(&data.relayer) {
+ if !RelayersPallet::::is_registration_active(
+ &data.relayer,
+ ) {
return Ok((Default::default(), Some(data), origin))
}
@@ -382,7 +384,11 @@ where
match call_result {
RelayerAccountAction::None => (),
RelayerAccountAction::Reward(relayer, reward_account, reward) => {
- RelayersPallet::::register_relayer_reward(reward_account, &relayer, reward);
+ RelayersPallet::::register_relayer_reward(
+ reward_account,
+ &relayer,
+ reward,
+ );
log::trace!(
target: LOG_TARGET,
@@ -394,7 +400,7 @@ where
);
},
RelayerAccountAction::Slash(relayer, slash_account) =>
- RelayersPallet::::slash_and_deregister(
+ RelayersPallet::::slash_and_deregister(
&relayer,
ExplicitOrAccountParams::Params(slash_account),
),
diff --git a/bridges/relays/utils/src/initialize.rs b/bridges/relays/utils/src/initialize.rs
index 564ed1f0e5cc..deb9b9d059d5 100644
--- a/bridges/relays/utils/src/initialize.rs
+++ b/bridges/relays/utils/src/initialize.rs
@@ -52,9 +52,10 @@ pub fn initialize_logger(with_timestamp: bool) {
format,
);
- let env_filter = EnvFilter::from_default_env()
- .add_directive(Level::WARN.into())
- .add_directive("bridge=info".parse().expect("static filter string is valid"));
+ let env_filter = EnvFilter::builder()
+ .with_default_directive(Level::WARN.into())
+ .with_default_directive("bridge=info".parse().expect("static filter string is valid"))
+ .from_env_lossy();
let builder = SubscriberBuilder::default().with_env_filter(env_filter);
diff --git a/bridges/snowbridge/pallets/inbound-queue/src/test.rs b/bridges/snowbridge/pallets/inbound-queue/src/test.rs
index 76d0b98e9eb4..1e0bd8acc925 100644
--- a/bridges/snowbridge/pallets/inbound-queue/src/test.rs
+++ b/bridges/snowbridge/pallets/inbound-queue/src/test.rs
@@ -40,8 +40,8 @@ fn test_submit_happy_path() {
.into(),
nonce: 1,
message_id: [
- 11, 25, 133, 51, 23, 68, 111, 211, 132, 94, 254, 17, 194, 252, 198, 233, 10, 193,
- 156, 93, 72, 140, 65, 69, 79, 155, 154, 28, 141, 166, 171, 255,
+ 86, 101, 80, 125, 84, 10, 227, 145, 230, 209, 152, 38, 206, 251, 206, 208, 244,
+ 221, 22, 215, 1, 252, 79, 181, 99, 207, 166, 220, 98, 3, 81, 7,
],
fee_burned: 110000000000,
}
diff --git a/bridges/snowbridge/primitives/router/src/inbound/mod.rs b/bridges/snowbridge/primitives/router/src/inbound/mod.rs
index e03560f66e24..54a578b988a4 100644
--- a/bridges/snowbridge/primitives/router/src/inbound/mod.rs
+++ b/bridges/snowbridge/primitives/router/src/inbound/mod.rs
@@ -279,6 +279,7 @@ where
// Call create_asset on foreign assets pallet.
Transact {
origin_kind: OriginKind::Xcm,
+ fallback_max_weight: None,
call: (
create_call_index,
asset_id,
diff --git a/bridges/snowbridge/runtime/test-common/Cargo.toml b/bridges/snowbridge/runtime/test-common/Cargo.toml
index 6f8e586bf5ff..9f47f158ed4a 100644
--- a/bridges/snowbridge/runtime/test-common/Cargo.toml
+++ b/bridges/snowbridge/runtime/test-common/Cargo.toml
@@ -6,6 +6,8 @@ authors = ["Snowfork "]
edition.workspace = true
license = "Apache-2.0"
categories = ["cryptography::cryptocurrencies"]
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/cli/Cargo.toml b/cumulus/client/cli/Cargo.toml
index 9b6f6b73960b..198f9428f1dd 100644
--- a/cumulus/client/cli/Cargo.toml
+++ b/cumulus/client/cli/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Parachain node CLI utilities."
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/collator/Cargo.toml b/cumulus/client/collator/Cargo.toml
index 6ebde0c2c653..83a3f2661e7a 100644
--- a/cumulus/client/collator/Cargo.toml
+++ b/cumulus/client/collator/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Common node-side functionality and glue code to collate parachain blocks."
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/consensus/aura/Cargo.toml b/cumulus/client/consensus/aura/Cargo.toml
index 0bb2de6bb9b8..6e0c124591cb 100644
--- a/cumulus/client/consensus/aura/Cargo.toml
+++ b/cumulus/client/consensus/aura/Cargo.toml
@@ -5,6 +5,8 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/consensus/common/Cargo.toml b/cumulus/client/consensus/common/Cargo.toml
index 4bc2f1d1e600..0f532a2101c4 100644
--- a/cumulus/client/consensus/common/Cargo.toml
+++ b/cumulus/client/consensus/common/Cargo.toml
@@ -5,6 +5,8 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/consensus/proposer/Cargo.toml b/cumulus/client/consensus/proposer/Cargo.toml
index bb760ae03f4d..e391481bc445 100644
--- a/cumulus/client/consensus/proposer/Cargo.toml
+++ b/cumulus/client/consensus/proposer/Cargo.toml
@@ -5,6 +5,8 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/consensus/relay-chain/Cargo.toml b/cumulus/client/consensus/relay-chain/Cargo.toml
index f3ee6fc2f7d2..7f0f4333c961 100644
--- a/cumulus/client/consensus/relay-chain/Cargo.toml
+++ b/cumulus/client/consensus/relay-chain/Cargo.toml
@@ -5,6 +5,8 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/network/Cargo.toml b/cumulus/client/network/Cargo.toml
index bc67678eedeb..b78df8d73eae 100644
--- a/cumulus/client/network/Cargo.toml
+++ b/cumulus/client/network/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
description = "Cumulus-specific networking protocol"
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/parachain-inherent/Cargo.toml b/cumulus/client/parachain-inherent/Cargo.toml
index 0d82cf648743..4f53e2bc1bc2 100644
--- a/cumulus/client/parachain-inherent/Cargo.toml
+++ b/cumulus/client/parachain-inherent/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Inherent that needs to be present in every parachain block. Contains messages and a relay chain storage-proof."
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[dependencies]
async-trait = { workspace = true }
diff --git a/cumulus/client/pov-recovery/Cargo.toml b/cumulus/client/pov-recovery/Cargo.toml
index 3127dd26fcaa..762837e0bb11 100644
--- a/cumulus/client/pov-recovery/Cargo.toml
+++ b/cumulus/client/pov-recovery/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
description = "Parachain PoV recovery"
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/relay-chain-inprocess-interface/Cargo.toml b/cumulus/client/relay-chain-inprocess-interface/Cargo.toml
index 6f1b74191be7..9e6e8da929bb 100644
--- a/cumulus/client/relay-chain-inprocess-interface/Cargo.toml
+++ b/cumulus/client/relay-chain-inprocess-interface/Cargo.toml
@@ -5,6 +5,8 @@ version = "0.7.0"
edition.workspace = true
description = "Implementation of the RelayChainInterface trait for Polkadot full-nodes."
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/relay-chain-interface/Cargo.toml b/cumulus/client/relay-chain-interface/Cargo.toml
index a496fab050dd..2b9e72bbeca6 100644
--- a/cumulus/client/relay-chain-interface/Cargo.toml
+++ b/cumulus/client/relay-chain-interface/Cargo.toml
@@ -5,6 +5,8 @@ version = "0.7.0"
edition.workspace = true
description = "Common interface for different relay chain datasources."
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/relay-chain-minimal-node/Cargo.toml b/cumulus/client/relay-chain-minimal-node/Cargo.toml
index 95ecadc8bd06..0fad188bb1ab 100644
--- a/cumulus/client/relay-chain-minimal-node/Cargo.toml
+++ b/cumulus/client/relay-chain-minimal-node/Cargo.toml
@@ -5,6 +5,8 @@ version = "0.7.0"
edition.workspace = true
description = "Minimal node implementation to be used in tandem with RPC or light-client mode."
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/relay-chain-rpc-interface/Cargo.toml b/cumulus/client/relay-chain-rpc-interface/Cargo.toml
index fb4cb4ceed4e..162f5ad0e9e8 100644
--- a/cumulus/client/relay-chain-rpc-interface/Cargo.toml
+++ b/cumulus/client/relay-chain-rpc-interface/Cargo.toml
@@ -5,6 +5,8 @@ version = "0.7.0"
edition.workspace = true
description = "Implementation of the RelayChainInterface trait that connects to a remote RPC-node."
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/client/service/Cargo.toml b/cumulus/client/service/Cargo.toml
index 0a77b465d96a..193283648f19 100644
--- a/cumulus/client/service/Cargo.toml
+++ b/cumulus/client/service/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Common functions used to assemble the components of a parachain node."
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/pallets/aura-ext/Cargo.toml b/cumulus/pallets/aura-ext/Cargo.toml
index c08148928b7c..fcda79f1d5c1 100644
--- a/cumulus/pallets/aura-ext/Cargo.toml
+++ b/cumulus/pallets/aura-ext/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "AURA consensus extension pallet for parachains"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/pallets/parachain-system/Cargo.toml b/cumulus/pallets/parachain-system/Cargo.toml
index 3cb0394c4b95..05498a474e42 100644
--- a/cumulus/pallets/parachain-system/Cargo.toml
+++ b/cumulus/pallets/parachain-system/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Base pallet for cumulus-based parachains"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/pallets/parachain-system/proc-macro/Cargo.toml b/cumulus/pallets/parachain-system/proc-macro/Cargo.toml
index da6f0fd03efb..629818f9c4cc 100644
--- a/cumulus/pallets/parachain-system/proc-macro/Cargo.toml
+++ b/cumulus/pallets/parachain-system/proc-macro/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Proc macros provided by the parachain-system pallet"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/pallets/solo-to-para/Cargo.toml b/cumulus/pallets/solo-to-para/Cargo.toml
index 5fd1939e93a0..2088361bf11a 100644
--- a/cumulus/pallets/solo-to-para/Cargo.toml
+++ b/cumulus/pallets/solo-to-para/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Adds functionality to migrate from a Solo to a Parachain"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/pallets/xcm/Cargo.toml b/cumulus/pallets/xcm/Cargo.toml
index 35d7a083b061..ff9be866d48f 100644
--- a/cumulus/pallets/xcm/Cargo.toml
+++ b/cumulus/pallets/xcm/Cargo.toml
@@ -5,6 +5,8 @@ name = "cumulus-pallet-xcm"
version = "0.7.0"
license = "Apache-2.0"
description = "Pallet for stuff specific to parachains' usage of XCM"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/pallets/xcmp-queue/Cargo.toml b/cumulus/pallets/xcmp-queue/Cargo.toml
index 9c7470eda6da..af70a3169d8e 100644
--- a/cumulus/pallets/xcmp-queue/Cargo.toml
+++ b/cumulus/pallets/xcmp-queue/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Pallet to queue outbound and inbound XCMP messages."
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/common/Cargo.toml b/cumulus/parachains/common/Cargo.toml
index 6d436bdf799a..641693a6a01b 100644
--- a/cumulus/parachains/common/Cargo.toml
+++ b/cumulus/parachains/common/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Logic which is common to all parachain runtimes"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/integration-tests/emulated/common/Cargo.toml b/cumulus/parachains/integration-tests/emulated/common/Cargo.toml
index 23edaf6bfe65..8282d12d317f 100644
--- a/cumulus/parachains/integration-tests/emulated/common/Cargo.toml
+++ b/cumulus/parachains/integration-tests/emulated/common/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
license = "Apache-2.0"
description = "Common resources for integration testing with xcm-emulator"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/integration-tests/emulated/common/src/xcm_helpers.rs b/cumulus/parachains/integration-tests/emulated/common/src/xcm_helpers.rs
index 9125c976525e..380f4983ad98 100644
--- a/cumulus/parachains/integration-tests/emulated/common/src/xcm_helpers.rs
+++ b/cumulus/parachains/integration-tests/emulated/common/src/xcm_helpers.rs
@@ -31,7 +31,7 @@ pub fn xcm_transact_paid_execution(
VersionedXcm::from(Xcm(vec![
WithdrawAsset(fees.clone().into()),
BuyExecution { fees, weight_limit },
- Transact { origin_kind, call },
+ Transact { origin_kind, call, fallback_max_weight: None },
RefundSurplus,
DepositAsset {
assets: All.into(),
@@ -53,7 +53,7 @@ pub fn xcm_transact_unpaid_execution(
VersionedXcm::from(Xcm(vec![
UnpaidExecution { weight_limit, check_origin },
- Transact { origin_kind, call },
+ Transact { origin_kind, call, fallback_max_weight: None },
]))
}
diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/set_asset_claimer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/set_asset_claimer.rs
index 544b05360521..bc00106b47c1 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/set_asset_claimer.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/set_asset_claimer.rs
@@ -44,7 +44,7 @@ fn test_set_asset_claimer_within_a_chain() {
type RuntimeCall = ::RuntimeCall;
let asset_trap_xcm = Xcm::::builder_unsafe()
- .set_asset_claimer(bob_location.clone())
+ .set_hints(vec![AssetClaimer { location: bob_location.clone() }])
.withdraw_asset(assets.clone())
.clear_origin()
.build();
@@ -116,7 +116,7 @@ fn test_set_asset_claimer_between_the_chains() {
let assets: Assets = (Parent, trap_amount).into();
type RuntimeCall = ::RuntimeCall;
let trap_xcm = Xcm::::builder_unsafe()
- .set_asset_claimer(alice_bh_sibling.clone())
+ .set_hints(vec![AssetClaimer { location: alice_bh_sibling.clone() }])
.withdraw_asset(assets.clone())
.clear_origin()
.build();
diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/transact.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/transact.rs
index 3c53cfb261be..592c2845255c 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/transact.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/transact.rs
@@ -43,7 +43,7 @@ fn transfer_and_transact_in_same_xcm(
// xcm to be executed at dest
let xcm_on_dest = Xcm(vec![
- Transact { origin_kind: OriginKind::Xcm, call },
+ Transact { origin_kind: OriginKind::Xcm, call, fallback_max_weight: None },
ExpectTransactStatus(MaybeErrorCode::Success),
// since this is the last hop, we don't need to further use any assets previously
// reserved for fees (there are no further hops to cover transport fees for); we
diff --git a/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo/src/tests/snowbridge.rs b/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo/src/tests/snowbridge.rs
index d59553574c26..c72d5045ddc0 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo/src/tests/snowbridge.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo/src/tests/snowbridge.rs
@@ -84,7 +84,11 @@ fn create_agent() {
let remote_xcm = VersionedXcm::from(Xcm(vec![
UnpaidExecution { weight_limit: Unlimited, check_origin: None },
DescendOrigin(Parachain(origin_para).into()),
- Transact { origin_kind: OriginKind::Xcm, call: create_agent_call.encode().into() },
+ Transact {
+ origin_kind: OriginKind::Xcm,
+ call: create_agent_call.encode().into(),
+ fallback_max_weight: None,
+ },
]));
// Rococo Global Consensus
@@ -138,7 +142,11 @@ fn create_channel() {
let create_agent_xcm = VersionedXcm::from(Xcm(vec![
UnpaidExecution { weight_limit: Unlimited, check_origin: None },
DescendOrigin(Parachain(origin_para).into()),
- Transact { origin_kind: OriginKind::Xcm, call: create_agent_call.encode().into() },
+ Transact {
+ origin_kind: OriginKind::Xcm,
+ call: create_agent_call.encode().into(),
+ fallback_max_weight: None,
+ },
]));
let create_channel_call =
@@ -147,7 +155,11 @@ fn create_channel() {
let create_channel_xcm = VersionedXcm::from(Xcm(vec![
UnpaidExecution { weight_limit: Unlimited, check_origin: None },
DescendOrigin(Parachain(origin_para).into()),
- Transact { origin_kind: OriginKind::Xcm, call: create_channel_call.encode().into() },
+ Transact {
+ origin_kind: OriginKind::Xcm,
+ call: create_channel_call.encode().into(),
+ fallback_max_weight: None,
+ },
]));
// Rococo Global Consensus
diff --git a/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-westend/src/tests/transact.rs b/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-westend/src/tests/transact.rs
index db42704dae61..7831c8d66357 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-westend/src/tests/transact.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-westend/src/tests/transact.rs
@@ -49,7 +49,7 @@ fn transfer_and_transact_in_same_xcm(
// xcm to be executed at dest
let xcm_on_dest = Xcm(vec![
- Transact { origin_kind: OriginKind::Xcm, call },
+ Transact { origin_kind: OriginKind::Xcm, call, fallback_max_weight: None },
ExpectTransactStatus(MaybeErrorCode::Success),
// since this is the last hop, we don't need to further use any assets previously
// reserved for fees (there are no further hops to cover transport fees for); we
diff --git a/cumulus/parachains/integration-tests/emulated/tests/collectives/collectives-westend/src/tests/fellowship.rs b/cumulus/parachains/integration-tests/emulated/tests/collectives/collectives-westend/src/tests/fellowship.rs
index 80b82e0c446f..802fed1e681d 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/collectives/collectives-westend/src/tests/fellowship.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/collectives/collectives-westend/src/tests/fellowship.rs
@@ -41,6 +41,7 @@ fn fellows_whitelist_call() {
)
.encode()
.into(),
+ fallback_max_weight: None
}
]))),
});
diff --git a/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/Cargo.toml b/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/Cargo.toml
index aa6eebc5458f..53acd038cdf5 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/Cargo.toml
+++ b/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/Cargo.toml
@@ -21,6 +21,7 @@ sp-runtime = { workspace = true }
# Polkadot
polkadot-runtime-common = { workspace = true, default-features = true }
westend-runtime-constants = { workspace = true, default-features = true }
+westend-runtime = { workspace = true }
xcm = { workspace = true }
xcm-executor = { workspace = true }
diff --git a/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/governance.rs b/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/governance.rs
new file mode 100644
index 000000000000..1ba787aaec52
--- /dev/null
+++ b/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/governance.rs
@@ -0,0 +1,532 @@
+// Copyright (C) Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+use crate::imports::*;
+use frame_support::traits::ProcessMessageError;
+
+use codec::Encode;
+use frame_support::sp_runtime::traits::Dispatchable;
+use parachains_common::AccountId;
+use people_westend_runtime::people::IdentityInfo;
+use westend_runtime::governance::pallet_custom_origins::Origin::GeneralAdmin as GeneralAdminOrigin;
+use westend_system_emulated_network::people_westend_emulated_chain::people_westend_runtime;
+
+use pallet_identity::Data;
+
+use emulated_integration_tests_common::accounts::{ALICE, BOB};
+
+#[test]
+fn relay_commands_add_registrar() {
+ let (origin_kind, origin) = (OriginKind::Superuser, ::RuntimeOrigin::root());
+
+ let registrar: AccountId = [1; 32].into();
+ Westend::execute_with(|| {
+ type Runtime = ::Runtime;
+ type RuntimeCall = ::RuntimeCall;
+ type RuntimeEvent = ::RuntimeEvent;
+ type PeopleCall = ::RuntimeCall;
+ type PeopleRuntime = ::Runtime;
+
+ let add_registrar_call =
+ PeopleCall::Identity(pallet_identity::Call::::add_registrar {
+ account: registrar.into(),
+ });
+
+ let xcm_message = RuntimeCall::XcmPallet(pallet_xcm::Call::::send {
+ dest: bx!(VersionedLocation::from(Location::new(0, [Parachain(1004)]))),
+ message: bx!(VersionedXcm::from(Xcm(vec![
+ UnpaidExecution { weight_limit: Unlimited, check_origin: None },
+ Transact {
+ origin_kind,
+ call: add_registrar_call.encode().into(),
+ fallback_max_weight: None
+ }
+ ]))),
+ });
+
+ assert_ok!(xcm_message.dispatch(origin));
+
+ assert_expected_events!(
+ Westend,
+ vec![
+ RuntimeEvent::XcmPallet(pallet_xcm::Event::Sent { .. }) => {},
+ ]
+ );
+ });
+
+ PeopleWestend::execute_with(|| {
+ type RuntimeEvent = ::RuntimeEvent;
+
+ assert_expected_events!(
+ PeopleWestend,
+ vec![
+ RuntimeEvent::Identity(pallet_identity::Event::RegistrarAdded { .. }) => {},
+ RuntimeEvent::MessageQueue(pallet_message_queue::Event::Processed { success: true, .. }) => {},
+ ]
+ );
+ });
+}
+
+#[test]
+fn relay_commands_add_registrar_wrong_origin() {
+ let people_westend_alice = PeopleWestend::account_id_of(ALICE);
+
+ let origins = vec![
+ (
+ OriginKind::SovereignAccount,
+ ::RuntimeOrigin::signed(people_westend_alice),
+ ),
+ (OriginKind::Xcm, GeneralAdminOrigin.into()),
+ ];
+
+ let mut signed_origin = true;
+
+ for (origin_kind, origin) in origins {
+ let registrar: AccountId = [1; 32].into();
+ Westend::execute_with(|| {
+ type Runtime = ::Runtime;
+ type RuntimeCall = ::RuntimeCall;
+ type RuntimeEvent = ::RuntimeEvent;
+ type PeopleCall = ::RuntimeCall;
+ type PeopleRuntime = ::Runtime;
+
+ let add_registrar_call =
+ PeopleCall::Identity(pallet_identity::Call::::add_registrar {
+ account: registrar.into(),
+ });
+
+ let xcm_message = RuntimeCall::XcmPallet(pallet_xcm::Call::::send {
+ dest: bx!(VersionedLocation::from(Location::new(0, [Parachain(1004)]))),
+ message: bx!(VersionedXcm::from(Xcm(vec![
+ UnpaidExecution { weight_limit: Unlimited, check_origin: None },
+ Transact {
+ origin_kind,
+ call: add_registrar_call.encode().into(),
+ fallback_max_weight: None
+ }
+ ]))),
+ });
+
+ assert_ok!(xcm_message.dispatch(origin));
+ assert_expected_events!(
+ Westend,
+ vec![
+ RuntimeEvent::XcmPallet(pallet_xcm::Event::Sent { .. }) => {},
+ ]
+ );
+ });
+
+ PeopleWestend::execute_with(|| {
+ type RuntimeEvent = ::RuntimeEvent;
+
+ if signed_origin {
+ assert_expected_events!(
+ PeopleWestend,
+ vec![
+ RuntimeEvent::MessageQueue(pallet_message_queue::Event::ProcessingFailed { error: ProcessMessageError::Unsupported, .. }) => {},
+ ]
+ );
+ } else {
+ assert_expected_events!(
+ PeopleWestend,
+ vec![
+ RuntimeEvent::MessageQueue(pallet_message_queue::Event::Processed { success: true, .. }) => {},
+ ]
+ );
+ }
+ });
+
+ signed_origin = false;
+ }
+}
+
+#[test]
+fn relay_commands_kill_identity() {
+ // To kill an identity, first one must be set
+ PeopleWestend::execute_with(|| {
+ type PeopleRuntime = ::Runtime;
+ type PeopleRuntimeEvent = ::RuntimeEvent;
+
+ let people_westend_alice =
+ ::RuntimeOrigin::signed(PeopleWestend::account_id_of(ALICE));
+
+ let identity_info = IdentityInfo {
+ email: Data::Raw(b"test@test.io".to_vec().try_into().unwrap()),
+ ..Default::default()
+ };
+ let identity: Box<::IdentityInformation> =
+ Box::new(identity_info);
+
+ assert_ok!(::Identity::set_identity(
+ people_westend_alice,
+ identity
+ ));
+
+ assert_expected_events!(
+ PeopleWestend,
+ vec![
+ PeopleRuntimeEvent::Identity(pallet_identity::Event::IdentitySet { .. }) => {},
+ ]
+ );
+ });
+
+ let (origin_kind, origin) = (OriginKind::Superuser, ::RuntimeOrigin::root());
+
+ Westend::execute_with(|| {
+ type Runtime = ::Runtime;
+ type RuntimeCall = ::RuntimeCall;
+ type PeopleCall = ::RuntimeCall;
+ type RuntimeEvent = ::RuntimeEvent;
+ type PeopleRuntime = ::Runtime;
+
+ let kill_identity_call =
+ PeopleCall::Identity(pallet_identity::Call::::kill_identity {
+ target: people_westend_runtime::MultiAddress::Id(PeopleWestend::account_id_of(
+ ALICE,
+ )),
+ });
+
+ let xcm_message = RuntimeCall::XcmPallet(pallet_xcm::Call::::send {
+ dest: bx!(VersionedLocation::from(Location::new(0, [Parachain(1004)]))),
+ message: bx!(VersionedXcm::from(Xcm(vec![
+ UnpaidExecution { weight_limit: Unlimited, check_origin: None },
+ Transact {
+ origin_kind,
+ call: kill_identity_call.encode().into(),
+ fallback_max_weight: None
+ }
+ ]))),
+ });
+
+ assert_ok!(xcm_message.dispatch(origin));
+
+ assert_expected_events!(
+ Westend,
+ vec![
+ RuntimeEvent::XcmPallet(pallet_xcm::Event::Sent { .. }) => {},
+ ]
+ );
+ });
+
+ PeopleWestend::execute_with(|| {
+ type RuntimeEvent = ::RuntimeEvent;
+
+ assert_expected_events!(
+ PeopleWestend,
+ vec![
+ RuntimeEvent::Identity(pallet_identity::Event::IdentityKilled { .. }) => {},
+ RuntimeEvent::MessageQueue(pallet_message_queue::Event::Processed { success: true, .. }) => {},
+ ]
+ );
+ });
+}
+
+#[test]
+fn relay_commands_kill_identity_wrong_origin() {
+ let people_westend_alice = PeopleWestend::account_id_of(BOB);
+
+ let origins = vec![
+ (
+ OriginKind::SovereignAccount,
+ ::RuntimeOrigin::signed(people_westend_alice),
+ ),
+ (OriginKind::Xcm, GeneralAdminOrigin.into()),
+ ];
+
+ for (origin_kind, origin) in origins {
+ Westend::execute_with(|| {
+ type Runtime = ::Runtime;
+ type RuntimeCall = ::RuntimeCall;
+ type PeopleCall = ::RuntimeCall;
+ type RuntimeEvent = ::RuntimeEvent;
+ type PeopleRuntime = ::Runtime;
+
+ let kill_identity_call =
+ PeopleCall::Identity(pallet_identity::Call::::kill_identity {
+ target: people_westend_runtime::MultiAddress::Id(PeopleWestend::account_id_of(
+ ALICE,
+ )),
+ });
+
+ let xcm_message = RuntimeCall::XcmPallet(pallet_xcm::Call::::send {
+ dest: bx!(VersionedLocation::from(Location::new(0, [Parachain(1004)]))),
+ message: bx!(VersionedXcm::from(Xcm(vec![
+ UnpaidExecution { weight_limit: Unlimited, check_origin: None },
+ Transact {
+ origin_kind,
+ call: kill_identity_call.encode().into(),
+ fallback_max_weight: None
+ }
+ ]))),
+ });
+
+ assert_ok!(xcm_message.dispatch(origin));
+ assert_expected_events!(
+ Westend,
+ vec![
+ RuntimeEvent::XcmPallet(pallet_xcm::Event::Sent { .. }) => {},
+ ]
+ );
+ });
+
+ PeopleWestend::execute_with(|| {
+ assert_expected_events!(PeopleWestend, vec![]);
+ });
+ }
+}
+
+#[test]
+fn relay_commands_add_remove_username_authority() {
+ let people_westend_alice = PeopleWestend::account_id_of(ALICE);
+ let people_westend_bob = PeopleWestend::account_id_of(BOB);
+
+ let (origin_kind, origin, usr) =
+ (OriginKind::Superuser, ::RuntimeOrigin::root(), "rootusername");
+
+ // First, add a username authority.
+ Westend::execute_with(|| {
+ type Runtime = ::Runtime;
+ type RuntimeCall = ::RuntimeCall;
+ type RuntimeEvent = ::RuntimeEvent;
+ type PeopleCall = ::RuntimeCall;
+ type PeopleRuntime = ::Runtime;
+
+ let add_username_authority =
+ PeopleCall::Identity(pallet_identity::Call::::add_username_authority {
+ authority: people_westend_runtime::MultiAddress::Id(people_westend_alice.clone()),
+ suffix: b"suffix1".into(),
+ allocation: 10,
+ });
+
+ let add_authority_xcm_msg = RuntimeCall::XcmPallet(pallet_xcm::Call::::send {
+ dest: bx!(VersionedLocation::from(Location::new(0, [Parachain(1004)]))),
+ message: bx!(VersionedXcm::from(Xcm(vec![
+ UnpaidExecution { weight_limit: Unlimited, check_origin: None },
+ Transact {
+ origin_kind,
+ call: add_username_authority.encode().into(),
+ fallback_max_weight: None
+ }
+ ]))),
+ });
+
+ assert_ok!(add_authority_xcm_msg.dispatch(origin.clone()));
+
+ assert_expected_events!(
+ Westend,
+ vec![
+ RuntimeEvent::XcmPallet(pallet_xcm::Event::Sent { .. }) => {},
+ ]
+ );
+ });
+
+ // Check events system-parachain-side
+ PeopleWestend::execute_with(|| {
+ type RuntimeEvent = ::RuntimeEvent;
+
+ assert_expected_events!(
+ PeopleWestend,
+ vec![
+ RuntimeEvent::Identity(pallet_identity::Event::AuthorityAdded { .. }) => {},
+ RuntimeEvent::MessageQueue(pallet_message_queue::Event::Processed { success: true, .. }) => {},
+ ]
+ );
+ });
+
+ // Now, use the previously added username authority to concede a username to an account.
+ PeopleWestend::execute_with(|| {
+ type PeopleRuntimeEvent = ::RuntimeEvent;
+ let full_username = [usr.to_owned(), ".suffix1".to_owned()].concat().into_bytes();
+
+ assert_ok!(::Identity::set_username_for(
+ ::RuntimeOrigin::signed(people_westend_alice.clone()),
+ people_westend_runtime::MultiAddress::Id(people_westend_bob.clone()),
+ full_username,
+ None,
+ true
+ ));
+
+ assert_expected_events!(
+ PeopleWestend,
+ vec![
+ PeopleRuntimeEvent::Identity(pallet_identity::Event::UsernameQueued { .. }) => {},
+ ]
+ );
+ });
+
+ // Accept the given username
+ PeopleWestend::execute_with(|| {
+ type PeopleRuntimeEvent = ::RuntimeEvent;
+ let full_username = [usr.to_owned(), ".suffix1".to_owned()].concat().into_bytes();
+
+ assert_ok!(::Identity::accept_username(
+ ::RuntimeOrigin::signed(people_westend_bob.clone()),
+ full_username.try_into().unwrap(),
+ ));
+
+ assert_expected_events!(
+ PeopleWestend,
+ vec![
+ PeopleRuntimeEvent::Identity(pallet_identity::Event::UsernameSet { .. }) => {},
+ ]
+ );
+ });
+
+ // Now, remove the username authority with another priviledged XCM call.
+ Westend::execute_with(|| {
+ type Runtime = ::Runtime;
+ type RuntimeCall = ::RuntimeCall;
+ type RuntimeEvent = ::RuntimeEvent;
+ type PeopleCall = ::RuntimeCall;
+ type PeopleRuntime = ::Runtime;
+
+ let remove_username_authority = PeopleCall::Identity(pallet_identity::Call::<
+ PeopleRuntime,
+ >::remove_username_authority {
+ authority: people_westend_runtime::MultiAddress::Id(people_westend_alice.clone()),
+ suffix: b"suffix1".into(),
+ });
+
+ let remove_authority_xcm_msg = RuntimeCall::XcmPallet(pallet_xcm::Call::::send {
+ dest: bx!(VersionedLocation::from(Location::new(0, [Parachain(1004)]))),
+ message: bx!(VersionedXcm::from(Xcm(vec![
+ UnpaidExecution { weight_limit: Unlimited, check_origin: None },
+ Transact {
+ origin_kind,
+ call: remove_username_authority.encode().into(),
+ fallback_max_weight: None
+ }
+ ]))),
+ });
+
+ assert_ok!(remove_authority_xcm_msg.dispatch(origin));
+
+ assert_expected_events!(
+ Westend,
+ vec![
+ RuntimeEvent::XcmPallet(pallet_xcm::Event::Sent { .. }) => {},
+ ]
+ );
+ });
+
+ // Final event check.
+ PeopleWestend::execute_with(|| {
+ type RuntimeEvent = ::RuntimeEvent;
+
+ assert_expected_events!(
+ PeopleWestend,
+ vec![
+ RuntimeEvent::Identity(pallet_identity::Event::AuthorityRemoved { .. }) => {},
+ RuntimeEvent::MessageQueue(pallet_message_queue::Event::Processed { success: true, .. }) => {},
+ ]
+ );
+ });
+}
+
+#[test]
+fn relay_commands_add_remove_username_authority_wrong_origin() {
+ let people_westend_alice = PeopleWestend::account_id_of(ALICE);
+
+ let origins = vec![
+ (
+ OriginKind::SovereignAccount,
+ ::RuntimeOrigin::signed(people_westend_alice.clone()),
+ ),
+ (OriginKind::Xcm, GeneralAdminOrigin.into()),
+ ];
+
+ for (origin_kind, origin) in origins {
+ Westend::execute_with(|| {
+ type Runtime = ::Runtime;
+ type RuntimeCall = ::RuntimeCall;
+ type RuntimeEvent = ::RuntimeEvent;
+ type PeopleCall = ::RuntimeCall;
+ type PeopleRuntime = ::Runtime;
+
+ let add_username_authority = PeopleCall::Identity(pallet_identity::Call::<
+ PeopleRuntime,
+ >::add_username_authority {
+ authority: people_westend_runtime::MultiAddress::Id(people_westend_alice.clone()),
+ suffix: b"suffix1".into(),
+ allocation: 10,
+ });
+
+ let add_authority_xcm_msg = RuntimeCall::XcmPallet(pallet_xcm::Call::::send {
+ dest: bx!(VersionedLocation::from(Location::new(0, [Parachain(1004)]))),
+ message: bx!(VersionedXcm::from(Xcm(vec![
+ UnpaidExecution { weight_limit: Unlimited, check_origin: None },
+ Transact {
+ origin_kind,
+ call: add_username_authority.encode().into(),
+ fallback_max_weight: None
+ }
+ ]))),
+ });
+
+ assert_ok!(add_authority_xcm_msg.dispatch(origin.clone()));
+ assert_expected_events!(
+ Westend,
+ vec![
+ RuntimeEvent::XcmPallet(pallet_xcm::Event::Sent { .. }) => {},
+ ]
+ );
+ });
+
+ // Check events system-parachain-side
+ PeopleWestend::execute_with(|| {
+ assert_expected_events!(PeopleWestend, vec![]);
+ });
+
+ Westend::execute_with(|| {
+ type Runtime = ::Runtime;
+ type RuntimeCall = ::RuntimeCall;
+ type RuntimeEvent = ::RuntimeEvent;
+ type PeopleCall = ::RuntimeCall;
+ type PeopleRuntime = ::Runtime;
+
+ let remove_username_authority = PeopleCall::Identity(pallet_identity::Call::<
+ PeopleRuntime,
+ >::remove_username_authority {
+ authority: people_westend_runtime::MultiAddress::Id(people_westend_alice.clone()),
+ suffix: b"suffix1".into(),
+ });
+
+ let remove_authority_xcm_msg =
+ RuntimeCall::XcmPallet(pallet_xcm::Call::::send {
+ dest: bx!(VersionedLocation::from(Location::new(0, [Parachain(1004)]))),
+ message: bx!(VersionedXcm::from(Xcm(vec![
+ UnpaidExecution { weight_limit: Unlimited, check_origin: None },
+ Transact {
+ origin_kind: OriginKind::SovereignAccount,
+ call: remove_username_authority.encode().into(),
+ fallback_max_weight: None,
+ }
+ ]))),
+ });
+
+ assert_ok!(remove_authority_xcm_msg.dispatch(origin));
+ assert_expected_events!(
+ Westend,
+ vec![
+ RuntimeEvent::XcmPallet(pallet_xcm::Event::Sent { .. }) => {},
+ ]
+ );
+ });
+
+ PeopleWestend::execute_with(|| {
+ assert_expected_events!(PeopleWestend, vec![]);
+ });
+ }
+}
diff --git a/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/mod.rs b/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/mod.rs
index 08749b295dc2..b9ad9e3db467 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/mod.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/mod.rs
@@ -14,4 +14,5 @@
// limitations under the License.
mod claim_assets;
+mod governance;
mod teleport;
diff --git a/cumulus/parachains/pallets/collective-content/Cargo.toml b/cumulus/parachains/pallets/collective-content/Cargo.toml
index c52021f67e36..09301bd738f3 100644
--- a/cumulus/parachains/pallets/collective-content/Cargo.toml
+++ b/cumulus/parachains/pallets/collective-content/Cargo.toml
@@ -5,6 +5,8 @@ authors = ["Parity Technologies "]
edition.workspace = true
description = "Managed content"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/pallets/parachain-info/Cargo.toml b/cumulus/parachains/pallets/parachain-info/Cargo.toml
index e0bed23c4f8c..604441c65f29 100644
--- a/cumulus/parachains/pallets/parachain-info/Cargo.toml
+++ b/cumulus/parachains/pallets/parachain-info/Cargo.toml
@@ -5,6 +5,8 @@ name = "staging-parachain-info"
version = "0.7.0"
license = "Apache-2.0"
description = "Pallet to store the parachain ID"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/pallets/ping/Cargo.toml b/cumulus/parachains/pallets/ping/Cargo.toml
index 51fc384a4f14..ceb38f39fd80 100644
--- a/cumulus/parachains/pallets/ping/Cargo.toml
+++ b/cumulus/parachains/pallets/ping/Cargo.toml
@@ -5,6 +5,8 @@ name = "cumulus-ping"
version = "0.7.0"
license = "Apache-2.0"
description = "Ping Pallet for Cumulus XCM/UMP testing."
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/pallets/ping/src/lib.rs b/cumulus/parachains/pallets/ping/src/lib.rs
index 2cf32c891fc0..b6423a81db3c 100644
--- a/cumulus/parachains/pallets/ping/src/lib.rs
+++ b/cumulus/parachains/pallets/ping/src/lib.rs
@@ -114,6 +114,7 @@ pub mod pallet {
})
.encode()
.into(),
+ fallback_max_weight: None,
}]),
) {
Ok((hash, cost)) => {
@@ -214,6 +215,7 @@ pub mod pallet {
})
.encode()
.into(),
+ fallback_max_weight: None,
}]),
) {
Ok((hash, cost)) =>
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml
index bfe8ed869758..949640dd4be6 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Rococo variant of Asset Hub parachain runtime"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs
index 025c39bcee07..ccf473484cad 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs
+++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs
@@ -22,6 +22,7 @@ use alloc::vec::Vec;
use frame_support::weights::Weight;
use pallet_xcm_benchmarks_fungible::WeightInfo as XcmFungibleWeight;
use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric;
+use sp_runtime::BoundedVec;
use xcm::{
latest::{prelude::*, AssetTransferFilter},
DoubleEncoded,
@@ -84,7 +85,11 @@ impl XcmWeightInfo for AssetHubRococoXcmWeight {
fn transfer_reserve_asset(assets: &Assets, _dest: &Location, _xcm: &Xcm<()>) -> Weight {
assets.weigh_assets(XcmFungibleWeight::::transfer_reserve_asset())
}
- fn transact(_origin_type: &OriginKind, _call: &DoubleEncoded) -> Weight {
+ fn transact(
+ _origin_type: &OriginKind,
+ _fallback_max_weight: &Option,
+ _call: &DoubleEncoded,
+ ) -> Weight {
XcmGeneric::::transact()
}
fn hrmp_new_channel_open_request(
@@ -172,8 +177,16 @@ impl XcmWeightInfo for AssetHubRococoXcmWeight {
fn clear_error() -> Weight {
XcmGeneric::::clear_error()
}
- fn set_asset_claimer(_location: &Location) -> Weight {
- XcmGeneric::::set_asset_claimer()
+ fn set_hints(hints: &BoundedVec) -> Weight {
+ let mut weight = Weight::zero();
+ for hint in hints {
+ match hint {
+ AssetClaimer { .. } => {
+ weight = weight.saturating_add(XcmGeneric::::asset_claimer());
+ },
+ }
+ }
+ weight
}
fn claim_asset(_assets: &Assets, _ticket: &Location) -> Weight {
XcmGeneric::::claim_asset()
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
index b69c136b29d9..d48debef94c8 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
+++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
@@ -87,7 +87,7 @@ impl WeightInfo {
// Minimum execution time: 5_803_000 picoseconds.
Weight::from_parts(5_983_000, 0)
}
- pub fn set_asset_claimer() -> Weight {
+ pub fn asset_claimer() -> Weight {
// Proof Size summary in bytes:
// Measured: `0`
// Estimated: `0`
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml
index a3eaebb59153..8e47146a06c3 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Westend variant of Asset Hub parachain runtime"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs
index e351834b606f..cc637094ec19 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs
+++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs
@@ -124,7 +124,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
spec_name: alloc::borrow::Cow::Borrowed("westmint"),
impl_name: alloc::borrow::Cow::Borrowed("westmint"),
authoring_version: 1,
- spec_version: 1_016_006,
+ spec_version: 1_017_002,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 16,
@@ -2084,18 +2084,10 @@ impl_runtime_apis! {
let account = ::AddressMapper::to_account_id(&address);
System::account_nonce(account)
}
- fn eth_transact(
- from: H160,
- dest: Option,
- value: U256,
- input: Vec,
- gas_limit: Option,
- storage_deposit_limit: Option,
- ) -> pallet_revive::EthContractResult
+
+ fn eth_transact(tx: pallet_revive::evm::GenericTransaction) -> Result, pallet_revive::EthTransactError>
{
- use pallet_revive::AddressMapper;
- let blockweights = ::BlockWeights::get();
- let origin = ::AddressMapper::to_account_id(&from);
+ let blockweights: BlockWeights = ::BlockWeights::get();
let encoded_size = |pallet_call| {
let call = RuntimeCall::Revive(pallet_call);
@@ -2104,15 +2096,9 @@ impl_runtime_apis! {
};
Revive::bare_eth_transact(
- origin,
- dest,
- value,
- input,
- gas_limit.unwrap_or(blockweights.max_block),
- storage_deposit_limit.unwrap_or(u128::MAX),
+ tx,
+ blockweights.max_block,
encoded_size,
- pallet_revive::DebugInfo::UnsafeDebug,
- pallet_revive::CollectEvents::UnsafeCollect,
)
}
@@ -2130,7 +2116,7 @@ impl_runtime_apis! {
dest,
value,
gas_limit.unwrap_or(blockweights.max_block),
- storage_deposit_limit.unwrap_or(u128::MAX),
+ pallet_revive::DepositLimit::Balance(storage_deposit_limit.unwrap_or(u128::MAX)),
input_data,
pallet_revive::DebugInfo::UnsafeDebug,
pallet_revive::CollectEvents::UnsafeCollect,
@@ -2152,7 +2138,7 @@ impl_runtime_apis! {
RuntimeOrigin::signed(origin),
value,
gas_limit.unwrap_or(blockweights.max_block),
- storage_deposit_limit.unwrap_or(u128::MAX),
+ pallet_revive::DepositLimit::Balance(storage_deposit_limit.unwrap_or(u128::MAX)),
code,
data,
salt,
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/mod.rs
index 35ff2dc367c0..a0e9705ff01d 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/mod.rs
+++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/mod.rs
@@ -21,6 +21,7 @@ use alloc::vec::Vec;
use frame_support::weights::Weight;
use pallet_xcm_benchmarks_fungible::WeightInfo as XcmFungibleWeight;
use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric;
+use sp_runtime::BoundedVec;
use xcm::{
latest::{prelude::*, AssetTransferFilter},
DoubleEncoded,
@@ -83,7 +84,11 @@ impl XcmWeightInfo for AssetHubWestendXcmWeight {
fn transfer_reserve_asset(assets: &Assets, _dest: &Location, _xcm: &Xcm<()>) -> Weight {
assets.weigh_assets(XcmFungibleWeight::::transfer_reserve_asset())
}
- fn transact(_origin_type: &OriginKind, _call: &DoubleEncoded) -> Weight {
+ fn transact(
+ _origin_type: &OriginKind,
+ _fallback_max_weight: &Option,
+ _call: &DoubleEncoded,
+ ) -> Weight {
XcmGeneric::::transact()
}
fn hrmp_new_channel_open_request(
@@ -172,8 +177,16 @@ impl XcmWeightInfo for AssetHubWestendXcmWeight {
fn clear_error() -> Weight {
XcmGeneric::::clear_error()
}
- fn set_asset_claimer(_location: &Location) -> Weight {
- XcmGeneric::::set_asset_claimer()
+ fn set_hints(hints: &BoundedVec) -> Weight {
+ let mut weight = Weight::zero();
+ for hint in hints {
+ match hint {
+ AssetClaimer { .. } => {
+ weight = weight.saturating_add(XcmGeneric::::asset_claimer());
+ },
+ }
+ }
+ weight
}
fn claim_asset(_assets: &Assets, _ticket: &Location) -> Weight {
XcmGeneric::::claim_asset()
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
index 528694123115..0ec2741c0490 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
+++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
@@ -87,7 +87,7 @@ impl WeightInfo {
// Minimum execution time: 5_580_000 picoseconds.
Weight::from_parts(5_950_000, 0)
}
- pub fn set_asset_claimer() -> Weight {
+ pub fn asset_claimer() -> Weight {
// Proof Size summary in bytes:
// Measured: `0`
// Estimated: `0`
diff --git a/cumulus/parachains/runtimes/assets/common/Cargo.toml b/cumulus/parachains/runtimes/assets/common/Cargo.toml
index fb66f0de2322..fa9efbca7a39 100644
--- a/cumulus/parachains/runtimes/assets/common/Cargo.toml
+++ b/cumulus/parachains/runtimes/assets/common/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Assets common utilities"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/assets/test-utils/Cargo.toml b/cumulus/parachains/runtimes/assets/test-utils/Cargo.toml
index f6b3c13e8102..393d06f95b15 100644
--- a/cumulus/parachains/runtimes/assets/test-utils/Cargo.toml
+++ b/cumulus/parachains/runtimes/assets/test-utils/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Test utils for Asset Hub runtimes."
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs b/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs
index aeacc1a5471e..b1577e0ca7f6 100644
--- a/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs
+++ b/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs
@@ -1205,14 +1205,20 @@ pub fn create_and_manage_foreign_assets_for_local_consensus_parachain_assets_wor
let xcm = Xcm(vec![
WithdrawAsset(buy_execution_fee.clone().into()),
BuyExecution { fees: buy_execution_fee.clone(), weight_limit: Unlimited },
- Transact { origin_kind: OriginKind::Xcm, call: foreign_asset_create.into() },
+ Transact {
+ origin_kind: OriginKind::Xcm,
+ call: foreign_asset_create.into(),
+ fallback_max_weight: None,
+ },
Transact {
origin_kind: OriginKind::SovereignAccount,
call: foreign_asset_set_metadata.into(),
+ fallback_max_weight: None,
},
Transact {
origin_kind: OriginKind::SovereignAccount,
call: foreign_asset_set_team.into(),
+ fallback_max_weight: None,
},
ExpectTransactStatus(MaybeErrorCode::Success),
]);
@@ -1318,7 +1324,11 @@ pub fn create_and_manage_foreign_assets_for_local_consensus_parachain_assets_wor
let xcm = Xcm(vec![
WithdrawAsset(buy_execution_fee.clone().into()),
BuyExecution { fees: buy_execution_fee.clone(), weight_limit: Unlimited },
- Transact { origin_kind: OriginKind::Xcm, call: foreign_asset_create.into() },
+ Transact {
+ origin_kind: OriginKind::Xcm,
+ call: foreign_asset_create.into(),
+ fallback_max_weight: None,
+ },
ExpectTransactStatus(MaybeErrorCode::from(DispatchError::BadOrigin.encode())),
]);
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml
index 3eb06e3a18c1..a7710783a1e0 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Rococo's BridgeHub parachain runtime"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs
index b284fa9e7af7..1e733503f43b 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs
@@ -22,14 +22,13 @@
use crate::{
bridge_common_config::RelayersForPermissionlessLanesInstance, weights,
xcm_config::UniversalLocation, AccountId, Balance, Balances, BridgeRococoBulletinGrandpa,
- BridgeRococoBulletinMessages, PolkadotXcm, Runtime, RuntimeEvent, RuntimeHoldReason,
- XcmOverRococoBulletin, XcmRouter,
+ BridgeRococoBulletinMessages, Runtime, RuntimeEvent, RuntimeHoldReason, XcmOverRococoBulletin,
+ XcmRouter,
};
use bp_messages::{
source_chain::FromBridgedChainMessagesDeliveryProof,
- target_chain::FromBridgedChainMessagesProof, HashedLaneId,
+ target_chain::FromBridgedChainMessagesProof, LegacyLaneId,
};
-use bridge_hub_common::xcm_version::XcmVersionOfDestAndRemoteBridge;
use frame_support::{
parameter_types,
@@ -46,6 +45,7 @@ use testnet_parachains_constants::rococo::currency::UNITS as ROC;
use xcm::{
latest::prelude::*,
prelude::{InteriorLocation, NetworkId},
+ AlwaysV5,
};
use xcm_builder::{BridgeBlobDispatcher, ParentIsPreset, SiblingParachainConvertsVia};
@@ -120,7 +120,7 @@ impl pallet_bridge_messages::Config for Runt
type OutboundPayload = XcmAsPlainPayload;
type InboundPayload = XcmAsPlainPayload;
- type LaneId = HashedLaneId;
+ type LaneId = LegacyLaneId;
type DeliveryPayments = ();
type DeliveryConfirmationPayments = ();
@@ -139,8 +139,7 @@ impl pallet_xcm_bridge_hub::Config for Runtime
type BridgeMessagesPalletInstance = WithRococoBulletinMessagesInstance;
type MessageExportPrice = ();
- type DestinationVersion =
- XcmVersionOfDestAndRemoteBridge;
+ type DestinationVersion = AlwaysV5;
type ForceOrigin = EnsureRoot;
// We don't want to allow creating bridges for this instance.
@@ -253,7 +252,7 @@ where
let universal_source =
[GlobalConsensus(ByGenesis(ROCOCO_GENESIS_HASH)), Parachain(sibling_para_id)].into();
let universal_destination =
- [GlobalConsensus(RococoBulletinGlobalConsensusNetwork::get()), Parachain(2075)].into();
+ [GlobalConsensus(RococoBulletinGlobalConsensusNetwork::get())].into();
let bridge_id = BridgeId::new(&universal_source, &universal_destination);
// insert only bridge metadata, because the benchmarks create lanes
@@ -279,29 +278,3 @@ where
universal_source
}
-
-/// Contains the migration for the PeopleRococo<>RococoBulletin bridge.
-pub mod migration {
- use super::*;
- use frame_support::traits::ConstBool;
-
- parameter_types! {
- pub BulletinRococoLocation: InteriorLocation = [GlobalConsensus(RococoBulletinGlobalConsensusNetwork::get())].into();
- pub RococoPeopleToRococoBulletinMessagesLane: HashedLaneId = pallet_xcm_bridge_hub::Pallet::< Runtime, XcmOverPolkadotBulletinInstance >::bridge_locations(
- PeopleRococoLocation::get(),
- BulletinRococoLocation::get()
- )
- .unwrap()
- .calculate_lane_id(xcm::latest::VERSION).expect("Valid locations");
- }
-
- /// Ensure that the existing lanes for the People<>Bulletin bridge are correctly configured.
- pub type StaticToDynamicLanes = pallet_xcm_bridge_hub::migration::OpenBridgeForLane<
- Runtime,
- XcmOverPolkadotBulletinInstance,
- RococoPeopleToRococoBulletinMessagesLane,
- ConstBool,
- PeopleRococoLocation,
- BulletinRococoLocation,
- >;
-}
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs
index 98e2450ee832..55fd499c2f54 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs
@@ -61,10 +61,20 @@ fn bridge_hub_rococo_genesis(
.collect(),
},
polkadot_xcm: PolkadotXcmConfig { safe_xcm_version: Some(SAFE_XCM_VERSION) },
+ bridge_polkadot_bulletin_grandpa: BridgePolkadotBulletinGrandpaConfig {
+ owner: bridges_pallet_owner.clone(),
+ },
bridge_westend_grandpa: BridgeWestendGrandpaConfig { owner: bridges_pallet_owner.clone() },
bridge_westend_messages: BridgeWestendMessagesConfig {
owner: bridges_pallet_owner.clone(),
},
+ xcm_over_polkadot_bulletin: XcmOverPolkadotBulletinConfig {
+ opened_bridges: vec![(
+ Location::new(1, [Parachain(1004)]),
+ Junctions::from([GlobalConsensus(NetworkId::PolkadotBulletin).into()]),
+ Some(bp_messages::LegacyLaneId([0, 0, 0, 0])),
+ )],
+ },
xcm_over_bridge_hub_westend: XcmOverBridgeHubWestendConfig { opened_bridges },
ethereum_system: EthereumSystemConfig { para_id: id, asset_hub_para_id },
})
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs
index 598afeddb984..d87ff9b43fef 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs
@@ -169,7 +169,6 @@ pub type Migrations = (
bridge_to_westend_config::WithBridgeHubWestendMessagesInstance,
>,
bridge_to_westend_config::migration::StaticToDynamicLanes,
- bridge_to_bulletin_config::migration::StaticToDynamicLanes,
frame_support::migrations::RemoveStorage<
BridgeWestendMessagesPalletName,
OutboundLanesCongestedSignalsKey,
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/mod.rs
index 288aac38563c..efc2798999bf 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/mod.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/mod.rs
@@ -22,6 +22,7 @@ use codec::Encode;
use frame_support::weights::Weight;
use pallet_xcm_benchmarks_fungible::WeightInfo as XcmFungibleWeight;
use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric;
+use sp_runtime::BoundedVec;
use xcm::{
latest::{prelude::*, AssetTransferFilter},
DoubleEncoded,
@@ -84,7 +85,11 @@ impl XcmWeightInfo for BridgeHubRococoXcmWeight {
fn transfer_reserve_asset(assets: &Assets, _dest: &Location, _xcm: &Xcm<()>) -> Weight {
assets.weigh_assets(XcmFungibleWeight::::transfer_reserve_asset())
}
- fn transact(_origin_type: &OriginKind, _call: &DoubleEncoded) -> Weight {
+ fn transact(
+ _origin_type: &OriginKind,
+ _fallback_max_weight: &Option,
+ _call: &DoubleEncoded,
+ ) -> Weight {
XcmGeneric::::transact()
}
fn hrmp_new_channel_open_request(
@@ -253,8 +258,16 @@ impl XcmWeightInfo for BridgeHubRococoXcmWeight {
fn unpaid_execution(_: &WeightLimit, _: &Option) -> Weight {
XcmGeneric::::unpaid_execution()
}
- fn set_asset_claimer(_location: &Location) -> Weight {
- XcmGeneric::::set_asset_claimer()
+ fn set_hints(hints: &BoundedVec) -> Weight {
+ let mut weight = Weight::zero();
+ for hint in hints {
+ match hint {
+ AssetClaimer { .. } => {
+ weight = weight.saturating_add(XcmGeneric::::asset_claimer());
+ },
+ }
+ }
+ weight
}
fn execute_with_origin(_: &Option, _: &Xcm) -> Weight {
XcmGeneric::::execute_with_origin()
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
index bac73e0e0567..daf22190a42b 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
@@ -373,7 +373,7 @@ impl WeightInfo {
// Minimum execution time: 1_085_000 picoseconds.
Weight::from_parts(1_161_000, 0)
}
- pub fn set_asset_claimer() -> Weight {
+ pub fn asset_claimer() -> Weight {
// Proof Size summary in bytes:
// Measured: `0`
// Estimated: `0`
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs
index 29f9615bff6a..44e69c31a560 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs
@@ -501,10 +501,10 @@ mod bridge_hub_westend_tests {
mod bridge_hub_bulletin_tests {
use super::*;
- use bp_messages::{HashedLaneId, LaneIdType};
+ use bp_messages::LegacyLaneId;
use bridge_common_config::BridgeGrandpaRococoBulletinInstance;
use bridge_hub_rococo_runtime::{
- bridge_common_config::RelayersForPermissionlessLanesInstance,
+ bridge_common_config::RelayersForLegacyLaneIdsMessagesInstance,
xcm_config::LocationToAccountId,
};
use bridge_hub_test_utils::test_cases::from_grandpa_chain;
@@ -528,7 +528,7 @@ mod bridge_hub_bulletin_tests {
AllPalletsWithoutSystem,
BridgeGrandpaRococoBulletinInstance,
WithRococoBulletinMessagesInstance,
- RelayersForPermissionlessLanesInstance,
+ RelayersForLegacyLaneIdsMessagesInstance,
>;
#[test]
@@ -599,7 +599,7 @@ mod bridge_hub_bulletin_tests {
bridge_hub_test_utils::open_bridge_with_storage::<
Runtime,
XcmOverPolkadotBulletinInstance
- >(locations, HashedLaneId::try_new(1, 2).unwrap())
+ >(locations, LegacyLaneId([0, 0, 0, 0]))
}
).1
},
@@ -663,7 +663,7 @@ mod bridge_hub_bulletin_tests {
bridge_hub_test_utils::open_bridge_with_storage::<
Runtime,
XcmOverPolkadotBulletinInstance,
- >(locations, HashedLaneId::try_new(1, 2).unwrap())
+ >(locations, LegacyLaneId([0, 0, 0, 0]))
},
)
.1
@@ -697,7 +697,7 @@ mod bridge_hub_bulletin_tests {
bridge_hub_test_utils::open_bridge_with_storage::<
Runtime,
XcmOverPolkadotBulletinInstance,
- >(locations, HashedLaneId::try_new(1, 2).unwrap())
+ >(locations, LegacyLaneId([0, 0, 0, 0]))
},
)
.1
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml
index 871bf44ec5b2..91900c830ba6 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Westend's BridgeHub parachain runtime"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs
index fa1304d11c6f..15a1dae09d9b 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs
@@ -23,6 +23,7 @@ use codec::Encode;
use frame_support::weights::Weight;
use pallet_xcm_benchmarks_fungible::WeightInfo as XcmFungibleWeight;
use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric;
+use sp_runtime::BoundedVec;
use xcm::{
latest::{prelude::*, AssetTransferFilter},
DoubleEncoded,
@@ -85,7 +86,11 @@ impl XcmWeightInfo for BridgeHubWestendXcmWeight {
fn transfer_reserve_asset(assets: &Assets, _dest: &Location, _xcm: &Xcm<()>) -> Weight {
assets.weigh_assets(XcmFungibleWeight::::transfer_reserve_asset())
}
- fn transact(_origin_type: &OriginKind, _call: &DoubleEncoded) -> Weight {
+ fn transact(
+ _origin_type: &OriginKind,
+ _fallback_max_weight: &Option,
+ _call: &DoubleEncoded,
+ ) -> Weight {
XcmGeneric::::transact()
}
fn hrmp_new_channel_open_request(
@@ -174,8 +179,16 @@ impl XcmWeightInfo for BridgeHubWestendXcmWeight {
fn clear_error() -> Weight {
XcmGeneric::::clear_error()
}
- fn set_asset_claimer(_location: &Location) -> Weight {
- XcmGeneric::::set_asset_claimer()
+ fn set_hints(hints: &BoundedVec) -> Weight {
+ let mut weight = Weight::zero();
+ for hint in hints {
+ match hint {
+ AssetClaimer { .. } => {
+ weight = weight.saturating_add(XcmGeneric::::asset_claimer());
+ },
+ }
+ }
+ weight
}
fn claim_asset(_assets: &Assets, _ticket: &Location) -> Weight {
XcmGeneric::::claim_asset()
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
index 6434f6206fbe..03cbaa866ad8 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
@@ -373,7 +373,7 @@ impl WeightInfo {
// Minimum execution time: 995_000 picoseconds.
Weight::from_parts(1_060_000, 0)
}
- pub fn set_asset_claimer() -> Weight {
+ pub fn asset_claimer() -> Weight {
// Proof Size summary in bytes:
// Measured: `0`
// Estimated: `0`
diff --git a/cumulus/parachains/runtimes/bridge-hubs/common/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/common/Cargo.toml
index 9cb24a2b2820..76a89bcb2e72 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/common/Cargo.toml
+++ b/cumulus/parachains/runtimes/bridge-hubs/common/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Bridge hub common utilities"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[dependencies]
codec = { features = ["derive"], workspace = true }
diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/test-utils/Cargo.toml
index 915b3090092f..16fef951f328 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/Cargo.toml
+++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Utils for BridgeHub testing"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml
index 810abcf572d4..dc4b73db69e3 100644
--- a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
license = "Apache-2.0"
description = "Westend Collectives Parachain Runtime"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/constants/Cargo.toml b/cumulus/parachains/runtimes/constants/Cargo.toml
index d54f1e7db6c1..01b023e0fb89 100644
--- a/cumulus/parachains/runtimes/constants/Cargo.toml
+++ b/cumulus/parachains/runtimes/constants/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Common constants for Testnet Parachains runtimes"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml b/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml
index c98ca7ba3e74..1aeff5eb2e48 100644
--- a/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml
@@ -5,6 +5,8 @@ description = "Parachain testnet runtime for FRAME Contracts pallet."
authors.workspace = true
edition.workspace = true
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml b/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml
index 02807827cf92..ab621134b252 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Rococo's Coretime parachain runtime"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs
index d76ac443a147..35c3dd8836a8 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs
+++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs
@@ -135,6 +135,7 @@ impl CoretimeInterface for CoretimeAllocator {
Instruction::Transact {
origin_kind: OriginKind::Native,
call: request_core_count_call.encode().into(),
+ fallback_max_weight: Some(Weight::from_parts(1_000_000_000, 200_000)),
},
]);
@@ -164,6 +165,7 @@ impl CoretimeInterface for CoretimeAllocator {
Instruction::Transact {
origin_kind: OriginKind::Native,
call: request_revenue_info_at_call.encode().into(),
+ fallback_max_weight: Some(Weight::from_parts(1_000_000_000, 200_000)),
},
]);
@@ -192,6 +194,7 @@ impl CoretimeInterface for CoretimeAllocator {
Instruction::Transact {
origin_kind: OriginKind::Native,
call: credit_account_call.encode().into(),
+ fallback_max_weight: Some(Weight::from_parts(1_000_000_000, 200_000)),
},
]);
@@ -256,6 +259,7 @@ impl CoretimeInterface for CoretimeAllocator {
Instruction::Transact {
origin_kind: OriginKind::Native,
call: assign_core_call.encode().into(),
+ fallback_max_weight: Some(Weight::from_parts(1_000_000_000, 200_000)),
},
]);
diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs
index f69736e31451..dc21e2ea117f 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs
+++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs
@@ -22,6 +22,7 @@ use alloc::vec::Vec;
use frame_support::weights::Weight;
use pallet_xcm_benchmarks_fungible::WeightInfo as XcmFungibleWeight;
use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric;
+use sp_runtime::BoundedVec;
use xcm::{
latest::{prelude::*, AssetTransferFilter},
DoubleEncoded,
@@ -84,7 +85,11 @@ impl XcmWeightInfo for CoretimeRococoXcmWeight {
fn transfer_reserve_asset(assets: &Assets, _dest: &Location, _xcm: &Xcm<()>) -> Weight {
assets.weigh_assets(XcmFungibleWeight::::transfer_reserve_asset())
}
- fn transact(_origin_type: &OriginKind, _call: &DoubleEncoded) -> Weight {
+ fn transact(
+ _origin_type: &OriginKind,
+ _fallback_max_weight: &Option,
+ _call: &DoubleEncoded,
+ ) -> Weight {
XcmGeneric::::transact()
}
fn hrmp_new_channel_open_request(
@@ -251,8 +256,16 @@ impl XcmWeightInfo for CoretimeRococoXcmWeight {
fn unpaid_execution(_: &WeightLimit, _: &Option) -> Weight {
XcmGeneric::::unpaid_execution()
}
- fn set_asset_claimer(_location: &Location) -> Weight {
- XcmGeneric::::set_asset_claimer()
+ fn set_hints(hints: &BoundedVec) -> Weight {
+ let mut weight = Weight::zero();
+ for hint in hints {
+ match hint {
+ AssetClaimer { .. } => {
+ weight = weight.saturating_add(XcmGeneric::::asset_claimer());
+ },
+ }
+ }
+ weight
}
fn execute_with_origin(_: &Option, _: &Xcm) -> Weight {
XcmGeneric::::execute_with_origin()
diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
index d207c09ffcd8..cdcba6134bf8 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
+++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
@@ -331,7 +331,7 @@ impl WeightInfo {
// Minimum execution time: 650_000 picoseconds.
Weight::from_parts(673_000, 0)
}
- pub fn set_asset_claimer() -> Weight {
+ pub fn asset_claimer() -> Weight {
// Proof Size summary in bytes:
// Measured: `0`
// Estimated: `0`
diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml b/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml
index 34353d312b1f..44dfbf93c30e 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Westend's Coretime parachain runtime"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs
index f0c03849750a..985e64fb76f9 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs
+++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs
@@ -127,6 +127,12 @@ impl CoretimeInterface for CoretimeAllocator {
use crate::coretime::CoretimeProviderCalls::RequestCoreCount;
let request_core_count_call = RelayRuntimePallets::Coretime(RequestCoreCount(count));
+ // Weight for `request_core_count` from westend benchmarks:
+ // `ref_time` = 7889000 + (3 * 25000000) + (1 * 100000000) = 182889000
+ // `proof_size` = 1636
+ // Add 5% to each component and round to 2 significant figures.
+ let call_weight = Weight::from_parts(190_000_000, 1700);
+
let message = Xcm(vec![
Instruction::UnpaidExecution {
weight_limit: WeightLimit::Unlimited,
@@ -135,6 +141,7 @@ impl CoretimeInterface for CoretimeAllocator {
Instruction::Transact {
origin_kind: OriginKind::Native,
call: request_core_count_call.encode().into(),
+ fallback_max_weight: Some(call_weight),
},
]);
@@ -164,6 +171,7 @@ impl CoretimeInterface for CoretimeAllocator {
Instruction::Transact {
origin_kind: OriginKind::Native,
call: request_revenue_info_at_call.encode().into(),
+ fallback_max_weight: Some(Weight::from_parts(1_000_000_000, 200_000)),
},
]);
@@ -192,6 +200,7 @@ impl CoretimeInterface for CoretimeAllocator {
Instruction::Transact {
origin_kind: OriginKind::Native,
call: credit_account_call.encode().into(),
+ fallback_max_weight: Some(Weight::from_parts(1_000_000_000, 200_000)),
},
]);
@@ -216,6 +225,12 @@ impl CoretimeInterface for CoretimeAllocator {
) {
use crate::coretime::CoretimeProviderCalls::AssignCore;
+ // Weight for `assign_core` from westend benchmarks:
+ // `ref_time` = 10177115 + (1 * 25000000) + (2 * 100000000) + (57600 * 13932) = 937660315
+ // `proof_size` = 3612
+ // Add 5% to each component and round to 2 significant figures.
+ let call_weight = Weight::from_parts(980_000_000, 3800);
+
// The relay chain currently only allows `assign_core` to be called with a complete mask
// and only ever with increasing `begin`. The assignments must be truncated to avoid
// dropping that core's assignment completely.
@@ -256,6 +271,7 @@ impl CoretimeInterface for CoretimeAllocator {
Instruction::Transact {
origin_kind: OriginKind::Native,
call: assign_core_call.encode().into(),
+ fallback_max_weight: Some(call_weight),
},
]);
diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/mod.rs
index 1640baa38c99..29466b3718c1 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/mod.rs
+++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/mod.rs
@@ -21,6 +21,7 @@ use alloc::vec::Vec;
use frame_support::weights::Weight;
use pallet_xcm_benchmarks_fungible::WeightInfo as XcmFungibleWeight;
use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric;
+use sp_runtime::BoundedVec;
use xcm::{
latest::{prelude::*, AssetTransferFilter},
DoubleEncoded,
@@ -83,7 +84,11 @@ impl XcmWeightInfo for CoretimeWestendXcmWeight {
fn transfer_reserve_asset(assets: &Assets, _dest: &Location, _xcm: &Xcm<()>) -> Weight {
assets.weigh_assets(XcmFungibleWeight::::transfer_reserve_asset())
}
- fn transact(_origin_type: &OriginKind, _call: &DoubleEncoded) -> Weight {
+ fn transact(
+ _origin_type: &OriginKind,
+ _fallback_max_weight: &Option,
+ _call: &DoubleEncoded,
+ ) -> Weight {
XcmGeneric::::transact()
}
fn hrmp_new_channel_open_request(
@@ -172,8 +177,16 @@ impl XcmWeightInfo for CoretimeWestendXcmWeight {
fn clear_error() -> Weight {
XcmGeneric::::clear_error()
}
- fn set_asset_claimer(_location: &Location) -> Weight {
- XcmGeneric::::set_asset_claimer()
+ fn set_hints(hints: &BoundedVec) -> Weight {
+ let mut weight = Weight::zero();
+ for hint in hints {
+ match hint {
+ AssetClaimer { .. } => {
+ weight = weight.saturating_add(XcmGeneric::::asset_claimer());
+ },
+ }
+ }
+ weight
}
fn claim_asset(_assets: &Assets, _ticket: &Location) -> Weight {
XcmGeneric::::claim_asset()
diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
index fb6e4631736d..6c6d3cf8c525 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
+++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
@@ -331,7 +331,7 @@ impl WeightInfo {
// Minimum execution time: 624_000 picoseconds.
Weight::from_parts(659_000, 0)
}
- pub fn set_asset_claimer() -> Weight {
+ pub fn asset_claimer() -> Weight {
// Proof Size summary in bytes:
// Measured: `0`
// Estimated: `0`
diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/Cargo.toml b/cumulus/parachains/runtimes/glutton/glutton-westend/Cargo.toml
index 09b4ef679d24..9bbdb8d2ee08 100644
--- a/cumulus/parachains/runtimes/glutton/glutton-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/glutton/glutton-westend/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
license = "Apache-2.0"
description = "Glutton parachain runtime."
+homepage.workspace = true
+repository.workspace = true
[lints]
workspace = true
diff --git a/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml b/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml
index a55143b62071..893133bf3c1a 100644
--- a/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Rococo's People parachain runtime"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[build-dependencies]
substrate-wasm-builder = { optional = true, workspace = true, default-features = true }
diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/mod.rs
index 631cc7b7f0b0..d55198f60a00 100644
--- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/mod.rs
+++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/mod.rs
@@ -21,6 +21,7 @@ use alloc::vec::Vec;
use frame_support::weights::Weight;
use pallet_xcm_benchmarks_fungible::WeightInfo as XcmFungibleWeight;
use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric;
+use sp_runtime::BoundedVec;
use xcm::{
latest::{prelude::*, AssetTransferFilter},
DoubleEncoded,
@@ -83,7 +84,11 @@ impl XcmWeightInfo for PeopleRococoXcmWeight {
fn transfer_reserve_asset(assets: &Assets, _dest: &Location, _xcm: &Xcm<()>) -> Weight {
assets.weigh_assets(XcmFungibleWeight::::transfer_reserve_asset())
}
- fn transact(_origin_type: &OriginKind, _call: &DoubleEncoded) -> Weight {
+ fn transact(
+ _origin_type: &OriginKind,
+ _fallback_max_weight: &Option,
+ _call: &DoubleEncoded,
+ ) -> Weight {
XcmGeneric::::transact()
}
fn hrmp_new_channel_open_request(
@@ -250,8 +255,16 @@ impl XcmWeightInfo for PeopleRococoXcmWeight {
fn unpaid_execution(_: &WeightLimit, _: &Option) -> Weight {
XcmGeneric::::unpaid_execution()
}
- fn set_asset_claimer(_location: &Location) -> Weight {
- XcmGeneric::::set_asset_claimer()
+ fn set_hints(hints: &BoundedVec) -> Weight {
+ let mut weight = Weight::zero();
+ for hint in hints {
+ match hint {
+ AssetClaimer { .. } => {
+ weight = weight.saturating_add(XcmGeneric::::asset_claimer());
+ },
+ }
+ }
+ weight
}
fn execute_with_origin(_: &Option, _: &Xcm) -> Weight {
XcmGeneric::::execute_with_origin()
diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
index 6aac6119e7ec..caa916507348 100644
--- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
+++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
@@ -331,7 +331,7 @@ impl WeightInfo {
// Minimum execution time: 685_000 picoseconds.
Weight::from_parts(757_000, 0)
}
- pub fn set_asset_claimer() -> Weight {
+ pub fn asset_claimer() -> Weight {
// Proof Size summary in bytes:
// Measured: `0`
// Estimated: `0`
diff --git a/cumulus/parachains/runtimes/people/people-westend/Cargo.toml b/cumulus/parachains/runtimes/people/people-westend/Cargo.toml
index 4d66332e96dd..66b324b51af4 100644
--- a/cumulus/parachains/runtimes/people/people-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/people/people-westend/Cargo.toml
@@ -5,6 +5,8 @@ authors.workspace = true
edition.workspace = true
description = "Westend's People parachain runtime"
license = "Apache-2.0"
+homepage.workspace = true
+repository.workspace = true
[build-dependencies]
substrate-wasm-builder = { optional = true, workspace = true, default-features = true }
diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/mod.rs
index 4b51a3ba411b..915a499cb77c 100644
--- a/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/mod.rs
+++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/mod.rs
@@ -21,6 +21,7 @@ use alloc::vec::Vec;
use frame_support::weights::Weight;
use pallet_xcm_benchmarks_fungible::WeightInfo as XcmFungibleWeight;
use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric;
+use sp_runtime::BoundedVec;
use xcm::{
latest::{prelude::*, AssetTransferFilter},
DoubleEncoded,
@@ -83,7 +84,11 @@ impl XcmWeightInfo