diff --git a/.config/zepter.yaml b/.config/zepter.yaml
index 9b3bd9d618c14e41f1dbf420aff3fee1677e2830..7a67ba2695cf697c886b31520431ea0ee33e14c9 100644
--- a/.config/zepter.yaml
+++ b/.config/zepter.yaml
@@ -27,7 +27,7 @@ workflows:
]
# The umbrella crate uses more features, so we to check those too:
check_umbrella:
- - [ $check.0, '--features=serde,experimental,with-tracing,tuples-96,with-tracing', '-p=polkadot-sdk' ]
+ - [ $check.0, '--features=serde,experimental,riscv,runtime,with-tracing,tuples-96,with-tracing', '-p=polkadot-sdk' ]
# Same as `check_*`, but with the `--fix` flag.
default:
- [ $check.0, '--fix' ]
diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
new file mode 120000
index 0000000000000000000000000000000000000000..3dd90d21369289cd6e9172f7afcb78467c6eadc3
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
@@ -0,0 +1 @@
+../../docs/contributor/PULL_REQUEST_TEMPLATE.md
\ No newline at end of file
diff --git a/.github/actions/cargo-check-runtimes/action.yml b/.github/actions/cargo-check-runtimes/action.yml
new file mode 100644
index 0000000000000000000000000000000000000000..869f17661e4a23e3c07256a8f59303c09fec7d9b
--- /dev/null
+++ b/.github/actions/cargo-check-runtimes/action.yml
@@ -0,0 +1,22 @@
+name: 'cargo check runtimes'
+description: 'Runs `cargo check` for every directory in provided root.'
+inputs:
+ root:
+ description: "Root directory. Expected to contain several cargo packages inside."
+ required: true
+runs:
+ using: "composite"
+ steps:
+ - name: Check
+ shell: bash
+ run: |
+ mkdir -p ~/.forklift
+ cp .forklift/config.toml ~/.forklift/config.toml
+ cd ${{ inputs.root }}
+ for directory in $(echo */); do
+ echo "_____Running cargo check for ${directory} ______";
+ cd ${directory};
+ pwd;
+ SKIP_WASM_BUILD=1 forklift cargo check --locked;
+ cd ..;
+ done
diff --git a/.github/commands-readme.md b/.github/commands-readme.md
index bf0e9e5ed20bb3085e6bbe3e59079372121167b1..ce4e0fd0d789c808b9c6981e1eeb565c3404d1b7 100644
--- a/.github/commands-readme.md
+++ b/.github/commands-readme.md
@@ -10,6 +10,8 @@ The current available command actions are:
- [Command FMT](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-fmt.yml)
- [Command Update UI](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-update-ui.yml)
+- [Command Prdoc](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-prdoc.yml)
+- [Command Sync](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-sync.yml)
- [Command Bench](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-bench.yml)
- [Command Bench All](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-bench-all.yml)
- [Command Bench Overhead](https://github.com/paritytech/polkadot-sdk/actions/workflows/command-bench-overhead.yml)
@@ -24,12 +26,36 @@ Each command will have the same two required values, but it could have more.
GitHub's official documentation: [Manually running a workflow](https://docs.github.com/en/actions/using-workflows/manually-running-a-workflow)
+#### Running from CLI
+
+You can use [`gh cli`](https://cli.github.com/) to run the commands too. Refers to the [`gh workflow run`](https://cli.github.com/manual/gh_workflow_run) section from the documentation for more information.
+
### Number of the Pull Request
The number of the pull request. Required so the action can fetch the correct branch and comment if it fails.
## Action configurations
+### FMT
+
+For FMT you only need the PR number.
+
+You can use the following [`gh cli`](https://cli.github.com/) inside the repo:
+
+```bash
+gh workflow run command-fmt.yml -f pr=1000
+```
+
+### Update UI
+
+For Update UI you only need the PR number.
+
+You can use the following [`gh cli`](https://cli.github.com/) inside the repo:
+
+```bash
+gh workflow run command-update-ui.yml -f pr=1000
+```
+
### Bench
Runs `benchmark pallet` or `benchmark overhead` against your PR and commits back updated weights.
@@ -135,6 +161,12 @@ Posible combinations based on the `benchmark` dropdown.
- Requires `Runtime Dir` to be `testing`
- Requires `Target Directory` to be `cumulus`
+You can use the following [`gh cli`](https://cli.github.com/) inside the repo:
+
+```bash
+gh workflow run command-bench.yml -f pr=1000 -f benchmark=polkadot-pallet -f subcommand=pallet -f runtime=rococo -f pallet=pallet_name -f target_dir=polkadot
+```
+
### Bench-all
This is a wrapper to run `bench` for all pallets.
@@ -173,6 +205,12 @@ Posible combinations based on the `benchmark` dropdown.
- `people-westend`
- Requires `Target Directory` to be `cumulus`
+You can use the following [`gh cli`](https://cli.github.com/) inside the repo:
+
+```bash
+gh workflow run command-bench-all.yml -f pr=1000 -f benchmark=pallet -f pallet=pallet_name -f target_dir=polkadot -f runtime=rococo
+```
+
### Bench-overhead
Run benchmarks overhead and commit back results to PR.
@@ -192,6 +230,45 @@ Posible combinations based on the `benchmark` dropdown.
- `asset-hub-westend`
- Requires `Target directory` to be `cumulus`
+You can use the following [`gh cli`](https://cli.github.com/) inside the repo:
+
+```bash
+gh workflow run command-bench-overheard.yml -f pr=1000 -f benchmark=substrate -f runtime=rococo -f target_dir=substrate
+```
+
+### PrDoc
+
+Generate a PrDoc with the crates populated by all modified crates.
+
+Options:
+- `pr`: The PR number to generate the PrDoc for.
+- `audience`: The audience of whom the changes may concern.
+- `bump`: A default bump level for all crates. The PrDoc will likely need to be edited to reflect the actual changes after generation.
+- `overwrite`: Whether to overwrite any existing PrDoc.
+
+### Sync
+
+Run sync and commit back results to PR.
+
+Posible combinations based on the `benchmark` dropdown.
+
+- `chain`
+ - Requires one of the following:
+ - `rococo`
+ - `westend`
+- `sync-type`
+ - Requires one of the following:
+ - `warp`
+ - `full`
+ - `fast`
+ - `fast-unsafe`
+
+You can use the following [`gh cli`](https://cli.github.com/) inside the repo:
+
+```bash
+gh workflow run command-sync.yml -f pr=1000 -f chain=rococo -f sync-type=full
+```
+
## How to modify an action
If you want to modify an action and test it, you can do by simply pushing your changes and then selecting your branch in the `Use worflow from` option.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 3277a6e4607a74b2b59e24fce951e68c8703fcfc..12f81b04d3a1228d3f4533c8e3d34d6935df51c6 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -5,13 +5,17 @@ updates:
directory: '/'
labels: ["A1-insubstantial", "R0-silent"]
schedule:
- interval: daily
+ interval: weekly
+ groups:
+ ci_dependencies:
+ patterns:
+ - "*"
# Update Rust dependencies:
- package-ecosystem: "cargo"
directory: "/"
labels: ["A1-insubstantial", "R0-silent"]
schedule:
- interval: "daily"
+ interval: "weekly"
groups:
# We assume these crates to be semver abiding and can therefore group them together.
known_good_semver:
diff --git a/.github/env b/.github/env
index 162ce8af7c0ddbc1534b7d1ffb09cff4be012fc7..2e4d5b48100dfb3e976270efd155843e907687a8 100644
--- a/.github/env
+++ b/.github/env
@@ -1 +1 @@
-IMAGE="docker.io/paritytech/ci-unified:bullseye-1.77.0-2024-04-10-v20240408"
\ No newline at end of file
+IMAGE="docker.io/paritytech/ci-unified:bullseye-1.77.0-2024-04-10-v202407161507"
diff --git a/.github/scripts/common/lib.sh b/.github/scripts/common/lib.sh
index f844e962c41def7625fa3d45ae3cbf81ecb57147..bfb3120ad9bba1d647ef8719d99ae885cee2dfb7 100755
--- a/.github/scripts/common/lib.sh
+++ b/.github/scripts/common/lib.sh
@@ -315,6 +315,7 @@ function import_gpg_keys() {
) &
done
wait
+ gpg -k $SEC
}
# Check the GPG signature for a given binary
@@ -444,3 +445,28 @@ get_latest_release_tag() {
latest_release_tag=$(curl -s -H "$TOKEN" $api_base/paritytech/polkadot-sdk/releases/latest | jq -r '.tag_name')
printf $latest_release_tag
}
+
+function get_polkadot_node_version_from_code() {
+ # list all the files with node version
+ git grep -e "\(NODE_VERSION[^=]*= \)\".*\"" |
+ # fetch only the one we need
+ grep "primitives/src/lib.rs:" |
+ # Print only the version
+ awk '{ print $7 }' |
+ # Remove the quotes
+ sed 's/"//g' |
+ # Remove the semicolon
+ sed 's/;//g'
+}
+
+validate_stable_tag() {
+ tag="$1"
+ pattern='^stable[0-9]+(-[0-9]+)?$'
+
+ if [[ $tag =~ $pattern ]]; then
+ echo $tag
+ else
+ echo "The input '$tag' does not match the pattern."
+ exit 1
+ fi
+}
diff --git a/.github/scripts/generate-prdoc.py b/.github/scripts/generate-prdoc.py
new file mode 100644
index 0000000000000000000000000000000000000000..b7b2e6f970faa4812bf67a9e1a2fc28b8e75b84d
--- /dev/null
+++ b/.github/scripts/generate-prdoc.py
@@ -0,0 +1,112 @@
+#!/usr/bin/env python3
+
+"""
+Generate the PrDoc for a Pull Request with a specific number, audience and bump level.
+
+It downloads and parses the patch from the GitHub API to opulate the prdoc with all modified crates.
+This will delete any prdoc that already exists for the PR if `--force` is passed.
+
+Usage:
+ python generate-prdoc.py --pr 1234 --audience "TODO" --bump "TODO"
+"""
+
+import argparse
+import os
+import re
+import sys
+import subprocess
+import toml
+import yaml
+import requests
+
+from github import Github
+import whatthepatch
+from cargo_workspace import Workspace
+
+# Download the patch and pass the info into `create_prdoc`.
+def from_pr_number(n, audience, bump, force):
+ print(f"Fetching PR '{n}' from GitHub")
+ g = Github()
+
+ repo = g.get_repo("paritytech/polkadot-sdk")
+ pr = repo.get_pull(n)
+
+ patch_url = pr.patch_url
+ patch = requests.get(patch_url).text
+
+ create_prdoc(n, audience, pr.title, pr.body, patch, bump, force)
+
+def create_prdoc(pr, audience, title, description, patch, bump, force):
+ path = f"prdoc/pr_{pr}.prdoc"
+
+ if os.path.exists(path):
+ if force == True:
+ print(f"Overwriting existing PrDoc for PR {pr}")
+ else:
+ print(f"PrDoc already exists for PR {pr}. Use --force to overwrite.")
+ sys.exit(1)
+ else:
+ print(f"No preexisting PrDoc for PR {pr}")
+
+ prdoc = { "doc": [{}], "crates": [] }
+
+ prdoc["title"] = title
+ prdoc["doc"][0]["audience"] = audience
+ prdoc["doc"][0]["description"] = description
+
+ workspace = Workspace.from_path(".")
+
+ modified_paths = []
+ for diff in whatthepatch.parse_patch(patch):
+ modified_paths.append(diff.header.new_path)
+
+ modified_crates = {}
+ for p in modified_paths:
+ # Go up until we find a Cargo.toml
+ p = os.path.join(workspace.path, p)
+ while not os.path.exists(os.path.join(p, "Cargo.toml")):
+ p = os.path.dirname(p)
+
+ with open(os.path.join(p, "Cargo.toml")) as f:
+ manifest = toml.load(f)
+
+ if not "package" in manifest:
+ print(f"File was not in any crate: {p}")
+ continue
+
+ crate_name = manifest["package"]["name"]
+ if workspace.crate_by_name(crate_name).publish:
+ modified_crates[crate_name] = True
+ else:
+ print(f"Skipping unpublished crate: {crate_name}")
+
+ print(f"Modified crates: {modified_crates.keys()}")
+
+ for crate_name in modified_crates.keys():
+ entry = { "name": crate_name }
+
+ if bump == 'silent' or bump == 'ignore' or bump == 'no change':
+ entry["validate"] = False
+ else:
+ entry["bump"] = bump
+
+ print(f"Adding crate {entry}")
+ prdoc["crates"].append(entry)
+
+ # write the parsed PR documentation back to the file
+ with open(path, "w") as f:
+ yaml.dump(prdoc, f)
+
+def parse_args():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--pr", type=int, required=True)
+ parser.add_argument("--audience", type=str, default="TODO")
+ parser.add_argument("--bump", type=str, default="TODO")
+ parser.add_argument("--force", type=str)
+ return parser.parse_args()
+
+if __name__ == "__main__":
+ args = parse_args()
+ force = True if args.force.lower() == "true" else False
+ print(f"Args: {args}, force: {force}")
+ from_pr_number(args.pr, args.audience, args.bump, force)
diff --git a/.github/scripts/generate-readmes.py b/.github/scripts/generate-readmes.py
new file mode 100755
index 0000000000000000000000000000000000000000..f838eaa29a74daafe9616d779d070aff36891347
--- /dev/null
+++ b/.github/scripts/generate-readmes.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python3
+
+"""
+A script to generate READMEs for all public crates,
+if they do not already have one.
+
+It relies on functions from the `check-workspace.py` script.
+
+The resulting README is based on a template defined below,
+and includes the crate name, description, license,
+and optionally - the SDK release version.
+
+# Example
+
+```sh
+python3 -m pip install toml
+.github/scripts/generate-readmes.py . --sdk-version 1.15.0
+```
+"""
+
+import os
+import toml
+import importlib
+import argparse
+
+check_workspace = importlib.import_module("check-workspace")
+
+README_TEMPLATE = """
+
+
+
+# {name}
+
+This crate is part of the [Polkadot SDK](https://github.com/paritytech/polkadot-sdk/).
+
+
+
+## Description
+
+{description}
+
+## Additional Resources
+
+In order to learn about Polkadot SDK, head over to the [Polkadot SDK Developer Documentation](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/index.html).
+
+To learn about Polkadot, visit [polkadot.com](https://polkadot.com/).
+
+## License
+
+This crate is licensed with {license}.
+"""
+
+VERSION_TEMPLATE = """
+## Version
+
+This version of `{name}` is associated with Polkadot {sdk_version} release.
+"""
+
+
+def generate_readme(member, *, workspace_dir, workspace_license, sdk_version):
+ print(f"Loading manifest for: {member}")
+ manifest = toml.load(os.path.join(workspace_dir, member, "Cargo.toml"))
+ if manifest["package"].get("publish", True) == False:
+ print(f"⏩ Skipping un-published crate: {member}")
+ return
+ if os.path.exists(os.path.join(workspace_dir, member, "README.md")):
+ print(f"⏩ Skipping crate with an existing readme: {member}")
+ return
+ print(f"📝 Generating README for: {member}")
+
+ license = manifest["package"]["license"]
+ if isinstance(license, dict):
+ if not license.get("workspace", False):
+ print(
+ f"❌ License for {member} is unexpectedly declared as workspace=false."
+ )
+ # Skipping this crate as it is not clear what license it should use.
+ return
+ license = workspace_license
+
+ name = manifest["package"]["name"]
+ description = manifest["package"]["description"]
+ description = description + "." if not description.endswith(".") else description
+
+ filled_readme = README_TEMPLATE.format(
+ name=name, description=description, license=license
+ )
+
+ if sdk_version:
+ filled_readme += VERSION_TEMPLATE.format(name=name, sdk_version=sdk_version)
+
+ with open(os.path.join(workspace_dir, member, "README.md"), "w") as new_readme:
+ new_readme.write(filled_readme)
+
+
+def parse_args():
+ parser = argparse.ArgumentParser(
+ description="Generate readmes for published crates."
+ )
+
+ parser.add_argument(
+ "workspace_dir",
+ help="The directory to check",
+ metavar="workspace_dir",
+ type=str,
+ nargs=1,
+ )
+ parser.add_argument(
+ "--sdk-version",
+ help="Optional SDK release version",
+ metavar="sdk_version",
+ type=str,
+ nargs=1,
+ required=False,
+ )
+
+ args = parser.parse_args()
+ return (args.workspace_dir[0], args.sdk_version[0] if args.sdk_version else None)
+
+
+def main():
+ (workspace_dir, sdk_version) = parse_args()
+ root_manifest = toml.load(os.path.join(workspace_dir, "Cargo.toml"))
+ workspace_license = root_manifest["workspace"]["package"]["license"]
+ members = check_workspace.get_members(workspace_dir, [])
+ for member in members:
+ generate_readme(
+ member,
+ workspace_dir=workspace_dir,
+ workspace_license=workspace_license,
+ sdk_version=sdk_version,
+ )
+
+
+if __name__ == "__main__":
+ main()
diff --git a/.github/scripts/update-wishlist-leaderboard.py b/.github/scripts/update-wishlist-leaderboard.py
new file mode 100644
index 0000000000000000000000000000000000000000..82d1085144844f0fc9b46d94f668ba9a153400a3
--- /dev/null
+++ b/.github/scripts/update-wishlist-leaderboard.py
@@ -0,0 +1,79 @@
+from github import Github
+import re
+import os
+from datetime import date
+
+g = Github(os.getenv("GH_TOKEN"))
+
+# Regex pattern to match wish format:
+wish_pattern = re.compile(
+ r"I wish for:? (https://github\.com/([a-zA-Z0-9_.-]+)/([a-zA-Z0-9_.-]+)/(issues|pull)/(\d+))"
+)
+
+wishlist_issue = g.get_repo(os.getenv("WISHLIST_REPOSITORY")).get_issue(
+ int(os.getenv("WISHLIST_ISSUE_NUMBER"))
+)
+new_leaderboard = (
+ "| Feature Request | Summary | Votes | Status |\n| --- | --- | --- | --- |\n"
+)
+wishes = {}
+issue_details = {}
+
+for comment in wishlist_issue.get_comments():
+ # in the comment body, if there is a string `#(\d)`, replace it with
+ # https://github.com/paritytech/polkadot-sdk/issues/(number)
+ updated_body = re.sub(
+ r"#(\d+)", r"https://github.com/paritytech/polkadot-sdk/issues/\1", comment.body
+ )
+
+ matches = wish_pattern.findall(updated_body)
+ for match in matches:
+ url, org, repo_name, _, issue_id = match
+ issue_key = (url, org, repo_name, issue_id)
+ if issue_key not in wishes:
+ wishes[issue_key] = []
+
+ # Get the author and upvoters of the wish comment.
+ wishes[issue_key].append(comment.user.id)
+ wishes[issue_key].extend(
+ [
+ reaction.user.id
+ for reaction in comment.get_reactions()
+ if reaction.content in ["+1", "heart", "rocket"]
+ ]
+ )
+
+ # Get upvoters of the desired issue.
+ desired_issue = g.get_repo(f"{org}/{repo_name}").get_issue(int(issue_id))
+ wishes[issue_key].extend(
+ [
+ reaction.user.id
+ for reaction in desired_issue.get_reactions()
+ if reaction.content in ["+1", "heart", "rocket"]
+ ]
+ )
+ issue_details[url] = [
+ desired_issue.title,
+ "👾 Open" if desired_issue.state == "open" else "✅Closed",
+ ]
+
+# Count unique wishes - the author of the wish, upvoters of the wish, and upvoters of the desired issue.
+for key in wishes:
+ wishes[key] = len(list(set(wishes[key])))
+
+# Sort wishes by count and add to the markdown table
+sorted_wishes = sorted(wishes.items(), key=lambda x: x[1], reverse=True)
+for (url, _, _, _), count in sorted_wishes:
+ [summary, status] = issue_details.get(url, "No summary available")
+ new_leaderboard += f"| {url} | {summary} | {count} | {status} |\n"
+new_leaderboard += f"\n> Last updated: {date.today().strftime('%Y-%m-%d')}\n"
+print(new_leaderboard)
+
+new_content = re.sub(
+ r"(\| Feature Request \|)(.*?)(> Last updated:)(.*?\n)",
+ new_leaderboard,
+ wishlist_issue.body,
+ flags=re.DOTALL,
+)
+
+wishlist_issue.edit(body=new_content)
diff --git a/.github/workflows/check-cargo-check-runtimes.yml b/.github/workflows/check-cargo-check-runtimes.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ebcf6c5fc9bd30b16d4cdfaa3d2fd8f35b9eb3e1
--- /dev/null
+++ b/.github/workflows/check-cargo-check-runtimes.yml
@@ -0,0 +1,136 @@
+name: Check Cargo Check Runtimes
+
+on:
+ pull_request:
+ types: [ opened, synchronize, reopened, ready_for_review, labeled ]
+
+
+# Jobs in this workflow depend on each other, only for limiting peak amount of spawned workers
+
+jobs:
+ # GitHub Actions allows using 'env' in a container context.
+ # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322
+ # This workaround sets the container image for each job using 'set-image' job output.
+ set-image:
+ if: contains(github.event.label.name, 'GHA-migration') || contains(github.event.pull_request.labels.*.name, 'GHA-migration')
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+ check-runtime-assets:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [set-image]
+ timeout-minutes: 20
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/assets
+
+ check-runtime-collectives:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [check-runtime-assets, set-image]
+ timeout-minutes: 20
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/collectives
+
+ check-runtime-coretime:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ needs: [check-runtime-assets, set-image]
+ timeout-minutes: 20
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/coretime
+
+ check-runtime-bridge-hubs:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ needs: [set-image]
+ timeout-minutes: 20
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/bridge-hubs
+
+ check-runtime-contracts:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ needs: [check-runtime-collectives, set-image]
+ timeout-minutes: 20
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/contracts
+
+ check-runtime-starters:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ needs: [check-runtime-assets, set-image]
+ timeout-minutes: 20
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/starters
+
+ check-runtime-testing:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ needs: [check-runtime-starters, set-image]
+ timeout-minutes: 20
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Run cargo check
+ uses: ./.github/actions/cargo-check-runtimes
+ with:
+ root: cumulus/parachains/runtimes/testing
+
+ confirm-required-jobs-passed:
+ runs-on: ubuntu-latest
+ name: All check-runtime-* tests passed
+ # If any new job gets added, be sure to add it to this array
+ needs:
+ - check-runtime-assets
+ - check-runtime-collectives
+ - check-runtime-coretime
+ - check-runtime-bridge-hubs
+ - check-runtime-contracts
+ - check-runtime-starters
+ - check-runtime-testing
+ steps:
+ - run: echo '### Good job! All the tests passed 🚀' >> $GITHUB_STEP_SUMMARY
diff --git a/.github/workflows/check-changed-files.yml b/.github/workflows/check-changed-files.yml
deleted file mode 100644
index 657c05cd047db40af642886eb2710e7324dd40ce..0000000000000000000000000000000000000000
--- a/.github/workflows/check-changed-files.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-# Reusable workflow to perform checks and generate conditions for other workflows.
-# Currently it checks if any Rust (build-related) file is changed
-# and if the current (caller) workflow file is changed.
-# Example:
-#
-# jobs:
-# changes:
-# permissions:
-# pull-requests: read
-# uses: ./.github/workflows/check-changed-files.yml
-# some-job:
-# needs: changes
-# if: ${{ needs.changes.outputs.rust }}
-# .......
-
-name: Check changes files
-
-on:
- workflow_call:
- # Map the workflow outputs to job outputs
- outputs:
- rust:
- value: ${{ jobs.changes.outputs.rust }}
- description: 'true if any of the build-related OR current (caller) workflow files have changed'
- current-workflow:
- value: ${{ jobs.changes.outputs.current-workflow }}
- description: 'true if current (caller) workflow file has changed'
-
-jobs:
- changes:
- runs-on: ubuntu-latest
- permissions:
- pull-requests: read
- outputs:
- # true if current workflow (caller) file is changed
- rust: ${{ steps.filter.outputs.rust == 'true' || steps.filter.outputs.current-workflow == 'true' }}
- current-workflow: ${{ steps.filter.outputs.current-workflow }}
- steps:
- - id: current-file
- run: echo "current-workflow-file=$(echo ${{ github.workflow_ref }} | sed -nE "s/.*(\.github\/workflows\/[a-zA-Z0-9_-]*\.y[a]?ml)@refs.*/\1/p")" >> $GITHUB_OUTPUT
- - run: echo "${{ steps.current-file.outputs.current-workflow-file }}"
- # For pull requests it's not necessary to checkout the code
- - id: filter
- uses: dorny/paths-filter@v3
- with:
- predicate-quantifier: 'every'
- # current-workflow - check if the current (caller) workflow file is changed
- # rust - check if any Rust (build-related) file is changed
- filters: |
- current-workflow:
- - '${{ steps.current-file.outputs.current-workflow-file }}'
- rust:
- - '**/*'
- - '!.github/**/*'
- - '!prdoc/**/*'
- - '!docs/**/*'
- #
\ No newline at end of file
diff --git a/.github/workflows/check-frame-omni-bencher.yml b/.github/workflows/check-frame-omni-bencher.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e9db2d9129797b1707a273122c5edf19542f9381
--- /dev/null
+++ b/.github/workflows/check-frame-omni-bencher.yml
@@ -0,0 +1,85 @@
+name: Short benchmarks (frame-omni-bencher)
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ types: [ opened, synchronize, reopened, ready_for_review, labeled ]
+ merge_group:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+env:
+ ARTIFACTS_NAME: frame-omni-bencher-artifacts
+
+jobs:
+ changes:
+ # TODO: remove once migration is complete or this workflow is fully stable
+ if: contains(github.event.label.name, 'GHA-migration')
+ permissions:
+ pull-requests: read
+ uses: ./.github/workflows/reusable-check-changed-files.yml
+
+ set-image:
+ # GitHub Actions allows using 'env' in a container context.
+ # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322
+ # This workaround sets the container image for each job using 'set-image' job output.
+ runs-on: ubuntu-latest
+ needs: changes
+ if: ${{ needs.changes.outputs.rust }}
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+
+ run-frame-omni-bencher:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [ set-image, changes ] # , build-frame-omni-bencher ]
+ if: ${{ needs.changes.outputs.rust }}
+ timeout-minutes: 30
+ strategy:
+ fail-fast: false # keep running other workflows even if one fails, to see the logs of all possible failures
+ matrix:
+ runtime:
+ [
+ westend-runtime,
+ rococo-runtime,
+ asset-hub-rococo-runtime,
+ asset-hub-westend-runtime,
+ bridge-hub-rococo-runtime,
+ bridge-hub-westend-runtime,
+ collectives-westend-runtime,
+ coretime-rococo-runtime,
+ coretime-westend-runtime,
+ people-rococo-runtime,
+ people-westend-runtime,
+ glutton-westend-runtime,
+ ]
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ env:
+ PACKAGE_NAME: ${{ matrix.runtime }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: script
+ run: |
+ RUNTIME_BLOB_NAME=$(echo $PACKAGE_NAME | sed 's/-/_/g').compact.compressed.wasm
+ RUNTIME_BLOB_PATH=./target/release/wbuild/$PACKAGE_NAME/$RUNTIME_BLOB_NAME
+ forklift cargo build --release --locked -p $PACKAGE_NAME -p frame-omni-bencher --features runtime-benchmarks
+ echo "Running short benchmarking for PACKAGE_NAME=$PACKAGE_NAME and RUNTIME_BLOB_PATH=$RUNTIME_BLOB_PATH"
+ ls -lrt $RUNTIME_BLOB_PATH
+ ./target/release/frame-omni-bencher v1 benchmark pallet --runtime $RUNTIME_BLOB_PATH --all --steps 2 --repeat 1
+ confirm-frame-omni-benchers-passed:
+ runs-on: ubuntu-latest
+ name: All benchmarks passed
+ needs: run-frame-omni-bencher
+ steps:
+ - run: echo '### Good job! All the benchmarks passed 🚀' >> $GITHUB_STEP_SUMMARY
diff --git a/.github/workflows/check-licenses.yml b/.github/workflows/check-licenses.yml
index 3bc95305f7467ebbede90526eadb156b89b1e7f9..a74986048976ecc0974285da3f14a9f8ee2b683d 100644
--- a/.github/workflows/check-licenses.yml
+++ b/.github/workflows/check-licenses.yml
@@ -16,8 +16,8 @@ jobs:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout sources
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- - uses: actions/setup-node@v4.0.1
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - uses: actions/setup-node@v4.0.3
with:
node-version: "18.x"
registry-url: "https://npm.pkg.github.com"
diff --git a/.github/workflows/check-links.yml b/.github/workflows/check-links.yml
index 58065f369c9cf160b0b94c233df9df1016426d07..d10f34e6faef4012b6348b20400f5c304f317df4 100644
--- a/.github/workflows/check-links.yml
+++ b/.github/workflows/check-links.yml
@@ -18,17 +18,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Restore lychee cache
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3.3.2 (7. Sep 2023)
+ uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v3.3.2 (7. Sep 2023)
with:
path: .lycheecache
key: cache-lychee-${{ github.sha }}
# This should restore from the most recent one:
restore-keys: cache-lychee-
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.0 (22. Sep 2023)
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.0 (22. Sep 2023)
- name: Lychee link checker
- uses: lycheeverse/lychee-action@c3089c702fbb949e3f7a8122be0c33c017904f9b # for v1.9.1 (10. Jan 2024)
+ uses: lycheeverse/lychee-action@2b973e86fc7b1f6b36a93795fe2c9c6ae1118621 # for v1.9.1 (10. Jan 2024)
with:
args: >-
--config .config/lychee.toml
diff --git a/.github/workflows/check-prdoc.yml b/.github/workflows/check-prdoc.yml
index 5df03f1044d88a7bcf9369c054235747f9f049b1..69311c41dd6f11800b7a0c23e9f7ab8416e80178 100644
--- a/.github/workflows/check-prdoc.yml
+++ b/.github/workflows/check-prdoc.yml
@@ -20,7 +20,7 @@ jobs:
if: github.event.pull_request.number != ''
steps:
- name: Checkout repo
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7
# we cannot show the version in this step (ie before checking out the repo)
# due to https://github.com/paritytech/prdoc/issues/15
- name: Check if PRdoc is required
diff --git a/.github/workflows/check-runtime-migration.yml b/.github/workflows/check-runtime-migration.yml
index 33da5a8ecd591535eb0d4fe8b63cd8801699e988..9b7a6fafcd1545bb441a8ca593a32471340c9208 100644
--- a/.github/workflows/check-runtime-migration.yml
+++ b/.github/workflows/check-runtime-migration.yml
@@ -6,7 +6,12 @@ on:
- master
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
+ # Take a snapshot at 5am when most SDK devs are not working.
+ schedule:
+ - cron: '0 5 * * *'
merge_group:
+ workflow_dispatch:
+
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
@@ -27,7 +32,9 @@ jobs:
# rococo and westend are disabled for now (no access to parity-chains.parity.io)
check-runtime-migration:
runs-on: arc-runners-polkadot-sdk-beefy
- timeout-minutes: 40
+ # We need to set this to rather long to allow the snapshot to be created, but the average time
+ # should be much lower.
+ timeout-minutes: 60
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.IMAGE }}
@@ -94,22 +101,45 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- - name: script
- run: |
- echo "Running ${{ matrix.network }} runtime migration check"
- export RUST_LOG=remote-ext=debug,runtime=debug
- echo "---------- Downloading try-runtime CLI ----------"
- curl -sL https://github.com/paritytech/try-runtime-cli/releases/download/v0.5.4/try-runtime-x86_64-unknown-linux-musl -o try-runtime
+ - name: Download CLI
+ run: |
+ curl -sL https://github.com/paritytech/try-runtime-cli/releases/download/v0.7.0/try-runtime-x86_64-unknown-linux-musl -o try-runtime
chmod +x ./try-runtime
echo "Using try-runtime-cli version:"
./try-runtime --version
+ - name: Get Date
+ id: get-date
+ run: |
+ echo "today=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT
+ shell: bash
+
+ - name: Download Snapshot
+ uses: actions/cache@v4
+ with:
+ path: snapshot.raw
+ key: try-runtime-snapshot-${{ matrix.network }}-${{ steps.get-date.outputs.today }}
+ save-always: true
+
+ - name: Create Snapshot If Stale
+ if: ${{ hashFiles('snapshot.raw') == '' }}
+ run: |
+ echo "Creating new snapshot for today (${{ steps.get-date.outputs.today }})"
+ ./try-runtime create-snapshot --uri ${{ matrix.uri }} snapshot.raw
+
+ - name: Build Runtime
+ run: |
echo "---------- Building ${{ matrix.package }} runtime ----------"
- time forklift cargo build --release --locked -p ${{ matrix.package }} --features try-runtime
+ time forklift cargo build --release --locked -p ${{ matrix.package }} --features try-runtime -q
+
+ - name: Run Check
+ run: |
+ echo "Running ${{ matrix.network }} runtime migration check"
+ export RUST_LOG=remote-ext=debug,runtime=debug
echo "---------- Executing on-runtime-upgrade for ${{ matrix.network }} ----------"
time ./try-runtime ${{ matrix.command_extra_args }} \
--runtime ./target/release/wbuild/${{ matrix.package }}/${{ matrix.wasm }} \
- on-runtime-upgrade --disable-spec-version-check --checks=all ${{ matrix.subcommand_extra_args }} live --uri ${{ matrix.uri }}
+ on-runtime-upgrade --disable-spec-version-check --checks=all ${{ matrix.subcommand_extra_args }} snap -p snapshot.raw
sleep 5
diff --git a/.github/workflows/check-semver.yml b/.github/workflows/check-semver.yml
index 47f9e5061b4aec5be38937351ae072bd58f84f37..d9d918b44a23d705835615a23c1f25296a34bd4c 100644
--- a/.github/workflows/check-semver.yml
+++ b/.github/workflows/check-semver.yml
@@ -3,10 +3,15 @@ name: Check semver
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
- paths:
- - prdoc/*.prdoc
+ workflow_dispatch:
+
+concurrency:
+ group: check-semver-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
env:
- TOOLCHAIN: nightly-2024-03-01
+ TOOLCHAIN: nightly-2024-06-01
+
jobs:
check-semver:
@@ -14,34 +19,71 @@ jobs:
container:
image: docker.io/paritytech/ci-unified:bullseye-1.77.0-2024-04-10-v20240408
steps:
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+
+ - name: extra git setup
+ env:
+ BASE: ${{ github.event.pull_request.base.sha }}
+ run: |
+ git config --global --add safe.directory '*'
+ git fetch --no-tags --no-recurse-submodules --depth=1 origin $BASE
+ git branch old $BASE
+
+ - name: Comment If Backport
+ if: ${{ startsWith(github.event.pull_request.base.ref, 'stable') }}
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PR: ${{ github.event.pull_request.number }}
+ run: |
+ echo "This is a backport into stable."
+
+ wget -q https://github.com/cli/cli/releases/download/v2.51.0/gh_2.51.0_linux_amd64.tar.gz -O gh.tar.gz && \
+ tar -xzf gh.tar.gz && mv gh_2.51.0_linux_amd64/bin/gh /usr/local/bin/gh && rm gh.tar.gz
+ chmod +x /usr/local/bin/gh
+
+ cat > msg.txt <Emergency Bypass
+
+
+ If you really need to bypass this check: add validate: false
to each crate
+ in the Prdoc where a breaking change is introduced. This will release a new major
+ version of that crate and all its reverse dependencies and basically break the release.
+
+
+
+ EOF
+ gh issue comment $PR --edit-last -F msg.txt || gh issue comment $PR -F msg.txt
+
+ echo "PRDOC_EXTRA_ARGS=--max-bump minor" >> $GITHUB_ENV
- name: Rust Cache
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
with:
cache-on-failure: true
- - name: install parity-publish
- run: cargo install parity-publish@0.6.0
-
- name: Rust compilation prerequisites
run: |
rustup default $TOOLCHAIN
- rustup target add wasm32-unknown-unknown --toolchain $TOOLCHAIN
rustup component add rust-src --toolchain $TOOLCHAIN
- - name: extra git setup
- run: |
- git config --global --add safe.directory '*'
- git fetch --no-tags --no-recurse-submodules --depth=1 origin master
- git branch old origin/master
+ - name: install parity-publish
+ # Set the target dir to cache the build.
+ run: CARGO_TARGET_DIR=./target/ cargo install parity-publish@0.8.0 -q
- name: check semver
run: |
export CARGO_TARGET_DIR=target
export RUSTFLAGS='-A warnings -A missing_docs'
export SKIP_WASM_BUILD=1
- if ! parity-publish --color always prdoc --since old --validate prdoc/pr_$PR.prdoc -v --toolchain $TOOLCHAIN; then
+
+ if ! parity-publish --color always prdoc --since old --validate prdoc/pr_$PR.prdoc $PRDOC_EXTRA_ARGS -v --toolchain $TOOLCHAIN; then
+
cat <> $GITHUB_OUTPUT
fmt:
runs-on: ubuntu-latest
- timeout-minutes: 10
+ timeout-minutes: 20
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.IMAGE }}
steps:
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Cargo fmt
run: cargo +nightly fmt --all -- --check
check-dependency-rules:
runs-on: ubuntu-latest
- timeout-minutes: 10
+ timeout-minutes: 20
steps:
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: check dependency rules
run: |
cd substrate/
../.gitlab/ensure-deps.sh
check-rust-feature-propagation:
runs-on: ubuntu-latest
- timeout-minutes: 10
+ timeout-minutes: 20
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.IMAGE }}
steps:
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: fetch deps
run: |
# Pull all dependencies eagerly:
@@ -65,31 +65,31 @@ jobs:
time zepter run check
test-rust-features:
runs-on: ubuntu-latest
- timeout-minutes: 10
+ timeout-minutes: 20
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.IMAGE }}
steps:
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: run rust features
run: bash .gitlab/rust-features.sh .
check-toml-format:
runs-on: ubuntu-latest
- timeout-minutes: 10
+ timeout-minutes: 20
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.IMAGE }}
steps:
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: check toml format
run: |
taplo format --check --config .config/taplo.toml
echo "Please run `taplo format --config .config/taplo.toml` to fix any toml formatting issues"
check-workspace:
runs-on: ubuntu-latest
- timeout-minutes: 10
+ timeout-minutes: 20
steps:
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.0 (22. Sep 2023)
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.0 (22. Sep 2023)
- name: install python deps
run: |
sudo apt-get update && sudo apt-get install -y python3-pip python3
@@ -100,16 +100,18 @@ 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 .
check-markdown:
runs-on: ubuntu-latest
- timeout-minutes: 10
+ timeout-minutes: 20
steps:
- name: Checkout sources
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Setup Node.js
- uses: actions/setup-node@v4.0.1
+ uses: actions/setup-node@v4.0.3
with:
node-version: "18.x"
registry-url: "https://npm.pkg.github.com"
@@ -127,12 +129,12 @@ jobs:
markdownlint --config "$CONFIG" --ignore target .
check-umbrella:
runs-on: ubuntu-latest
- timeout-minutes: 10
+ timeout-minutes: 20
needs: [set-image]
container:
image: ${{ needs.set-image.outputs.IMAGE }}
steps:
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.0 (22. Sep 2023)
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.0 (22. Sep 2023)
- name: install python deps
run: pip3 install "cargo-workspace>=1.2.4" toml
- name: check umbrella correctness
@@ -154,3 +156,28 @@ jobs:
git diff
exit 1
fi
+ check-fail-ci:
+ runs-on: ubuntu-latest
+ container:
+ # there's no "rg" in ci-unified, and tools is a smaller image anyway
+ image: "paritytech/tools:latest"
+ # paritytech/tools uses "nonroot" user by default, which doesn't have enough
+ # permissions to create GHA context
+ options: --user root
+ steps:
+ - name: Fetch latest code
+ uses: actions/checkout@v4
+ - name: Check
+ run: |
+ set +e
+ rg --line-number --hidden --type rust --glob '!{.git,target}' "$ASSERT_REGEX" .; exit_status=$?
+ if [ $exit_status -eq 0 ]; then
+ echo "$ASSERT_REGEX was found, exiting with 1";
+ exit 1;
+ else
+ echo "No $ASSERT_REGEX was found, exiting with 0";
+ exit 0;
+ fi
+ env:
+ ASSERT_REGEX: "FAIL-CI"
+ GIT_DEPTH: 1
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
new file mode 100644
index 0000000000000000000000000000000000000000..054c7d786ca979977e92ecc79ac58895374c2aba
--- /dev/null
+++ b/.github/workflows/checks.yml
@@ -0,0 +1,90 @@
+name: checks
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ types: [opened, synchronize, reopened, ready_for_review, labeled]
+ merge_group:
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+permissions: {}
+
+jobs:
+ changes:
+ # TODO: remove once migration is complete or this workflow is fully stable
+ if: contains(github.event.label.name, 'GHA-migration')
+ permissions:
+ pull-requests: read
+ uses: ./.github/workflows/reusable-check-changed-files.yml
+ set-image:
+ # GitHub Actions allows using 'env' in a container context.
+ # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322
+ # This workaround sets the container image for each job using 'set-image' job output.
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+ cargo-clippy:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [set-image, changes] # , build-frame-omni-bencher ]
+ if: ${{ needs.changes.outputs.rust }}
+ timeout-minutes: 40
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ env:
+ RUSTFLAGS: "-D warnings"
+ SKIP_WASM_BUILD: 1
+ steps:
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - name: script
+ run: |
+ forklift cargo clippy --all-targets --locked --workspace
+ forklift cargo clippy --all-targets --all-features --locked --workspace
+ check-try-runtime:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [set-image, changes] # , build-frame-omni-bencher ]
+ if: ${{ needs.changes.outputs.rust }}
+ timeout-minutes: 40
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ steps:
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - name: script
+ run: |
+ forklift cargo check --locked --all --features try-runtime
+ # this is taken from cumulus
+ # Check that parachain-template will compile with `try-runtime` feature flag.
+ forklift cargo check --locked -p parachain-template-node --features try-runtime
+ # add after https://github.com/paritytech/substrate/pull/14502 is merged
+ # experimental code may rely on try-runtime and vice-versa
+ forklift cargo check --locked --all --features try-runtime,experimental
+ # check-core-crypto-features works fast without forklift
+ check-core-crypto-features:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [set-image, changes] # , build-frame-omni-bencher ]
+ if: ${{ needs.changes.outputs.rust }}
+ timeout-minutes: 30
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ steps:
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - name: script
+ run: |
+ cd substrate/primitives/core
+ ./check-features-variants.sh
+ cd -
+ cd substrate/primitives/application-crypto
+ ./check-features-variants.sh
+ cd -
+ cd substrate/primitives/keyring
+ ./check-features-variants.sh
+ cd -
diff --git a/.github/workflows/command-bench-all.yml b/.github/workflows/command-bench-all.yml
index b3fa0868c48797775c0ef8eff67e3acbd7f6facd..4128f86fb7c82f76e658fd39fad3365395a244e2 100644
--- a/.github/workflows/command-bench-all.yml
+++ b/.github/workflows/command-bench-all.yml
@@ -1,7 +1,7 @@
name: Command Bench All
-on:
- workflow_dispatch:
+on:
+ workflow_dispatch:
inputs:
pr:
description: Number of the Pull Request
@@ -51,9 +51,8 @@ on:
- people-rococo
- people-westend
-
jobs:
- set-image:
+ set-image:
runs-on: ubuntu-latest
outputs:
IMAGE: ${{ steps.set_image.outputs.IMAGE }}
@@ -64,9 +63,12 @@ jobs:
run: cat .github/env >> $GITHUB_OUTPUT
cmd-bench-all:
needs: [set-image]
- runs-on: arc-runners-polkadot-sdk-benchmark
+ runs-on: arc-runners-polkadot-sdk-weights
container:
image: ${{ needs.set-image.outputs.IMAGE }}
+ permissions:
+ contents: write
+ pull-requests: write
steps:
- name: Download repo
uses: actions/checkout@v4
diff --git a/.github/workflows/command-bench-overhead.yml b/.github/workflows/command-bench-overhead.yml
index 735b401021061c3dde3dd065a12d9f6f538b8c93..fec8d37bb9ef80505c9569da08071ccee7275067 100644
--- a/.github/workflows/command-bench-overhead.yml
+++ b/.github/workflows/command-bench-overhead.yml
@@ -1,7 +1,7 @@
name: Command Bench Overhead
-on:
- workflow_dispatch:
+on:
+ workflow_dispatch:
inputs:
pr:
description: Number of the Pull Request
@@ -31,7 +31,7 @@ on:
- cumulus
jobs:
- set-image:
+ set-image:
runs-on: ubuntu-latest
outputs:
IMAGE: ${{ steps.set_image.outputs.IMAGE }}
@@ -45,6 +45,9 @@ jobs:
runs-on: arc-runners-polkadot-sdk-benchmark
container:
image: ${{ needs.set-image.outputs.IMAGE }}
+ permissions:
+ contents: write
+ pull-requests: write
steps:
- name: Download repo
uses: actions/checkout@v4
diff --git a/.github/workflows/command-bench.yml b/.github/workflows/command-bench.yml
index 0ff166be48c193aa00e858b3bf7138b856487e24..ac879f443755c65948c51f592dacc39ceb8f5c25 100644
--- a/.github/workflows/command-bench.yml
+++ b/.github/workflows/command-bench.yml
@@ -1,7 +1,7 @@
name: Command Bench
-on:
- workflow_dispatch:
+on:
+ workflow_dispatch:
inputs:
pr:
description: Number of the Pull Request
@@ -76,9 +76,8 @@ on:
- starters
- testing
-
jobs:
- set-image:
+ set-image:
runs-on: ubuntu-latest
outputs:
IMAGE: ${{ steps.set_image.outputs.IMAGE }}
@@ -92,6 +91,9 @@ jobs:
runs-on: arc-runners-polkadot-sdk-benchmark
container:
image: ${{ needs.set-image.outputs.IMAGE }}
+ permissions:
+ contents: write
+ pull-requests: write
steps:
- name: Download repo
uses: actions/checkout@v4
diff --git a/.github/workflows/command-fmt.yml b/.github/workflows/command-fmt.yml
index d415007d938390ded98a95f5f5c8ecc61fb0dc84..fc37a17ac549b06e6850ea8a209ec4b27db8fb3f 100644
--- a/.github/workflows/command-fmt.yml
+++ b/.github/workflows/command-fmt.yml
@@ -1,14 +1,14 @@
name: Command FMT
-on:
- workflow_dispatch:
+on:
+ workflow_dispatch:
inputs:
pr:
description: Number of the Pull Request
required: true
jobs:
- set-image:
+ set-image:
runs-on: ubuntu-latest
outputs:
IMAGE: ${{ steps.set_image.outputs.IMAGE }}
@@ -20,8 +20,12 @@ jobs:
cmd-fmt:
needs: [set-image]
runs-on: ubuntu-latest
+ timeout-minutes: 20
container:
image: ${{ needs.set-image.outputs.IMAGE }}
+ permissions:
+ contents: write
+ pull-requests: write
steps:
- name: Download repo
uses: actions/checkout@v4
@@ -33,6 +37,13 @@ jobs:
GH_TOKEN: ${{ github.token }}
- name: Run FMT
run: |
+ cargo --version
+ rustc --version
+ cargo +nightly --version
+ rustc +nightly --version
+
+ cargo +nightly fmt
+
# format toml.
# since paritytech/ci-unified:bullseye-1.73.0-2023-11-01-v20231204 includes taplo-cli
taplo format --config .config/taplo.toml
diff --git a/.github/workflows/command-inform.yml b/.github/workflows/command-inform.yml
index 1c7323c998dfee3ba822f4bcb655c57a958fd80f..afdcf4c1b7b9073762bfec0f0760137b3dba4506 100644
--- a/.github/workflows/command-inform.yml
+++ b/.github/workflows/command-inform.yml
@@ -7,9 +7,16 @@ on:
jobs:
comment:
runs-on: ubuntu-latest
+ # Temporary disable the bot until the new command bot works properly
+ if: github.event.issue.pull_request && startsWith(github.event.comment.body, 'bot ') && false
steps:
- name: Inform that the new command exist
- if: ${{ github.event.issue.pull_request && startsWith(github.event.comment.body, 'bot ') }}
- run: gh pr comment ${{ github.event.issue.number }} --body 'We are migrating this bot to be a GitHub Action Please, see the documentation on how to use it '
- env:
- GH_TOKEN: ${{ github.token }}
+ uses: actions/github-script@v7
+ with:
+ script: |
+ github.rest.issues.createComment({
+ issue_number: context.issue.number,
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ body: 'We are migrating the command bot to be a GitHub Action Please, see the documentation on how to use it '
+ })
diff --git a/.github/workflows/command-prdoc.yml b/.github/workflows/command-prdoc.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3a08b9a5fb286a7757715ac37006cf093b2b8b15
--- /dev/null
+++ b/.github/workflows/command-prdoc.yml
@@ -0,0 +1,90 @@
+name: Command PrDoc
+
+on:
+ workflow_dispatch:
+ inputs:
+ pr:
+ type: number
+ description: Number of the Pull Request
+ required: true
+ bump:
+ type: choice
+ description: Default bump level for all crates
+ default: "TODO"
+ required: true
+ options:
+ - "TODO"
+ - "no change"
+ - "patch"
+ - "minor"
+ - "major"
+ audience:
+ type: choice
+ description: Audience of the PrDoc
+ default: "TODO"
+ required: true
+ options:
+ - "TODO"
+ - "Runtime Dev"
+ - "Runtime User"
+ - "Node Dev"
+ - "Node User"
+ overwrite:
+ type: choice
+ description: Overwrite existing PrDoc
+ default: "true"
+ required: true
+ options:
+ - "true"
+ - "false"
+
+concurrency:
+ group: command-prdoc
+ cancel-in-progress: true
+
+jobs:
+ set-image:
+ runs-on: ubuntu-latest
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+ cmd-prdoc:
+ needs: [set-image]
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ permissions:
+ contents: write
+ pull-requests: write
+ steps:
+ - name: Download repo
+ uses: actions/checkout@v4
+ - name: Install gh cli
+ id: gh
+ uses: ./.github/actions/set-up-gh
+ with:
+ pr-number: ${{ inputs.pr }}
+ GH_TOKEN: ${{ github.token }}
+ - name: Generate PrDoc
+ run: |
+ python3 -m pip install -q cargo-workspace PyGithub whatthepatch pyyaml toml
+
+ python3 .github/scripts/generate-prdoc.py --pr "${{ inputs.pr }}" --bump "${{ inputs.bump }}" --audience "${{ inputs.audience }}" --force "${{ inputs.overwrite }}"
+
+ - name: Report failure
+ if: ${{ failure() }}
+ run: gh pr comment ${{ inputs.pr }} --body "Command failed ❌ Run by @${{ github.actor }} for ${{ github.workflow }}
failed. See logs here ."
+ env:
+ RUN: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
+ GH_TOKEN: ${{ github.token }}
+ - name: Push Commit
+ uses: stefanzweifel/git-auto-commit-action@v5
+ with:
+ commit_message: Add PrDoc (auto generated)
+ branch: ${{ steps.gh.outputs.branch }}
+ file_pattern: 'prdoc/*.prdoc'
diff --git a/.github/workflows/command-sync.yml b/.github/workflows/command-sync.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c610f4066a873e3fe7304bebd2f4b866fe837a91
--- /dev/null
+++ b/.github/workflows/command-sync.yml
@@ -0,0 +1,71 @@
+name: Command Sync
+
+on:
+ workflow_dispatch:
+ inputs:
+ pr:
+ description: Number of the Pull Request
+ required: true
+ chain:
+ description: Chain
+ type: choice
+ required: true
+ options:
+ - westend
+ - rococo
+ sync-type:
+ description: Sync type
+ type: choice
+ required: true
+ options:
+ - warp
+ - full
+ - fast
+ - fast-unsafe
+
+jobs:
+ set-image:
+ runs-on: ubuntu-latest
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+ cmd-sync:
+ needs: [set-image]
+ runs-on: arc-runners-polkadot-sdk-warpsync
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ permissions:
+ contents: write
+ pull-requests: write
+ steps:
+ - name: Download repo
+ uses: actions/checkout@v4
+ - name: Install gh cli
+ id: gh
+ uses: ./.github/actions/set-up-gh
+ with:
+ pr-number: ${{ inputs.pr }}
+ GH_TOKEN: ${{ github.token }}
+ - name: Run sync
+ run: |
+ "./scripts/sync.sh" --chain "${{ inputs.chain }}" --type "${{ inputs.sync-type }}"
+ - name: Report failure
+ if: ${{ failure() }}
+ run: gh pr comment ${{ inputs.pr }} --body "Command failed ❌ Run by @${{ github.actor }} for ${{ github.workflow }}
failed. See logs here ."
+ env:
+ RUN: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
+ GH_TOKEN: ${{ github.token }}
+ - run: git pull --rebase
+ - uses: stefanzweifel/git-auto-commit-action@v5
+ with:
+ commit_message: cmd-action - ${{ github.workflow }}
+ branch: ${{ steps.gh.outputs.branch }}
+ - name: Report succeed
+ run: gh pr comment ${{ inputs.pr }} --body "Action completed 🎉🎉 Run by @${{ github.actor }} for ${{ github.workflow }}
completed 🎉. See logs here ."
+ env:
+ RUN: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
+ GH_TOKEN: ${{ github.token }}
diff --git a/.github/workflows/command-update-ui.yml b/.github/workflows/command-update-ui.yml
index 9b9c45c5c0b9d78f0287b8d00314e0c58fff0c69..860177adc8790c28f7cd5873f4f8e0adf24a044f 100644
--- a/.github/workflows/command-update-ui.yml
+++ b/.github/workflows/command-update-ui.yml
@@ -1,7 +1,7 @@
name: Command Update UI
-on:
- workflow_dispatch:
+on:
+ workflow_dispatch:
inputs:
pr:
description: Number of the Pull Request
@@ -11,7 +11,7 @@ on:
required: false
jobs:
- set-image:
+ set-image:
runs-on: ubuntu-latest
outputs:
IMAGE: ${{ steps.set_image.outputs.IMAGE }}
@@ -23,8 +23,12 @@ jobs:
cmd-update-ui:
needs: [set-image]
runs-on: arc-runners-polkadot-sdk-beefy
+ timeout-minutes: 90
container:
image: ${{ needs.set-image.outputs.IMAGE }}
+ permissions:
+ contents: write
+ pull-requests: write
steps:
- name: Download repo
uses: actions/checkout@v4
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 0000000000000000000000000000000000000000..523c2b19ba892a760cb553fa9b33fccb6597bc68
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,141 @@
+name: Docs
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ types: [opened, synchronize, reopened, ready_for_review, labeled]
+ merge_group:
+
+concurrency:
+ group: ${{ github.ref }}
+ cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
+
+jobs:
+ set-image:
+ # GitHub Actions allows using 'env' in a container context.
+ # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322
+ # This workaround sets the container image for each job using 'set-image' job output.
+ # TODO: remove once migration is complete or this workflow is fully stable
+ if: contains(github.event.label.name, 'GHA-migration') || contains(github.event.pull_request.labels.*.name, 'GHA-migration')
+ runs-on: ubuntu-latest
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+ test-rustdoc:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [set-image]
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ steps:
+ - uses: actions/checkout@v4
+ - run: forklift cargo doc --workspace --all-features --no-deps
+ env:
+ SKIP_WASM_BUILD: 1
+ test-doc:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [set-image]
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ steps:
+ - uses: actions/checkout@v4
+ - run: forklift cargo test --doc --workspace
+ env:
+ RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
+
+ build-rustdoc:
+ runs-on: arc-runners-polkadot-sdk-beefy
+ needs: [set-image, test-rustdoc]
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ steps:
+ - uses: actions/checkout@v4
+ - run: forklift cargo doc --all-features --workspace --no-deps
+ env:
+ SKIP_WASM_BUILD: 1
+ RUSTDOCFLAGS: "-Dwarnings --default-theme=ayu --html-in-header ./docs/sdk/assets/header.html --extend-css ./docs/sdk/assets/theme.css --html-after-content ./docs/sdk/assets/after-content.html"
+ - run: rm -f ./target/doc/.lock
+ - run: mv ./target/doc ./crate-docs
+ - name: Inject Simple Analytics script
+ run: |
+ script_content=" "
+ docs_dir="./crate-docs"
+
+ inject_simple_analytics() {
+ find "$1" -name '*.html' | xargs -I {} -P "$(nproc)" bash -c 'file="{}"; echo "Adding Simple Analytics script to $file"; sed -i "s||'"$2"'|" "$file";'
+ }
+
+ inject_simple_analytics "$docs_dir" "$script_content"
+ - run: echo " " > ./crate-docs/index.html
+ - uses: actions/upload-artifact@v4
+ with:
+ name: ${{ github.sha }}-doc
+ path: ./crate-docs/
+ retention-days: 1
+ if-no-files-found: error
+
+ build-implementers-guide:
+ runs-on: ubuntu-latest
+ container:
+ image: paritytech/mdbook-utils:e14aae4a-20221123
+ options: --user root
+ steps:
+ - uses: actions/checkout@v4
+ - run: mdbook build ./polkadot/roadmap/implementers-guide
+ - run: mkdir -p artifacts
+ - run: mv polkadot/roadmap/implementers-guide/book artifacts/
+ - uses: actions/upload-artifact@v4
+ with:
+ name: ${{ github.sha }}-guide
+ path: ./artifacts/
+ retention-days: 1
+ if-no-files-found: error
+
+ publish-rustdoc:
+ if: github.ref == 'refs/heads/master'
+ runs-on: ubuntu-latest
+ environment: subsystem-benchmarks
+ needs: [build-rustdoc, build-implementers-guide]
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ ref: gh-pages
+ - uses: actions/create-github-app-token@v1
+ id: app-token
+ with:
+ app-id: ${{ secrets.POLKADOTSDK_GHPAGES_APP_ID }}
+ private-key: ${{ secrets.POLKADOTSDK_GHPAGES_APP_KEY }}
+ - name: Ensure destination dir does not exist
+ run: |
+ rm -rf book/
+ rm -rf ${REF_NAME}
+ env:
+ REF_NAME: ${{ github.head_ref || github.ref_name }}
+ - name: Download rustdocs
+ uses: actions/download-artifact@v4
+ with:
+ name: ${{ github.sha }}-doc
+ path: ${{ github.head_ref || github.ref_name }}
+ - name: Download guide
+ uses: actions/download-artifact@v4
+ with:
+ name: ${{ github.sha }}-guide
+ path: /tmp
+ - run: mkdir -p book
+ - name: Move book files
+ run: mv /tmp/book/html/* book/
+ - name: Push to GH-Pages branch
+ uses: github-actions-x/commit@v2.9
+ with:
+ github-token: ${{ steps.app-token.outputs.token }}
+ push-branch: "gh-pages"
+ commit-message: "___Updated docs for ${{ github.head_ref || github.ref_name }}___"
+ force-add: "true"
+ files: ${{ github.head_ref || github.ref_name }}/ book/
+ name: devops-parity
+ email: devops-team@parity.io
diff --git a/.github/workflows/fork-sync-action.yml b/.github/workflows/fork-sync-action.yml
new file mode 100644
index 0000000000000000000000000000000000000000..69e9e93bf54b023330232c0fe5df0430832a6e2b
--- /dev/null
+++ b/.github/workflows/fork-sync-action.yml
@@ -0,0 +1,20 @@
+# This Workflow is not supposed to run in the paritytech/polkadot-sdk repo.
+# This Workflow is supposed to run only in the forks of the repo,
+# paritytech-release/polkadot-sdk specifically,
+# to automatically maintain the critical fork synced with the upstream.
+# This Workflow should be always disabled in the paritytech/polkadot-sdk repo.
+
+name: Sync the forked repo with the upstream
+on:
+ schedule:
+ - cron: "0 0/4 * * *"
+ workflow_dispatch:
+
+jobs:
+ job_sync_branches:
+ uses: paritytech-release/sync-workflows/.github/workflows/sync-with-upstream.yml@latest
+ with:
+ fork_writer_app_id: ${{ vars.UPSTREAM_CONTENT_SYNC_APP_ID}}
+ fork_owner: ${{ vars.RELEASE_ORG}}
+ secrets:
+ fork_writer_app_key: ${{ secrets.UPSTREAM_CONTENT_SYNC_APP_KEY }}
diff --git a/.github/workflows/misc-sync-templates.yml b/.github/workflows/misc-sync-templates.yml
index d8027014863936ffd6c6a217f282dfa45bc2edd7..c06beb5e98eb7772f8f364c3a8a4121d40b7e522 100644
--- a/.github/workflows/misc-sync-templates.yml
+++ b/.github/workflows/misc-sync-templates.yml
@@ -18,11 +18,10 @@ on:
# A manual dispatch for now - automatic on releases later.
workflow_dispatch:
inputs:
- crate_release_version:
- description: 'A release version to use, e.g. 1.9.0'
+ stable_release_branch:
+ description: 'Stable release branch, e.g. stable2407'
required: true
-
jobs:
sync-templates:
runs-on: ubuntu-latest
@@ -41,10 +40,10 @@ jobs:
run: |
git config --global user.name "Template Bot"
git config --global user.email "163342540+paritytech-polkadotsdk-templatebot[bot]@users.noreply.github.com"
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
path: polkadot-sdk
- ref: "release-crates-io-v${{ github.event.inputs.crate_release_version }}"
+ ref: "${{ github.event.inputs.stable_release_branch }}"
- name: Generate a token for the template repository
id: app_token
uses: actions/create-github-app-token@v1.9.3
@@ -53,7 +52,7 @@ jobs:
repositories: "polkadot-sdk-${{ matrix.template }}-template"
app-id: ${{ secrets.TEMPLATE_APP_ID }}
private-key: ${{ secrets.TEMPLATE_APP_KEY }}
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
repository: "paritytech/polkadot-sdk-${{ matrix.template }}-template"
path: "${{ env.template-path }}"
@@ -69,11 +68,11 @@ jobs:
protobuf-compiler
rustup target add wasm32-unknown-unknown
rustup component add rustfmt clippy rust-src
-
+
# 2. Yanking the template out of the monorepo workspace.
- - name: Use psvm to replace git references with released creates.
- run: find . -type f -name 'Cargo.toml' -exec psvm -o -v ${{ github.event.inputs.crate_release_version }} -p {} \;
+ - name: Replace dev-dependencies path references with workspace references
+ run: find . -type f -name 'Cargo.toml' -exec sed -i'' -E "s/path = \"\.\.\/.*\"/workspace = true/g" {} \;
working-directory: polkadot-sdk/templates/${{ matrix.template }}/
- name: Create a new workspace Cargo.toml
run: |
@@ -81,7 +80,7 @@ jobs:
[workspace.package]
license = "MIT-0"
authors = ["Parity Technologies "]
- homepage = "https://substrate.io"
+ homepage = "https://paritytech.github.io/polkadot-sdk/"
[workspace]
members = [
@@ -90,7 +89,12 @@ jobs:
"runtime",
]
resolver = "2"
+
+ [workspace.dependencies]
EOF
+
+ echo "$(toml get -r ./runtime/Cargo.toml 'package.name') = { path = \"./runtime\", default-features = false }" >> Cargo.toml
+ echo "$(toml get -r ./pallets/template/Cargo.toml 'package.name') = { path = \"./pallets/template\", default-features = false }" >> Cargo.toml
shell: bash
working-directory: polkadot-sdk/templates/${{ matrix.template }}/
- name: Update workspace configuration
@@ -116,9 +120,12 @@ jobs:
- name: Copy over the new changes
run: |
cp -r polkadot-sdk/templates/${{ matrix.template }}/* "${{ env.template-path }}/"
+
+ - name: Run psvm on monorepo workspace dependencies
+ run: psvm -o -v ${{ github.event.inputs.stable_release_branch }} -p ./Cargo.toml
+ working-directory: polkadot-sdk/
- name: Copy over required workspace dependencies
run: |
- echo -e "\n[workspace.dependencies]" >> Cargo.toml
set +e
# If a workspace dependency is required..
while cargo tree --depth 1 --prefix none --no-dedupe 2>&1 | grep 'was not found in `workspace.dependencies`'; do
@@ -150,18 +157,22 @@ jobs:
timeout-minutes: 90
- name: Create PR on failure
if: failure() && steps.check-compilation.outcome == 'failure'
- uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5 # v5
+ uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v5
with:
path: "${{ env.template-path }}"
token: ${{ steps.app_token.outputs.token }}
add-paths: |
./*
- title: "[Don't merge] Update the ${{ matrix.template }} template to ${{ github.event.inputs.crate_release_version }}"
+ title: "[Don't merge] Update the ${{ matrix.template }} template to ${{ github.event.inputs.stable_release_branch }}"
body: "The template has NOT been successfully built and needs to be inspected."
- branch: "update-template/${{ github.event.inputs.crate_release_version }}"
- - name: Push changes
- run: |
- git add -A .
- git commit --allow-empty -m "Update to ${{ github.event.inputs.crate_release_version }} triggered by ${{ github.event_name }}"
- git push
- working-directory: "${{ env.template-path }}"
+ branch: "update-template/${{ github.event.inputs.stable_release_branch }}"
+ - name: Create PR on success
+ uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v5
+ with:
+ path: "${{ env.template-path }}"
+ token: ${{ steps.app_token.outputs.token }}
+ add-paths: |
+ ./*
+ title: "Update the ${{ matrix.template }} template to ${{ github.event.inputs.stable_release_branch }}"
+ body: "This synchronizes the template to the ${{ github.event.inputs.stable_release_branch }} branch."
+ branch: "update-template/${{ github.event.inputs.stable_release_branch }}"
diff --git a/.github/workflows/misc-update-wishlist-leaderboard.yml b/.github/workflows/misc-update-wishlist-leaderboard.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3261687176746841a57bf2d247aeb6f596310c8b
--- /dev/null
+++ b/.github/workflows/misc-update-wishlist-leaderboard.yml
@@ -0,0 +1,37 @@
+name: Update wishlist leaderboard
+
+on:
+ schedule:
+ # Run every 3 hours
+ - cron: '0 */3 * * *'
+
+permissions:
+ contents: read
+ issues: write
+
+jobs:
+ update-wishlist-leaderboard:
+ if: github.repository == 'paritytech/polkadot-sdk'
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.x'
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install PyGithub
+ - name: Update developer wishlist
+ env:
+ GH_TOKEN: ${{ github.token }}
+ WISHLIST_REPOSITORY: "paritytech/polkadot-sdk"
+ WISHLIST_ISSUE_NUMBER: "3900"
+ run: python .github/scripts/update-wishlist-leaderboard.py
+ - name: Update user wishlist
+ env:
+ GH_TOKEN: ${{ github.token }}
+ WISHLIST_REPOSITORY: "paritytech/polkadot-sdk"
+ WISHLIST_ISSUE_NUMBER: "3901"
+ run: python .github/scripts/update-wishlist-leaderboard.py
diff --git a/.github/workflows/publish-check-crates.yml b/.github/workflows/publish-check-crates.yml
index 33cf9316920048c65c70376557586d905fd7c9a6..9f96b92e0ce73eb1874ff7e11c9e43d820eaa649 100644
--- a/.github/workflows/publish-check-crates.yml
+++ b/.github/workflows/publish-check-crates.yml
@@ -12,7 +12,7 @@ jobs:
check-publish:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Rust Cache
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
@@ -20,7 +20,7 @@ jobs:
cache-on-failure: true
- name: install parity-publish
- run: cargo install parity-publish@0.6.0
+ run: cargo install parity-publish@0.8.0
- 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 08c50638267ba3be596b5b563433fccf28c2652b..bee709a12076ed4a5ff212796f7691650f32ad7f 100644
--- a/.github/workflows/publish-claim-crates.yml
+++ b/.github/workflows/publish-claim-crates.yml
@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
environment: master
steps:
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Rust Cache
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
@@ -18,7 +18,7 @@ jobs:
cache-on-failure: true
- name: install parity-publish
- run: cargo install parity-publish@0.6.0
+ run: cargo install parity-publish@0.8.0
- name: parity-publish claim
env:
diff --git a/.github/workflows/publish-subsystem-benchmarks.yml b/.github/workflows/publish-subsystem-benchmarks.yml
index 1a726b669e9094e8be53ef5a1ddb1b3198210d33..e5b9db0836f3f6a944778a30df49ea7f98b3af34 100644
--- a/.github/workflows/publish-subsystem-benchmarks.yml
+++ b/.github/workflows/publish-subsystem-benchmarks.yml
@@ -23,7 +23,7 @@ jobs:
echo "${{ github.event.inputs.output-file-path }}" | grep -P '^[a-z\-]+\.json'
- name: Checkout Sources
- uses: actions/checkout@v4.1.2
+ uses: actions/checkout@v4
with:
fetch-depth: 0
ref: "gh-pages"
diff --git a/.github/workflows/release-10_rc-automation.yml b/.github/workflows/release-10_rc-automation.yml
index 7231a8b75886d04ce18bb89fcef99029e3ab14c6..2d91850b82c180e25bbf87dfef529f8ab4667edd 100644
--- a/.github/workflows/release-10_rc-automation.yml
+++ b/.github/workflows/release-10_rc-automation.yml
@@ -1,13 +1,18 @@
name: Release - RC automation
on:
- push:
- branches:
- # Catches release-polkadot-v1.2.3, release-v1.2.3-rc1, etc
- - release-v[0-9]+.[0-9]+.[0-9]+*
- - release-cumulus-v[0-9]+*
- - release-polkadot-v[0-9]+*
+ # TODO: Activate it and delete old branches patterns, when the release process from stable is setteled
+ #push:
+ # branches:
+ # # Catches release-polkadot-v1.2.3, release-v1.2.3-rc1, etc
+ # - release-v[0-9]+.[0-9]+.[0-9]+*
+ # - release-cumulus-v[0-9]+*
+ # - release-polkadot-v[0-9]+*
+ # - stable
workflow_dispatch:
+ inputs:
+ version:
+ description: Current release/rc version in format vX.X.X
jobs:
tag_rc:
@@ -21,32 +26,23 @@ jobs:
steps:
- name: Checkout sources
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 0
- - name: Get release product
- id: get_rel_product
- shell: bash
- run: |
- current_branch=$(git branch --show-current)
- echo "Current branch: $current_branch"
- if [[ "$current_branch" =~ "release-polkadot" ]]; then
- echo "product=polkadot" >> $GITHUB_OUTPUT
- elif [[ "$current_branch" =~ "release-cumulus" ]]; then
- echo "product=polkadot-parachain" >> $GITHUB_OUTPUT
- fi
-
-
- - name: Compute next rc tag for polkadot
- if: ${{ steps.get_rel_product.outputs.product == 'polkadot' }}
- id: compute_tag_polkadot
+ - name: Compute next rc tag
+ # if: ${{ steps.get_rel_product.outputs.product == 'polkadot' }}
+ id: compute_tag
shell: bash
run: |
. ./.github/scripts/common/lib.sh
# Get last rc tag if exists, else set it to {version}-rc1
- version=$(get_version_from_ghref ${GITHUB_REF})
+ if [[ -z "${{ inputs.version }}" ]]; then
+ version=v$(get_polkadot_node_version_from_code)
+ else
+ version=$(filter_version_from_input ${{ inputs.version }})
+ fi
echo "$version"
echo "version=$version" >> $GITHUB_OUTPUT
@@ -61,28 +57,6 @@ jobs:
echo "first_rc=true" >> $GITHUB_OUTPUT
fi
- - name: Compute next rc tag for polkadot-parachain
- if: ${{ steps.get_rel_product.outputs.product == 'polkadot-parachain' }}
- id: compute_tag_cumulus
- shell: bash
- run: |
- . ./.github/scripts/common/lib.sh
-
- # Get last rc tag if exists, else set it to polkadot-parachains-{version}-rc1
- version=$(get_version_from_ghref ${GITHUB_REF})
- echo "$version"
- echo "version=$version" >> $GITHUB_OUTPUT
-
- last_rc=$(get_latest_rc_tag $version polkadot-parachain)
- if [ -n "$last_rc" ]; then
- suffix=$(increment_rc_tag $last_rc)
- echo "new_tag=polkadot-parachains-$version-rc$suffix" >> $GITHUB_OUTPUT
- echo "first_rc=false" >> $GITHUB_OUTPUT
- else
- echo "new_tag=polkadot-parachain-$version-rc1" >> $GITHUB_OUTPUT
- echo "first_rc=true" >> $GITHUB_OUTPUT
- fi
-
- name: Apply new tag
uses: tvdias/github-tagger@ed7350546e3e503b5e942dffd65bc8751a95e49d # v0.0.2
with:
@@ -90,17 +64,7 @@ jobs:
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token
# RELEASE_BRANCH_TOKEN requires public_repo OAuth scope
repo-token: "${{ secrets.RELEASE_BRANCH_TOKEN }}"
- tag: ${{ steps.compute_tag_polkadot.outputs.new_tag || steps.compute_tag_cumulus.outputs.new_tag }}
-
- # - id: create-issue
- # uses: JasonEtco/create-an-issue@e27dddc79c92bc6e4562f268fffa5ed752639abd # v2.9.1
- # # Only create the issue if it's the first release candidate
- # if: steps.compute_tag.outputs.first_rc == 'true'
- # env:
- # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- # VERSION: ${{ steps.compute_tag.outputs.version }}
- # with:
- # filename: .github/ISSUE_TEMPLATE/release.md
+ tag: ${{ steps.compute_tag.outputs.new_tag }}
- name: Send Matrix message to ${{ matrix.channel.name }}
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
@@ -110,4 +74,4 @@ jobs:
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
server: m.parity.io
message: |
- Release process for polkadot ${{ steps.compute_tag_polkadot.outputs.new_tag || steps.compute_tag_cumulus.outputs.new_tag }} has been started.
+ Release process for polkadot ${{ steps.compute_tag.outputs.new_tag }} has been started.
diff --git a/.github/workflows/release-30_publish_release_draft.yml b/.github/workflows/release-30_publish_release_draft.yml
index 20492f2d3a9104fd08af663d19aed9a301918e6c..6d31ca7a7365d77f6dd34c721b66acdc75ddbfa7 100644
--- a/.github/workflows/release-30_publish_release_draft.yml
+++ b/.github/workflows/release-30_publish_release_draft.yml
@@ -35,7 +35,7 @@ jobs:
binary: [ [frame-omni-bencher, frame-omni-bencher], [staging-chain-spec-builder, chain-spec-builder] ]
steps:
- name: Checkout sources
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.0.0
- name: Install protobuf-compiler
run: |
@@ -62,10 +62,10 @@ jobs:
asset_upload_url: ${{ steps.create-release.outputs.upload_url }}
steps:
- name: Checkout
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.0.0
- name: Download artifacts
- uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
+ uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
- name: Prepare tooling
run: |
@@ -133,10 +133,10 @@ jobs:
steps:
- name: Checkout sources
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.0.0
- name: Download artifacts
- uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
+ uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
- name: Get runtime info
env:
@@ -166,7 +166,7 @@ jobs:
steps:
- name: Download artifacts
- uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
+ uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ${{ matrix.binary }}
diff --git a/.github/workflows/release-50_publish-docker.yml b/.github/workflows/release-50_publish-docker.yml
index 4679f58578f7906b75e4a3d6d623ebc1d55df40d..a749c86faa0c65ceaca5a4c7fa60397d85c926b2 100644
--- a/.github/workflows/release-50_publish-docker.yml
+++ b/.github/workflows/release-50_publish-docker.yml
@@ -45,7 +45,7 @@ on:
type: string
default: docker.io
- # The owner is often the same than the Docker Hub username but does ont have to be.
+ # The owner is often the same as the Docker Hub username but does ont have to be.
# In our case, it is not.
owner:
description: Owner of the container image repo
@@ -58,6 +58,10 @@ on:
default: v0.9.18
required: true
+ stable_tag:
+ description: Tag matching the actual stable release version in the format stableYYMM or stableYYMM-X for patch releases
+ required: true
+
permissions:
contents: write
@@ -71,16 +75,43 @@ env:
# EVENT_ACTION: ${{ github.event.action }}
EVENT_NAME: ${{ github.event_name }}
IMAGE_TYPE: ${{ inputs.image_type }}
- VERSION: ${{ inputs.version }}
jobs:
+ validate-inputs:
+ 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:
+ - name: Checkout sources
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+
+ - name: Validate inputs
+ id: validate_inputs
+ run: |
+ . ./.github/scripts/common/lib.sh
+
+ 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
+
fetch-artifacts: # this job will be triggered for the polkadot-parachain rc and release or polkadot rc image build
if: ${{ inputs.binary == 'polkadot-parachain' || inputs.binary == 'chain-spec-builder' || inputs.image_type == 'rc' }}
runs-on: ubuntu-latest
+ needs: [validate-inputs]
steps:
- name: Checkout sources
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
#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
@@ -102,9 +133,7 @@ jobs:
run: |
. ./.github/scripts/common/lib.sh
- VERSION=$(filter_version_from_input "${{ inputs.version }}")
- echo "VERSION=${VERSION}" >> $GITHUB_ENV
-
+ VERSION="${{ needs.validate-inputs.outputs.VERSION }}"
fetch_release_artifacts_from_s3
- name: Fetch chain-spec-builder rc artifacts or release artifacts based on release id
@@ -112,7 +141,8 @@ jobs:
if: ${{ env.EVENT_NAME == 'workflow_dispatch' && inputs.binary == 'chain-spec-builder' }}
run: |
. ./.github/scripts/common/lib.sh
- RELEASE_ID=$(check_release_id "${{ inputs.release_id }}")
+
+ RELEASE_ID="${{ needs.validate-inputs.outputs.RELEASE_ID }}"
fetch_release_artifacts
- name: Upload artifacts
@@ -124,15 +154,15 @@ jobs:
build-container: # this job will be triggered for the polkadot-parachain rc and release or polkadot rc image build
if: ${{ inputs.binary == 'polkadot-parachain' || inputs.binary == 'chain-spec-builder' || inputs.image_type == 'rc' }}
runs-on: ubuntu-latest
- needs: fetch-artifacts
+ needs: [fetch-artifacts, validate-inputs]
environment: release
steps:
- name: Checkout sources
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Download artifacts
- uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
+ uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
- name: Check sha256 ${{ env.BINARY }}
if: ${{ inputs.binary == 'polkadot-parachain' || inputs.binary == 'polkadot' }}
@@ -157,8 +187,7 @@ jobs:
run: |
. ./.github/scripts/common/lib.sh
- RELEASE_ID=$(check_release_id "${{ inputs.release_id }}")
- release=release-$RELEASE_ID && \
+ release="release-${{ needs.validate-inputs.outputs.RELEASE_ID }}" && \
echo "release=${release}" >> $GITHUB_OUTPUT
commit=$(git rev-parse --short HEAD) && \
@@ -174,11 +203,17 @@ jobs:
id: fetch_release_refs
run: |
chmod a+rx $BINARY
- [[ $BINARY != 'chain-spec-builder' ]] && VERSION=$(./$BINARY --version | awk '{ print $2 }' )
- release=$( echo $VERSION | cut -f1 -d- )
+ 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
+
echo "tag=latest" >> $GITHUB_OUTPUT
echo "release=${release}" >> $GITHUB_OUTPUT
+ echo "stable=${{ needs.validate-inputs.outputs.stable_tag }}" >> $GITHUB_OUTPUT
- name: Build Injected Container image for polkadot rc or chain-spec-builder
if: ${{ env.BINARY == 'polkadot' || env.BINARY == 'chain-spec-builder' }}
@@ -209,7 +244,7 @@ jobs:
./docker/scripts/build-injected.sh
- name: Login to Dockerhub
- uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
+ uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
with:
username: ${{ secrets.CUMULUS_DOCKERHUB_USERNAME }}
password: ${{ secrets.CUMULUS_DOCKERHUB_TOKEN }}
@@ -256,17 +291,17 @@ jobs:
build-polkadot-release-container: # this job will be triggered for polkadot release build
if: ${{ inputs.binary == 'polkadot' && inputs.image_type == 'release' }}
runs-on: ubuntu-latest
- needs: fetch-latest-debian-package-version
+ needs: [fetch-latest-debian-package-version, validate-inputs]
environment: release
steps:
- name: Checkout sources
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
+ uses: docker/setup-buildx-action@aa33708b10e362ff993539393ff100fa93ed6a27 # v3.5.0
- name: Cache Docker layers
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3.3.3
+ uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
@@ -274,7 +309,7 @@ jobs:
${{ runner.os }}-buildx-
- name: Login to Docker Hub
- uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
+ uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
with:
username: ${{ secrets.POLKADOT_DOCKERHUB_USERNAME }}
password: ${{ secrets.POLKADOT_DOCKERHUB_TOKEN }}
@@ -287,13 +322,14 @@ jobs:
- name: Build and push
id: docker_build
- uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0
+ uses: docker/build-push-action@5176d81f87c23d6fc96624dfdbcd9f3830bbe445 # v6.5.0
with:
push: true
file: docker/dockerfiles/polkadot/polkadot_injected_debian.Dockerfile
# 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 }}
build-args: |
diff --git a/.github/workflows/release-check-runtimes.yml b/.github/workflows/release-check-runtimes.yml
index 0e5ad104766a89aaa678cc5436475d95e3ab76fd..930b8da772d0b6d19c0a723f9de09ff8fa5cd0b2 100644
--- a/.github/workflows/release-check-runtimes.yml
+++ b/.github/workflows/release-check-runtimes.yml
@@ -35,7 +35,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repo
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Get list
id: get-list
@@ -56,7 +56,7 @@ jobs:
steps:
- name: Checkout the repo
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Fetch release artifacts based on release id
env:
diff --git a/.github/workflows/release-clobber-stable.yml b/.github/workflows/release-clobber-stable.yml
index 643c14daa15b1aa7501e27f272524e0ee010e781..50c20563b4347334aa591f0f4f2e544f17f12afe 100644
--- a/.github/workflows/release-clobber-stable.yml
+++ b/.github/workflows/release-clobber-stable.yml
@@ -24,7 +24,7 @@ jobs:
AUDITED: audited
steps:
- name: Checkout
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Prechecks
run: |
diff --git a/.github/workflows/release-srtool.yml b/.github/workflows/release-srtool.yml
index 69a4bdbdda9ae87a188a23bceb9185d813424a98..e1dc42afc6e98ded04c5689a28b224bb239114c0 100644
--- a/.github/workflows/release-srtool.yml
+++ b/.github/workflows/release-srtool.yml
@@ -5,11 +5,6 @@ env:
TOML_CLI_VERSION: 0.2.4
on:
- push:
- branches:
- - release-v[0-9]+.[0-9]+.[0-9]+*
- - release-cumulus-v[0-9]+*
- - release-polkadot-v[0-9]+*
workflow_call:
inputs:
excluded_runtimes:
@@ -31,7 +26,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.0.0
with:
fetch-depth: 0
@@ -72,7 +67,7 @@ jobs:
matrix: ${{ fromJSON(needs.find-runtimes.outputs.runtime) }}
steps:
- - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
+ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.0.0
with:
fetch-depth: 0
diff --git a/.github/workflows/reusable-check-changed-files.yml b/.github/workflows/reusable-check-changed-files.yml
new file mode 100644
index 0000000000000000000000000000000000000000..47f0620439c77f262c4fda1b68f0e250f2ec8ac6
--- /dev/null
+++ b/.github/workflows/reusable-check-changed-files.yml
@@ -0,0 +1,59 @@
+# Reusable workflow to perform checks and generate conditions for other workflows.
+# Currently it checks if any Rust (build-related) file is changed
+# and if the current (caller) workflow file is changed.
+# Example:
+#
+# jobs:
+# changes:
+# permissions:
+# pull-requests: read
+# uses: ./.github/workflows/reusable-check-changed-files.yml
+# some-job:
+# needs: changes
+# if: ${{ needs.changes.outputs.rust }}
+# .......
+
+name: Check changes files
+
+on:
+ workflow_call:
+ # Map the workflow outputs to job outputs
+ outputs:
+ rust:
+ value: ${{ jobs.changes.outputs.rust }}
+ description: "true if any of the build-related OR current (caller) workflow files have changed"
+ current-workflow:
+ value: ${{ jobs.changes.outputs.current-workflow }}
+ description: "true if current (caller) workflow file has changed"
+
+jobs:
+ changes:
+ runs-on: ubuntu-latest
+ permissions:
+ pull-requests: read
+ outputs:
+ # true if current workflow (caller) file is changed
+ rust: ${{ steps.filter.outputs.rust == 'true' || steps.filter.outputs.current-workflow == 'true' }}
+ current-workflow: ${{ steps.filter.outputs.current-workflow }}
+ steps:
+ - id: current-file
+ run: echo "current-workflow-file=$(echo ${{ github.workflow_ref }} | sed -nE "s/.*(\.github\/workflows\/[a-zA-Z0-9_-]*\.y[a]?ml)@refs.*/\1/p")" >> $GITHUB_OUTPUT
+ - run: echo "${{ steps.current-file.outputs.current-workflow-file }}"
+ # For pull requests it's not necessary to checkout the code
+ - name: Checkout
+ if: github.event_name != 'pull_request'
+ uses: actions/checkout@v4
+ - id: filter
+ uses: dorny/paths-filter@v3
+ with:
+ predicate-quantifier: "every"
+ # current-workflow - check if the current (caller) workflow file is changed
+ # rust - check if any Rust (build-related) file is changed
+ filters: |
+ current-workflow:
+ - '${{ steps.current-file.outputs.current-workflow-file }}'
+ rust:
+ - '**/*'
+ - '!.github/**/*'
+ - '!prdoc/**/*'
+ - '!docs/**/*'
diff --git a/.github/workflows/review-bot.yml b/.github/workflows/review-bot.yml
index f1401406ae47afd3230cc163f35df0e3bcbac7b7..80c96b0ef537fe3eaf368c7a39b2c5eddbb994e0 100644
--- a/.github/workflows/review-bot.yml
+++ b/.github/workflows/review-bot.yml
@@ -30,7 +30,7 @@ jobs:
with:
artifact-name: pr_number
- name: "Evaluates PR reviews and assigns reviewers"
- uses: paritytech/review-bot@v2.4.0
+ uses: paritytech/review-bot@v2.6.0
with:
repo-token: ${{ steps.app_token.outputs.token }}
team-token: ${{ steps.app_token.outputs.token }}
diff --git a/.github/workflows/subsystem-benchmarks.yml b/.github/workflows/subsystem-benchmarks.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7c19b420a6acb42ed473bb2c4bd54c07cefdd0e4
--- /dev/null
+++ b/.github/workflows/subsystem-benchmarks.yml
@@ -0,0 +1,82 @@
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ types: [ opened, synchronize, reopened, closed, labeled ]
+ merge_group:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+ pull-requests: write
+
+jobs:
+ set-image:
+ # TODO: remove once migration is complete or this workflow is fully stable
+ if: contains(github.event.label.name, 'GHA-migration')
+ # GitHub Actions allows using 'env' in a container context.
+ # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322
+ # This workaround sets the container image for each job using 'set-image' job output.
+ runs-on: ubuntu-latest
+ outputs:
+ IMAGE: ${{ steps.set_image.outputs.IMAGE }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - id: set_image
+ run: cat .github/env >> $GITHUB_OUTPUT
+
+ build:
+ needs: [ set-image ]
+ runs-on: arc-runners-polkadot-sdk-benchmark
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ env:
+ BENCH_DIR: ./charts/bench/${{ matrix.features.bench }}
+ BENCH_FILE_NAME: ${{ matrix.features.bench }}
+ strategy:
+ fail-fast: false
+ matrix:
+ features: [
+ { name: "polkadot-availability-recovery", bench: "availability-recovery-regression-bench" },
+ { name: "polkadot-availability-distribution", bench: "availability-distribution-regression-bench" },
+ { name: "polkadot-node-core-approval-voting", bench: "approval-voting-regression-bench" },
+ { name: "polkadot-statement-distribution", bench: "statement-distribution-regression-bench" }
+ ]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Check Rust
+ run: |
+ rustup show
+ rustup +nightly show
+
+ - name: Run Benchmarks
+ continue-on-error: true
+ id: run-benchmarks
+ run: |
+ cargo bench -p ${{ matrix.features.name }} --bench ${{ matrix.features.bench }} --features subsystem-benchmarks || echo "Benchmarks failed"
+ ls -lsa ./charts
+ mkdir -p $BENCH_DIR || echo "Directory exists"
+ cp charts/${BENCH_FILE_NAME}.json $BENCH_DIR
+ ls -lsa $BENCH_DIR
+ # Fixes "detected dubious ownership" error in the ci
+ git config --global --add safe.directory '*'
+
+ - name: Publish result to GH Pages
+ if: ${{ steps.run-benchmarks.outcome == 'success' }}
+ uses: benchmark-action/github-action-benchmark@v1
+ with:
+ tool: "customSmallerIsBetter"
+ name: ${{ env.BENCH_FILE_NAME }}
+ output-file-path: ${{ env.BENCH_DIR }}/${{ env.BENCH_FILE_NAME }}.json
+ benchmark-data-dir-path: ${{ env.BENCH_DIR }}
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ comment-on-alert: ${{ github.event_name == 'pull_request' }} # will comment on PRs if regression is detected
+ auto-push: false # TODO: enable when gitlab part is removed ${{ github.ref == 'refs/heads/master' }}
+
diff --git a/.github/workflows/tests-linux-stable.yml b/.github/workflows/tests-linux-stable.yml
index 6f2ac87c3efbea16efc9a5564fa770cd0f9ffbdf..4a13f5318f7deb34a4727a3dc88967df12a67ed7 100644
--- a/.github/workflows/tests-linux-stable.yml
+++ b/.github/workflows/tests-linux-stable.yml
@@ -6,7 +6,7 @@ on:
branches:
- master
pull_request:
- types: [opened, synchronize, reopened, ready_for_review]
+ types: [opened, synchronize, reopened, ready_for_review, labeled]
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
@@ -14,9 +14,11 @@ concurrency:
jobs:
changes:
+ # TODO: remove once migration is complete or this workflow is fully stable
+ if: contains(github.event.label.name, 'GHA-migration')
permissions:
pull-requests: read
- uses: ./.github/workflows/check-changed-files.yml
+ uses: ./.github/workflows/reusable-check-changed-files.yml
set-image:
# GitHub Actions allows using 'env' in a container context.
@@ -37,7 +39,7 @@ jobs:
needs: [set-image, changes]
if: ${{ needs.changes.outputs.rust }}
runs-on: arc-runners-polkadot-sdk-beefy
- timeout-minutes: 30
+ timeout-minutes: 60
container:
image: ${{ needs.set-image.outputs.IMAGE }}
env:
@@ -51,14 +53,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: script
- run: WASM_BUILD_NO_COLOR=1 time forklift cargo test -p staging-node-cli --release --locked -- --ignored
+ run: WASM_BUILD_NO_COLOR=1 forklift cargo test -p staging-node-cli --release --locked -- --ignored
# https://github.com/paritytech/ci_cd/issues/864
test-linux-stable-runtime-benchmarks:
needs: [set-image, changes]
if: ${{ needs.changes.outputs.rust }}
runs-on: arc-runners-polkadot-sdk-beefy
- timeout-minutes: 30
+ timeout-minutes: 60
container:
image: ${{ needs.set-image.outputs.IMAGE }}
env:
@@ -70,4 +72,55 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: script
- run: time forklift cargo nextest run --workspace --features runtime-benchmarks benchmark --locked --cargo-profile testnet
+ run: forklift cargo nextest run --workspace --features runtime-benchmarks benchmark --locked --cargo-profile testnet
+
+ test-linux-stable:
+ needs: [set-image, changes]
+ if: ${{ needs.changes.outputs.rust }}
+ runs-on: ${{ matrix.runners }}
+ timeout-minutes: 60
+ strategy:
+ fail-fast: false
+ matrix:
+ partition: [1/3, 2/3, 3/3]
+ runners: [arc-runners-polkadot-sdk-beefy, oldlinux]
+ container:
+ image: ${{ needs.set-image.outputs.IMAGE }}
+ # needed for tests that use unshare syscall
+ options: --security-opt seccomp=unconfined
+ env:
+ RUST_TOOLCHAIN: stable
+ # Enable debug assertions since we are running optimized builds for testing
+ # but still want to have debug assertions.
+ RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: script
+ run: |
+ # Fixes "detected dubious ownership" error in the ci
+ git config --global --add safe.directory '*'
+ forklift cargo nextest run \
+ --workspace \
+ --locked \
+ --release \
+ --no-fail-fast \
+ --features try-runtime,experimental,riscv,ci-only-tests \
+ --partition count:${{ matrix.partition }}
+ # run runtime-api tests with `enable-staging-api` feature on the 1st node
+ - name: runtime-api tests
+ if: ${{ matrix.partition == '1/3' }}
+ run: forklift cargo nextest run -p sp-api-test --features enable-staging-api
+
+ confirm-required-jobs-passed:
+ runs-on: ubuntu-latest
+ name: All tests passed
+ # If any new job gets added, be sure to add it to this array
+ needs:
+ [
+ test-linux-stable-int,
+ test-linux-stable-runtime-benchmarks,
+ test-linux-stable,
+ ]
+ steps:
+ - run: echo '### Good job! All the tests passed 🚀' >> $GITHUB_STEP_SUMMARY
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 0c1447cba33a372cbbf4cb057b9f63dd49565468..1be2dd7921e0c521606556b3e567eab1661257d0 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -5,7 +5,7 @@ on:
branches:
- master
pull_request:
- types: [opened, synchronize, reopened, ready_for_review]
+ types: [ opened, synchronize, reopened, ready_for_review ]
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
@@ -15,7 +15,7 @@ jobs:
changes:
permissions:
pull-requests: read
- uses: ./.github/workflows/check-changed-files.yml
+ uses: ./.github/workflows/reusable-check-changed-files.yml
set-image:
# GitHub Actions allows using 'env' in a container context.
@@ -31,10 +31,10 @@ jobs:
run: cat .github/env >> $GITHUB_OUTPUT
quick-benchmarks:
- needs: [set-image, changes]
+ needs: [ set-image, changes ]
if: ${{ needs.changes.outputs.rust }}
runs-on: arc-runners-polkadot-sdk-beefy
- timeout-minutes: 30
+ timeout-minutes: 60
container:
image: ${{ needs.set-image.outputs.IMAGE }}
env:
@@ -50,10 +50,10 @@ jobs:
# cf https://github.com/paritytech/polkadot-sdk/issues/1652
test-syscalls:
- needs: [set-image, changes]
+ needs: [ set-image, changes ]
if: ${{ needs.changes.outputs.rust }}
runs-on: arc-runners-polkadot-sdk-beefy
- timeout-minutes: 30
+ timeout-minutes: 60
container:
image: ${{ needs.set-image.outputs.IMAGE }}
continue-on-error: true # this rarely triggers in practice
@@ -75,10 +75,10 @@ jobs:
# fi
cargo-check-all-benches:
- needs: [set-image, changes]
+ needs: [ set-image, changes ]
if: ${{ needs.changes.outputs.rust }}
runs-on: arc-runners-polkadot-sdk-beefy
- timeout-minutes: 30
+ timeout-minutes: 60
container:
image: ${{ needs.set-image.outputs.IMAGE }}
env:
diff --git a/.gitignore b/.gitignore
index 2f1631fb4b9d14496021907cca96b4cdf4902eb8..e3e382af6195ed4692672285a14e1cf5f1600a85 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@
*.orig
*.rej
*.swp
+*.wasm
**/._*
**/.criterion/
**/*.rs.bk
diff --git a/.gitlab/pipeline/check.yml b/.gitlab/pipeline/check.yml
index 2b8b90ef19a47874b3a9de065038faee376a01ae..bc12dd474b07a4ce38fedbac9c8bb110badad80e 100644
--- a/.gitlab/pipeline/check.yml
+++ b/.gitlab/pipeline/check.yml
@@ -122,26 +122,6 @@ check-runtime-migration-rococo:
URI: "wss://rococo-try-runtime-node.parity-chains.parity.io:443"
SUBCOMMAND_EXTRA_ARGS: "--no-weight-warnings"
-find-fail-ci-phrase:
- stage: check
- variables:
- CI_IMAGE: "paritytech/tools:latest"
- ASSERT_REGEX: "FAIL-CI"
- GIT_DEPTH: 1
- extends:
- - .kubernetes-env
- - .test-pr-refs
- script:
- - set +e
- - rg --line-number --hidden --type rust --glob '!{.git,target}' "$ASSERT_REGEX" .; exit_status=$?
- - if [ $exit_status -eq 0 ]; then
- echo "$ASSERT_REGEX was found, exiting with 1";
- exit 1;
- else
- echo "No $ASSERT_REGEX was found, exiting with 0";
- exit 0;
- fi
-
check-core-crypto-features:
stage: check
extends:
diff --git a/.gitlab/pipeline/test.yml b/.gitlab/pipeline/test.yml
index d171a8a19426c959f776aa0780f4373c4b23b4e6..319c95ad6112c33bbb27ca765e100e224e945c28 100644
--- a/.gitlab/pipeline/test.yml
+++ b/.gitlab/pipeline/test.yml
@@ -110,8 +110,6 @@ test-linux-stable-codecov:
codecovcli -v do-upload -f target/coverage/result/report-${CI_NODE_INDEX}.lcov --disable-search -t ${CODECOV_TOKEN} -r paritytech/polkadot-sdk --commit-sha ${CI_COMMIT_SHA} --fail-on-error --git-service github;
fi
- #
-
test-linux-stable:
stage: test
extends:
@@ -398,6 +396,11 @@ test-frame-ui:
script:
- time cargo test --locked -q --profile testnet -p frame-support-test --features=frame-feature-testing,no-metadata-docs,try-runtime,experimental
- time cargo test --locked -q --profile testnet -p frame-support-test --features=frame-feature-testing,frame-feature-testing-2,no-metadata-docs,try-runtime,experimental
+ - time cargo test --locked -q --profile testnet -p xcm-procedural
+ - time cargo test --locked -q --profile testnet -p frame-election-provider-solution-type
+ - time cargo test --locked -q --profile testnet -p sp-api-test
+ # There is multiple version of sp-runtime-interface in the repo. So we point to the manifest.
+ - time cargo test --locked -q --profile testnet --manifest-path substrate/primitives/runtime-interface/Cargo.toml
- cat /cargo_target_dir/debug/.fingerprint/memory_units-759eddf317490d2b/lib-memory_units.json || true
# This job runs all benchmarks defined in the `/bin/node/runtime` once to check that there are no errors.
diff --git a/.gitlab/pipeline/zombienet/cumulus.yml b/.gitlab/pipeline/zombienet/cumulus.yml
index a7f321505bacf99df202c1469e7a75b4f0b30ba4..6e2b53fae6198501297960de84ecdb1606d3e128 100644
--- a/.gitlab/pipeline/zombienet/cumulus.yml
+++ b/.gitlab/pipeline/zombienet/cumulus.yml
@@ -149,3 +149,27 @@ zombienet-cumulus-0007-full_node_warp_sync:
--local-dir="${LOCAL_DIR}"
--concurrency=1
--test="0007-full_node_warp_sync.zndsl"
+
+zombienet-cumulus-0008-elastic_authoring:
+ extends:
+ - .zombienet-cumulus-common
+ - .zombienet-refs
+ - .zombienet-before-script
+ - .zombienet-after-script
+ script:
+ - /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh
+ --local-dir="${LOCAL_DIR}"
+ --concurrency=1
+ --test="0008-elastic_authoring.zndsl"
+
+zombienet-cumulus-0009-elastic_pov_recovery:
+ extends:
+ - .zombienet-cumulus-common
+ - .zombienet-refs
+ - .zombienet-before-script
+ - .zombienet-after-script
+ script:
+ - /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh
+ --local-dir="${LOCAL_DIR}"
+ --concurrency=1
+ --test="0009-elastic_pov_recovery.zndsl"
diff --git a/.gitlab/pipeline/zombienet/polkadot.yml b/.gitlab/pipeline/zombienet/polkadot.yml
index 90251082077ce07f739a5b122deaf6023dcfeaa6..b4ef4bb7446c8a9bfe602322cd8ac07a30f14b40 100644
--- a/.gitlab/pipeline/zombienet/polkadot.yml
+++ b/.gitlab/pipeline/zombienet/polkadot.yml
@@ -276,6 +276,14 @@ zombienet-polkadot-smoke-0004-coretime-smoke-test:
--local-dir="${LOCAL_DIR}/smoke"
--test="0004-coretime-smoke-test.zndsl"
+zombienet-polkadot-smoke-0005-precompile-pvf-smoke:
+ extends:
+ - .zombienet-polkadot-common
+ script:
+ - /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh
+ --local-dir="${LOCAL_DIR}/smoke"
+ --test="0005-precompile-pvf-smoke.zndsl"
+
zombienet-polkadot-misc-0001-parachains-paritydb:
extends:
- .zombienet-polkadot-common
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 120000
index 0000000000000000000000000000000000000000..63b2a0dc1abc8daf348a8112688d254407837dd9
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1 @@
+docs/contributor/CODE_OF_CONDUCT.md
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 120000
index 0000000000000000000000000000000000000000..0f645512e8e47f744720a79767f0f78f919ea914
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1 @@
+docs/contributor/CONTRIBUTING.md
\ No newline at end of file
diff --git a/Cargo.lock b/Cargo.lock
index c0775a47f1fb42db33c20fb357a3846bb7979688..89cc7cfa8d49c1a204e9d06b03a88073a227bffc 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -158,7 +158,7 @@ dependencies = [
"heck 0.4.1",
"proc-macro-error",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
"syn-solidity",
"tiny-keccak",
@@ -262,9 +262,9 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.81"
+version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
+checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
[[package]]
name = "approx"
@@ -285,7 +285,7 @@ dependencies = [
"itertools 0.10.5",
"proc-macro-error",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -484,7 +484,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44"
dependencies = [
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -494,7 +494,7 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348"
dependencies = [
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -506,7 +506,7 @@ checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20"
dependencies = [
"num-bigint",
"num-traits",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -519,7 +519,7 @@ dependencies = [
"num-bigint",
"num-traits",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -580,7 +580,7 @@ dependencies = [
[[package]]
name = "ark-secret-scalar"
version = "0.0.2"
-source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e"
+source = "git+https://github.com/w3f/ring-vrf?rev=0fef826#0fef8266d851932ad25d6b41bc4b34d834d1e11d"
dependencies = [
"ark-ec",
"ark-ff 0.4.2",
@@ -621,7 +621,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -649,7 +649,7 @@ dependencies = [
[[package]]
name = "ark-transcript"
version = "0.0.2"
-source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e"
+source = "git+https://github.com/w3f/ring-vrf?rev=0fef826#0fef8266d851932ad25d6b41bc4b34d834d1e11d"
dependencies = [
"ark-ff 0.4.2",
"ark-serialize 0.4.2",
@@ -725,7 +725,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
"synstructure 0.12.6",
]
@@ -737,7 +737,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7378575ff571966e99a744addeff0bff98b8ada0dedf1956d59e634db95eaac1"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
"synstructure 0.13.1",
]
@@ -749,7 +749,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -760,15 +760,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
[[package]]
name = "assert_cmd"
-version = "2.0.12"
+version = "2.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88903cb14723e4d4003335bb7f8a14f27691649105346a0f0957466c096adfe6"
+checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8"
dependencies = [
"anstyle",
"bstr",
@@ -824,6 +824,7 @@ dependencies = [
"sp-runtime",
"staging-xcm",
"staging-xcm-executor",
+ "xcm-runtime-apis",
]
[[package]]
@@ -896,7 +897,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-transaction-pool",
"sp-version",
@@ -1017,6 +1017,7 @@ dependencies = [
"polkadot-runtime-common",
"primitive-types",
"scale-info",
+ "snowbridge-router-primitives",
"sp-api",
"sp-block-builder",
"sp-consensus-aura",
@@ -1062,7 +1063,6 @@ dependencies = [
"parity-scale-codec",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"staging-parachain-info",
"staging-xcm",
"staging-xcm-builder",
@@ -1085,7 +1085,6 @@ dependencies = [
"scale-info",
"sp-api",
"sp-runtime",
- "sp-std 14.0.0",
"staging-xcm",
"staging-xcm-builder",
"staging-xcm-executor",
@@ -1098,7 +1097,7 @@ version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5"
dependencies = [
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -1210,7 +1209,7 @@ checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
dependencies = [
"event-listener 5.2.0",
"event-listener-strategy",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
]
[[package]]
@@ -1264,7 +1263,7 @@ dependencies = [
"log",
"memchr",
"once_cell",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"pin-utils",
"slab",
"wasm-bindgen-futures",
@@ -1278,7 +1277,7 @@ checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"
dependencies = [
"async-stream-impl",
"futures-core",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
]
[[package]]
@@ -1288,7 +1287,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -1305,7 +1304,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -1319,7 +1318,7 @@ dependencies = [
"futures-sink",
"futures-util",
"memchr",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
]
[[package]]
@@ -1364,7 +1363,7 @@ checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89"
dependencies = [
"proc-macro-error",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -1387,9 +1386,9 @@ dependencies = [
[[package]]
name = "backtrace"
-version = "0.3.69"
+version = "0.3.71"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
dependencies = [
"addr2line 0.21.0",
"cc",
@@ -1403,7 +1402,7 @@ dependencies = [
[[package]]
name = "bandersnatch_vrfs"
version = "0.0.4"
-source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e"
+source = "git+https://github.com/w3f/ring-vrf?rev=0fef826#0fef8266d851932ad25d6b41bc4b34d834d1e11d"
dependencies = [
"ark-bls12-381",
"ark-ec",
@@ -1412,8 +1411,6 @@ dependencies = [
"ark-serialize 0.4.2",
"ark-std 0.4.0",
"dleq_vrf",
- "fflonk",
- "merlin",
"rand_chacha",
"rand_core",
"ring 0.1.0",
@@ -1482,11 +1479,11 @@ name = "binary-merkle-tree"
version = "13.0.0"
dependencies = [
"array-bytes",
- "env_logger 0.11.3",
"hash-db",
"log",
"sp-core",
"sp-runtime",
+ "sp-tracing 16.0.0",
]
[[package]]
@@ -1512,7 +1509,7 @@ dependencies = [
"peeking_take_while",
"prettyplease 0.2.12",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"regex",
"rustc-hash",
"shlex",
@@ -2036,7 +2033,6 @@ dependencies = [
"snowbridge-core",
"sp-core",
"sp-runtime",
- "sp-std 14.0.0",
"staging-xcm",
]
@@ -2116,6 +2112,7 @@ dependencies = [
"cumulus-primitives-utility",
"frame-benchmarking",
"frame-executive",
+ "frame-metadata-hash-extension",
"frame-support",
"frame-system",
"frame-system-benchmarking",
@@ -2178,7 +2175,6 @@ dependencies = [
"staging-xcm",
"staging-xcm-builder",
"staging-xcm-executor",
- "static_assertions",
"substrate-wasm-builder",
"testnet-parachains-constants",
"xcm-runtime-apis",
@@ -2216,7 +2212,6 @@ dependencies = [
"sp-io",
"sp-keyring",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"staging-xcm",
"staging-xcm-builder",
@@ -2240,10 +2235,13 @@ dependencies = [
name = "bridge-hub-westend-integration-tests"
version = "1.0.0"
dependencies = [
+ "asset-hub-westend-runtime",
+ "bridge-hub-westend-runtime",
"cumulus-pallet-xcmp-queue",
"emulated-integration-tests-common",
"frame-support",
"hex-literal",
+ "log",
"pallet-asset-conversion",
"pallet-assets",
"pallet-balances",
@@ -2251,10 +2249,20 @@ dependencies = [
"pallet-message-queue",
"pallet-xcm",
"parachains-common",
+ "parity-scale-codec",
"rococo-westend-system-emulated-network",
+ "scale-info",
+ "snowbridge-core",
+ "snowbridge-pallet-inbound-queue",
+ "snowbridge-pallet-inbound-queue-fixtures",
+ "snowbridge-pallet-outbound-queue",
+ "snowbridge-pallet-system",
+ "snowbridge-router-primitives",
+ "sp-core",
"sp-runtime",
"staging-xcm",
"staging-xcm-executor",
+ "testnet-parachains-constants",
]
[[package]]
@@ -2287,6 +2295,7 @@ dependencies = [
"cumulus-primitives-utility",
"frame-benchmarking",
"frame-executive",
+ "frame-metadata-hash-extension",
"frame-support",
"frame-system",
"frame-system-benchmarking",
@@ -2318,6 +2327,17 @@ dependencies = [
"polkadot-runtime-common",
"scale-info",
"serde",
+ "snowbridge-beacon-primitives",
+ "snowbridge-core",
+ "snowbridge-outbound-queue-runtime-api",
+ "snowbridge-pallet-ethereum-client",
+ "snowbridge-pallet-inbound-queue",
+ "snowbridge-pallet-outbound-queue",
+ "snowbridge-pallet-system",
+ "snowbridge-router-primitives",
+ "snowbridge-runtime-common",
+ "snowbridge-runtime-test-common",
+ "snowbridge-system-runtime-api",
"sp-api",
"sp-block-builder",
"sp-consensus-aura",
@@ -2337,7 +2357,6 @@ dependencies = [
"staging-xcm",
"staging-xcm-builder",
"staging-xcm-executor",
- "static_assertions",
"substrate-wasm-builder",
"testnet-parachains-constants",
"westend-runtime-constants",
@@ -2359,7 +2378,6 @@ dependencies = [
"bp-xcm-bridge-hub-router",
"frame-support",
"frame-system",
- "hash-db",
"log",
"pallet-balances",
"pallet-bridge-grandpa",
@@ -2370,8 +2388,6 @@ dependencies = [
"pallet-utility",
"parity-scale-codec",
"scale-info",
- "sp-api",
- "sp-core",
"sp-io",
"sp-runtime",
"sp-std 14.0.0",
@@ -2390,9 +2406,9 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3"
[[package]]
name = "bs58"
-version = "0.5.0"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896"
+checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"
dependencies = [
"tinyvec",
]
@@ -2520,9 +2536,9 @@ checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6"
[[package]]
name = "cc"
-version = "1.0.83"
+version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7"
dependencies = [
"jobserver",
"libc",
@@ -2619,7 +2635,6 @@ dependencies = [
"sp-genesis-builder",
"sp-keyring",
"sp-runtime",
- "sp-std 14.0.0",
"staging-chain-spec-builder",
"substrate-wasm-builder",
]
@@ -2765,12 +2780,12 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.5.3"
+version = "4.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813"
+checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3"
dependencies = [
"clap_builder",
- "clap_derive 4.5.3",
+ "clap_derive 4.5.11",
]
[[package]]
@@ -2784,9 +2799,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.5.2"
+version = "4.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
+checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa"
dependencies = [
"anstream",
"anstyle",
@@ -2801,7 +2816,7 @@ version = "4.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "586a385f7ef2f8b4d86bddaa0c094794e7ccbfe5ffef1f434fe928143fc783a5"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
]
[[package]]
@@ -2813,19 +2828,19 @@ dependencies = [
"heck 0.4.1",
"proc-macro-error",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
[[package]]
name = "clap_derive"
-version = "4.5.3"
+version = "4.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f"
+checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e"
dependencies = [
"heck 0.5.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -2894,6 +2909,7 @@ dependencies = [
"pallet-message-queue",
"pallet-treasury",
"pallet-utility",
+ "pallet-whitelist",
"pallet-xcm",
"parachains-common",
"parity-scale-codec",
@@ -2969,7 +2985,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-transaction-pool",
"sp-version",
@@ -3013,7 +3028,7 @@ checksum = "d51beaa537d73d2d1ff34ee70bc095f170420ab2ec5d687ecd3ec2b0d092514b"
dependencies = [
"nom",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -3058,7 +3073,7 @@ dependencies = [
[[package]]
name = "common"
version = "0.1.0"
-source = "git+https://github.com/w3f/ring-proof#b273d33f9981e2bb3375ab45faeb537f7ee35224"
+source = "git+https://github.com/w3f/ring-proof?rev=665f5f5#665f5f51af5734c7b6d90b985dd6861d4c5b4752"
dependencies = [
"ark-ec",
"ark-ff 0.4.2",
@@ -3226,7 +3241,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-transaction-pool",
"sp-version",
@@ -3270,6 +3284,36 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "coretime-rococo-emulated-chain"
+version = "0.0.0"
+dependencies = [
+ "coretime-rococo-runtime",
+ "cumulus-primitives-core",
+ "emulated-integration-tests-common",
+ "frame-support",
+ "parachains-common",
+ "sp-core",
+ "testnet-parachains-constants",
+]
+
+[[package]]
+name = "coretime-rococo-integration-tests"
+version = "0.1.0"
+dependencies = [
+ "emulated-integration-tests-common",
+ "frame-support",
+ "pallet-balances",
+ "pallet-identity",
+ "pallet-message-queue",
+ "polkadot-runtime-common",
+ "rococo-runtime-constants",
+ "rococo-system-emulated-network",
+ "sp-runtime",
+ "staging-xcm",
+ "staging-xcm-executor",
+]
+
[[package]]
name = "coretime-rococo-runtime"
version = "0.1.0"
@@ -3324,7 +3368,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-transaction-pool",
"sp-version",
@@ -3337,6 +3380,36 @@ dependencies = [
"xcm-runtime-apis",
]
+[[package]]
+name = "coretime-westend-emulated-chain"
+version = "0.0.0"
+dependencies = [
+ "coretime-westend-runtime",
+ "cumulus-primitives-core",
+ "emulated-integration-tests-common",
+ "frame-support",
+ "parachains-common",
+ "sp-core",
+ "testnet-parachains-constants",
+]
+
+[[package]]
+name = "coretime-westend-integration-tests"
+version = "0.1.0"
+dependencies = [
+ "emulated-integration-tests-common",
+ "frame-support",
+ "pallet-balances",
+ "pallet-identity",
+ "pallet-message-queue",
+ "polkadot-runtime-common",
+ "sp-runtime",
+ "staging-xcm",
+ "staging-xcm-executor",
+ "westend-runtime-constants",
+ "westend-system-emulated-network",
+]
+
[[package]]
name = "coretime-westend-runtime"
version = "0.1.0"
@@ -3389,7 +3462,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-transaction-pool",
"sp-version",
@@ -3571,7 +3643,7 @@ dependencies = [
"anes",
"cast",
"ciborium",
- "clap 4.5.3",
+ "clap 4.5.11",
"criterion-plot",
"futures",
"is-terminal",
@@ -3705,7 +3777,7 @@ dependencies = [
name = "cumulus-client-cli"
version = "0.7.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"parity-scale-codec",
"sc-chain-spec",
"sc-cli",
@@ -3772,6 +3844,7 @@ dependencies = [
"sc-consensus-babe",
"sc-consensus-slots",
"sc-telemetry",
+ "sc-utils",
"schnellru",
"sp-api",
"sp-application-crypto",
@@ -3786,6 +3859,7 @@ dependencies = [
"sp-state-machine",
"sp-timestamp",
"substrate-prometheus-endpoint",
+ "tokio",
"tracing",
]
@@ -3906,13 +3980,11 @@ dependencies = [
"cumulus-test-relay-sproof-builder",
"parity-scale-codec",
"sc-client-api",
- "scale-info",
"sp-api",
"sp-crypto-hashing",
"sp-inherents",
"sp-runtime",
"sp-state-machine",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-trie",
"tracing",
@@ -4004,7 +4076,6 @@ dependencies = [
"sp-application-crypto",
"sp-consensus-aura",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -4021,7 +4092,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"staging-xcm",
]
@@ -4081,7 +4151,7 @@ version = "0.6.0"
dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -4095,7 +4165,6 @@ dependencies = [
"pallet-session",
"parity-scale-codec",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -4110,7 +4179,6 @@ dependencies = [
"polkadot-primitives",
"scale-info",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -4124,7 +4192,6 @@ dependencies = [
"scale-info",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"staging-xcm",
]
@@ -4149,7 +4216,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"staging-xcm",
"staging-xcm-builder",
"staging-xcm-executor",
@@ -4166,21 +4232,33 @@ dependencies = [
"parity-scale-codec",
"scale-info",
"sp-runtime",
- "sp-std 14.0.0",
"staging-xcm",
]
[[package]]
-name = "cumulus-primitives-aura"
-version = "0.7.0"
+name = "cumulus-pov-validator"
+version = "0.1.0"
dependencies = [
+ "anyhow",
+ "clap 4.5.11",
"parity-scale-codec",
- "polkadot-core-primitives",
+ "polkadot-node-primitives",
+ "polkadot-parachain-primitives",
"polkadot-primitives",
+ "sc-executor",
+ "sp-core",
+ "sp-io",
+ "sp-maybe-compressed-blob",
+ "tracing",
+ "tracing-subscriber 0.3.18",
+]
+
+[[package]]
+name = "cumulus-primitives-aura"
+version = "0.7.0"
+dependencies = [
"sp-api",
"sp-consensus-aura",
- "sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -4194,7 +4272,6 @@ dependencies = [
"scale-info",
"sp-api",
"sp-runtime",
- "sp-std 14.0.0",
"sp-trie",
"staging-xcm",
]
@@ -4209,9 +4286,6 @@ dependencies = [
"scale-info",
"sp-core",
"sp-inherents",
- "sp-runtime",
- "sp-state-machine",
- "sp-std 14.0.0",
"sp-trie",
]
@@ -4242,7 +4316,6 @@ dependencies = [
"scale-info",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-trie",
]
@@ -4251,10 +4324,7 @@ name = "cumulus-primitives-timestamp"
version = "0.7.0"
dependencies = [
"cumulus-primitives-core",
- "futures",
- "parity-scale-codec",
"sp-inherents",
- "sp-std 14.0.0",
"sp-timestamp",
]
@@ -4268,10 +4338,7 @@ dependencies = [
"pallet-asset-conversion",
"parity-scale-codec",
"polkadot-runtime-common",
- "polkadot-runtime-parachains",
- "sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"staging-xcm",
"staging-xcm-builder",
"staging-xcm-executor",
@@ -4333,15 +4400,8 @@ dependencies = [
"cumulus-relay-chain-interface",
"cumulus-relay-chain-rpc-interface",
"futures",
- "parking_lot 0.12.3",
- "polkadot-availability-recovery",
- "polkadot-collator-protocol",
"polkadot-core-primitives",
"polkadot-network-bridge",
- "polkadot-node-collation-generation",
- "polkadot-node-core-chain-api",
- "polkadot-node-core-prospective-parachains",
- "polkadot-node-core-runtime-api",
"polkadot-node-network-protocol",
"polkadot-node-subsystem-util",
"polkadot-overseer",
@@ -4448,7 +4508,6 @@ dependencies = [
"polkadot-primitives",
"sp-runtime",
"sp-state-machine",
- "sp-std 14.0.0",
"sp-trie",
]
@@ -4487,7 +4546,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-transaction-pool",
"sp-version",
"staging-parachain-info",
@@ -4499,7 +4557,7 @@ name = "cumulus-test-service"
version = "0.1.0"
dependencies = [
"async-trait",
- "clap 4.5.3",
+ "clap 4.5.11",
"criterion",
"cumulus-client-cli",
"cumulus-client-collator",
@@ -4535,7 +4593,6 @@ dependencies = [
"polkadot-test-service",
"portpicker",
"rand",
- "rococo-parachain-runtime",
"sc-basic-authorship",
"sc-block-builder",
"sc-chain-spec",
@@ -4560,7 +4617,6 @@ dependencies = [
"sp-blockchain",
"sp-consensus",
"sp-consensus-aura",
- "sp-consensus-grandpa",
"sp-core",
"sp-io",
"sp-keyring",
@@ -4630,7 +4686,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -4669,7 +4725,7 @@ dependencies = [
"codespan-reporting",
"once_cell",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"scratch",
"syn 2.0.61",
]
@@ -4687,7 +4743,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50c49547d73ba8dcfd4ad7325d64c6d5391ff4224d498fc39a6f3f49825a530d"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -4779,9 +4835,12 @@ dependencies = [
[[package]]
name = "deranged"
-version = "0.3.8"
+version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+]
[[package]]
name = "derivative"
@@ -4790,18 +4849,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "derive-syn-parse"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e79116f119dd1dba1abf1f3405f03b9b0e79a27a3883864bfebded8a3dc768cd"
-dependencies = [
- "proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -4812,7 +4860,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -4823,7 +4871,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -4835,7 +4883,7 @@ checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
dependencies = [
"convert_case",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"rustc_version 0.4.0",
"syn 1.0.109",
]
@@ -4931,7 +4979,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -4944,7 +4992,7 @@ checksum = "86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632"
[[package]]
name = "dleq_vrf"
version = "0.0.2"
-source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e"
+source = "git+https://github.com/w3f/ring-vrf?rev=0fef826#0fef8266d851932ad25d6b41bc4b34d834d1e11d"
dependencies = [
"ark-ec",
"ark-ff 0.4.2",
@@ -4988,10 +5036,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a081e51fb188742f5a7a1164ad752121abcb22874b21e2c3b0dd040c515fdad"
dependencies = [
"common-path",
- "derive-syn-parse 0.2.0",
+ "derive-syn-parse",
"once_cell",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"regex",
"syn 2.0.61",
"termcolor",
@@ -5040,7 +5088,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -5186,7 +5234,7 @@ checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116"
dependencies = [
"heck 0.4.1",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -5198,7 +5246,7 @@ checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a"
dependencies = [
"heck 0.4.1",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -5218,18 +5266,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
[[package]]
name = "enumn"
-version = "0.1.12"
+version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b"
+checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -5240,7 +5288,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea"
dependencies = [
"log",
- "regex",
]
[[package]]
@@ -5275,7 +5322,6 @@ dependencies = [
"anstream",
"anstyle",
"env_filter",
- "humantime",
"log",
]
@@ -5401,7 +5447,7 @@ checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91"
dependencies = [
"concurrent-queue",
"parking",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
]
[[package]]
@@ -5411,7 +5457,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1"
dependencies = [
"event-listener 5.2.0",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
]
[[package]]
@@ -5425,14 +5471,16 @@ dependencies = [
[[package]]
name = "expander"
-version = "2.0.0"
+version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f86a749cf851891866c10515ef6c299b5c69661465e9c3bbe7e07a2b77fb0f7"
+checksum = "e2c470c71d91ecbd179935b24170459e926382eaaa86b590b78814e180d8a8e2"
dependencies = [
"blake2 0.10.6",
+ "file-guard",
"fs-err",
+ "prettyplease 0.2.12",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -5504,7 +5552,7 @@ dependencies = [
"indexmap 2.2.3",
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -5563,6 +5611,16 @@ version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7"
+[[package]]
+name = "file-guard"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21ef72acf95ec3d7dbf61275be556299490a245f017cf084bd23b4f68cf9407c"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
[[package]]
name = "file-per-thread-logger"
version = "0.1.6"
@@ -5696,9 +5754,9 @@ dependencies = [
[[package]]
name = "form_urlencoded"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
dependencies = [
"percent-encoding",
]
@@ -5751,7 +5809,6 @@ dependencies = [
"sp-keystore",
"sp-runtime",
"sp-runtime-interface 24.0.0",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"static_assertions",
]
@@ -5763,7 +5820,7 @@ dependencies = [
"Inflector",
"array-bytes",
"chrono",
- "clap 4.5.3",
+ "clap 4.5.11",
"comfy-table",
"frame-benchmarking",
"frame-support",
@@ -5816,7 +5873,6 @@ dependencies = [
"scale-info",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -5828,7 +5884,7 @@ dependencies = [
"parity-scale-codec",
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"scale-info",
"sp-arithmetic",
"syn 2.0.61",
@@ -5850,14 +5906,13 @@ dependencies = [
"sp-io",
"sp-npos-elections",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
name = "frame-election-solution-type-fuzzer"
version = "2.0.0-alpha.5"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"frame-election-provider-solution-type",
"frame-election-provider-support",
"frame-support",
@@ -5888,7 +5943,6 @@ dependencies = [
"sp-inherents",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"sp-version",
]
@@ -5930,14 +5984,14 @@ dependencies = [
name = "frame-omni-bencher"
version = "0.1.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"cumulus-primitives-proof-size-hostfunction",
- "env_logger 0.11.3",
"frame-benchmarking-cli",
"log",
"sc-cli",
"sp-runtime",
"sp-statement-store",
+ "sp-tracing 16.0.0",
]
[[package]]
@@ -6013,16 +6067,27 @@ version = "23.0.0"
dependencies = [
"Inflector",
"cfg-expr",
- "derive-syn-parse 0.2.0",
+ "derive-syn-parse",
+ "docify",
"expander",
+ "frame-support",
"frame-support-procedural-tools",
+ "frame-system",
"itertools 0.11.0",
"macro_magic",
+ "parity-scale-codec",
+ "pretty_assertions",
"proc-macro-warning 1.0.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"regex",
+ "scale-info",
+ "sp-core",
"sp-crypto-hashing",
+ "sp-io",
+ "sp-metadata-ir",
+ "sp-runtime",
+ "static_assertions",
"syn 2.0.61",
]
@@ -6033,7 +6098,7 @@ dependencies = [
"frame-support-procedural-tools-derive",
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -6042,7 +6107,7 @@ name = "frame-support-procedural-tools-derive"
version = "11.0.0"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -6068,7 +6133,6 @@ dependencies = [
"sp-metadata-ir",
"sp-runtime",
"sp-state-machine",
- "sp-std 14.0.0",
"sp-version",
"static_assertions",
"trybuild",
@@ -6143,7 +6207,6 @@ dependencies = [
"sp-externalities 0.25.0",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-version",
]
@@ -6164,7 +6227,6 @@ dependencies = [
"parity-scale-codec",
"sp-api",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -6275,7 +6337,7 @@ dependencies = [
"futures-io",
"memchr",
"parking",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"waker-fn",
]
@@ -6286,7 +6348,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
dependencies = [
"futures-core",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
]
[[package]]
@@ -6296,7 +6358,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -6341,7 +6403,7 @@ dependencies = [
"futures-sink",
"futures-task",
"memchr",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"pin-utils",
"slab",
]
@@ -6502,7 +6564,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-transaction-pool",
"sp-version",
@@ -6710,9 +6771,9 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46"
[[package]]
name = "hkdf"
-version = "0.12.3"
+version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437"
+checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
dependencies = [
"hmac 0.12.1",
]
@@ -6800,7 +6861,7 @@ checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
dependencies = [
"bytes",
"http 0.2.9",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
]
[[package]]
@@ -6823,7 +6884,7 @@ dependencies = [
"futures-util",
"http 1.1.0",
"http-body 1.0.0",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
]
[[package]]
@@ -6860,7 +6921,7 @@ dependencies = [
"httparse",
"httpdate",
"itoa",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"socket2 0.5.7",
"tokio",
"tower-service",
@@ -6883,7 +6944,7 @@ dependencies = [
"httparse",
"httpdate",
"itoa",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"smallvec",
"tokio",
"want",
@@ -6935,7 +6996,7 @@ dependencies = [
"http 1.1.0",
"http-body 1.0.0",
"hyper 1.3.1",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"socket2 0.5.7",
"tokio",
"tower",
@@ -6987,6 +7048,16 @@ dependencies = [
"unicode-normalization",
]
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
[[package]]
name = "if-addrs"
version = "0.10.2"
@@ -7080,7 +7151,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -7100,7 +7171,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
]
[[package]]
@@ -7444,7 +7515,7 @@ dependencies = [
"heck 0.5.0",
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -7641,9 +7712,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
[[package]]
name = "libc"
-version = "0.2.153"
+version = "0.2.155"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]]
name = "libflate"
@@ -7832,11 +7903,11 @@ dependencies = [
[[package]]
name = "libp2p-identity"
-version = "0.2.8"
+version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "999ec70441b2fb35355076726a6bc466c932e9bdc66f6a11c6c0aa17c7ab9be0"
+checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8"
dependencies = [
- "bs58 0.5.0",
+ "bs58 0.5.1",
"ed25519-dalek",
"hkdf",
"multihash 0.19.1",
@@ -8032,7 +8103,7 @@ dependencies = [
"heck 0.4.1",
"proc-macro-warning 0.4.2",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -8104,9 +8175,9 @@ dependencies = [
[[package]]
name = "libp2p-websocket"
-version = "0.42.1"
+version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3facf0691bab65f571bc97c6c65ffa836248ca631d631b7691ac91deb7fceb5f"
+checksum = "004ee9c4a4631435169aee6aad2f62e3984dc031c43b6d29731e8e82a016c538"
dependencies = [
"either",
"futures",
@@ -8115,9 +8186,10 @@ dependencies = [
"libp2p-identity",
"log",
"parking_lot 0.12.3",
- "quicksink",
+ "pin-project-lite",
"rw-stream-sink",
- "soketto 0.7.1",
+ "soketto 0.8.0",
+ "thiserror",
"url",
"webpki-roots 0.25.2",
]
@@ -8358,9 +8430,9 @@ dependencies = [
[[package]]
name = "log"
-version = "0.4.21"
+version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
dependencies = [
"serde",
"value-bag",
@@ -8439,49 +8511,49 @@ dependencies = [
[[package]]
name = "macro_magic"
-version = "0.5.0"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e03844fc635e92f3a0067e25fa4bf3e3dbf3f2927bf3aa01bb7bc8f1c428949d"
+checksum = "cc33f9f0351468d26fbc53d9ce00a096c8522ecb42f19b50f34f2c422f76d21d"
dependencies = [
"macro_magic_core",
"macro_magic_macros",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
[[package]]
name = "macro_magic_core"
-version = "0.5.0"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "468155613a44cfd825f1fb0ffa532b018253920d404e6fca1e8d43155198a46d"
+checksum = "1687dc887e42f352865a393acae7cf79d98fab6351cde1f58e9e057da89bf150"
dependencies = [
"const-random",
- "derive-syn-parse 0.1.5",
+ "derive-syn-parse",
"macro_magic_core_macros",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
[[package]]
name = "macro_magic_core_macros"
-version = "0.5.0"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ea73aa640dc01d62a590d48c0c3521ed739d53b27f919b25c3551e233481654"
+checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
[[package]]
name = "macro_magic_macros"
-version = "0.5.0"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef9d79ae96aaba821963320eb2b6e34d17df1e5a83d8a1985c29cc5be59577b3"
+checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869"
dependencies = [
"macro_magic_core",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -8533,9 +8605,9 @@ dependencies = [
[[package]]
name = "memchr"
-version = "2.6.4"
+version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "memfd"
@@ -8624,7 +8696,6 @@ dependencies = [
"async-std",
"async-trait",
"bp-messages",
- "env_logger 0.11.3",
"finality-relay",
"futures",
"hex",
@@ -8658,24 +8729,11 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
-[[package]]
-name = "minimal-template"
-version = "0.0.0"
-dependencies = [
- "docify",
- "minimal-template-node",
- "minimal-template-runtime",
- "pallet-minimal-template",
- "polkadot-sdk-docs",
- "polkadot-sdk-frame",
- "simple-mermaid 0.1.1",
-]
-
[[package]]
name = "minimal-template-node"
version = "0.0.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"docify",
"futures",
"futures-timer",
@@ -8846,7 +8904,7 @@ checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb"
dependencies = [
"cfg-if",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -8858,7 +8916,7 @@ checksum = "af7cbce79ec385a1d4f54baa90a76401eb15d9cab93685f62e7e9f942aa00ae2"
dependencies = [
"cfg-if",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -8970,7 +9028,7 @@ dependencies = [
"proc-macro-crate 1.3.1",
"proc-macro-error",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
"synstructure 0.12.6",
]
@@ -9018,7 +9076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -9168,7 +9226,7 @@ name = "node-bench"
version = "0.9.0-dev"
dependencies = [
"array-bytes",
- "clap 4.5.3",
+ "clap 4.5.11",
"derive_more",
"fs_extra",
"futures",
@@ -9226,7 +9284,6 @@ dependencies = [
"sc-mixnet",
"sc-rpc",
"sc-rpc-api",
- "sc-rpc-spec-v2",
"sc-sync-state-rpc",
"sc-transaction-pool-api",
"sp-api",
@@ -9247,7 +9304,7 @@ dependencies = [
name = "node-runtime-generate-bags"
version = "3.0.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"generate-bags",
"kitchensink-runtime",
]
@@ -9256,7 +9313,7 @@ dependencies = [
name = "node-template-release"
version = "3.0.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"flate2",
"fs_extra",
"glob",
@@ -9398,6 +9455,12 @@ dependencies = [
"num-traits",
]
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
[[package]]
name = "num-derive"
version = "0.4.2"
@@ -9405,7 +9468,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -9508,6 +9571,15 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "object"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce"
+dependencies = [
+ "memchr",
+]
+
[[package]]
name = "oid-registry"
version = "0.6.1"
@@ -9572,7 +9644,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -9612,9 +9684,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
[[package]]
name = "orchestra"
-version = "0.3.6"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92829eef0328a3d1cd22a02c0e51deb92a5362df3e7d21a4e9bdc38934694e66"
+checksum = "41f6bbacc8c189a3f2e45e0fd0436e5d97f194db888e721bdbc3973e7dbed4c2"
dependencies = [
"async-trait",
"dyn-clonable",
@@ -9629,9 +9701,9 @@ dependencies = [
[[package]]
name = "orchestra-proc-macro"
-version = "0.3.6"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1344346d5af32c95bbddea91b18a88cc83eac394192d20ef2fc4c40a74332355"
+checksum = "f7b1d40dd8f367db3c65bec8d3dd47d4a604ee8874480738f93191bddab4e0e0"
dependencies = [
"expander",
"indexmap 2.2.3",
@@ -9639,7 +9711,7 @@ dependencies = [
"petgraph",
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -9688,7 +9760,6 @@ dependencies = [
"sp-crypto-hashing",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -9709,7 +9780,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -9730,7 +9800,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -9748,7 +9817,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
]
@@ -9765,7 +9833,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -9786,7 +9853,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
]
@@ -9805,7 +9871,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -9837,7 +9902,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -9855,7 +9919,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -9872,7 +9935,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -9887,7 +9949,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -9915,7 +9976,6 @@ dependencies = [
"sp-runtime",
"sp-session",
"sp-staking",
- "sp-std 14.0.0",
]
[[package]]
@@ -9935,7 +9995,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
]
@@ -9983,7 +10042,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10011,7 +10069,6 @@ dependencies = [
"sp-session",
"sp-staking",
"sp-state-machine",
- "sp-std 14.0.0",
]
[[package]]
@@ -10020,6 +10077,7 @@ version = "28.0.0"
dependencies = [
"array-bytes",
"binary-merkle-tree",
+ "frame-benchmarking",
"frame-support",
"frame-system",
"log",
@@ -10036,7 +10094,6 @@ dependencies = [
"sp-runtime",
"sp-staking",
"sp-state-machine",
- "sp-std 14.0.0",
]
[[package]]
@@ -10054,7 +10111,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10088,7 +10144,6 @@ dependencies = [
"bp-header-chain",
"bp-runtime",
"bp-test-utils",
- "finality-grandpa",
"frame-benchmarking",
"frame-support",
"frame-system",
@@ -10100,13 +10155,13 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-std 14.0.0",
- "sp-trie",
]
[[package]]
name = "pallet-bridge-messages"
version = "0.7.0"
dependencies = [
+ "bp-header-chain",
"bp-messages",
"bp-runtime",
"bp-test-utils",
@@ -10114,13 +10169,15 @@ dependencies = [
"frame-support",
"frame-system",
"log",
- "num-traits",
"pallet-balances",
+ "pallet-bridge-grandpa",
"parity-scale-codec",
"scale-info",
+ "sp-core",
"sp-io",
"sp-runtime",
"sp-std 14.0.0",
+ "sp-trie",
]
[[package]]
@@ -10143,7 +10200,6 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-std 14.0.0",
- "sp-trie",
]
[[package]]
@@ -10184,7 +10240,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
]
@@ -10204,7 +10259,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10228,7 +10282,6 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-staking",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
]
@@ -10245,7 +10298,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10260,7 +10312,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10270,7 +10321,6 @@ dependencies = [
"array-bytes",
"assert_matches",
"bitflags 1.3.2",
- "env_logger 0.11.3",
"environmental",
"frame-benchmarking",
"frame-support",
@@ -10316,7 +10366,7 @@ dependencies = [
"anyhow",
"frame-system",
"parity-wasm",
- "polkavm-linker",
+ "polkavm-linker 0.9.2",
"sp-runtime",
"tempfile",
"toml 0.8.8",
@@ -10353,7 +10403,6 @@ dependencies = [
"sp-io",
"sp-keystore",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"staging-xcm",
"staging-xcm-builder",
@@ -10366,7 +10415,7 @@ name = "pallet-contracts-proc-macro"
version = "18.0.0"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -10377,7 +10426,7 @@ dependencies = [
"bitflags 1.3.2",
"parity-scale-codec",
"paste",
- "polkavm-derive",
+ "polkavm-derive 0.9.1",
"scale-info",
]
@@ -10397,7 +10446,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10415,7 +10463,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10429,7 +10476,6 @@ dependencies = [
"scale-info",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10439,6 +10485,7 @@ dependencies = [
"frame-election-provider-support",
"frame-support",
"frame-system",
+ "log",
"pallet-balances",
"pallet-nomination-pools",
"pallet-staking",
@@ -10450,7 +10497,6 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-staking",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"substrate-test-utils",
]
@@ -10472,7 +10518,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10488,7 +10533,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10538,7 +10582,6 @@ dependencies = [
"sp-io",
"sp-npos-elections",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"strum 0.26.2",
]
@@ -10553,7 +10596,6 @@ dependencies = [
"parity-scale-codec",
"sp-npos-elections",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10572,7 +10614,6 @@ dependencies = [
"sp-npos-elections",
"sp-runtime",
"sp-staking",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"substrate-test-utils",
]
@@ -10591,7 +10632,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10617,7 +10657,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10648,7 +10687,6 @@ dependencies = [
"sp-io",
"sp-keystore",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10667,7 +10705,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-version",
]
@@ -10683,7 +10720,6 @@ dependencies = [
"scale-info",
"sp-core",
"sp-io",
- "sp-std 14.0.0",
]
[[package]]
@@ -10699,7 +10735,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10737,7 +10772,6 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-staking",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"substrate-test-utils",
]
@@ -10758,7 +10792,6 @@ dependencies = [
"sp-inherents",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10788,7 +10821,6 @@ dependencies = [
"sp-runtime",
"sp-session",
"sp-staking",
- "sp-std 14.0.0",
]
[[package]]
@@ -10807,7 +10839,6 @@ dependencies = [
"sp-io",
"sp-keystore",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10827,7 +10858,6 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-staking",
- "sp-std 14.0.0",
]
[[package]]
@@ -10844,7 +10874,6 @@ dependencies = [
"sp-io",
"sp-keyring",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10859,7 +10888,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10876,7 +10904,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10892,7 +10919,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10914,7 +10940,6 @@ dependencies = [
"sp-crypto-hashing",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"sp-weights",
]
@@ -10938,7 +10963,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"sp-version",
]
@@ -10968,7 +10992,6 @@ dependencies = [
"sp-io",
"sp-mixnet",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -10976,7 +10999,6 @@ name = "pallet-mmr"
version = "27.0.0"
dependencies = [
"array-bytes",
- "env_logger 0.11.3",
"frame-benchmarking",
"frame-support",
"frame-system",
@@ -10988,7 +11010,7 @@ dependencies = [
"sp-io",
"sp-mmr-primitives",
"sp-runtime",
- "sp-std 14.0.0",
+ "sp-tracing 16.0.0",
]
[[package]]
@@ -11004,7 +11026,6 @@ dependencies = [
"scale-info",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11042,7 +11063,6 @@ dependencies = [
"sp-io",
"sp-keystore",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11052,7 +11072,6 @@ dependencies = [
"pallet-nfts",
"parity-scale-codec",
"sp-api",
- "sp-std 14.0.0",
]
[[package]]
@@ -11069,7 +11088,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11084,7 +11102,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11101,7 +11118,6 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-staking",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
]
@@ -11127,7 +11143,6 @@ dependencies = [
"sp-runtime",
"sp-runtime-interface 24.0.0",
"sp-staking",
- "sp-std 14.0.0",
]
[[package]]
@@ -11152,7 +11167,6 @@ dependencies = [
"pallet-nomination-pools",
"parity-scale-codec",
"sp-api",
- "sp-std 14.0.0",
]
[[package]]
@@ -11219,7 +11233,6 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-staking",
- "sp-std 14.0.0",
]
[[package]]
@@ -11246,7 +11259,6 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-staking",
- "sp-std 14.0.0",
]
[[package]]
@@ -11263,7 +11275,6 @@ dependencies = [
"sp-io",
"sp-metadata-ir",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11308,7 +11319,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11325,7 +11335,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11342,7 +11351,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11360,7 +11368,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11376,7 +11383,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11398,7 +11404,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11414,7 +11419,115 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
+]
+
+[[package]]
+name = "pallet-revive"
+version = "0.1.0"
+dependencies = [
+ "array-bytes",
+ "assert_matches",
+ "bitflags 1.3.2",
+ "environmental",
+ "frame-benchmarking",
+ "frame-support",
+ "frame-system",
+ "impl-trait-for-tuples",
+ "log",
+ "pallet-assets",
+ "pallet-balances",
+ "pallet-message-queue",
+ "pallet-proxy",
+ "pallet-revive-fixtures",
+ "pallet-revive-proc-macro",
+ "pallet-revive-uapi",
+ "pallet-timestamp",
+ "pallet-utility",
+ "parity-scale-codec",
+ "paste",
+ "polkavm 0.10.0",
+ "pretty_assertions",
+ "scale-info",
+ "serde",
+ "sp-api",
+ "sp-core",
+ "sp-io",
+ "sp-keystore",
+ "sp-runtime",
"sp-std 14.0.0",
+ "sp-tracing 16.0.0",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "wat",
+]
+
+[[package]]
+name = "pallet-revive-fixtures"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "frame-system",
+ "parity-wasm",
+ "polkavm-linker 0.10.0",
+ "sp-runtime",
+ "tempfile",
+ "toml 0.8.8",
+]
+
+[[package]]
+name = "pallet-revive-mock-network"
+version = "0.1.0"
+dependencies = [
+ "assert_matches",
+ "frame-support",
+ "frame-system",
+ "pallet-assets",
+ "pallet-balances",
+ "pallet-message-queue",
+ "pallet-proxy",
+ "pallet-revive",
+ "pallet-revive-fixtures",
+ "pallet-revive-proc-macro",
+ "pallet-revive-uapi",
+ "pallet-timestamp",
+ "pallet-utility",
+ "pallet-xcm",
+ "parity-scale-codec",
+ "polkadot-parachain-primitives",
+ "polkadot-primitives",
+ "polkadot-runtime-parachains",
+ "pretty_assertions",
+ "scale-info",
+ "sp-api",
+ "sp-core",
+ "sp-io",
+ "sp-keystore",
+ "sp-runtime",
+ "sp-tracing 16.0.0",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
+ "xcm-simulator",
+]
+
+[[package]]
+name = "pallet-revive-proc-macro"
+version = "0.1.0"
+dependencies = [
+ "proc-macro2 1.0.82",
+ "quote 1.0.36",
+ "syn 2.0.61",
+]
+
+[[package]]
+name = "pallet-revive-uapi"
+version = "0.1.0"
+dependencies = [
+ "bitflags 1.3.2",
+ "parity-scale-codec",
+ "paste",
+ "polkavm-derive 0.10.0",
+ "scale-info",
]
[[package]]
@@ -11449,7 +11562,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11469,7 +11581,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11487,7 +11598,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11506,7 +11616,6 @@ dependencies = [
"sp-crypto-hashing",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11524,7 +11633,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-weights",
"substrate-test-utils",
]
@@ -11541,7 +11649,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11561,7 +11668,6 @@ dependencies = [
"sp-session",
"sp-staking",
"sp-state-machine",
- "sp-std 14.0.0",
"sp-trie",
]
@@ -11585,7 +11691,6 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
]
[[package]]
@@ -11597,7 +11702,6 @@ dependencies = [
"parity-scale-codec",
"scale-info",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11618,7 +11722,6 @@ dependencies = [
"sp-crypto-hashing",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11646,7 +11749,6 @@ dependencies = [
"sp-npos-elections",
"sp-runtime",
"sp-staking",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"substrate-test-utils",
]
@@ -11657,7 +11759,7 @@ version = "11.0.0"
dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"sp-runtime",
"syn 2.0.61",
]
@@ -11696,7 +11798,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"substrate-state-trie-migration-rpc",
"thousands",
@@ -11719,7 +11820,6 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-statement-store",
- "sp-std 14.0.0",
]
[[package]]
@@ -11735,7 +11835,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11767,7 +11866,6 @@ dependencies = [
"sp-inherents",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-timestamp",
]
@@ -11788,7 +11886,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
]
@@ -11806,7 +11903,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11852,7 +11948,6 @@ dependencies = [
"sp-inherents",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-transaction-storage-proof",
]
@@ -11873,7 +11968,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11892,7 +11986,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11928,7 +12021,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11945,7 +12037,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11963,7 +12054,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -11985,7 +12075,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"staging-xcm",
"staging-xcm-builder",
"staging-xcm-executor",
@@ -12009,7 +12098,6 @@ dependencies = [
"scale-info",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"staging-xcm",
"staging-xcm-builder",
@@ -12030,6 +12118,7 @@ dependencies = [
"log",
"pallet-balances",
"pallet-bridge-messages",
+ "pallet-xcm-bridge-hub-router",
"parity-scale-codec",
"scale-info",
"sp-core",
@@ -12064,7 +12153,7 @@ dependencies = [
name = "parachain-template-node"
version = "0.0.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"color-print",
"cumulus-client-cli",
"cumulus-client-collator",
@@ -12170,7 +12259,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-transaction-pool",
"sp-version",
"staging-parachain-info",
@@ -12203,7 +12291,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"staging-parachain-info",
"staging-xcm",
"staging-xcm-executor",
@@ -12248,7 +12335,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"staging-parachain-info",
"staging-xcm",
@@ -12318,7 +12404,7 @@ checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c"
dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -12430,9 +12516,9 @@ dependencies = [
[[package]]
name = "paste"
-version = "1.0.14"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
[[package]]
name = "pbkdf2"
@@ -12522,7 +12608,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-transaction-pool",
"sp-version",
@@ -12620,7 +12705,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-transaction-pool",
"sp-version",
@@ -12656,6 +12740,7 @@ dependencies = [
"pallet-balances",
"pallet-identity",
"pallet-message-queue",
+ "pallet-xcm",
"parachains-common",
"parity-scale-codec",
"polkadot-runtime-common",
@@ -12718,7 +12803,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-transaction-pool",
"sp-version",
@@ -12734,9 +12818,9 @@ dependencies = [
[[package]]
name = "percent-encoding"
-version = "2.3.0"
+version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "pest"
@@ -12767,7 +12851,7 @@ dependencies = [
"pest",
"pest_meta",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -12808,21 +12892,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
[[package]]
name = "pin-project-lite"
-version = "0.1.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777"
-
-[[package]]
-name = "pin-project-lite"
-version = "0.2.12"
+version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
[[package]]
name = "pin-utils"
@@ -12907,7 +12985,6 @@ version = "7.0.0"
dependencies = [
"assert_matches",
"bitvec",
- "env_logger 0.11.3",
"futures",
"futures-timer",
"itertools 0.11.0",
@@ -12927,6 +13004,7 @@ dependencies = [
"schnorrkel 0.11.4",
"sp-authority-discovery",
"sp-core",
+ "sp-tracing 16.0.0",
"tracing-gum",
]
@@ -12937,10 +13015,8 @@ dependencies = [
"always-assert",
"assert_matches",
"bitvec",
- "env_logger 0.11.3",
"futures",
"futures-timer",
- "log",
"maplit",
"polkadot-node-network-protocol",
"polkadot-node-subsystem",
@@ -12954,6 +13030,7 @@ dependencies = [
"sp-core",
"sp-keyring",
"sp-keystore",
+ "sp-tracing 16.0.0",
"tracing-gum",
]
@@ -13036,7 +13113,7 @@ name = "polkadot-cli"
version = "7.0.0"
dependencies = [
"cfg-if",
- "clap 4.5.3",
+ "clap 4.5.11",
"frame-benchmarking-cli",
"futures",
"log",
@@ -13066,11 +13143,9 @@ version = "7.0.0"
dependencies = [
"assert_matches",
"bitvec",
- "env_logger 0.11.3",
"fatality",
"futures",
"futures-timer",
- "log",
"parity-scale-codec",
"polkadot-node-network-protocol",
"polkadot-node-primitives",
@@ -13100,7 +13175,6 @@ dependencies = [
"scale-info",
"sp-core",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -13241,7 +13315,6 @@ dependencies = [
"async-trait",
"bitvec",
"derive_more",
- "env_logger 0.11.3",
"futures",
"futures-timer",
"itertools 0.11.0",
@@ -13274,6 +13347,7 @@ dependencies = [
"sp-keyring",
"sp-keystore",
"sp-runtime",
+ "sp-tracing 16.0.0",
"thiserror",
"tracing-gum",
]
@@ -13284,7 +13358,6 @@ version = "7.0.0"
dependencies = [
"assert_matches",
"bitvec",
- "env_logger 0.11.3",
"futures",
"futures-timer",
"kvdb",
@@ -13304,6 +13377,7 @@ dependencies = [
"sp-consensus",
"sp-core",
"sp-keyring",
+ "sp-tracing 16.0.0",
"thiserror",
"tracing-gum",
]
@@ -13371,8 +13445,10 @@ dependencies = [
"polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-primitives-test-helpers",
+ "sp-application-crypto",
"sp-core",
"sp-keyring",
+ "sp-keystore",
"sp-maybe-compressed-blob",
"tracing-gum",
]
@@ -13467,23 +13543,17 @@ name = "polkadot-node-core-prospective-parachains"
version = "6.0.0"
dependencies = [
"assert_matches",
- "bitvec",
"fatality",
"futures",
- "parity-scale-codec",
- "polkadot-node-primitives",
"polkadot-node-subsystem",
"polkadot-node-subsystem-test-helpers",
- "polkadot-node-subsystem-types",
"polkadot-node-subsystem-util",
"polkadot-primitives",
"polkadot-primitives-test-helpers",
+ "rand",
"rstest",
- "sc-keystore",
- "sp-application-crypto",
"sp-core",
- "sp-keyring",
- "sp-keystore",
+ "sp-tracing 16.0.0",
"thiserror",
"tracing-gum",
]
@@ -13613,8 +13683,10 @@ dependencies = [
"nix 0.28.0",
"parity-scale-codec",
"polkadot-node-core-pvf-common",
+ "polkadot-node-primitives",
"polkadot-parachain-primitives",
"polkadot-primitives",
+ "sp-maybe-compressed-blob",
"tracing-gum",
]
@@ -13629,6 +13701,7 @@ dependencies = [
"nix 0.28.0",
"parity-scale-codec",
"polkadot-node-core-pvf-common",
+ "polkadot-node-primitives",
"polkadot-primitives",
"rayon",
"rococo-runtime",
@@ -13685,7 +13758,7 @@ name = "polkadot-node-metrics"
version = "7.0.0"
dependencies = [
"assert_cmd",
- "bs58 0.5.0",
+ "bs58 0.5.1",
"futures",
"futures-timer",
"http-body-util",
@@ -13823,7 +13896,6 @@ dependencies = [
"assert_matches",
"async-trait",
"derive_more",
- "env_logger 0.11.3",
"fatality",
"futures",
"futures-channel",
@@ -13890,18 +13962,48 @@ dependencies = [
name = "polkadot-parachain-bin"
version = "4.0.0"
dependencies = [
- "assert_cmd",
"asset-hub-rococo-runtime",
"asset-hub-westend-runtime",
- "async-trait",
"bridge-hub-rococo-runtime",
"bridge-hub-westend-runtime",
- "clap 4.5.3",
"collectives-westend-runtime",
- "color-print",
+ "color-eyre",
"contracts-rococo-runtime",
"coretime-rococo-runtime",
"coretime-westend-runtime",
+ "cumulus-primitives-core",
+ "glutton-westend-runtime",
+ "hex-literal",
+ "log",
+ "parachains-common",
+ "penpal-runtime",
+ "people-rococo-runtime",
+ "people-westend-runtime",
+ "polkadot-parachain-lib",
+ "polkadot-service",
+ "rococo-parachain-runtime",
+ "sc-chain-spec",
+ "sc-cli",
+ "sc-service",
+ "seedling-runtime",
+ "serde",
+ "serde_json",
+ "shell-runtime",
+ "sp-core",
+ "sp-runtime",
+ "staging-xcm",
+ "substrate-build-script-utils",
+ "testnet-parachains-constants",
+]
+
+[[package]]
+name = "polkadot-parachain-lib"
+version = "0.1.0"
+dependencies = [
+ "assert_cmd",
+ "async-trait",
+ "clap 4.5.11",
+ "color-print",
"cumulus-client-cli",
"cumulus-client-collator",
"cumulus-client-consensus-aura",
@@ -13913,14 +14015,13 @@ dependencies = [
"cumulus-primitives-aura",
"cumulus-primitives-core",
"cumulus-relay-chain-interface",
+ "docify",
"frame-benchmarking",
"frame-benchmarking-cli",
"frame-support",
"frame-system-rpc-runtime-api",
"frame-try-runtime",
"futures",
- "glutton-westend-runtime",
- "hex-literal",
"jsonrpsee",
"log",
"nix 0.28.0",
@@ -13929,13 +14030,8 @@ dependencies = [
"pallet-transaction-payment-rpc-runtime-api",
"parachains-common",
"parity-scale-codec",
- "penpal-runtime",
- "people-rococo-runtime",
- "people-westend-runtime",
"polkadot-cli",
"polkadot-primitives",
- "polkadot-service",
- "rococo-parachain-runtime",
"sc-basic-authorship",
"sc-chain-spec",
"sc-cli",
@@ -13943,42 +14039,30 @@ dependencies = [
"sc-consensus",
"sc-executor",
"sc-network",
- "sc-network-sync",
"sc-rpc",
"sc-service",
"sc-sysinfo",
"sc-telemetry",
"sc-tracing",
"sc-transaction-pool",
- "sc-transaction-pool-api",
- "seedling-runtime",
"serde",
"serde_json",
- "shell-runtime",
"sp-api",
"sp-block-builder",
- "sp-blockchain",
"sp-consensus-aura",
"sp-core",
"sp-genesis-builder",
"sp-inherents",
- "sp-io",
"sp-keystore",
- "sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-timestamp",
- "sp-tracing 16.0.0",
"sp-transaction-pool",
"sp-version",
- "staging-xcm",
- "substrate-build-script-utils",
+ "sp-weights",
"substrate-frame-rpc-system",
"substrate-prometheus-endpoint",
"substrate-state-trie-migration-rpc",
- "tempfile",
- "testnet-parachains-constants",
"tokio",
"wait-timeout",
]
@@ -13995,7 +14079,6 @@ dependencies = [
"serde",
"sp-core",
"sp-runtime",
- "sp-std 14.0.0",
"sp-weights",
]
@@ -14022,7 +14105,6 @@ dependencies = [
"sp-keystore",
"sp-runtime",
"sp-staking",
- "sp-std 14.0.0",
]
[[package]]
@@ -14120,7 +14202,6 @@ dependencies = [
"sp-runtime",
"sp-session",
"sp-staking",
- "sp-std 14.0.0",
"staging-xcm",
"staging-xcm-builder",
"staging-xcm-executor",
@@ -14131,11 +14212,10 @@ dependencies = [
name = "polkadot-runtime-metrics"
version = "7.0.0"
dependencies = [
- "bs58 0.5.0",
+ "bs58 0.5.1",
"frame-benchmarking",
"parity-scale-codec",
"polkadot-primitives",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
]
@@ -14161,6 +14241,7 @@ dependencies = [
"pallet-balances",
"pallet-broker",
"pallet-message-queue",
+ "pallet-mmr",
"pallet-session",
"pallet-staking",
"pallet-timestamp",
@@ -14205,25 +14286,14 @@ dependencies = [
"asset-test-utils",
"assets-common",
"binary-merkle-tree",
- "bp-asset-hub-rococo",
- "bp-asset-hub-westend",
- "bp-bridge-hub-cumulus",
- "bp-bridge-hub-kusama",
- "bp-bridge-hub-polkadot",
- "bp-bridge-hub-rococo",
- "bp-bridge-hub-westend",
"bp-header-chain",
- "bp-kusama",
"bp-messages",
"bp-parachains",
"bp-polkadot",
- "bp-polkadot-bulletin",
"bp-polkadot-core",
"bp-relayers",
- "bp-rococo",
"bp-runtime",
"bp-test-utils",
- "bp-westend",
"bp-xcm-bridge-hub",
"bp-xcm-bridge-hub-router",
"bridge-hub-common",
@@ -14352,6 +14422,11 @@ dependencies = [
"pallet-recovery",
"pallet-referenda",
"pallet-remark",
+ "pallet-revive",
+ "pallet-revive-fixtures",
+ "pallet-revive-mock-network",
+ "pallet-revive-proc-macro",
+ "pallet-revive-uapi",
"pallet-root-offences",
"pallet-root-testing",
"pallet-safe-mode",
@@ -14424,6 +14499,7 @@ dependencies = [
"polkadot-node-subsystem-types",
"polkadot-node-subsystem-util",
"polkadot-overseer",
+ "polkadot-parachain-lib",
"polkadot-parachain-primitives",
"polkadot-primitives",
"polkadot-rpc",
@@ -14434,7 +14510,6 @@ dependencies = [
"polkadot-service",
"polkadot-statement-distribution",
"polkadot-statement-table",
- "rococo-runtime-constants",
"sc-allocator",
"sc-authority-discovery",
"sc-basic-authorship",
@@ -14578,7 +14653,6 @@ dependencies = [
"testnet-parachains-constants",
"tracing-gum",
"tracing-gum-proc-macro",
- "westend-runtime-constants",
"xcm-emulator",
"xcm-procedural",
"xcm-runtime-apis",
@@ -14601,6 +14675,7 @@ dependencies = [
"frame-support",
"frame-system",
"kitchensink-runtime",
+ "log",
"minimal-template-runtime",
"pallet-asset-conversion-tx-payment",
"pallet-asset-tx-payment",
@@ -14611,6 +14686,7 @@ dependencies = [
"pallet-balances",
"pallet-broker",
"pallet-collective",
+ "pallet-contracts",
"pallet-default-config-example",
"pallet-democracy",
"pallet-example-offchain-worker",
@@ -14627,6 +14703,7 @@ dependencies = [
"pallet-transaction-payment",
"pallet-uniques",
"pallet-utility",
+ "pallet-xcm",
"parachain-template-runtime",
"parity-scale-codec",
"polkadot-sdk",
@@ -14664,9 +14741,12 @@ dependencies = [
"staging-node-cli",
"staging-parachain-info",
"staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
"subkey",
"substrate-wasm-builder",
"xcm-docs",
+ "xcm-simulator",
]
[[package]]
@@ -14696,7 +14776,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-transaction-pool",
"sp-version",
@@ -14709,7 +14788,6 @@ dependencies = [
"assert_matches",
"async-trait",
"bitvec",
- "env_logger 0.11.3",
"frame-benchmarking",
"frame-benchmarking-cli",
"frame-metadata-hash-extension",
@@ -14817,6 +14895,7 @@ dependencies = [
"sp-state-machine",
"sp-storage 19.0.0",
"sp-timestamp",
+ "sp-tracing 16.0.0",
"sp-transaction-pool",
"sp-version",
"sp-weights",
@@ -14883,11 +14962,10 @@ dependencies = [
"async-trait",
"bincode",
"bitvec",
- "clap 4.5.3",
+ "clap 4.5.11",
"clap-num",
"color-eyre",
"colored",
- "env_logger 0.11.3",
"futures",
"futures-timer",
"hex",
@@ -14940,6 +15018,7 @@ dependencies = [
"sp-keystore",
"sp-runtime",
"sp-timestamp",
+ "sp-tracing 16.0.0",
"strum 0.26.2",
"substrate-prometheus-endpoint",
"tokio",
@@ -14981,7 +15060,7 @@ version = "1.0.0"
dependencies = [
"assert_matches",
"async-trait",
- "clap 4.5.3",
+ "clap 4.5.11",
"color-eyre",
"futures",
"futures-timer",
@@ -15056,7 +15135,6 @@ dependencies = [
"sp-runtime",
"sp-session",
"sp-staking",
- "sp-std 14.0.0",
"sp-transaction-pool",
"sp-trie",
"sp-version",
@@ -15124,7 +15202,7 @@ dependencies = [
name = "polkadot-voter-bags"
version = "7.0.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"generate-bags",
"sp-io",
"westend-runtime",
@@ -15138,9 +15216,22 @@ checksum = "8a3693e5efdb2bf74e449cd25fd777a28bd7ed87e41f5d5da75eb31b4de48b94"
dependencies = [
"libc",
"log",
- "polkavm-assembler",
- "polkavm-common",
- "polkavm-linux-raw",
+ "polkavm-assembler 0.9.0",
+ "polkavm-common 0.9.0",
+ "polkavm-linux-raw 0.9.0",
+]
+
+[[package]]
+name = "polkavm"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7ec0c5935f2eff23cfc4653002f4f8d12b37f87a720e0631282d188c32089d6"
+dependencies = [
+ "libc",
+ "log",
+ "polkavm-assembler 0.10.0",
+ "polkavm-common 0.10.0",
+ "polkavm-linux-raw 0.10.0",
]
[[package]]
@@ -15152,6 +15243,15 @@ dependencies = [
"log",
]
+[[package]]
+name = "polkavm-assembler"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8e4fd5a43100bf1afe9727b8130d01f966f5cfc9144d5604b21e795c2bcd80e"
+dependencies = [
+ "log",
+]
+
[[package]]
name = "polkavm-common"
version = "0.9.0"
@@ -15161,13 +15261,32 @@ dependencies = [
"log",
]
+[[package]]
+name = "polkavm-common"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0097b48bc0bedf9f3f537ce8f37e8f1202d8d83f9b621bdb21ff2c59b9097c50"
+dependencies = [
+ "log",
+ "polkavm-assembler 0.10.0",
+]
+
[[package]]
name = "polkavm-derive"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606"
dependencies = [
- "polkavm-derive-impl-macro",
+ "polkavm-derive-impl-macro 0.9.0",
+]
+
+[[package]]
+name = "polkavm-derive"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dcc701385c08c31bdb0569f0c51a290c580d892fa77f1dd88a7352a62679ecf"
+dependencies = [
+ "polkavm-derive-impl-macro 0.10.0",
]
[[package]]
@@ -15176,9 +15295,21 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c"
dependencies = [
- "polkavm-common",
+ "polkavm-common 0.9.0",
+ "proc-macro2 1.0.82",
+ "quote 1.0.36",
+ "syn 2.0.61",
+]
+
+[[package]]
+name = "polkavm-derive-impl"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7855353a5a783dd5d09e3b915474bddf66575f5a3cf45dec8d1c5e051ba320dc"
+dependencies = [
+ "polkavm-common 0.10.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -15188,7 +15319,17 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429"
dependencies = [
- "polkavm-derive-impl",
+ "polkavm-derive-impl 0.9.0",
+ "syn 2.0.61",
+]
+
+[[package]]
+name = "polkavm-derive-impl-macro"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9324fe036de37c17829af233b46ef6b5562d4a0c09bb7fdb9f8378856dee30cf"
+dependencies = [
+ "polkavm-derive-impl 0.10.0",
"syn 2.0.61",
]
@@ -15202,7 +15343,22 @@ dependencies = [
"hashbrown 0.14.3",
"log",
"object 0.32.2",
- "polkavm-common",
+ "polkavm-common 0.9.0",
+ "regalloc2 0.9.3",
+ "rustc-demangle",
+]
+
+[[package]]
+name = "polkavm-linker"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d704edfe7bdcc876784f19436d53d515b65eb07bc9a0fae77085d552c2dbbb5"
+dependencies = [
+ "gimli 0.28.0",
+ "hashbrown 0.14.3",
+ "log",
+ "object 0.36.1",
+ "polkavm-common 0.10.0",
"regalloc2 0.9.3",
"rustc-demangle",
]
@@ -15213,6 +15369,12 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120"
+[[package]]
+name = "polkavm-linux-raw"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126"
+
[[package]]
name = "polling"
version = "2.8.0"
@@ -15225,7 +15387,7 @@ dependencies = [
"concurrent-queue",
"libc",
"log",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"windows-sys 0.48.0",
]
@@ -15237,7 +15399,7 @@ checksum = "30054e72317ab98eddd8561db0f6524df3367636884b7b21b703e4b280a84a14"
dependencies = [
"cfg-if",
"concurrent-queue",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"rustix 0.38.21",
"tracing",
"windows-sys 0.52.0",
@@ -15281,6 +15443,12 @@ dependencies = [
"rand",
]
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
[[package]]
name = "pprof"
version = "0.12.1"
@@ -15437,7 +15605,7 @@ checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
"version_check",
]
@@ -15449,7 +15617,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"version_check",
]
@@ -15466,7 +15634,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d1eaa7fa0aa1929ffdf7eeb6eac234dde6268914a14ad44d23521ab6a9b258e"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -15477,7 +15645,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b698b0b09d40e9b7c1a47b132d66a8b54bcd20583d9b6d06e4535e383b4405c"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -15558,7 +15726,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -15666,7 +15834,7 @@ dependencies = [
"anyhow",
"itertools 0.10.5",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -15679,7 +15847,7 @@ dependencies = [
"anyhow",
"itertools 0.11.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -15806,17 +15974,6 @@ dependencies = [
"rand",
]
-[[package]]
-name = "quicksink"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858"
-dependencies = [
- "futures-core",
- "futures-sink",
- "pin-project-lite 0.1.12",
-]
-
[[package]]
name = "quinn"
version = "0.9.4"
@@ -15824,7 +15981,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e8b432585672228923edbbf64b8b12c14e1112f62e88737655b4a083dbcd78e"
dependencies = [
"bytes",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"quinn-proto 0.9.6",
"quinn-udp 0.3.2",
"rustc-hash",
@@ -15843,7 +16000,7 @@ checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75"
dependencies = [
"bytes",
"futures-io",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"quinn-proto 0.10.6",
"quinn-udp 0.4.1",
"rustc-hash",
@@ -15925,9 +16082,9 @@ dependencies = [
[[package]]
name = "quote"
-version = "1.0.35"
+version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
dependencies = [
"proc-macro2 1.0.82",
]
@@ -16115,21 +16272,21 @@ dependencies = [
[[package]]
name = "ref-cast"
-version = "1.0.20"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acde58d073e9c79da00f2b5b84eed919c8326832648a5b109b3fce1bb1175280"
+checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931"
dependencies = [
"ref-cast-impl",
]
[[package]]
name = "ref-cast-impl"
-version = "1.0.20"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925"
+checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -16226,13 +16383,10 @@ dependencies = [
"bp-runtime",
"finality-relay",
"frame-support",
- "frame-system",
"futures",
"jsonrpsee",
"log",
"num-traits",
- "pallet-balances",
- "pallet-bridge-messages",
"pallet-transaction-payment",
"pallet-transaction-payment-rpc-runtime-api",
"pallet-utility",
@@ -16261,13 +16415,12 @@ dependencies = [
name = "relay-utils"
version = "0.1.0"
dependencies = [
- "ansi_term",
"anyhow",
"async-std",
"async-trait",
"backoff",
"bp-runtime",
- "env_logger 0.11.3",
+ "console",
"futures",
"isahc",
"jsonpath_lib",
@@ -16276,6 +16429,7 @@ dependencies = [
"parking_lot 0.12.3",
"serde_json",
"sp-runtime",
+ "sp-tracing 16.0.0",
"substrate-prometheus-endpoint",
"sysinfo",
"thiserror",
@@ -16287,7 +16441,7 @@ dependencies = [
name = "remote-ext-tests-bags-list"
version = "1.0.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"frame-system",
"log",
"pallet-bags-list-remote-tests",
@@ -16320,7 +16474,7 @@ dependencies = [
"mime",
"once_cell",
"percent-encoding",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"rustls 0.21.7",
"rustls-pemfile 1.0.3",
"serde",
@@ -16360,13 +16514,14 @@ dependencies = [
[[package]]
name = "ring"
version = "0.1.0"
-source = "git+https://github.com/w3f/ring-proof#b273d33f9981e2bb3375ab45faeb537f7ee35224"
+source = "git+https://github.com/w3f/ring-proof?rev=665f5f5#665f5f51af5734c7b6d90b985dd6861d4c5b4752"
dependencies = [
"ark-ec",
"ark-ff 0.4.2",
"ark-poly",
"ark-serialize 0.4.2",
"ark-std 0.4.0",
+ "arrayvec 0.7.4",
"blake2 0.10.6",
"common",
"fflonk",
@@ -16485,7 +16640,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-transaction-pool",
"sp-version",
"staging-parachain-info",
@@ -16587,7 +16741,6 @@ dependencies = [
"sp-runtime",
"sp-session",
"sp-staking",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-tracing 16.0.0",
"sp-transaction-pool",
@@ -16624,6 +16777,7 @@ version = "0.0.0"
dependencies = [
"asset-hub-rococo-emulated-chain",
"bridge-hub-rococo-emulated-chain",
+ "coretime-rococo-emulated-chain",
"emulated-integration-tests-common",
"penpal-emulated-chain",
"people-rococo-emulated-chain",
@@ -16682,7 +16836,7 @@ dependencies = [
"cfg-if",
"glob",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"regex",
"relative-path",
"rustc_version 0.4.0",
@@ -17137,7 +17291,7 @@ name = "sc-chain-spec"
version = "28.0.0"
dependencies = [
"array-bytes",
- "clap 4.5.3",
+ "clap 4.5.11",
"docify",
"log",
"memmap2 0.9.3",
@@ -17170,7 +17324,7 @@ version = "11.0.0"
dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -17180,7 +17334,7 @@ version = "0.36.0"
dependencies = [
"array-bytes",
"chrono",
- "clap 4.5.3",
+ "clap 4.5.11",
"fdlimit",
"futures",
"futures-timer",
@@ -17655,7 +17809,6 @@ dependencies = [
"array-bytes",
"assert_matches",
"criterion",
- "env_logger 0.11.3",
"num_cpus",
"parity-scale-codec",
"parking_lot 0.12.3",
@@ -17692,7 +17845,7 @@ dependencies = [
name = "sc-executor-common"
version = "0.29.0"
dependencies = [
- "polkavm",
+ "polkavm 0.9.3",
"sc-allocator",
"sp-maybe-compressed-blob",
"sp-wasm-interface 20.0.0",
@@ -17705,7 +17858,7 @@ name = "sc-executor-polkavm"
version = "0.29.0"
dependencies = [
"log",
- "polkavm",
+ "polkavm 0.9.3",
"sc-executor-common",
"sp-wasm-interface 20.0.0",
]
@@ -17738,7 +17891,7 @@ dependencies = [
name = "sc-informant"
version = "0.33.0"
dependencies = [
- "ansi_term",
+ "console",
"futures",
"futures-timer",
"log",
@@ -18030,7 +18183,7 @@ dependencies = [
name = "sc-network-types"
version = "0.10.0"
dependencies = [
- "bs58 0.5.0",
+ "bs58 0.5.1",
"ed25519-dalek",
"libp2p-identity",
"litep2p",
@@ -18098,7 +18251,6 @@ name = "sc-rpc"
version = "29.0.0"
dependencies = [
"assert_matches",
- "env_logger 0.11.3",
"futures",
"jsonrpsee",
"log",
@@ -18129,6 +18281,7 @@ dependencies = [
"sp-runtime",
"sp-session",
"sp-statement-store",
+ "sp-tracing 16.0.0",
"sp-version",
"substrate-test-runtime-client",
"tokio",
@@ -18226,7 +18379,6 @@ dependencies = [
"sp-io",
"sp-runtime",
"sp-runtime-interface 24.0.0",
- "sp-std 14.0.0",
"substrate-wasm-builder",
]
@@ -18345,7 +18497,6 @@ dependencies = [
name = "sc-statement-store"
version = "10.0.0"
dependencies = [
- "env_logger 0.11.3",
"log",
"parity-db",
"parking_lot 0.12.3",
@@ -18356,6 +18507,7 @@ dependencies = [
"sp-core",
"sp-runtime",
"sp-statement-store",
+ "sp-tracing 16.0.0",
"substrate-prometheus-endpoint",
"tempfile",
"tokio",
@@ -18365,7 +18517,7 @@ dependencies = [
name = "sc-storage-monitor"
version = "0.16.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"fs4",
"log",
"sp-core",
@@ -18435,8 +18587,8 @@ dependencies = [
name = "sc-tracing"
version = "28.0.0"
dependencies = [
- "ansi_term",
"chrono",
+ "console",
"criterion",
"is-terminal",
"lazy_static",
@@ -18467,7 +18619,7 @@ version = "11.0.0"
dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -18548,9 +18700,9 @@ dependencies = [
[[package]]
name = "scale-decode"
-version = "0.13.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b12ebca36cec2a3f983c46295b282b35e5f8496346fb859a8776dad5389e5389"
+checksum = "e98f3262c250d90e700bb802eb704e1f841e03331c2eb815e46516c4edbf5b27"
dependencies = [
"derive_more",
"parity-scale-codec",
@@ -18581,7 +18733,7 @@ checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62"
dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -18619,7 +18771,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0f696e21e10fa546b7ffb1c9672c6de8fbc7a81acf59524386d8639bf12737"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"serde_derive_internals",
"syn 1.0.109",
]
@@ -18816,7 +18968,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-transaction-pool",
"sp-version",
"staging-parachain-info",
@@ -18888,9 +19039,9 @@ checksum = "f97841a747eef040fcd2e7b3b9a220a7205926e60488e673d9e4926d27772ce5"
[[package]]
name = "serde"
-version = "1.0.197"
+version = "1.0.206"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+checksum = "5b3e4cd94123dd520a128bcd11e34d9e9e423e7e3e50425cb1b4b1e3549d0284"
dependencies = [
"serde_derive",
]
@@ -18915,12 +19066,12 @@ dependencies = [
[[package]]
name = "serde_derive"
-version = "1.0.197"
+version = "1.0.206"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+checksum = "fabfb6138d2383ea8208cf98ccf69cdfb1aff4088460681d84189aa259762f97"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -18931,7 +19082,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -18946,12 +19097,13 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.114"
+version = "1.0.124"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
+checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d"
dependencies = [
"indexmap 2.2.3",
"itoa",
+ "memchr",
"ryu",
"serde",
]
@@ -18979,9 +19131,9 @@ dependencies = [
[[package]]
name = "serde_yaml"
-version = "0.9.33"
+version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0623d197252096520c6f2a5e1171ee436e5af99a5d7caa2891e55e61950e6d9"
+checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
"indexmap 2.2.3",
"itoa",
@@ -19021,7 +19173,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -19140,7 +19292,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-transaction-pool",
"sp-version",
"staging-parachain-info",
@@ -19247,7 +19398,6 @@ dependencies = [
"parity-scale-codec",
"paste",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -19314,7 +19464,7 @@ dependencies = [
"base64 0.21.2",
"bip39",
"blake2-rfc",
- "bs58 0.5.0",
+ "bs58 0.5.1",
"chacha20",
"crossbeam-queue",
"derive_more",
@@ -19512,7 +19662,6 @@ name = "snowbridge-outbound-queue-merkle-tree"
version = "0.3.0"
dependencies = [
"array-bytes",
- "env_logger 0.11.3",
"hex",
"hex-literal",
"parity-scale-codec",
@@ -19520,6 +19669,7 @@ dependencies = [
"sp-core",
"sp-crypto-hashing",
"sp-runtime",
+ "sp-tracing 16.0.0",
]
[[package]]
@@ -19790,8 +19940,9 @@ dependencies = [
name = "solochain-template-node"
version = "0.0.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"frame-benchmarking-cli",
+ "frame-metadata-hash-extension",
"frame-system",
"futures",
"jsonrpsee",
@@ -19834,6 +19985,7 @@ version = "0.0.0"
dependencies = [
"frame-benchmarking",
"frame-executive",
+ "frame-metadata-hash-extension",
"frame-support",
"frame-system",
"frame-system-benchmarking",
@@ -19859,7 +20011,6 @@ dependencies = [
"sp-offchain",
"sp-runtime",
"sp-session",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-transaction-pool",
"sp-version",
@@ -19882,7 +20033,6 @@ dependencies = [
"sp-runtime",
"sp-runtime-interface 24.0.0",
"sp-state-machine",
- "sp-std 14.0.0",
"sp-test-primitives",
"sp-trie",
"sp-version",
@@ -19899,7 +20049,7 @@ dependencies = [
"expander",
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -19935,7 +20085,6 @@ dependencies = [
"serde",
"sp-core",
"sp-io",
- "sp-std 14.0.0",
]
[[package]]
@@ -19963,7 +20112,6 @@ dependencies = [
"scale-info",
"serde",
"sp-crypto-hashing",
- "sp-std 14.0.0",
"static_assertions",
]
@@ -20021,16 +20169,17 @@ name = "sp-blockchain"
version = "28.0.0"
dependencies = [
"futures",
- "log",
"parity-scale-codec",
"parking_lot 0.12.3",
"schnellru",
"sp-api",
"sp-consensus",
+ "sp-core",
"sp-database",
"sp-runtime",
"sp-state-machine",
"thiserror",
+ "tracing",
]
[[package]]
@@ -20097,6 +20246,7 @@ dependencies = [
"sp-keystore",
"sp-mmr-primitives",
"sp-runtime",
+ "sp-weights",
"strum 0.26.2",
"w3f-bls",
]
@@ -20160,7 +20310,7 @@ dependencies = [
"bitflags 1.3.2",
"blake2 0.10.6",
"bounded-collections",
- "bs58 0.5.0",
+ "bs58 0.5.1",
"criterion",
"dyn-clonable",
"ed25519-zebra",
@@ -20283,7 +20433,7 @@ dependencies = [
name = "sp-crypto-hashing-proc-macro"
version = "0.1.0"
dependencies = [
- "quote 1.0.35",
+ "quote 1.0.36",
"sp-crypto-hashing",
"syn 2.0.61",
]
@@ -20302,7 +20452,7 @@ version = "8.0.0"
source = "git+https://github.com/paritytech/polkadot-sdk#82912acb33a9030c0ef3bf590a34fca09b72dc5f"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -20311,7 +20461,7 @@ name = "sp-debug-derive"
version = "14.0.0"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -20369,7 +20519,7 @@ dependencies = [
"libsecp256k1",
"log",
"parity-scale-codec",
- "polkavm-derive",
+ "polkavm-derive 0.9.1",
"rustversion",
"secp256k1",
"sp-core",
@@ -20378,7 +20528,6 @@ dependencies = [
"sp-keystore",
"sp-runtime-interface 24.0.0",
"sp-state-machine",
- "sp-std 14.0.0",
"sp-tracing 16.0.0",
"sp-trie",
"tracing",
@@ -20468,7 +20617,7 @@ dependencies = [
name = "sp-npos-elections-fuzzer"
version = "2.0.0-alpha.5"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"honggfuzz",
"rand",
"sp-npos-elections",
@@ -20530,6 +20679,7 @@ dependencies = [
"sp-tracing 16.0.0",
"sp-weights",
"substrate-test-runtime-client",
+ "tracing",
"zstd 0.12.4",
]
@@ -20558,7 +20708,7 @@ dependencies = [
"bytes",
"impl-trait-for-tuples",
"parity-scale-codec",
- "polkavm-derive",
+ "polkavm-derive 0.9.1",
"primitive-types",
"rustversion",
"sp-core",
@@ -20583,7 +20733,7 @@ dependencies = [
"Inflector",
"proc-macro-crate 1.3.1",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -20595,7 +20745,7 @@ dependencies = [
"expander",
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -20623,7 +20773,6 @@ dependencies = [
"sp-core",
"sp-io",
"sp-runtime-interface 24.0.0",
- "sp-std 14.0.0",
"substrate-wasm-builder",
]
@@ -20857,7 +21006,7 @@ version = "13.0.0"
dependencies = [
"parity-scale-codec",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"sp-version",
"syn 2.0.61",
]
@@ -20914,9 +21063,9 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
[[package]]
name = "spinners"
-version = "4.1.0"
+version = "4.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08615eea740067d9899969bc2891c68a19c315cb1f66640af9a9ecb91b13bcab"
+checksum = "a0ef947f358b9c238923f764c72a4a9d42f2d637c46e059dbd319d6e7cfb4f82"
dependencies = [
"lazy_static",
"maplit",
@@ -20942,7 +21091,7 @@ dependencies = [
"Inflector",
"num-format",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"serde",
"serde_json",
"unicode-xid 0.2.4",
@@ -20967,7 +21116,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f07d54c4d01a1713eb363b55ba51595da15f6f1211435b71466460da022aa140"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -20981,7 +21130,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
name = "staging-chain-spec-builder"
version = "1.6.1"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"log",
"sc-chain-spec",
"serde_json",
@@ -20994,7 +21143,7 @@ version = "3.0.0-dev"
dependencies = [
"array-bytes",
"assert_cmd",
- "clap 4.5.3",
+ "clap 4.5.11",
"clap_complete",
"criterion",
"futures",
@@ -21008,6 +21157,7 @@ dependencies = [
"parity-scale-codec",
"platforms",
"polkadot-sdk",
+ "pretty_assertions",
"rand",
"regex",
"sc-service-test",
@@ -21028,7 +21178,7 @@ dependencies = [
name = "staging-node-inspect"
version = "0.12.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"parity-scale-codec",
"sc-cli",
"sc-client-api",
@@ -21051,7 +21201,6 @@ dependencies = [
"parity-scale-codec",
"scale-info",
"sp-runtime",
- "sp-std 14.0.0",
]
[[package]]
@@ -21075,6 +21224,7 @@ dependencies = [
"schemars",
"serde",
"sp-io",
+ "sp-runtime",
"sp-weights",
"xcm-procedural",
]
@@ -21088,6 +21238,7 @@ dependencies = [
"frame-system",
"impl-trait-for-tuples",
"log",
+ "pallet-asset-conversion",
"pallet-assets",
"pallet-balances",
"pallet-salary",
@@ -21101,9 +21252,9 @@ dependencies = [
"primitive-types",
"scale-info",
"sp-arithmetic",
+ "sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-weights",
"staging-xcm",
"staging-xcm-executor",
@@ -21117,16 +21268,15 @@ dependencies = [
"frame-benchmarking",
"frame-support",
"impl-trait-for-tuples",
- "log",
"parity-scale-codec",
"scale-info",
"sp-arithmetic",
"sp-core",
"sp-io",
"sp-runtime",
- "sp-std 14.0.0",
"sp-weights",
"staging-xcm",
+ "tracing",
]
[[package]]
@@ -21159,7 +21309,7 @@ dependencies = [
"cfg_aliases",
"memchr",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -21232,7 +21382,7 @@ dependencies = [
"heck 0.3.3",
"proc-macro-error",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -21268,7 +21418,7 @@ checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
dependencies = [
"heck 0.4.1",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"rustversion",
"syn 1.0.109",
]
@@ -21281,7 +21431,7 @@ checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
dependencies = [
"heck 0.4.1",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"rustversion",
"syn 2.0.61",
]
@@ -21294,7 +21444,7 @@ checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
dependencies = [
"heck 0.4.1",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"rustversion",
"syn 2.0.61",
]
@@ -21303,7 +21453,7 @@ dependencies = [
name = "subkey"
version = "9.0.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"sc-cli",
]
@@ -21408,9 +21558,7 @@ dependencies = [
"bp-polkadot-core",
"bp-relayers",
"bp-runtime",
- "bridge-runtime-common",
"equivocation-detector",
- "finality-grandpa",
"finality-relay",
"frame-support",
"frame-system",
@@ -21430,9 +21578,11 @@ dependencies = [
"rbtag",
"relay-substrate-client",
"relay-utils",
+ "scale-info",
"sp-consensus-grandpa",
"sp-core",
"sp-runtime",
+ "sp-trie",
"structopt",
"strum 0.26.2",
"thiserror",
@@ -21506,7 +21656,6 @@ dependencies = [
"frame-system",
"frame-system-rpc-runtime-api",
"futures",
- "hex-literal",
"log",
"pallet-babe",
"pallet-balances",
@@ -21544,6 +21693,7 @@ dependencies = [
"sp-version",
"substrate-test-runtime-client",
"substrate-wasm-builder",
+ "tracing",
"trie-db",
]
@@ -21599,10 +21749,11 @@ dependencies = [
"console",
"filetime",
"frame-metadata",
+ "jobserver",
"merkleized-metadata",
"parity-scale-codec",
"parity-wasm",
- "polkavm-linker",
+ "polkavm-linker 0.9.2",
"sc-executor",
"sp-core",
"sp-io",
@@ -21743,7 +21894,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"unicode-ident",
]
@@ -21754,7 +21905,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"unicode-ident",
]
@@ -21766,7 +21917,7 @@ checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047"
dependencies = [
"paste",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -21777,7 +21928,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
"unicode-xid 0.2.4",
]
@@ -21789,7 +21940,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -21908,7 +22059,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5999e24eaa32083191ba4e425deb75cdf25efefabe5aaccb7446dd0d4122a3f5"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -21920,7 +22071,6 @@ dependencies = [
"parity-scale-codec",
"polkadot-parachain-primitives",
"sp-io",
- "sp-std 14.0.0",
"substrate-wasm-builder",
"tiny-keccak",
]
@@ -21929,7 +22079,7 @@ dependencies = [
name = "test-parachain-adder-collator"
version = "1.0.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"futures",
"futures-timer",
"log",
@@ -21968,7 +22118,6 @@ dependencies = [
"parity-scale-codec",
"polkadot-parachain-primitives",
"sp-io",
- "sp-std 14.0.0",
"substrate-wasm-builder",
"tiny-keccak",
]
@@ -21977,7 +22126,7 @@ dependencies = [
name = "test-parachain-undying-collator"
version = "1.0.0"
dependencies = [
- "clap 4.5.3",
+ "clap 4.5.11",
"futures",
"futures-timer",
"log",
@@ -22074,7 +22223,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10ac1c5050e43014d16b2f94d0d2ce79e65ffdd8b38d8048f9c8f6a8a6da62ac"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 1.0.109",
]
@@ -22085,7 +22234,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -22160,14 +22309,16 @@ dependencies = [
[[package]]
name = "time"
-version = "0.3.27"
+version = "0.3.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bb39ee79a6d8de55f48f2293a830e040392f1c5f16e336bdd1788cd0aadce07"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
dependencies = [
"deranged",
"itoa",
"libc",
+ "num-conv",
"num_threads",
+ "powerfmt",
"serde",
"time-core",
"time-macros",
@@ -22175,16 +22326,17 @@ dependencies = [
[[package]]
name = "time-core"
-version = "0.1.1"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
[[package]]
name = "time-macros"
-version = "0.2.13"
+version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "733d258752e9303d392b94b75230d07b0b9c489350c69b851fc6c065fde3e8f9"
+checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
dependencies = [
+ "num-conv",
"time-core",
]
@@ -22234,7 +22386,7 @@ dependencies = [
"mio",
"num_cpus",
"parking_lot 0.12.3",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"signal-hook-registry",
"socket2 0.5.7",
"tokio-macros",
@@ -22248,7 +22400,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -22291,7 +22443,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
dependencies = [
"futures-core",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"tokio",
"tokio-util",
]
@@ -22334,7 +22486,7 @@ dependencies = [
"futures-core",
"futures-io",
"futures-sink",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"tokio",
]
@@ -22401,7 +22553,7 @@ dependencies = [
"futures-core",
"futures-util",
"pin-project",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"tokio",
"tower-layer",
"tower-service",
@@ -22419,7 +22571,7 @@ dependencies = [
"http 1.1.0",
"http-body 1.0.0",
"http-body-util",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"tower-layer",
"tower-service",
]
@@ -22443,7 +22595,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
dependencies = [
"log",
- "pin-project-lite 0.2.12",
+ "pin-project-lite",
"tracing-attributes",
"tracing-core",
]
@@ -22455,7 +22607,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -22497,7 +22649,7 @@ dependencies = [
"expander",
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -22570,6 +22722,7 @@ dependencies = [
"sharded-slab",
"smallvec",
"thread_local",
+ "time",
"tracing",
"tracing-core",
"tracing-log 0.2.0",
@@ -22593,9 +22746,9 @@ dependencies = [
[[package]]
name = "trie-db"
-version = "0.29.0"
+version = "0.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65ed83be775d85ebb0e272914fff6462c39b3ddd6dc67b5c1c41271aad280c69"
+checksum = "0c992b4f40c234a074d48a757efeabb1a6be88af84c0c23f7ca158950cb0ae7f"
dependencies = [
"hash-db",
"log",
@@ -22887,12 +23040,12 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
[[package]]
name = "url"
-version = "2.4.0"
+version = "2.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb"
+checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
dependencies = [
"form_urlencoded",
- "idna 0.4.0",
+ "idna 0.5.0",
"percent-encoding",
]
@@ -23021,9 +23174,9 @@ checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
[[package]]
name = "walkdir"
-version = "2.4.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
dependencies = [
"same-file",
"winapi-util",
@@ -23046,11 +23199,12 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.87"
+version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
+checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5"
dependencies = [
"cfg-if",
+ "once_cell",
"serde",
"serde_json",
"wasm-bindgen-macro",
@@ -23058,15 +23212,15 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.87"
+version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
+checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b"
dependencies = [
"bumpalo",
"log",
"once_cell",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
"wasm-bindgen-shared",
]
@@ -23085,22 +23239,22 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.87"
+version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
+checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf"
dependencies = [
- "quote 1.0.35",
+ "quote 1.0.36",
"wasm-bindgen-macro-support",
]
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.87"
+version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
+checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
@@ -23108,9 +23262,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.87"
+version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
+checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
[[package]]
name = "wasm-bindgen-test"
@@ -23133,7 +23287,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ecb993dd8c836930ed130e020e77d9b2e65dd0fbab1b67c790b0f5d80b11a575"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
]
[[package]]
@@ -23616,6 +23770,7 @@ dependencies = [
"pallet-nomination-pools-runtime-api",
"pallet-offences",
"pallet-offences-benchmarking",
+ "pallet-parameters",
"pallet-preimage",
"pallet-proxy",
"pallet-recovery",
@@ -23626,7 +23781,6 @@ dependencies = [
"pallet-session-benchmarking",
"pallet-society",
"pallet-staking",
- "pallet-staking-reward-curve",
"pallet-staking-runtime-api",
"pallet-state-trie-migration",
"pallet-sudo",
@@ -23667,7 +23821,6 @@ dependencies = [
"sp-runtime",
"sp-session",
"sp-staking",
- "sp-std 14.0.0",
"sp-storage 19.0.0",
"sp-tracing 16.0.0",
"sp-transaction-pool",
@@ -23704,6 +23857,7 @@ dependencies = [
"asset-hub-westend-emulated-chain",
"bridge-hub-westend-emulated-chain",
"collectives-westend-emulated-chain",
+ "coretime-westend-emulated-chain",
"emulated-integration-tests-common",
"penpal-emulated-chain",
"people-westend-emulated-chain",
@@ -24199,7 +24353,7 @@ version = "7.0.0"
dependencies = [
"Inflector",
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"staging-xcm",
"syn 2.0.61",
"trybuild",
@@ -24209,7 +24363,6 @@ dependencies = [
name = "xcm-runtime-apis"
version = "0.1.0"
dependencies = [
- "env_logger 0.11.3",
"frame-executive",
"frame-support",
"frame-system",
@@ -24222,7 +24375,7 @@ dependencies = [
"scale-info",
"sp-api",
"sp-io",
- "sp-std 14.0.0",
+ "sp-tracing 16.0.0",
"sp-weights",
"staging-xcm",
"staging-xcm-builder",
@@ -24366,7 +24519,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
@@ -24386,7 +24539,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2 1.0.82",
- "quote 1.0.35",
+ "quote 1.0.36",
"syn 2.0.61",
]
diff --git a/Cargo.toml b/Cargo.toml
index db9a2bd7227357b7d4f03f616bfb8e12dfa8eb09..275efe1df6383627f4f45734707f067ce2cc3da2 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,9 +1,9 @@
[workspace.package]
authors = ["Parity Technologies "]
edition = "2021"
-repository = "https://github.com/paritytech/polkadot-sdk.git"
+homepage = "https://paritytech.github.io/polkadot-sdk/"
license = "GPL-3.0-only"
-homepage = "https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/index.html"
+repository = "https://github.com/paritytech/polkadot-sdk.git"
[workspace]
resolver = "2"
@@ -61,6 +61,7 @@ members = [
"bridges/snowbridge/primitives/router",
"bridges/snowbridge/runtime/runtime-common",
"bridges/snowbridge/runtime/test-common",
+ "cumulus/bin/pov-validator",
"cumulus/client/cli",
"cumulus/client/collator",
"cumulus/client/consensus/aura",
@@ -90,6 +91,8 @@ members = [
"cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-rococo",
"cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend",
"cumulus/parachains/integration-tests/emulated/chains/parachains/collectives/collectives-westend",
+ "cumulus/parachains/integration-tests/emulated/chains/parachains/coretime/coretime-rococo",
+ "cumulus/parachains/integration-tests/emulated/chains/parachains/coretime/coretime-westend",
"cumulus/parachains/integration-tests/emulated/chains/parachains/people/people-rococo",
"cumulus/parachains/integration-tests/emulated/chains/parachains/people/people-westend",
"cumulus/parachains/integration-tests/emulated/chains/parachains/testing/penpal",
@@ -104,6 +107,8 @@ members = [
"cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo",
"cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-westend",
"cumulus/parachains/integration-tests/emulated/tests/collectives/collectives-westend",
+ "cumulus/parachains/integration-tests/emulated/tests/coretime/coretime-rococo",
+ "cumulus/parachains/integration-tests/emulated/tests/coretime/coretime-westend",
"cumulus/parachains/integration-tests/emulated/tests/people/people-rococo",
"cumulus/parachains/integration-tests/emulated/tests/people/people-westend",
"cumulus/parachains/pallets/collective-content",
@@ -131,6 +136,7 @@ members = [
"cumulus/parachains/runtimes/testing/penpal",
"cumulus/parachains/runtimes/testing/rococo-parachain",
"cumulus/polkadot-parachain",
+ "cumulus/polkadot-parachain/polkadot-parachain-lib",
"cumulus/primitives/aura",
"cumulus/primitives/core",
"cumulus/primitives/parachain-inherent",
@@ -389,6 +395,11 @@ members = [
"substrate/frame/recovery",
"substrate/frame/referenda",
"substrate/frame/remark",
+ "substrate/frame/revive",
+ "substrate/frame/revive/fixtures",
+ "substrate/frame/revive/mock-network",
+ "substrate/frame/revive/proc-macro",
+ "substrate/frame/revive/uapi",
"substrate/frame/root-offences",
"substrate/frame/root-testing",
"substrate/frame/safe-mode",
@@ -517,7 +528,6 @@ members = [
"substrate/utils/prometheus",
"substrate/utils/substrate-bip39",
"substrate/utils/wasm-builder",
- "templates/minimal",
"templates/minimal/node",
"templates/minimal/pallets/template",
"templates/minimal/runtime",
@@ -531,38 +541,41 @@ members = [
]
default-members = [
+ "cumulus/polkadot-parachain",
"polkadot",
"substrate/bin/node/cli",
]
[workspace.lints.rust]
suspicious_double_ref_op = { level = "allow", priority = 2 }
+# `substrate_runtime` is a common `cfg` condition name used in the repo.
+unexpected_cfgs = { level = "warn", check-cfg = ['cfg(substrate_runtime)'] }
[workspace.lints.clippy]
all = { level = "allow", priority = 0 }
-correctness = { level = "warn", priority = 1 }
+bind_instead_of_map = { level = "allow", priority = 2 } # stylistic
+borrowed-box = { level = "allow", priority = 2 } # Reasonable to fix this one
complexity = { level = "warn", priority = 1 }
+correctness = { level = "warn", priority = 1 }
+default_constructed_unit_structs = { level = "allow", priority = 2 } # stylistic
+derivable_impls = { level = "allow", priority = 2 } # false positives
+eq_op = { level = "allow", priority = 2 } # In tests we test equality.
+erasing_op = { level = "allow", priority = 2 } # E.g. 0 * DOLLARS
+extra-unused-type-parameters = { level = "allow", priority = 2 } # stylistic
+identity-op = { level = "allow", priority = 2 } # One case where we do 0 +
if-same-then-else = { level = "allow", priority = 2 }
-zero-prefixed-literal = { level = "allow", priority = 2 } # 00_1000_000
-type_complexity = { level = "allow", priority = 2 } # raison d'etre
+needless-lifetimes = { level = "allow", priority = 2 } # generated code
+needless_option_as_deref = { level = "allow", priority = 2 } # false positives
nonminimal-bool = { level = "allow", priority = 2 } # maybe
-borrowed-box = { level = "allow", priority = 2 } # Reasonable to fix this one
+option-map-unit-fn = { level = "allow", priority = 2 } # stylistic
+stable_sort_primitive = { level = "allow", priority = 2 } # prefer stable sort
too-many-arguments = { level = "allow", priority = 2 } # (Turning this on would lead to)
-needless-lifetimes = { level = "allow", priority = 2 } # generated code
+type_complexity = { level = "allow", priority = 2 } # raison d'etre
+unit_arg = { level = "allow", priority = 2 } # stylistic
unnecessary_cast = { level = "allow", priority = 2 } # Types may change
-identity-op = { level = "allow", priority = 2 } # One case where we do 0 +
useless_conversion = { level = "allow", priority = 2 } # Types may change
-unit_arg = { level = "allow", priority = 2 } # stylistic
-option-map-unit-fn = { level = "allow", priority = 2 } # stylistic
-bind_instead_of_map = { level = "allow", priority = 2 } # stylistic
-erasing_op = { level = "allow", priority = 2 } # E.g. 0 * DOLLARS
-eq_op = { level = "allow", priority = 2 } # In tests we test equality.
while_immutable_condition = { level = "allow", priority = 2 } # false positives
-needless_option_as_deref = { level = "allow", priority = 2 } # false positives
-derivable_impls = { level = "allow", priority = 2 } # false positives
-stable_sort_primitive = { level = "allow", priority = 2 } # prefer stable sort
-extra-unused-type-parameters = { level = "allow", priority = 2 } # stylistic
-default_constructed_unit_structs = { level = "allow", priority = 2 } # stylistic
+zero-prefixed-literal = { level = "allow", priority = 2 } # 00_1000_000
[workspace.dependencies]
Inflector = { version = "0.11.4" }
@@ -571,7 +584,6 @@ ahash = { version = "0.8.2" }
alloy-primitives = { version = "0.4.2", default-features = false }
alloy-sol-types = { version = "0.4.2", default-features = false }
always-assert = { version = "0.1" }
-ansi_term = { version = "0.12.1" }
anyhow = { version = "1.0.81" }
aquamarine = { version = "0.5.0" }
arbitrary = { version = "1.3.2" }
@@ -589,7 +601,7 @@ ark-ed-on-bls12-381-bandersnatch-ext = { version = "0.4.1", default-features = f
ark-scale = { version = "0.0.12", default-features = false }
array-bytes = { version = "6.2.2", default-features = false }
arrayvec = { version = "0.7.4" }
-assert_cmd = { version = "2.0.10" }
+assert_cmd = { version = "2.0.14" }
assert_matches = { version = "1.5.0" }
asset-hub-rococo-emulated-chain = { path = "cumulus/parachains/integration-tests/emulated/chains/parachains/assets/asset-hub-rococo" }
asset-hub-rococo-runtime = { path = "cumulus/parachains/runtimes/assets/asset-hub-rococo", default-features = false }
@@ -602,7 +614,7 @@ async-std = { version = "1.9.0" }
async-trait = { version = "0.1.79" }
asynchronous-codec = { version = "0.6" }
backoff = { version = "0.4" }
-backtrace = { version = "0.3.64" }
+backtrace = { version = "0.3.71" }
binary-merkle-tree = { path = "substrate/utils/binary-merkle-tree", default-features = false }
bincode = { version = "1.3.3" }
bip39 = { version = "2.0.0" }
@@ -642,7 +654,7 @@ bridge-hub-test-utils = { path = "cumulus/parachains/runtimes/bridge-hubs/test-u
bridge-hub-westend-emulated-chain = { path = "cumulus/parachains/integration-tests/emulated/chains/parachains/bridges/bridge-hub-westend" }
bridge-hub-westend-runtime = { path = "cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend", default-features = false }
bridge-runtime-common = { path = "bridges/bin/runtime-common", default-features = false }
-bs58 = { version = "0.5.0", default-features = false }
+bs58 = { version = "0.5.1", default-features = false }
build-helper = { version = "0.1.1" }
byte-slice-cast = { version = "1.2.1", default-features = false }
byteorder = { version = "1.3.2", default-features = false }
@@ -654,7 +666,7 @@ chain-spec-builder = { path = "substrate/bin/utils/chain-spec-builder", default-
chain-spec-guide-runtime = { path = "docs/sdk/src/reference_docs/chain_spec_runtime" }
chrono = { version = "0.4.31" }
cid = { version = "0.9.0" }
-clap = { version = "4.5.3" }
+clap = { version = "4.5.10" }
clap-num = { version = "1.0.2" }
clap_complete = { version = "4.0.2" }
coarsetime = { version = "0.1.22" }
@@ -667,7 +679,9 @@ colored = { version = "2.0.4" }
comfy-table = { version = "7.1.0", default-features = false }
console = { version = "0.15.8" }
contracts-rococo-runtime = { path = "cumulus/parachains/runtimes/contracts/contracts-rococo" }
+coretime-rococo-emulated-chain = { path = "cumulus/parachains/integration-tests/emulated/chains/parachains/coretime/coretime-rococo" }
coretime-rococo-runtime = { path = "cumulus/parachains/runtimes/coretime/coretime-rococo" }
+coretime-westend-emulated-chain = { path = "cumulus/parachains/integration-tests/emulated/chains/parachains/coretime/coretime-westend" }
coretime-westend-runtime = { path = "cumulus/parachains/runtimes/coretime/coretime-westend" }
cpu-time = { version = "1.0.0" }
criterion = { version = "0.5.1", default-features = false }
@@ -720,8 +734,7 @@ ed25519-zebra = { version = "4.0.3", default-features = false }
either = { version = "1.8.1", default-features = false }
emulated-integration-tests-common = { path = "cumulus/parachains/integration-tests/emulated/common", default-features = false }
enumflags2 = { version = "0.7.7" }
-enumn = { version = "0.1.12" }
-env_logger = { version = "0.11.3" }
+enumn = { version = "0.1.13" }
environmental = { version = "1.1.4", default-features = false }
equivocation-detector = { path = "bridges/relays/equivocation" }
ethabi = { version = "1.0.0", default-features = false, package = "ethabi-decode" }
@@ -797,6 +810,7 @@ is-terminal = { version = "0.4.9" }
is_executable = { version = "1.0.1" }
isahc = { version = "1.2" }
itertools = { version = "0.11" }
+jobserver = { version = "0.1.26" }
jsonpath_lib = { version = "0.3" }
jsonrpsee = { version = "0.23.2" }
jsonrpsee-core = { version = "0.23.2" }
@@ -808,18 +822,18 @@ kvdb-rocksdb = { version = "0.19.0" }
kvdb-shared-tests = { version = "0.11.0" }
landlock = { version = "0.3.0" }
lazy_static = { version = "1.4.0" }
-libc = { version = "0.2.153" }
+libc = { version = "0.2.155" }
libfuzzer-sys = { version = "0.4" }
libp2p = { version = "0.52.4" }
-libp2p-identity = { version = "0.2.3" }
+libp2p-identity = { version = "0.2.9" }
libsecp256k1 = { version = "0.7.0", default-features = false }
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.6.2" }
-log = { version = "0.4.21", default-features = false }
-macro_magic = { version = "0.5.0" }
+log = { version = "0.4.22", default-features = false }
+macro_magic = { version = "0.5.1" }
maplit = { version = "1.0.2" }
memmap2 = { version = "0.9.3" }
memory-db = { version = "0.32.0", default-features = false }
@@ -855,7 +869,7 @@ num-rational = { version = "0.4.1" }
num-traits = { version = "0.2.17", default-features = false }
num_cpus = { version = "1.13.1" }
once_cell = { version = "1.19.0" }
-orchestra = { version = "0.3.5", default-features = false }
+orchestra = { version = "0.4.0", default-features = false }
pallet-alliance = { path = "substrate/frame/alliance", default-features = false }
pallet-asset-conversion = { path = "substrate/frame/asset-conversion", default-features = false }
pallet-asset-conversion-ops = { path = "substrate/frame/asset-conversion/ops", default-features = false }
@@ -885,7 +899,7 @@ pallet-collator-selection = { path = "cumulus/pallets/collator-selection", defau
pallet-collective = { path = "substrate/frame/collective", default-features = false }
pallet-collective-content = { path = "cumulus/parachains/pallets/collective-content", default-features = false }
pallet-contracts = { path = "substrate/frame/contracts", default-features = false }
-pallet-contracts-fixtures = { path = "substrate/frame/contracts/fixtures" }
+pallet-contracts-fixtures = { path = "substrate/frame/contracts/fixtures", default-features = false }
pallet-contracts-mock-network = { default-features = false, path = "substrate/frame/contracts/mock-network" }
pallet-contracts-proc-macro = { path = "substrate/frame/contracts/proc-macro", default-features = false }
pallet-contracts-uapi = { path = "substrate/frame/contracts/uapi", default-features = false }
@@ -941,6 +955,11 @@ pallet-ranked-collective = { path = "substrate/frame/ranked-collective", default
pallet-recovery = { path = "substrate/frame/recovery", default-features = false }
pallet-referenda = { path = "substrate/frame/referenda", default-features = false }
pallet-remark = { default-features = false, path = "substrate/frame/remark" }
+pallet-revive = { path = "substrate/frame/revive", default-features = false }
+pallet-revive-fixtures = { path = "substrate/frame/revive/fixtures", default-features = false }
+pallet-revive-mock-network = { default-features = false, path = "substrate/frame/revive/mock-network" }
+pallet-revive-proc-macro = { path = "substrate/frame/revive/proc-macro", default-features = false }
+pallet-revive-uapi = { path = "substrate/frame/revive/uapi", default-features = false }
pallet-root-offences = { default-features = false, path = "substrate/frame/root-offences" }
pallet-root-testing = { path = "substrate/frame/root-testing", default-features = false }
pallet-safe-mode = { default-features = false, path = "substrate/frame/safe-mode" }
@@ -986,7 +1005,7 @@ parity-util-mem = { version = "0.12.0" }
parity-wasm = { version = "0.45.0" }
parking_lot = { version = "0.12.1", default-features = false }
partial_sort = { version = "0.2.0" }
-paste = { version = "1.0.14", default-features = false }
+paste = { version = "1.0.15", default-features = false }
pbkdf2 = { version = "0.12.2", default-features = false }
penpal-emulated-chain = { path = "cumulus/parachains/integration-tests/emulated/chains/parachains/testing/penpal" }
penpal-runtime = { path = "cumulus/parachains/runtimes/testing/penpal" }
@@ -1034,6 +1053,7 @@ polkadot-node-subsystem-test-helpers = { path = "polkadot/node/subsystem-test-he
polkadot-node-subsystem-types = { path = "polkadot/node/subsystem-types", default-features = false }
polkadot-node-subsystem-util = { path = "polkadot/node/subsystem-util", default-features = false }
polkadot-overseer = { path = "polkadot/node/overseer", default-features = false }
+polkadot-parachain-lib = { path = "cumulus/polkadot-parachain/polkadot-parachain-lib", default-features = false }
polkadot-parachain-primitives = { path = "polkadot/parachain", default-features = false }
polkadot-primitives = { path = "polkadot/primitives", default-features = false }
polkadot-primitives-test-helpers = { path = "polkadot/primitives/test-helpers" }
@@ -1050,7 +1070,7 @@ polkadot-subsystem-bench = { path = "polkadot/node/subsystem-bench" }
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 = "0.9.3"
+polkavm = { version = "0.9.3", default-features = false }
polkavm-derive = "0.9.1"
polkavm-linker = "0.9.2"
portpicker = { version = "0.1.1" }
@@ -1069,7 +1089,7 @@ pyroscope = { version = "0.5.7" }
pyroscope_pprofrs = { version = "0.2.7" }
quick_cache = { version = "0.3" }
quickcheck = { version = "1.0.3", default-features = false }
-quote = { version = "1.0.33" }
+quote = { version = "1.0.36" }
rand = { version = "0.8.5", default-features = false }
rand_chacha = { version = "0.3.1", default-features = false }
rand_core = { version = "0.6.2" }
@@ -1077,7 +1097,7 @@ rand_distr = { version = "0.4.3" }
rand_pcg = { version = "0.3.1" }
rayon = { version = "1.5.1" }
rbtag = { version = "0.3" }
-ref-cast = { version = "1.0.0" }
+ref-cast = { version = "1.0.23" }
regex = { version = "1.10.2" }
relay-substrate-client = { path = "bridges/relays/client-substrate" }
relay-utils = { path = "bridges/relays/utils" }
@@ -1164,10 +1184,10 @@ secp256k1 = { version = "0.28.0", default-features = false }
secrecy = { version = "0.8.0", default-features = false }
seedling-runtime = { path = "cumulus/parachains/runtimes/starters/seedling" }
separator = { version = "0.4.1" }
-serde = { version = "1.0.197", default-features = false }
+serde = { version = "1.0.206", default-features = false }
serde-big-array = { version = "0.3.2" }
serde_derive = { version = "1.0.117" }
-serde_json = { version = "1.0.114", default-features = false }
+serde_json = { version = "1.0.124", default-features = false }
serde_yaml = { version = "0.9" }
serial_test = { version = "2.0.0" }
sha1 = { version = "0.10.6" }
@@ -1254,7 +1274,7 @@ sp-version = { path = "substrate/primitives/version", default-features = false }
sp-version-proc-macro = { path = "substrate/primitives/version/proc-macro", default-features = false }
sp-wasm-interface = { path = "substrate/primitives/wasm-interface", default-features = false }
sp-weights = { path = "substrate/primitives/weights", default-features = false }
-spinners = { version = "4.1.0" }
+spinners = { version = "4.1.1" }
ss58-registry = { version = "1.34.0", default-features = false }
ssz_rs = { version = "0.9.0", default-features = false }
ssz_rs_derive = { version = "0.9.0", default-features = false }
@@ -1311,10 +1331,10 @@ tracing-log = { version = "0.2.0" }
tracing-subscriber = { version = "0.3.18" }
tracking-allocator = { path = "polkadot/node/tracking-allocator", default-features = false, package = "staging-tracking-allocator" }
trie-bench = { version = "0.39.0" }
-trie-db = { version = "0.29.0", default-features = false }
+trie-db = { version = "0.29.1", default-features = false }
trie-root = { version = "0.18.0", default-features = false }
trie-standardmap = { version = "0.16.0" }
-trybuild = { version = "1.0.88" }
+trybuild = { version = "1.0.89" }
tt-call = { version = "1.0.8" }
tuplex = { version = "0.1", default-features = false }
twox-hash = { version = "1.6.3", default-features = false }
@@ -1323,7 +1343,7 @@ url = { version = "2.4.0" }
void = { version = "1.0.2" }
w3f-bls = { version = "0.1.3", default-features = false }
wait-timeout = { version = "0.2" }
-walkdir = { version = "2.4.0" }
+walkdir = { version = "2.5.0" }
wasm-bindgen-test = { version = "0.3.19" }
wasm-instrument = { version = "0.4", default-features = false }
wasm-opt = { version = "0.116" }
@@ -1349,22 +1369,22 @@ zstd = { version = "0.12.4", default-features = false }
[profile.release]
# Polkadot runtime requires unwinding.
-panic = "unwind"
opt-level = 3
+panic = "unwind"
# make sure dev builds with backtrace do not slow us down
[profile.dev.package.backtrace]
inherits = "release"
[profile.production]
+codegen-units = 1
inherits = "release"
lto = true
-codegen-units = 1
[profile.testnet]
-inherits = "release"
debug = 1 # debug symbols are useful for profilers
debug-assertions = true
+inherits = "release"
overflow-checks = true
# The list of dependencies below (which can be both direct and indirect dependencies) are crates
diff --git a/README.md b/README.md
index 92901d070db0854dd4b1daef8c3ed7a3fd3893f2..34d657194daa67de18088fb04d3ae878421c6d9f 100644
--- a/README.md
+++ b/README.md
@@ -10,10 +10,7 @@
forks](https://img.shields.io/github/forks/paritytech/polkadot-sdk)
-[![StackExchange](https://img.shields.io/badge/StackExchange-Community%20&%20Support-222222?logo=stackexchange)](https://substrate.stackexchange.com/) ![GitHub contributors](https://img.shields.io/github/contributors/paritytech/polkadot-sdk) ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/paritytech/polkadot-sdk)
-
-![GitHub lines of code](https://tokei.rs/b1/github/paritytech/polkadot-sdk)
-![GitHub last commit](https://img.shields.io/github/last-commit/paritytech/polkadot-sdk)
+[![StackExchange](https://img.shields.io/badge/StackExchange-Community%20&%20Support-222222?logo=stackexchange)](https://substrate.stackexchange.com/) ![GitHub contributors](https://img.shields.io/github/contributors/paritytech/polkadot-sdk) ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/paritytech/polkadot-sdk) ![GitHub last commit](https://img.shields.io/github/last-commit/paritytech/polkadot-sdk)
> The Polkadot SDK repository provides all the components needed to start building on the
> [Polkadot](https://polkadot.network) network, a multi-chain blockchain platform that enables
@@ -21,6 +18,12 @@ forks](https://img.shields.io/github/forks/paritytech/polkadot-sdk)
+## ⚡ Quickstart
+If you want to get an example node running quickly you can execute the following getting started script:
+```
+curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/scripts/getting-started.sh | bash
+```
+
## 📚 Documentation
* [🦀 rust-docs](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/index.html)
diff --git a/bridges/bin/runtime-common/Cargo.toml b/bridges/bin/runtime-common/Cargo.toml
index d69a064aab81a41c946b073f232ebb8c778b9609..36f27b6aa0358fcb8027bbfe6e571bc1a50962e6 100644
--- a/bridges/bin/runtime-common/Cargo.toml
+++ b/bridges/bin/runtime-common/Cargo.toml
@@ -12,14 +12,12 @@ workspace = true
[dependencies]
codec = { features = ["derive"], workspace = true }
-hash-db = { workspace = true }
log = { workspace = true }
scale-info = { features = ["derive"], workspace = true }
static_assertions = { optional = true, workspace = true, default-features = true }
tuplex = { workspace = true }
# Bridge dependencies
-
bp-header-chain = { workspace = true }
bp-messages = { workspace = true }
bp-parachains = { workspace = true }
@@ -34,25 +32,23 @@ pallet-bridge-parachains = { workspace = true }
pallet-bridge-relayers = { workspace = true }
# Substrate dependencies
-
frame-support = { workspace = true }
frame-system = { workspace = true }
pallet-transaction-payment = { workspace = true }
pallet-utility = { workspace = true }
-sp-api = { workspace = true }
-sp-core = { workspace = true }
sp-io = { workspace = true }
sp-runtime = { workspace = true }
sp-std = { workspace = true }
-sp-trie = { workspace = true }
+sp-trie = { optional = true, workspace = true }
# Polkadot dependencies
xcm = { workspace = true }
xcm-builder = { workspace = true }
[dev-dependencies]
-bp-test-utils = { workspace = true, default-features = true }
-pallet-balances = { workspace = true, default-features = true }
+bp-test-utils = { workspace = true }
+pallet-balances = { workspace = true }
+pallet-bridge-messages = { features = ["std", "test-helpers"], workspace = true }
[features]
default = ["std"]
@@ -63,13 +59,14 @@ std = [
"bp-polkadot-core/std",
"bp-relayers/std",
"bp-runtime/std",
+ "bp-test-utils/std",
"bp-xcm-bridge-hub-router/std",
"bp-xcm-bridge-hub/std",
"codec/std",
"frame-support/std",
"frame-system/std",
- "hash-db/std",
"log/std",
+ "pallet-balances/std",
"pallet-bridge-grandpa/std",
"pallet-bridge-messages/std",
"pallet-bridge-parachains/std",
@@ -77,8 +74,6 @@ std = [
"pallet-transaction-payment/std",
"pallet-utility/std",
"scale-info/std",
- "sp-api/std",
- "sp-core/std",
"sp-io/std",
"sp-runtime/std",
"sp-std/std",
@@ -88,15 +83,22 @@ std = [
"xcm/std",
]
runtime-benchmarks = [
+ "bp-runtime/test-helpers",
"frame-support/runtime-benchmarks",
"frame-system/runtime-benchmarks",
"pallet-balances/runtime-benchmarks",
"pallet-bridge-grandpa/runtime-benchmarks",
"pallet-bridge-messages/runtime-benchmarks",
+ "pallet-bridge-messages/test-helpers",
"pallet-bridge-parachains/runtime-benchmarks",
"pallet-bridge-relayers/runtime-benchmarks",
"pallet-utility/runtime-benchmarks",
"sp-runtime/runtime-benchmarks",
+ "sp-trie",
"xcm-builder/runtime-benchmarks",
]
integrity-test = ["static_assertions"]
+test-helpers = [
+ "bp-runtime/test-helpers",
+ "sp-trie",
+]
diff --git a/bridges/bin/runtime-common/src/extensions/priority_calculator.rs b/bridges/bin/runtime-common/src/extensions/priority_calculator.rs
index 92810290f95e77a7fdc04cafaa1e6ab290e1661a..9f559dc13b64d3912f0d1679c21fa682034bdb8e 100644
--- a/bridges/bin/runtime-common/src/extensions/priority_calculator.rs
+++ b/bridges/bin/runtime-common/src/extensions/priority_calculator.rs
@@ -319,6 +319,7 @@ mod integrity_tests {
pub mod per_message {
use super::*;
+ use bp_messages::ChainWithMessages;
use pallet_bridge_messages::WeightInfoExt;
/// Ensures that the value of `PriorityBoostPerMessage` matches the value of
@@ -339,7 +340,7 @@ mod integrity_tests {
BalanceOf: Send + Sync + FixedPointOperand,
{
let maximal_messages_in_delivery_transaction =
- Runtime::MaxUnconfirmedMessagesAtInboundLane::get();
+ Runtime::BridgedChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX;
super::ensure_priority_boost_is_sane::>(
"PriorityBoostPerMessage",
maximal_messages_in_delivery_transaction,
diff --git a/bridges/bin/runtime-common/src/extensions/refund_relayer_extension.rs b/bridges/bin/runtime-common/src/extensions/refund_relayer_extension.rs
index 5aa7f1c095d540a4ee5050aeb7d694c98b744683..6ba3506377d0e602bf9ee706b13c248efd6afaca 100644
--- a/bridges/bin/runtime-common/src/extensions/refund_relayer_extension.rs
+++ b/bridges/bin/runtime-common/src/extensions/refund_relayer_extension.rs
@@ -22,9 +22,9 @@
use crate::messages_call_ext::{
CallHelper as MessagesCallHelper, CallInfo as MessagesCallInfo, MessagesCallSubType,
};
-use bp_messages::{LaneId, MessageNonce};
+use bp_messages::{ChainWithMessages, LaneId, MessageNonce};
use bp_relayers::{ExplicitOrAccountParams, RewardsAccountOwner, RewardsAccountParams};
-use bp_runtime::{Parachain, RangeInclusiveExt, StaticStrProvider};
+use bp_runtime::{Chain, Parachain, RangeInclusiveExt, StaticStrProvider};
use codec::{Codec, Decode, Encode};
use frame_support::{
dispatch::{CallableCallFor, DispatchInfo, PostDispatchInfo},
@@ -293,7 +293,7 @@ pub trait RefundSignedExtension:
::Id::get(),
::Instance,
- >>::BridgedChainId::get(),
+ >>::BridgedChain::ID,
if call_info.is_receive_messages_proof_call() {
RewardsAccountOwner::ThisChain
} else {
@@ -406,8 +406,7 @@ pub trait RefundSignedExtension:
// a quick check to avoid invalid high-priority transactions
let max_unconfirmed_messages_in_confirmation_tx = ::Instance,
- >>::MaxUnconfirmedMessagesAtInboundLane::get(
- );
+ >>::BridgedChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX;
if bundled_messages > max_unconfirmed_messages_in_confirmation_tx {
return None
}
@@ -935,9 +934,6 @@ where
pub(crate) mod tests {
use super::*;
use crate::{
- messages::{
- source::FromBridgedChainMessagesDeliveryProof, target::FromBridgedChainMessagesProof,
- },
messages_call_ext::{
BaseMessagesProofInfo, ReceiveMessagesDeliveryProofInfo, ReceiveMessagesProofInfo,
UnrewardedRelayerOccupation,
@@ -946,8 +942,10 @@ pub(crate) mod tests {
};
use bp_header_chain::StoredHeaderDataBuilder;
use bp_messages::{
- DeliveredMessages, InboundLaneData, MessageNonce, MessagesOperatingMode, OutboundLaneData,
- UnrewardedRelayer, UnrewardedRelayersState,
+ source_chain::FromBridgedChainMessagesDeliveryProof,
+ target_chain::FromBridgedChainMessagesProof, DeliveredMessages, InboundLaneData,
+ MessageNonce, MessagesOperatingMode, OutboundLaneData, UnrewardedRelayer,
+ UnrewardedRelayersState,
};
use bp_parachains::{BestParaHeadHash, ParaInfo};
use bp_polkadot_core::parachains::{ParaHeadsProof, ParaId};
@@ -1123,7 +1121,7 @@ pub(crate) mod tests {
ParaId(BridgedUnderlyingParachain::PARACHAIN_ID),
[parachain_head_at_relay_header_number as u8; 32].into(),
)],
- parachain_heads_proof: ParaHeadsProof { storage_proof: vec![] },
+ parachain_heads_proof: ParaHeadsProof { storage_proof: Default::default() },
})
}
@@ -1136,7 +1134,7 @@ pub(crate) mod tests {
ParaId(BridgedUnderlyingParachain::PARACHAIN_ID),
[parachain_head_at_relay_header_number as u8; 32].into(),
)],
- parachain_heads_proof: ParaHeadsProof { storage_proof: vec![] },
+ parachain_heads_proof: ParaHeadsProof { storage_proof: Default::default() },
is_free_execution_expected: false,
})
}
@@ -1144,9 +1142,9 @@ pub(crate) mod tests {
fn message_delivery_call(best_message: MessageNonce) -> RuntimeCall {
RuntimeCall::BridgeMessages(MessagesCall::receive_messages_proof {
relayer_id_at_bridged_chain: relayer_account_at_bridged_chain(),
- proof: FromBridgedChainMessagesProof {
+ proof: Box::new(FromBridgedChainMessagesProof {
bridged_header_hash: Default::default(),
- storage_proof: vec![],
+ storage_proof: Default::default(),
lane: TestLaneId::get(),
nonces_start: pallet_bridge_messages::InboundLanes::::get(
TEST_LANE_ID,
@@ -1154,7 +1152,7 @@ pub(crate) mod tests {
.last_delivered_nonce() +
1,
nonces_end: best_message,
- },
+ }),
messages_count: 1,
dispatch_weight: Weight::zero(),
})
@@ -1164,7 +1162,7 @@ pub(crate) mod tests {
RuntimeCall::BridgeMessages(MessagesCall::receive_messages_delivery_proof {
proof: FromBridgedChainMessagesDeliveryProof {
bridged_header_hash: Default::default(),
- storage_proof: vec![],
+ storage_proof: Default::default(),
lane: TestLaneId::get(),
},
relayers_state: UnrewardedRelayersState {
@@ -1327,8 +1325,10 @@ pub(crate) mod tests {
best_stored_nonce: 100,
},
unrewarded_relayers: UnrewardedRelayerOccupation {
- free_relayer_slots: MaxUnrewardedRelayerEntriesAtInboundLane::get(),
- free_message_slots: MaxUnconfirmedMessagesAtInboundLane::get(),
+ free_relayer_slots:
+ BridgedUnderlyingChain::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX,
+ free_message_slots:
+ BridgedUnderlyingChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
},
}),
),
@@ -1397,8 +1397,10 @@ pub(crate) mod tests {
best_stored_nonce: 100,
},
unrewarded_relayers: UnrewardedRelayerOccupation {
- free_relayer_slots: MaxUnrewardedRelayerEntriesAtInboundLane::get(),
- free_message_slots: MaxUnconfirmedMessagesAtInboundLane::get(),
+ free_relayer_slots:
+ BridgedUnderlyingChain::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX,
+ free_message_slots:
+ BridgedUnderlyingChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
},
}),
),
@@ -1459,8 +1461,10 @@ pub(crate) mod tests {
best_stored_nonce: 100,
},
unrewarded_relayers: UnrewardedRelayerOccupation {
- free_relayer_slots: MaxUnrewardedRelayerEntriesAtInboundLane::get(),
- free_message_slots: MaxUnconfirmedMessagesAtInboundLane::get(),
+ free_relayer_slots:
+ BridgedUnderlyingChain::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX,
+ free_message_slots:
+ BridgedUnderlyingChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
},
}),
),
@@ -1499,8 +1503,10 @@ pub(crate) mod tests {
best_stored_nonce: 100,
},
unrewarded_relayers: UnrewardedRelayerOccupation {
- free_relayer_slots: MaxUnrewardedRelayerEntriesAtInboundLane::get(),
- free_message_slots: MaxUnconfirmedMessagesAtInboundLane::get(),
+ free_relayer_slots:
+ BridgedUnderlyingChain::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX,
+ free_message_slots:
+ BridgedUnderlyingChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
},
},
)),
@@ -1735,14 +1741,16 @@ pub(crate) mod tests {
let fns = [run_validate, run_grandpa_validate, run_messages_validate];
for f in fns {
- let priority_of_max_messages_delivery =
- f(message_delivery_call(100 + MaxUnconfirmedMessagesAtInboundLane::get()))
- .unwrap()
- .priority;
- let priority_of_more_than_max_messages_delivery =
- f(message_delivery_call(100 + MaxUnconfirmedMessagesAtInboundLane::get() + 1))
- .unwrap()
- .priority;
+ let priority_of_max_messages_delivery = f(message_delivery_call(
+ 100 + BridgedUnderlyingChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
+ ))
+ .unwrap()
+ .priority;
+ let priority_of_more_than_max_messages_delivery = f(message_delivery_call(
+ 100 + BridgedUnderlyingChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX + 1,
+ ))
+ .unwrap()
+ .priority;
assert!(
priority_of_max_messages_delivery > priority_of_more_than_max_messages_delivery,
@@ -2103,7 +2111,7 @@ pub(crate) mod tests {
[1u8; 32].into(),
),
],
- parachain_heads_proof: ParaHeadsProof { storage_proof: vec![] },
+ parachain_heads_proof: ParaHeadsProof { storage_proof: Default::default() },
}),
message_delivery_call(200),
],
@@ -2865,7 +2873,8 @@ pub(crate) mod tests {
#[test]
fn does_not_panic_on_boosting_priority_of_empty_message_delivery_transaction() {
run_test(|| {
- let best_delivered_message = MaxUnconfirmedMessagesAtInboundLane::get();
+ let best_delivered_message =
+ BridgedUnderlyingChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX;
initialize_environment(100, 100, best_delivered_message);
// register relayer so it gets priority boost
diff --git a/bridges/bin/runtime-common/src/integrity.rs b/bridges/bin/runtime-common/src/integrity.rs
index d3827a14dd6cc24e088a8d05d26aba9d769eb213..a0a9367dd1400309d0f0be967665a4543ad982cb 100644
--- a/bridges/bin/runtime-common/src/integrity.rs
+++ b/bridges/bin/runtime-common/src/integrity.rs
@@ -19,26 +19,33 @@
//! Most of the tests in this module assume that the bridge is using standard (see `crate::messages`
//! module for details) configuration.
-use crate::{messages, messages::MessageBridge};
-
-use bp_messages::{InboundLaneData, MessageNonce};
-use bp_runtime::{Chain, ChainId};
+use bp_header_chain::ChainWithGrandpa;
+use bp_messages::{ChainWithMessages, InboundLaneData, MessageNonce};
+use bp_runtime::Chain;
use codec::Encode;
use frame_support::{storage::generator::StorageValue, traits::Get, weights::Weight};
use frame_system::limits;
use pallet_bridge_messages::WeightInfoExt as _;
+// Re-export to avoid include all dependencies everywhere.
+#[doc(hidden)]
+pub mod __private {
+ pub use bp_xcm_bridge_hub;
+ pub use static_assertions;
+}
+
/// Macro that ensures that the runtime configuration and chain primitives crate are sharing
/// the same types (nonce, block number, hash, hasher, account id and header).
#[macro_export]
macro_rules! assert_chain_types(
( runtime: $r:path, this_chain: $this:path ) => {
{
+ use frame_system::{Config as SystemConfig, pallet_prelude::{BlockNumberFor, HeaderFor}};
+ use $crate::integrity::__private::static_assertions::assert_type_eq_all;
+
// if one of asserts fail, then either bridge isn't configured properly (or alternatively - non-standard
// configuration is used), or something has broke existing configuration (meaning that all bridged chains
// and relays will stop functioning)
- use frame_system::{Config as SystemConfig, pallet_prelude::{BlockNumberFor, HeaderFor}};
- use static_assertions::assert_type_eq_all;
assert_type_eq_all!(<$r as SystemConfig>::Nonce, bp_runtime::NonceOf<$this>);
assert_type_eq_all!(BlockNumberFor<$r>, bp_runtime::BlockNumberOf<$this>);
@@ -50,23 +57,6 @@ macro_rules! assert_chain_types(
}
);
-/// Macro that ensures that the bridge GRANDPA pallet is configured properly to bridge with given
-/// chain.
-#[macro_export]
-macro_rules! assert_bridge_grandpa_pallet_types(
- ( runtime: $r:path, with_bridged_chain_grandpa_instance: $i:path, bridged_chain: $bridged:path ) => {
- {
- // if one of asserts fail, then either bridge isn't configured properly (or alternatively - non-standard
- // configuration is used), or something has broke existing configuration (meaning that all bridged chains
- // and relays will stop functioning)
- use pallet_bridge_grandpa::Config as GrandpaConfig;
- use static_assertions::assert_type_eq_all;
-
- assert_type_eq_all!(<$r as GrandpaConfig<$i>>::BridgedChain, $bridged);
- }
- }
-);
-
/// Macro that ensures that the bridge messages pallet is configured properly to bridge using given
/// configuration.
#[macro_export]
@@ -74,32 +64,31 @@ macro_rules! assert_bridge_messages_pallet_types(
(
runtime: $r:path,
with_bridged_chain_messages_instance: $i:path,
- bridge: $bridge:path
+ this_chain: $this:path,
+ bridged_chain: $bridged:path,
) => {
{
+ use $crate::messages_xcm_extension::XcmAsPlainPayload;
+ use $crate::integrity::__private::static_assertions::assert_type_eq_all;
+ use bp_messages::ChainWithMessages;
+ use bp_runtime::Chain;
+ use pallet_bridge_messages::Config as MessagesConfig;
+
// if one of asserts fail, then either bridge isn't configured properly (or alternatively - non-standard
// configuration is used), or something has broke existing configuration (meaning that all bridged chains
// and relays will stop functioning)
- use $crate::messages::{
- source::{FromThisChainMessagePayload, TargetHeaderChainAdapter},
- target::{FromBridgedChainMessagePayload, SourceHeaderChainAdapter},
- AccountIdOf, BalanceOf, BridgedChain, ThisChain,
- };
- use pallet_bridge_messages::Config as MessagesConfig;
- use static_assertions::assert_type_eq_all;
- assert_type_eq_all!(<$r as MessagesConfig<$i>>::OutboundPayload, FromThisChainMessagePayload);
+ assert_type_eq_all!(<$r as MessagesConfig<$i>>::ThisChain, $this);
+ assert_type_eq_all!(<$r as MessagesConfig<$i>>::BridgedChain, $bridged);
- assert_type_eq_all!(<$r as MessagesConfig<$i>>::InboundRelayer, AccountIdOf>);
-
- assert_type_eq_all!(<$r as MessagesConfig<$i>>::TargetHeaderChain, TargetHeaderChainAdapter<$bridge>);
- assert_type_eq_all!(<$r as MessagesConfig<$i>>::SourceHeaderChain, SourceHeaderChainAdapter<$bridge>);
+ assert_type_eq_all!(<$r as MessagesConfig<$i>>::OutboundPayload, XcmAsPlainPayload);
+ assert_type_eq_all!(<$r as MessagesConfig<$i>>::InboundPayload, XcmAsPlainPayload);
}
}
);
/// Macro that combines four other macro calls - `assert_chain_types`, `assert_bridge_types`,
-/// `assert_bridge_grandpa_pallet_types` and `assert_bridge_messages_pallet_types`. It may be used
+/// and `assert_bridge_messages_pallet_types`. It may be used
/// at the chain that is implementing complete standard messages bridge (i.e. with bridge GRANDPA
/// and messages pallets deployed).
#[macro_export]
@@ -108,20 +97,15 @@ macro_rules! assert_complete_bridge_types(
runtime: $r:path,
with_bridged_chain_grandpa_instance: $gi:path,
with_bridged_chain_messages_instance: $mi:path,
- bridge: $bridge:path,
this_chain: $this:path,
bridged_chain: $bridged:path,
) => {
$crate::assert_chain_types!(runtime: $r, this_chain: $this);
- $crate::assert_bridge_grandpa_pallet_types!(
- runtime: $r,
- with_bridged_chain_grandpa_instance: $gi,
- bridged_chain: $bridged
- );
$crate::assert_bridge_messages_pallet_types!(
runtime: $r,
with_bridged_chain_messages_instance: $mi,
- bridge: $bridge
+ this_chain: $this,
+ bridged_chain: $bridged,
);
}
);
@@ -184,20 +168,8 @@ where
);
}
-/// Parameters for asserting messages pallet constants.
-#[derive(Debug)]
-pub struct AssertBridgeMessagesPalletConstants {
- /// Maximal number of unrewarded relayer entries in a confirmation transaction at the bridged
- /// chain.
- pub max_unrewarded_relayers_in_bridged_confirmation_tx: MessageNonce,
- /// Maximal number of unconfirmed messages in a confirmation transaction at the bridged chain.
- pub max_unconfirmed_messages_in_bridged_confirmation_tx: MessageNonce,
- /// Identifier of the bridged chain.
- pub bridged_chain_id: ChainId,
-}
-
/// Test that the constants, used in messages pallet configuration are valid.
-pub fn assert_bridge_messages_pallet_constants(params: AssertBridgeMessagesPalletConstants)
+pub fn assert_bridge_messages_pallet_constants()
where
R: pallet_bridge_messages::Config,
MI: 'static,
@@ -207,27 +179,22 @@ where
"ActiveOutboundLanes ({:?}) must not be empty",
R::ActiveOutboundLanes::get(),
);
+
assert!(
- R::MaxUnrewardedRelayerEntriesAtInboundLane::get() <= params.max_unrewarded_relayers_in_bridged_confirmation_tx,
- "MaxUnrewardedRelayerEntriesAtInboundLane ({}) must be <= than the hardcoded value for bridged chain: {}",
- R::MaxUnrewardedRelayerEntriesAtInboundLane::get(),
- params.max_unrewarded_relayers_in_bridged_confirmation_tx,
- );
- assert!(
- R::MaxUnconfirmedMessagesAtInboundLane::get() <= params.max_unconfirmed_messages_in_bridged_confirmation_tx,
- "MaxUnrewardedRelayerEntriesAtInboundLane ({}) must be <= than the hardcoded value for bridged chain: {}",
- R::MaxUnconfirmedMessagesAtInboundLane::get(),
- params.max_unconfirmed_messages_in_bridged_confirmation_tx,
+ pallet_bridge_messages::BridgedChainOf::::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX
+ <= pallet_bridge_messages::BridgedChainOf::::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
+ "MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX ({}) of {:?} is larger than \
+ its MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX ({}). This makes \
+ no sense",
+ pallet_bridge_messages::BridgedChainOf::::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX,
+ pallet_bridge_messages::BridgedChainOf::::ID,
+ pallet_bridge_messages::BridgedChainOf::::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
);
- assert_eq!(R::BridgedChainId::get(), params.bridged_chain_id);
}
/// Parameters for asserting bridge pallet names.
#[derive(Debug)]
pub struct AssertBridgePalletNames<'a> {
- /// Name of the messages pallet, deployed at the bridged chain and used to bridge with this
- /// chain.
- pub with_this_chain_messages_pallet_name: &'a str,
/// Name of the GRANDPA pallet, deployed at this chain and used to bridge with the bridged
/// chain.
pub with_bridged_chain_grandpa_pallet_name: &'a str,
@@ -238,18 +205,22 @@ pub struct AssertBridgePalletNames<'a> {
/// Tests that bridge pallet names used in `construct_runtime!()` macro call are matching constants
/// from chain primitives crates.
-pub fn assert_bridge_pallet_names(params: AssertBridgePalletNames)
+fn assert_bridge_pallet_names(params: AssertBridgePalletNames)
where
- B: MessageBridge,
R: pallet_bridge_grandpa::Config + pallet_bridge_messages::Config,
GI: 'static,
MI: 'static,
{
- assert_eq!(B::BRIDGED_MESSAGES_PALLET_NAME, params.with_this_chain_messages_pallet_name);
+ // check that the bridge GRANDPA pallet has required name
assert_eq!(
pallet_bridge_grandpa::PalletOwner::::storage_value_final_key().to_vec(),
- bp_runtime::storage_value_key(params.with_bridged_chain_grandpa_pallet_name, "PalletOwner",).0,
+ bp_runtime::storage_value_key(
+ params.with_bridged_chain_grandpa_pallet_name,
+ "PalletOwner",
+ ).0,
);
+
+ // check that the bridge messages pallet has required name
assert_eq!(
pallet_bridge_messages::PalletOwner::::storage_value_final_key().to_vec(),
bp_runtime::storage_value_key(
@@ -262,35 +233,58 @@ where
/// Parameters for asserting complete standard messages bridge.
#[derive(Debug)]
-pub struct AssertCompleteBridgeConstants<'a> {
+pub struct AssertCompleteBridgeConstants {
/// Parameters to assert this chain constants.
pub this_chain_constants: AssertChainConstants,
- /// Parameters to assert messages pallet constants.
- pub messages_pallet_constants: AssertBridgeMessagesPalletConstants,
- /// Parameters to assert pallet names constants.
- pub pallet_names: AssertBridgePalletNames<'a>,
}
-/// All bridge-related constants tests for the complete standard messages bridge (i.e. with bridge
-/// GRANDPA and messages pallets deployed).
-pub fn assert_complete_bridge_constants(params: AssertCompleteBridgeConstants)
-where
+/// All bridge-related constants tests for the complete standard relay-chain messages bridge
+/// (i.e. with bridge GRANDPA and messages pallets deployed).
+pub fn assert_complete_with_relay_chain_bridge_constants(
+ params: AssertCompleteBridgeConstants,
+) where
R: frame_system::Config
+ pallet_bridge_grandpa::Config
+ pallet_bridge_messages::Config,
GI: 'static,
MI: 'static,
- B: MessageBridge,
{
assert_chain_constants::(params.this_chain_constants);
assert_bridge_grandpa_pallet_constants::();
- assert_bridge_messages_pallet_constants::(params.messages_pallet_constants);
- assert_bridge_pallet_names::(params.pallet_names);
+ assert_bridge_messages_pallet_constants::();
+ assert_bridge_pallet_names::(AssertBridgePalletNames {
+ with_bridged_chain_grandpa_pallet_name:
+ >::BridgedChain::WITH_CHAIN_GRANDPA_PALLET_NAME,
+ with_bridged_chain_messages_pallet_name:
+ >::BridgedChain::WITH_CHAIN_MESSAGES_PALLET_NAME,
+ });
+}
+
+/// All bridge-related constants tests for the complete standard parachain messages bridge
+/// (i.e. with bridge GRANDPA, parachains and messages pallets deployed).
+pub fn assert_complete_with_parachain_bridge_constants(
+ params: AssertCompleteBridgeConstants,
+) where
+ R: frame_system::Config
+ + pallet_bridge_grandpa::Config
+ + pallet_bridge_messages::Config,
+ GI: 'static,
+ MI: 'static,
+ RelayChain: ChainWithGrandpa,
+{
+ assert_chain_constants::(params.this_chain_constants);
+ assert_bridge_grandpa_pallet_constants::();
+ assert_bridge_messages_pallet_constants::();
+ assert_bridge_pallet_names::(AssertBridgePalletNames {
+ with_bridged_chain_grandpa_pallet_name: RelayChain::WITH_CHAIN_GRANDPA_PALLET_NAME,
+ with_bridged_chain_messages_pallet_name:
+ >::BridgedChain::WITH_CHAIN_MESSAGES_PALLET_NAME,
+ });
}
/// Check that the message lane weights are correct.
pub fn check_message_lane_weights<
- C: Chain,
+ C: ChainWithMessages,
T: frame_system::Config + pallet_bridge_messages::Config,
MessagesPalletInstance: 'static,
>(
@@ -308,14 +302,20 @@ pub fn check_message_lane_weights<
// check basic weight assumptions
pallet_bridge_messages::ensure_weights_are_correct::>();
+ // check that the maximal message dispatch weight is below hardcoded limit
+ pallet_bridge_messages::ensure_maximal_message_dispatch::>(
+ C::maximal_incoming_message_size(),
+ C::maximal_incoming_message_dispatch_weight(),
+ );
+
// check that weights allow us to receive messages
- let max_incoming_message_proof_size = bridged_chain_extra_storage_proof_size
- .saturating_add(messages::target::maximal_incoming_message_size(C::max_extrinsic_size()));
+ let max_incoming_message_proof_size =
+ bridged_chain_extra_storage_proof_size.saturating_add(C::maximal_incoming_message_size());
pallet_bridge_messages::ensure_able_to_receive_message::>(
C::max_extrinsic_size(),
C::max_extrinsic_weight(),
max_incoming_message_proof_size,
- messages::target::maximal_incoming_message_dispatch_weight(C::max_extrinsic_weight()),
+ C::maximal_incoming_message_dispatch_weight(),
);
// check that weights allow us to receive delivery confirmations
diff --git a/bridges/bin/runtime-common/src/lib.rs b/bridges/bin/runtime-common/src/lib.rs
index 5679acd6006ccb8540f940f0f90363f902d643f7..b65bb6041d5610ce2bdfb63f923f3f24b21dcd7f 100644
--- a/bridges/bin/runtime-common/src/lib.rs
+++ b/bridges/bin/runtime-common/src/lib.rs
@@ -20,11 +20,10 @@
#![cfg_attr(not(feature = "std"), no_std)]
pub mod extensions;
-pub mod messages;
+
pub mod messages_api;
pub mod messages_benchmarking;
pub mod messages_call_ext;
-pub mod messages_generation;
pub mod messages_xcm_extension;
pub mod parachains_benchmarking;
diff --git a/bridges/bin/runtime-common/src/messages.rs b/bridges/bin/runtime-common/src/messages.rs
deleted file mode 100644
index 03801d5279d0a8453542336d8089f5c887a3d005..0000000000000000000000000000000000000000
--- a/bridges/bin/runtime-common/src/messages.rs
+++ /dev/null
@@ -1,704 +0,0 @@
-// Copyright (C) Parity Technologies (UK) Ltd.
-// This file is part of Parity Bridges Common.
-
-// Parity Bridges Common is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Parity Bridges Common is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Parity Bridges Common. If not, see .
-
-//! Types that allow runtime to act as a source/target endpoint of message lanes.
-//!
-//! Messages are assumed to be encoded `Call`s of the target chain. Call-dispatch
-//! pallet is used to dispatch incoming messages. Message identified by a tuple
-//! of to elements - message lane id and message nonce.
-
-pub use bp_runtime::{RangeInclusiveExt, UnderlyingChainOf, UnderlyingChainProvider};
-
-use bp_header_chain::HeaderChain;
-use bp_messages::{
- source_chain::TargetHeaderChain,
- target_chain::{ProvedLaneMessages, ProvedMessages, SourceHeaderChain},
- InboundLaneData, LaneId, Message, MessageKey, MessageNonce, MessagePayload, OutboundLaneData,
- VerificationError,
-};
-use bp_runtime::{Chain, RawStorageProof, Size, StorageProofChecker};
-use codec::{Decode, Encode};
-use frame_support::{traits::Get, weights::Weight};
-use hash_db::Hasher;
-use scale_info::TypeInfo;
-use sp_runtime::RuntimeDebug;
-use sp_std::{marker::PhantomData, vec::Vec};
-
-/// Bidirectional message bridge.
-pub trait MessageBridge {
- /// Name of the paired messages pallet instance at the Bridged chain.
- ///
- /// Should be the name that is used in the `construct_runtime!()` macro.
- const BRIDGED_MESSAGES_PALLET_NAME: &'static str;
-
- /// This chain in context of message bridge.
- type ThisChain: ThisChainWithMessages;
- /// Bridged chain in context of message bridge.
- type BridgedChain: BridgedChainWithMessages;
- /// Bridged header chain.
- type BridgedHeaderChain: HeaderChain>;
-}
-
-/// This chain that has `pallet-bridge-messages` module.
-pub trait ThisChainWithMessages: UnderlyingChainProvider {
- /// Call origin on the chain.
- type RuntimeOrigin;
-}
-
-/// Bridged chain that has `pallet-bridge-messages` module.
-pub trait BridgedChainWithMessages: UnderlyingChainProvider {}
-
-/// This chain in context of message bridge.
-pub type ThisChain = ::ThisChain;
-/// Bridged chain in context of message bridge.
-pub type BridgedChain = ::BridgedChain;
-/// Hash used on the chain.
-pub type HashOf = bp_runtime::HashOf<::Chain>;
-/// Hasher used on the chain.
-pub type HasherOf = bp_runtime::HasherOf>;
-/// Account id used on the chain.
-pub type AccountIdOf = bp_runtime::AccountIdOf>;
-/// Type of balances that is used on the chain.
-pub type BalanceOf = bp_runtime::BalanceOf>;
-
-/// Sub-module that is declaring types required for processing This -> Bridged chain messages.
-pub mod source {
- use super::*;
-
- /// Message payload for This -> Bridged chain messages.
- pub type FromThisChainMessagePayload = crate::messages_xcm_extension::XcmAsPlainPayload;
-
- /// Maximal size of outbound message payload.
- pub struct FromThisChainMaximalOutboundPayloadSize(PhantomData);
-
- impl Get for FromThisChainMaximalOutboundPayloadSize {
- fn get() -> u32 {
- maximal_message_size::()
- }
- }
-
- /// Messages delivery proof from bridged chain:
- ///
- /// - hash of finalized header;
- /// - storage proof of inbound lane state;
- /// - lane id.
- #[derive(Clone, Decode, Encode, Eq, PartialEq, RuntimeDebug, TypeInfo)]
- pub struct FromBridgedChainMessagesDeliveryProof {
- /// Hash of the bridge header the proof is for.
- pub bridged_header_hash: BridgedHeaderHash,
- /// Storage trie proof generated for [`Self::bridged_header_hash`].
- pub storage_proof: RawStorageProof,
- /// Lane id of which messages were delivered and the proof is for.
- pub lane: LaneId,
- }
-
- impl Size for FromBridgedChainMessagesDeliveryProof {
- fn size(&self) -> u32 {
- u32::try_from(
- self.storage_proof
- .iter()
- .fold(0usize, |sum, node| sum.saturating_add(node.len())),
- )
- .unwrap_or(u32::MAX)
- }
- }
-
- /// 'Parsed' message delivery proof - inbound lane id and its state.
- pub type ParsedMessagesDeliveryProofFromBridgedChain =
- (LaneId, InboundLaneData>>);
-
- /// Return maximal message size of This -> Bridged chain message.
- pub fn maximal_message_size() -> u32 {
- super::target::maximal_incoming_message_size(
- UnderlyingChainOf::>::max_extrinsic_size(),
- )
- }
-
- /// `TargetHeaderChain` implementation that is using default types and perform default checks.
- pub struct TargetHeaderChainAdapter(PhantomData);
-
- impl TargetHeaderChain>>
- for TargetHeaderChainAdapter
- {
- type MessagesDeliveryProof = FromBridgedChainMessagesDeliveryProof>>;
-
- fn verify_message(payload: &FromThisChainMessagePayload) -> Result<(), VerificationError> {
- verify_chain_message::(payload)
- }
-
- fn verify_messages_delivery_proof(
- proof: Self::MessagesDeliveryProof,
- ) -> Result<(LaneId, InboundLaneData>>), VerificationError> {
- verify_messages_delivery_proof::(proof)
- }
- }
-
- /// Do basic Bridged-chain specific verification of This -> Bridged chain message.
- ///
- /// Ok result from this function means that the delivery transaction with this message
- /// may be 'mined' by the target chain.
- pub fn verify_chain_message(
- payload: &FromThisChainMessagePayload,
- ) -> Result<(), VerificationError> {
- // IMPORTANT: any error that is returned here is fatal for the bridge, because
- // this code is executed at the bridge hub and message sender actually lives
- // at some sibling parachain. So we are failing **after** the message has been
- // sent and we can't report it back to sender (unless error report mechanism is
- // embedded into message and its dispatcher).
-
- // apart from maximal message size check (see below), we should also check the message
- // dispatch weight here. But we assume that the bridged chain will just push the message
- // to some queue (XCMP, UMP, DMP), so the weight is constant and fits the block.
-
- // The maximal size of extrinsic at Substrate-based chain depends on the
- // `frame_system::Config::MaximumBlockLength` and
- // `frame_system::Config::AvailableBlockRatio` constants. This check is here to be sure that
- // the lane won't stuck because message is too large to fit into delivery transaction.
- //
- // **IMPORTANT NOTE**: the delivery transaction contains storage proof of the message, not
- // the message itself. The proof is always larger than the message. But unless chain state
- // is enormously large, it should be several dozens/hundreds of bytes. The delivery
- // transaction also contains signatures and signed extensions. Because of this, we reserve
- // 1/3 of the the maximal extrinsic size for this data.
- if payload.len() > maximal_message_size::() as usize {
- return Err(VerificationError::MessageTooLarge)
- }
-
- Ok(())
- }
-
- /// Verify proof of This -> Bridged chain messages delivery.
- ///
- /// This function is used when Bridged chain is directly using GRANDPA finality. For Bridged
- /// parachains, please use the `verify_messages_delivery_proof_from_parachain`.
- pub fn verify_messages_delivery_proof(
- proof: FromBridgedChainMessagesDeliveryProof>>,
- ) -> Result, VerificationError> {
- let FromBridgedChainMessagesDeliveryProof { bridged_header_hash, storage_proof, lane } =
- proof;
- let mut storage =
- B::BridgedHeaderChain::storage_proof_checker(bridged_header_hash, storage_proof)
- .map_err(VerificationError::HeaderChain)?;
- // Messages delivery proof is just proof of single storage key read => any error
- // is fatal.
- let storage_inbound_lane_data_key = bp_messages::storage_keys::inbound_lane_data_key(
- B::BRIDGED_MESSAGES_PALLET_NAME,
- &lane,
- );
- let inbound_lane_data = storage
- .read_and_decode_mandatory_value(storage_inbound_lane_data_key.0.as_ref())
- .map_err(VerificationError::InboundLaneStorage)?;
-
- // check that the storage proof doesn't have any untouched trie nodes
- storage.ensure_no_unused_nodes().map_err(VerificationError::StorageProof)?;
-
- Ok((lane, inbound_lane_data))
- }
-}
-
-/// Sub-module that is declaring types required for processing Bridged -> This chain messages.
-pub mod target {
- use super::*;
-
- /// Decoded Bridged -> This message payload.
- pub type FromBridgedChainMessagePayload = crate::messages_xcm_extension::XcmAsPlainPayload;
-
- /// Messages proof from bridged chain:
- ///
- /// - hash of finalized header;
- /// - storage proof of messages and (optionally) outbound lane state;
- /// - lane id;
- /// - nonces (inclusive range) of messages which are included in this proof.
- #[derive(Clone, Decode, Encode, Eq, PartialEq, RuntimeDebug, TypeInfo)]
- pub struct FromBridgedChainMessagesProof {
- /// Hash of the finalized bridged header the proof is for.
- pub bridged_header_hash: BridgedHeaderHash,
- /// A storage trie proof of messages being delivered.
- pub storage_proof: RawStorageProof,
- /// Messages in this proof are sent over this lane.
- pub lane: LaneId,
- /// Nonce of the first message being delivered.
- pub nonces_start: MessageNonce,
- /// Nonce of the last message being delivered.
- pub nonces_end: MessageNonce,
- }
-
- impl Size for FromBridgedChainMessagesProof {
- fn size(&self) -> u32 {
- u32::try_from(
- self.storage_proof
- .iter()
- .fold(0usize, |sum, node| sum.saturating_add(node.len())),
- )
- .unwrap_or(u32::MAX)
- }
- }
-
- /// Return maximal dispatch weight of the message we're able to receive.
- pub fn maximal_incoming_message_dispatch_weight(maximal_extrinsic_weight: Weight) -> Weight {
- maximal_extrinsic_weight / 2
- }
-
- /// Return maximal message size given maximal extrinsic size.
- pub fn maximal_incoming_message_size(maximal_extrinsic_size: u32) -> u32 {
- maximal_extrinsic_size / 3 * 2
- }
-
- /// `SourceHeaderChain` implementation that is using default types and perform default checks.
- pub struct SourceHeaderChainAdapter(PhantomData);
-
- impl SourceHeaderChain for SourceHeaderChainAdapter {
- type MessagesProof = FromBridgedChainMessagesProof>>;
-
- fn verify_messages_proof(
- proof: Self::MessagesProof,
- messages_count: u32,
- ) -> Result, VerificationError> {
- verify_messages_proof::(proof, messages_count)
- }
- }
-
- /// Verify proof of Bridged -> This chain messages.
- ///
- /// This function is used when Bridged chain is directly using GRANDPA finality. For Bridged
- /// parachains, please use the `verify_messages_proof_from_parachain`.
- ///
- /// The `messages_count` argument verification (sane limits) is supposed to be made
- /// outside of this function. This function only verifies that the proof declares exactly
- /// `messages_count` messages.
- pub fn verify_messages_proof(
- proof: FromBridgedChainMessagesProof>>,
- messages_count: u32,
- ) -> Result, VerificationError> {
- let FromBridgedChainMessagesProof {
- bridged_header_hash,
- storage_proof,
- lane,
- nonces_start,
- nonces_end,
- } = proof;
- let storage =
- B::BridgedHeaderChain::storage_proof_checker(bridged_header_hash, storage_proof)
- .map_err(VerificationError::HeaderChain)?;
- let mut parser = StorageProofCheckerAdapter::<_, B> { storage, _dummy: Default::default() };
- let nonces_range = nonces_start..=nonces_end;
-
- // receiving proofs where end < begin is ok (if proof includes outbound lane state)
- let messages_in_the_proof = nonces_range.checked_len().unwrap_or(0);
- if messages_in_the_proof != MessageNonce::from(messages_count) {
- return Err(VerificationError::MessagesCountMismatch)
- }
-
- // Read messages first. All messages that are claimed to be in the proof must
- // be in the proof. So any error in `read_value`, or even missing value is fatal.
- //
- // Mind that we allow proofs with no messages if outbound lane state is proved.
- let mut messages = Vec::with_capacity(messages_in_the_proof as _);
- for nonce in nonces_range {
- let message_key = MessageKey { lane_id: lane, nonce };
- let message_payload = parser.read_and_decode_message_payload(&message_key)?;
- messages.push(Message { key: message_key, payload: message_payload });
- }
-
- // Now let's check if proof contains outbound lane state proof. It is optional, so
- // we simply ignore `read_value` errors and missing value.
- let proved_lane_messages = ProvedLaneMessages {
- lane_state: parser.read_and_decode_outbound_lane_data(&lane)?,
- messages,
- };
-
- // Now we may actually check if the proof is empty or not.
- if proved_lane_messages.lane_state.is_none() && proved_lane_messages.messages.is_empty() {
- return Err(VerificationError::EmptyMessageProof)
- }
-
- // check that the storage proof doesn't have any untouched trie nodes
- parser
- .storage
- .ensure_no_unused_nodes()
- .map_err(VerificationError::StorageProof)?;
-
- // We only support single lane messages in this generated_schema
- let mut proved_messages = ProvedMessages::new();
- proved_messages.insert(lane, proved_lane_messages);
-
- Ok(proved_messages)
- }
-
- struct StorageProofCheckerAdapter {
- storage: StorageProofChecker,
- _dummy: sp_std::marker::PhantomData,
- }
-
- impl StorageProofCheckerAdapter {
- fn read_and_decode_outbound_lane_data(
- &mut self,
- lane_id: &LaneId,
- ) -> Result, VerificationError> {
- let storage_outbound_lane_data_key = bp_messages::storage_keys::outbound_lane_data_key(
- B::BRIDGED_MESSAGES_PALLET_NAME,
- lane_id,
- );
-
- self.storage
- .read_and_decode_opt_value(storage_outbound_lane_data_key.0.as_ref())
- .map_err(VerificationError::OutboundLaneStorage)
- }
-
- fn read_and_decode_message_payload(
- &mut self,
- message_key: &MessageKey,
- ) -> Result {
- let storage_message_key = bp_messages::storage_keys::message_key(
- B::BRIDGED_MESSAGES_PALLET_NAME,
- &message_key.lane_id,
- message_key.nonce,
- );
- self.storage
- .read_and_decode_mandatory_value(storage_message_key.0.as_ref())
- .map_err(VerificationError::MessageStorage)
- }
- }
-}
-
-/// The `BridgeMessagesCall` used by a chain.
-pub type BridgeMessagesCallOf = bp_messages::BridgeMessagesCall<
- bp_runtime::AccountIdOf,
- target::FromBridgedChainMessagesProof>,
- source::FromBridgedChainMessagesDeliveryProof>,
->;
-
-#[cfg(test)]
-mod tests {
- use super::*;
- use crate::{
- messages_generation::{
- encode_all_messages, encode_lane_data, prepare_messages_storage_proof,
- },
- mock::*,
- };
- use bp_header_chain::{HeaderChainError, StoredHeaderDataBuilder};
- use bp_runtime::{HeaderId, StorageProofError};
- use codec::Encode;
- use sp_core::H256;
- use sp_runtime::traits::Header as _;
- use sp_trie::accessed_nodes_tracker::Error as AccessedNodesTrackerError;
-
- #[test]
- fn verify_chain_message_rejects_message_with_too_large_declared_weight() {
- assert!(source::verify_chain_message::(&vec![
- 42;
- BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT -
- 1
- ])
- .is_err());
- }
-
- #[test]
- fn verify_chain_message_rejects_message_too_large_message() {
- assert!(source::verify_chain_message::(&vec![
- 0;
- source::maximal_message_size::()
- as usize + 1
- ],)
- .is_err());
- }
-
- #[test]
- fn verify_chain_message_accepts_maximal_message() {
- assert_eq!(
- source::verify_chain_message::(&vec![
- 0;
- source::maximal_message_size::()
- as _
- ],),
- Ok(()),
- );
- }
-
- fn using_messages_proof(
- nonces_end: MessageNonce,
- outbound_lane_data: Option,
- encode_message: impl Fn(MessageNonce, &MessagePayload) -> Option>,
- encode_outbound_lane_data: impl Fn(&OutboundLaneData) -> Vec,
- test: impl Fn(target::FromBridgedChainMessagesProof) -> R,
- ) -> R {
- let (state_root, storage_proof) = prepare_messages_storage_proof::(
- TEST_LANE_ID,
- 1..=nonces_end,
- outbound_lane_data,
- bp_runtime::StorageProofSize::Minimal(0),
- vec![42],
- encode_message,
- encode_outbound_lane_data,
- );
-
- sp_io::TestExternalities::new(Default::default()).execute_with(move || {
- let bridged_header = BridgedChainHeader::new(
- 0,
- Default::default(),
- state_root,
- Default::default(),
- Default::default(),
- );
- let bridged_header_hash = bridged_header.hash();
-
- pallet_bridge_grandpa::BestFinalized::::put(HeaderId(
- 0,
- bridged_header_hash,
- ));
- pallet_bridge_grandpa::ImportedHeaders::::insert(
- bridged_header_hash,
- bridged_header.build(),
- );
- test(target::FromBridgedChainMessagesProof {
- bridged_header_hash,
- storage_proof,
- lane: TEST_LANE_ID,
- nonces_start: 1,
- nonces_end,
- })
- })
- }
-
- #[test]
- fn messages_proof_is_rejected_if_declared_less_than_actual_number_of_messages() {
- assert_eq!(
- using_messages_proof(10, None, encode_all_messages, encode_lane_data, |proof| {
- target::verify_messages_proof::(proof, 5)
- }),
- Err(VerificationError::MessagesCountMismatch),
- );
- }
-
- #[test]
- fn messages_proof_is_rejected_if_declared_more_than_actual_number_of_messages() {
- assert_eq!(
- using_messages_proof(10, None, encode_all_messages, encode_lane_data, |proof| {
- target::verify_messages_proof::(proof, 15)
- }),
- Err(VerificationError::MessagesCountMismatch),
- );
- }
-
- #[test]
- fn message_proof_is_rejected_if_header_is_missing_from_the_chain() {
- assert_eq!(
- using_messages_proof(10, None, encode_all_messages, encode_lane_data, |proof| {
- let bridged_header_hash =
- pallet_bridge_grandpa::BestFinalized::::get().unwrap().1;
- pallet_bridge_grandpa::ImportedHeaders::::remove(bridged_header_hash);
- target::verify_messages_proof::(proof, 10)
- }),
- Err(VerificationError::HeaderChain(HeaderChainError::UnknownHeader)),
- );
- }
-
- #[test]
- fn message_proof_is_rejected_if_header_state_root_mismatches() {
- assert_eq!(
- using_messages_proof(10, None, encode_all_messages, encode_lane_data, |proof| {
- let bridged_header_hash =
- pallet_bridge_grandpa::BestFinalized::::get().unwrap().1;
- pallet_bridge_grandpa::ImportedHeaders::::insert(
- bridged_header_hash,
- BridgedChainHeader::new(
- 0,
- Default::default(),
- Default::default(),
- Default::default(),
- Default::default(),
- )
- .build(),
- );
- target::verify_messages_proof::(proof, 10)
- }),
- Err(VerificationError::HeaderChain(HeaderChainError::StorageProof(
- StorageProofError::StorageRootMismatch
- ))),
- );
- }
-
- #[test]
- fn message_proof_is_rejected_if_it_has_duplicate_trie_nodes() {
- assert_eq!(
- using_messages_proof(10, None, encode_all_messages, encode_lane_data, |mut proof| {
- let node = proof.storage_proof.pop().unwrap();
- proof.storage_proof.push(node.clone());
- proof.storage_proof.push(node);
- target::verify_messages_proof::(proof, 10)
- },),
- Err(VerificationError::HeaderChain(HeaderChainError::StorageProof(
- StorageProofError::StorageProof(sp_trie::StorageProofError::DuplicateNodes.into())
- ))),
- );
- }
-
- #[test]
- fn message_proof_is_rejected_if_it_has_unused_trie_nodes() {
- assert_eq!(
- using_messages_proof(10, None, encode_all_messages, encode_lane_data, |mut proof| {
- proof.storage_proof.push(vec![42]);
- target::verify_messages_proof::(proof, 10)
- },),
- Err(VerificationError::StorageProof(StorageProofError::AccessedNodesTracker(
- AccessedNodesTrackerError::UnusedNodes.into()
- ))),
- );
- }
-
- #[test]
- fn message_proof_is_rejected_if_required_message_is_missing() {
- matches!(
- using_messages_proof(
- 10,
- None,
- |n, m| if n != 5 { Some(m.encode()) } else { None },
- encode_lane_data,
- |proof| target::verify_messages_proof::(proof, 10)
- ),
- Err(VerificationError::MessageStorage(StorageProofError::StorageValueEmpty)),
- );
- }
-
- #[test]
- fn message_proof_is_rejected_if_message_decode_fails() {
- matches!(
- using_messages_proof(
- 10,
- None,
- |n, m| {
- let mut m = m.encode();
- if n == 5 {
- m = vec![42]
- }
- Some(m)
- },
- encode_lane_data,
- |proof| target::verify_messages_proof::(proof, 10),
- ),
- Err(VerificationError::MessageStorage(StorageProofError::StorageValueDecodeFailed(_))),
- );
- }
-
- #[test]
- fn message_proof_is_rejected_if_outbound_lane_state_decode_fails() {
- matches!(
- using_messages_proof(
- 10,
- Some(OutboundLaneData {
- oldest_unpruned_nonce: 1,
- latest_received_nonce: 1,
- latest_generated_nonce: 1,
- }),
- encode_all_messages,
- |d| {
- let mut d = d.encode();
- d.truncate(1);
- d
- },
- |proof| target::verify_messages_proof::(proof, 10),
- ),
- Err(VerificationError::OutboundLaneStorage(
- StorageProofError::StorageValueDecodeFailed(_)
- )),
- );
- }
-
- #[test]
- fn message_proof_is_rejected_if_it_is_empty() {
- assert_eq!(
- using_messages_proof(0, None, encode_all_messages, encode_lane_data, |proof| {
- target::verify_messages_proof::(proof, 0)
- },),
- Err(VerificationError::EmptyMessageProof),
- );
- }
-
- #[test]
- fn non_empty_message_proof_without_messages_is_accepted() {
- assert_eq!(
- using_messages_proof(
- 0,
- Some(OutboundLaneData {
- oldest_unpruned_nonce: 1,
- latest_received_nonce: 1,
- latest_generated_nonce: 1,
- }),
- encode_all_messages,
- encode_lane_data,
- |proof| target::verify_messages_proof::(proof, 0),
- ),
- Ok(vec![(
- TEST_LANE_ID,
- ProvedLaneMessages {
- lane_state: Some(OutboundLaneData {
- oldest_unpruned_nonce: 1,
- latest_received_nonce: 1,
- latest_generated_nonce: 1,
- }),
- messages: Vec::new(),
- },
- )]
- .into_iter()
- .collect()),
- );
- }
-
- #[test]
- fn non_empty_message_proof_is_accepted() {
- assert_eq!(
- using_messages_proof(
- 1,
- Some(OutboundLaneData {
- oldest_unpruned_nonce: 1,
- latest_received_nonce: 1,
- latest_generated_nonce: 1,
- }),
- encode_all_messages,
- encode_lane_data,
- |proof| target::verify_messages_proof::(proof, 1),
- ),
- Ok(vec![(
- TEST_LANE_ID,
- ProvedLaneMessages {
- lane_state: Some(OutboundLaneData {
- oldest_unpruned_nonce: 1,
- latest_received_nonce: 1,
- latest_generated_nonce: 1,
- }),
- messages: vec![Message {
- key: MessageKey { lane_id: TEST_LANE_ID, nonce: 1 },
- payload: vec![42],
- }],
- },
- )]
- .into_iter()
- .collect()),
- );
- }
-
- #[test]
- fn verify_messages_proof_does_not_panic_if_messages_count_mismatches() {
- assert_eq!(
- using_messages_proof(1, None, encode_all_messages, encode_lane_data, |mut proof| {
- proof.nonces_end = u64::MAX;
- target::verify_messages_proof::(proof, u32::MAX)
- },),
- Err(VerificationError::MessagesCountMismatch),
- );
- }
-}
diff --git a/bridges/bin/runtime-common/src/messages_benchmarking.rs b/bridges/bin/runtime-common/src/messages_benchmarking.rs
index 74494f7908045fac601b4c3f64a456ad12dacd6f..1880e65547fe6d5e0af71e6ec7c6e0e214f20866 100644
--- a/bridges/bin/runtime-common/src/messages_benchmarking.rs
+++ b/bridges/bin/runtime-common/src/messages_benchmarking.rs
@@ -19,23 +19,22 @@
#![cfg(feature = "runtime-benchmarks")]
-use crate::{
- messages::{
- source::FromBridgedChainMessagesDeliveryProof, target::FromBridgedChainMessagesProof,
- AccountIdOf, BridgedChain, HashOf, MessageBridge, ThisChain,
- },
+use bp_messages::{
+ source_chain::FromBridgedChainMessagesDeliveryProof,
+ target_chain::FromBridgedChainMessagesProof, MessagePayload,
+};
+use bp_polkadot_core::parachains::ParaHash;
+use bp_runtime::{AccountIdOf, Chain, HashOf, Parachain};
+use codec::Encode;
+use frame_support::weights::Weight;
+use pallet_bridge_messages::{
+ benchmarking::{MessageDeliveryProofParams, MessageProofParams},
messages_generation::{
encode_all_messages, encode_lane_data, prepare_message_delivery_storage_proof,
prepare_messages_storage_proof,
},
+ BridgedChainOf, ThisChainOf,
};
-
-use bp_messages::MessagePayload;
-use bp_polkadot_core::parachains::ParaHash;
-use bp_runtime::{Chain, Parachain, StorageProofSize, UnderlyingChainOf};
-use codec::Encode;
-use frame_support::weights::Weight;
-use pallet_bridge_messages::benchmarking::{MessageDeliveryProofParams, MessageProofParams};
use sp_runtime::traits::{Header, Zero};
use sp_std::prelude::*;
use xcm::latest::prelude::*;
@@ -45,11 +44,7 @@ fn prepare_inbound_message(
params: &MessageProofParams,
successful_dispatch_message_generator: impl Fn(usize) -> MessagePayload,
) -> MessagePayload {
- // we only care about **this** message size when message proof needs to be `Minimal`
- let expected_size = match params.size {
- StorageProofSize::Minimal(size) => size as usize,
- _ => 0,
- };
+ let expected_size = params.proof_params.db_size.unwrap_or(0) as usize;
// if we don't need a correct message, then we may just return some random blob
if !params.is_successful_dispatch_expected {
@@ -75,25 +70,32 @@ fn prepare_inbound_message(
/// This method is intended to be used when benchmarking pallet, linked to the chain that
/// uses GRANDPA finality. For parachains, please use the `prepare_message_proof_from_parachain`
/// function.
-pub fn prepare_message_proof_from_grandpa_chain(
+pub fn prepare_message_proof_from_grandpa_chain(
params: MessageProofParams,
message_generator: impl Fn(usize) -> MessagePayload,
-) -> (FromBridgedChainMessagesProof>>, Weight)
+) -> (FromBridgedChainMessagesProof>>, Weight)
where
- R: pallet_bridge_grandpa::Config>>,
+ R: pallet_bridge_grandpa::Config>
+ + pallet_bridge_messages::Config<
+ MI,
+ BridgedHeaderChain = pallet_bridge_grandpa::Pallet,
+ >,
FI: 'static,
- B: MessageBridge,
+ MI: 'static,
{
// prepare storage proof
- let (state_root, storage_proof) = prepare_messages_storage_proof::(
- params.lane,
- params.message_nonces.clone(),
- params.outbound_lane_data.clone(),
- params.size,
- prepare_inbound_message(¶ms, message_generator),
- encode_all_messages,
- encode_lane_data,
- );
+ let (state_root, storage_proof) =
+ prepare_messages_storage_proof::, ThisChainOf>(
+ params.lane,
+ params.message_nonces.clone(),
+ params.outbound_lane_data.clone(),
+ params.proof_params,
+ |_| prepare_inbound_message(¶ms, &message_generator),
+ encode_all_messages,
+ encode_lane_data,
+ false,
+ false,
+ );
// update runtime storage
let (_, bridged_header_hash) = insert_header_to_grandpa_pallet::(state_root);
@@ -118,30 +120,33 @@ where
/// This method is intended to be used when benchmarking pallet, linked to the chain that
/// uses parachain finality. For GRANDPA chains, please use the
/// `prepare_message_proof_from_grandpa_chain` function.
-pub fn prepare_message_proof_from_parachain(
+pub fn prepare_message_proof_from_parachain(
params: MessageProofParams,
message_generator: impl Fn(usize) -> MessagePayload,
-) -> (FromBridgedChainMessagesProof>>, Weight)
+) -> (FromBridgedChainMessagesProof>>, Weight)
where
- R: pallet_bridge_parachains::Config,
+ R: pallet_bridge_parachains::Config + pallet_bridge_messages::Config,
PI: 'static,
- B: MessageBridge,
- UnderlyingChainOf>: Chain + Parachain,
+ MI: 'static,
+ BridgedChainOf: Chain + Parachain,
{
// prepare storage proof
- let (state_root, storage_proof) = prepare_messages_storage_proof::(
- params.lane,
- params.message_nonces.clone(),
- params.outbound_lane_data.clone(),
- params.size,
- prepare_inbound_message(¶ms, message_generator),
- encode_all_messages,
- encode_lane_data,
- );
+ let (state_root, storage_proof) =
+ prepare_messages_storage_proof::, ThisChainOf>(
+ params.lane,
+ params.message_nonces.clone(),
+ params.outbound_lane_data.clone(),
+ params.proof_params,
+ |_| prepare_inbound_message(¶ms, &message_generator),
+ encode_all_messages,
+ encode_lane_data,
+ false,
+ false,
+ );
// update runtime storage
let (_, bridged_header_hash) =
- insert_header_to_parachains_pallet::>>(state_root);
+ insert_header_to_parachains_pallet::>(state_root);
(
FromBridgedChainMessagesProof {
@@ -160,21 +165,24 @@ where
/// This method is intended to be used when benchmarking pallet, linked to the chain that
/// uses GRANDPA finality. For parachains, please use the
/// `prepare_message_delivery_proof_from_parachain` function.
-pub fn prepare_message_delivery_proof_from_grandpa_chain(
- params: MessageDeliveryProofParams>>,
-) -> FromBridgedChainMessagesDeliveryProof>>
+pub fn prepare_message_delivery_proof_from_grandpa_chain(
+ params: MessageDeliveryProofParams>>,
+) -> FromBridgedChainMessagesDeliveryProof>>
where
- R: pallet_bridge_grandpa::Config>>,
+ R: pallet_bridge_grandpa::Config>
+ + pallet_bridge_messages::Config<
+ MI,
+ BridgedHeaderChain = pallet_bridge_grandpa::Pallet,
+ >,
FI: 'static,
- B: MessageBridge,
+ MI: 'static,
{
// prepare storage proof
let lane = params.lane;
- let (state_root, storage_proof) = prepare_message_delivery_storage_proof::(
- params.lane,
- params.inbound_lane_data,
- params.size,
- );
+ let (state_root, storage_proof) = prepare_message_delivery_storage_proof::<
+ BridgedChainOf,
+ ThisChainOf,
+ >(params.lane, params.inbound_lane_data, params.proof_params);
// update runtime storage
let (_, bridged_header_hash) = insert_header_to_grandpa_pallet::(state_root);
@@ -191,26 +199,25 @@ where
/// This method is intended to be used when benchmarking pallet, linked to the chain that
/// uses parachain finality. For GRANDPA chains, please use the
/// `prepare_message_delivery_proof_from_grandpa_chain` function.
-pub fn prepare_message_delivery_proof_from_parachain(
- params: MessageDeliveryProofParams>>,
-) -> FromBridgedChainMessagesDeliveryProof>>
+pub fn prepare_message_delivery_proof_from_parachain(
+ params: MessageDeliveryProofParams>>,
+) -> FromBridgedChainMessagesDeliveryProof>>
where
- R: pallet_bridge_parachains::Config,
+ R: pallet_bridge_parachains::Config + pallet_bridge_messages::Config,
PI: 'static,
- B: MessageBridge,
- UnderlyingChainOf>: Chain + Parachain,
+ MI: 'static,
+ BridgedChainOf: Chain + Parachain,
{
// prepare storage proof
let lane = params.lane;
- let (state_root, storage_proof) = prepare_message_delivery_storage_proof::(
- params.lane,
- params.inbound_lane_data,
- params.size,
- );
+ let (state_root, storage_proof) = prepare_message_delivery_storage_proof::<
+ BridgedChainOf,
+ ThisChainOf,
+ >(params.lane, params.inbound_lane_data, params.proof_params);
// update runtime storage
let (_, bridged_header_hash) =
- insert_header_to_parachains_pallet::>>(state_root);
+ insert_header_to_parachains_pallet::>(state_root);
FromBridgedChainMessagesDeliveryProof {
bridged_header_hash: bridged_header_hash.into(),
diff --git a/bridges/bin/runtime-common/src/messages_call_ext.rs b/bridges/bin/runtime-common/src/messages_call_ext.rs
index fb07f7b6dd69110918af23b227708e226bede625..a9ee1969ae0ca462f36098f03b4454e1399af129 100644
--- a/bridges/bin/runtime-common/src/messages_call_ext.rs
+++ b/bridges/bin/runtime-common/src/messages_call_ext.rs
@@ -14,19 +14,14 @@
// You should have received a copy of the GNU General Public License
// along with Parity Bridges Common. If not, see .
-//! Signed extension for the `pallet-bridge-messages` that is able to reject obsolete
-//! (and some other invalid) transactions.
+//! Helpers for easier manipulation of call processing with signed extensions.
-use crate::messages::{
- source::FromBridgedChainMessagesDeliveryProof, target::FromBridgedChainMessagesProof,
+use bp_messages::{
+ target_chain::MessageDispatch, ChainWithMessages, InboundLaneData, LaneId, MessageNonce,
};
-use bp_messages::{target_chain::MessageDispatch, InboundLaneData, LaneId, MessageNonce};
-use bp_runtime::OwnedBridgeModule;
-use frame_support::{
- dispatch::CallableCallFor,
- traits::{Get, IsSubType},
-};
-use pallet_bridge_messages::{Config, Pallet};
+use bp_runtime::{AccountIdOf, OwnedBridgeModule};
+use frame_support::{dispatch::CallableCallFor, traits::IsSubType};
+use pallet_bridge_messages::{BridgedChainOf, Config, Pallet};
use sp_runtime::{transaction_validity::TransactionValidity, RuntimeDebug};
use sp_std::ops::RangeInclusive;
@@ -213,18 +208,8 @@ pub trait MessagesCallSubType, I: 'static>:
}
impl<
- BridgedHeaderHash,
- SourceHeaderChain: bp_messages::target_chain::SourceHeaderChain<
- MessagesProof = FromBridgedChainMessagesProof,
- >,
- TargetHeaderChain: bp_messages::source_chain::TargetHeaderChain<
- >::OutboundPayload,
- ::AccountId,
- MessagesDeliveryProof = FromBridgedChainMessagesDeliveryProof,
- >,
Call: IsSubType, T>>,
- T: frame_system::Config
- + Config,
+ T: frame_system::Config + Config,
I: 'static,
> MessagesCallSubType for T::RuntimeCall
{
@@ -340,16 +325,17 @@ impl<
/// Returns occupation state of unrewarded relayers vector.
fn unrewarded_relayers_occupation, I: 'static>(
- inbound_lane_data: &InboundLaneData,
+ inbound_lane_data: &InboundLaneData>>,
) -> UnrewardedRelayerOccupation {
UnrewardedRelayerOccupation {
- free_relayer_slots: T::MaxUnrewardedRelayerEntriesAtInboundLane::get()
+ free_relayer_slots: T::BridgedChain::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX
.saturating_sub(inbound_lane_data.relayers.len() as MessageNonce),
free_message_slots: {
let unconfirmed_messages = inbound_lane_data
.last_delivered_nonce()
.saturating_sub(inbound_lane_data.last_confirmed_nonce);
- T::MaxUnconfirmedMessagesAtInboundLane::get().saturating_sub(unconfirmed_messages)
+ T::BridgedChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX
+ .saturating_sub(unconfirmed_messages)
},
}
}
@@ -358,22 +344,20 @@ fn unrewarded_relayers_occupation, I: 'static>(
mod tests {
use super::*;
use crate::{
- messages::{
- source::FromBridgedChainMessagesDeliveryProof, target::FromBridgedChainMessagesProof,
- },
messages_call_ext::MessagesCallSubType,
- mock::{
- DummyMessageDispatch, MaxUnconfirmedMessagesAtInboundLane,
- MaxUnrewardedRelayerEntriesAtInboundLane, TestRuntime, ThisChainRuntimeCall,
- },
+ mock::{BridgedUnderlyingChain, DummyMessageDispatch, TestRuntime, ThisChainRuntimeCall},
+ };
+ use bp_messages::{
+ source_chain::FromBridgedChainMessagesDeliveryProof,
+ target_chain::FromBridgedChainMessagesProof, DeliveredMessages, UnrewardedRelayer,
+ UnrewardedRelayersState,
};
- use bp_messages::{DeliveredMessages, UnrewardedRelayer, UnrewardedRelayersState};
use sp_std::ops::RangeInclusive;
fn fill_unrewarded_relayers() {
let mut inbound_lane_state =
pallet_bridge_messages::InboundLanes::::get(LaneId([0, 0, 0, 0]));
- for n in 0..MaxUnrewardedRelayerEntriesAtInboundLane::get() {
+ for n in 0..BridgedUnderlyingChain::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX {
inbound_lane_state.relayers.push_back(UnrewardedRelayer {
relayer: Default::default(),
messages: DeliveredMessages { begin: n + 1, end: n + 1 },
@@ -392,7 +376,7 @@ mod tests {
relayer: Default::default(),
messages: DeliveredMessages {
begin: 1,
- end: MaxUnconfirmedMessagesAtInboundLane::get(),
+ end: BridgedUnderlyingChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
},
});
pallet_bridge_messages::InboundLanes::::insert(
@@ -418,13 +402,13 @@ mod tests {
messages_count: nonces_end.checked_sub(nonces_start).map(|x| x + 1).unwrap_or(0)
as u32,
dispatch_weight: frame_support::weights::Weight::zero(),
- proof: FromBridgedChainMessagesProof {
+ proof: Box::new(FromBridgedChainMessagesProof {
bridged_header_hash: Default::default(),
- storage_proof: vec![],
+ storage_proof: Default::default(),
lane: LaneId([0, 0, 0, 0]),
nonces_start,
nonces_end,
- },
+ }),
},
)
.check_obsolete_call()
@@ -508,8 +492,8 @@ mod tests {
sp_io::TestExternalities::new(Default::default()).execute_with(|| {
fill_unrewarded_messages();
assert!(validate_message_delivery(
- MaxUnconfirmedMessagesAtInboundLane::get(),
- MaxUnconfirmedMessagesAtInboundLane::get() - 1
+ BridgedUnderlyingChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX,
+ BridgedUnderlyingChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX - 1
));
});
}
@@ -540,7 +524,7 @@ mod tests {
pallet_bridge_messages::Call::::receive_messages_delivery_proof {
proof: FromBridgedChainMessagesDeliveryProof {
bridged_header_hash: Default::default(),
- storage_proof: Vec::new(),
+ storage_proof: Default::default(),
lane: LaneId([0, 0, 0, 0]),
},
relayers_state: UnrewardedRelayersState {
@@ -608,7 +592,7 @@ mod tests {
free_message_slots: if is_empty {
0
} else {
- MaxUnconfirmedMessagesAtInboundLane::get()
+ BridgedUnderlyingChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX
},
},
},
diff --git a/bridges/bin/runtime-common/src/mock.rs b/bridges/bin/runtime-common/src/mock.rs
index f49474667896049cfd6aff4bf4a4b0d9d6e73c95..2f248a7162a6cbdcc09d2980a922b1a065127e40 100644
--- a/bridges/bin/runtime-common/src/mock.rs
+++ b/bridges/bin/runtime-common/src/mock.rs
@@ -18,26 +18,16 @@
#![cfg(test)]
-use crate::messages::{
- source::{
- FromThisChainMaximalOutboundPayloadSize, FromThisChainMessagePayload,
- TargetHeaderChainAdapter,
- },
- target::{FromBridgedChainMessagePayload, SourceHeaderChainAdapter},
- BridgedChainWithMessages, HashOf, MessageBridge, ThisChainWithMessages,
-};
+use crate::messages_xcm_extension::XcmAsPlainPayload;
-use bp_header_chain::{ChainWithGrandpa, HeaderChain};
+use bp_header_chain::ChainWithGrandpa;
use bp_messages::{
target_chain::{DispatchMessage, MessageDispatch},
- LaneId, MessageNonce,
+ ChainWithMessages, LaneId, MessageNonce,
};
use bp_parachains::SingleParaStoredHeaderDataBuilder;
use bp_relayers::PayRewardFromAccount;
-use bp_runtime::{
- messages::MessageDispatchResult, Chain, ChainId, Parachain, UnderlyingChainProvider,
-};
-use codec::{Decode, Encode};
+use bp_runtime::{messages::MessageDispatchResult, Chain, ChainId, Parachain};
use frame_support::{
derive_impl, parameter_types,
weights::{ConstantMultiplier, IdentityFee, RuntimeDbWeight, Weight},
@@ -46,7 +36,7 @@ use pallet_transaction_payment::Multiplier;
use sp_runtime::{
testing::H256,
traits::{BlakeTwo256, ConstU32, ConstU64, ConstU8},
- FixedPointNumber, Perquintill,
+ FixedPointNumber, Perquintill, StateVersion,
};
/// Account identifier at `ThisChain`.
@@ -61,8 +51,6 @@ pub type ThisChainHash = H256;
pub type ThisChainHasher = BlakeTwo256;
/// Runtime call at `ThisChain`.
pub type ThisChainRuntimeCall = RuntimeCall;
-/// Runtime call origin at `ThisChain`.
-pub type ThisChainCallOrigin = RuntimeOrigin;
/// Header of `ThisChain`.
pub type ThisChainHeader = sp_runtime::generic::Header;
/// Block of `ThisChain`.
@@ -100,8 +88,6 @@ pub type TestStakeAndSlash = pallet_bridge_relayers::StakeAndSlashNamed<
pub const TEST_LANE_ID: LaneId = LaneId([0, 0, 0, 0]);
/// Bridged chain id used in tests.
pub const TEST_BRIDGED_CHAIN_ID: ChainId = *b"brdg";
-/// Maximal extrinsic weight at the `BridgedChain`.
-pub const BRIDGED_CHAIN_MAX_EXTRINSIC_WEIGHT: usize = 2048;
/// Maximal extrinsic size at the `BridgedChain`.
pub const BRIDGED_CHAIN_MAX_EXTRINSIC_SIZE: u32 = 1024;
@@ -126,7 +112,6 @@ crate::generate_bridge_reject_obsolete_headers_and_messages! {
parameter_types! {
pub const ActiveOutboundLanes: &'static [LaneId] = &[TEST_LANE_ID];
- pub const BridgedChainId: ChainId = TEST_BRIDGED_CHAIN_ID;
pub const BridgedParasPalletName: &'static str = "Paras";
pub const ExistentialDeposit: ThisChainBalance = 500;
pub const DbWeight: RuntimeDbWeight = RuntimeDbWeight { read: 1, write: 2 };
@@ -136,8 +121,6 @@ parameter_types! {
pub AdjustmentVariable: Multiplier = Multiplier::saturating_from_rational(3, 100_000);
pub MinimumMultiplier: Multiplier = Multiplier::saturating_from_rational(1, 1_000_000u128);
pub MaximumMultiplier: Multiplier = sp_runtime::traits::Bounded::max_value();
- pub const MaxUnrewardedRelayerEntriesAtInboundLane: MessageNonce = 16;
- pub const MaxUnconfirmedMessagesAtInboundLane: MessageNonce = 1_000;
pub const ReserveId: [u8; 8] = *b"brdgrlrs";
}
@@ -203,17 +186,12 @@ impl pallet_bridge_messages::Config for TestRuntime {
type RuntimeEvent = RuntimeEvent;
type WeightInfo = pallet_bridge_messages::weights::BridgeWeight;
type ActiveOutboundLanes = ActiveOutboundLanes;
- type MaxUnrewardedRelayerEntriesAtInboundLane = MaxUnrewardedRelayerEntriesAtInboundLane;
- type MaxUnconfirmedMessagesAtInboundLane = MaxUnconfirmedMessagesAtInboundLane;
- type MaximalOutboundPayloadSize = FromThisChainMaximalOutboundPayloadSize;
- type OutboundPayload = FromThisChainMessagePayload;
+ type OutboundPayload = XcmAsPlainPayload;
- type InboundPayload = FromBridgedChainMessagePayload;
- type InboundRelayer = BridgedChainAccountId;
+ type InboundPayload = Vec;
type DeliveryPayments = ();
- type TargetHeaderChain = TargetHeaderChainAdapter;
type DeliveryConfirmationPayments = pallet_bridge_relayers::DeliveryConfirmationPaymentsAdapter<
TestRuntime,
(),
@@ -221,9 +199,11 @@ impl pallet_bridge_messages::Config for TestRuntime {
>;
type OnMessagesDelivered = ();
- type SourceHeaderChain = SourceHeaderChainAdapter;
type MessageDispatch = DummyMessageDispatch;
- type BridgedChainId = BridgedChainId;
+
+ type ThisChain = ThisUnderlyingChain;
+ type BridgedChain = BridgedUnderlyingChain;
+ type BridgedHeaderChain = BridgeGrandpa;
}
impl pallet_bridge_relayers::Config for TestRuntime {
@@ -262,55 +242,6 @@ impl MessageDispatch for DummyMessageDispatch {
}
}
-/// Bridge that is deployed on `ThisChain` and allows sending/receiving messages to/from
-/// `BridgedChain`.
-#[derive(Debug, PartialEq, Eq)]
-pub struct OnThisChainBridge;
-
-impl MessageBridge for OnThisChainBridge {
- const BRIDGED_MESSAGES_PALLET_NAME: &'static str = "";
-
- type ThisChain = ThisChain;
- type BridgedChain = BridgedChain;
- type BridgedHeaderChain = pallet_bridge_grandpa::GrandpaChainHeaders;
-}
-
-/// Bridge that is deployed on `BridgedChain` and allows sending/receiving messages to/from
-/// `ThisChain`.
-#[derive(Debug, PartialEq, Eq)]
-pub struct OnBridgedChainBridge;
-
-impl MessageBridge for OnBridgedChainBridge {
- const BRIDGED_MESSAGES_PALLET_NAME: &'static str = "";
-
- type ThisChain = BridgedChain;
- type BridgedChain = ThisChain;
- type BridgedHeaderChain = ThisHeaderChain;
-}
-
-/// Dummy implementation of `HeaderChain` for `ThisChain` at the `BridgedChain`.
-pub struct ThisHeaderChain;
-
-impl HeaderChain for ThisHeaderChain {
- fn finalized_header_state_root(_hash: HashOf) -> Option> {
- unreachable!()
- }
-}
-
-/// Call origin at `BridgedChain`.
-#[derive(Clone, Debug)]
-pub struct BridgedChainOrigin;
-
-impl From
- for Result, BridgedChainOrigin>
-{
- fn from(
- _origin: BridgedChainOrigin,
- ) -> Result, BridgedChainOrigin> {
- unreachable!()
- }
-}
-
/// Underlying chain of `ThisChain`.
pub struct ThisUnderlyingChain;
@@ -326,6 +257,8 @@ impl Chain for ThisUnderlyingChain {
type Nonce = u32;
type Signature = sp_runtime::MultiSignature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
BRIDGED_CHAIN_MAX_EXTRINSIC_SIZE
}
@@ -335,29 +268,20 @@ impl Chain for ThisUnderlyingChain {
}
}
-/// The chain where we are in tests.
-pub struct ThisChain;
-
-impl UnderlyingChainProvider for ThisChain {
- type Chain = ThisUnderlyingChain;
-}
+impl ChainWithMessages for ThisUnderlyingChain {
+ const WITH_CHAIN_MESSAGES_PALLET_NAME: &'static str = "";
-impl ThisChainWithMessages for ThisChain {
- type RuntimeOrigin = ThisChainCallOrigin;
+ const MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX: MessageNonce = 16;
+ const MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX: MessageNonce = 1000;
}
-impl BridgedChainWithMessages for ThisChain {}
-
/// Underlying chain of `BridgedChain`.
pub struct BridgedUnderlyingChain;
/// Some parachain under `BridgedChain` consensus.
pub struct BridgedUnderlyingParachain;
-/// Runtime call of the `BridgedChain`.
-#[derive(Decode, Encode)]
-pub struct BridgedChainCall;
impl Chain for BridgedUnderlyingChain {
- const ID: ChainId = *b"buch";
+ const ID: ChainId = TEST_BRIDGED_CHAIN_ID;
type BlockNumber = BridgedChainBlockNumber;
type Hash = BridgedChainHash;
@@ -368,6 +292,8 @@ impl Chain for BridgedUnderlyingChain {
type Nonce = u32;
type Signature = sp_runtime::MultiSignature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
BRIDGED_CHAIN_MAX_EXTRINSIC_SIZE
}
@@ -384,6 +310,12 @@ impl ChainWithGrandpa for BridgedUnderlyingChain {
const AVERAGE_HEADER_SIZE: u32 = 64;
}
+impl ChainWithMessages for BridgedUnderlyingChain {
+ const WITH_CHAIN_MESSAGES_PALLET_NAME: &'static str = "";
+ const MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX: MessageNonce = 16;
+ const MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX: MessageNonce = 1000;
+}
+
impl Chain for BridgedUnderlyingParachain {
const ID: ChainId = *b"bupc";
@@ -396,6 +328,8 @@ impl Chain for BridgedUnderlyingParachain {
type Nonce = u32;
type Signature = sp_runtime::MultiSignature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
BRIDGED_CHAIN_MAX_EXTRINSIC_SIZE
}
@@ -409,19 +343,6 @@ impl Parachain for BridgedUnderlyingParachain {
const MAX_HEADER_SIZE: u32 = 1_024;
}
-/// The other, bridged chain, used in tests.
-pub struct BridgedChain;
-
-impl UnderlyingChainProvider for BridgedChain {
- type Chain = BridgedUnderlyingChain;
-}
-
-impl ThisChainWithMessages for BridgedChain {
- type RuntimeOrigin = BridgedChainOrigin;
-}
-
-impl BridgedChainWithMessages for BridgedChain {}
-
/// Run test within test externalities.
pub fn run_test(test: impl FnOnce()) {
sp_io::TestExternalities::new(Default::default()).execute_with(test)
diff --git a/bridges/bin/runtime-common/src/parachains_benchmarking.rs b/bridges/bin/runtime-common/src/parachains_benchmarking.rs
index b3050b9ac0f3ccec617399d3eb91647dcab7eb3d..bcbd779b44dea5fbef7781335cfa1d359ab8c1f1 100644
--- a/bridges/bin/runtime-common/src/parachains_benchmarking.rs
+++ b/bridges/bin/runtime-common/src/parachains_benchmarking.rs
@@ -18,14 +18,11 @@
#![cfg(feature = "runtime-benchmarks")]
-use crate::{
- messages_benchmarking::insert_header_to_grandpa_pallet,
- messages_generation::grow_trie_leaf_value,
-};
+use crate::messages_benchmarking::insert_header_to_grandpa_pallet;
use bp_parachains::parachain_head_storage_key_at_source;
use bp_polkadot_core::parachains::{ParaHash, ParaHead, ParaHeadsProof, ParaId};
-use bp_runtime::{record_all_trie_keys, StorageProofSize};
+use bp_runtime::{grow_storage_value, record_all_trie_keys, Chain, UnverifiedStorageProofParams};
use codec::Encode;
use frame_support::traits::Get;
use pallet_bridge_parachains::{RelayBlockHash, RelayBlockHasher, RelayBlockNumber};
@@ -39,14 +36,14 @@ use sp_trie::{trie_types::TrieDBMutBuilderV1, LayoutV1, MemoryDB, TrieMut};
pub fn prepare_parachain_heads_proof(
parachains: &[ParaId],
parachain_head_size: u32,
- size: StorageProofSize,
+ proof_params: UnverifiedStorageProofParams,
) -> (RelayBlockNumber, RelayBlockHash, ParaHeadsProof, Vec<(ParaId, ParaHash)>)
where
R: pallet_bridge_parachains::Config
+ pallet_bridge_grandpa::Config,
PI: 'static,
>::BridgedChain:
- bp_runtime::Chain,
+ Chain,
{
let parachain_head = ParaHead(vec![0u8; parachain_head_size as usize]);
@@ -64,7 +61,7 @@ where
let storage_key =
parachain_head_storage_key_at_source(R::ParasPalletName::get(), *parachain);
let leaf_data = if i == 0 {
- grow_trie_leaf_value(parachain_head.encode(), size)
+ grow_storage_value(parachain_head.encode(), &proof_params)
} else {
parachain_head.encode()
};
diff --git a/bridges/chains/chain-asset-hub-rococo/Cargo.toml b/bridges/chains/chain-asset-hub-rococo/Cargo.toml
index b765fbc57bb0aec2eb4544a01dd84c057ced16ef..363a869048aae4d875d68a8ca46e30756cbc799f 100644
--- a/bridges/chains/chain-asset-hub-rococo/Cargo.toml
+++ b/bridges/chains/chain-asset-hub-rococo/Cargo.toml
@@ -7,6 +7,9 @@ edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
+[package.metadata.polkadot-sdk]
+exclude-from-umbrella = true
+
[lints]
workspace = true
diff --git a/bridges/chains/chain-asset-hub-westend/Cargo.toml b/bridges/chains/chain-asset-hub-westend/Cargo.toml
index ff89864fb2db4667d7929ef540ad4ec46cf2a36c..430d9b6116cfc7fba648b96b1de6ef379f3e38f3 100644
--- a/bridges/chains/chain-asset-hub-westend/Cargo.toml
+++ b/bridges/chains/chain-asset-hub-westend/Cargo.toml
@@ -7,6 +7,9 @@ edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
+[package.metadata.polkadot-sdk]
+exclude-from-umbrella = true
+
[lints]
workspace = true
diff --git a/bridges/chains/chain-bridge-hub-cumulus/Cargo.toml b/bridges/chains/chain-bridge-hub-cumulus/Cargo.toml
index 5609398385f98b9d3731b196a057e939b1c099de..99ba721991ee90b04e708beb37dcca2f0aa5c96c 100644
--- a/bridges/chains/chain-bridge-hub-cumulus/Cargo.toml
+++ b/bridges/chains/chain-bridge-hub-cumulus/Cargo.toml
@@ -7,6 +7,9 @@ edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
+[package.metadata.polkadot-sdk]
+exclude-from-umbrella = true
+
[lints]
workspace = true
diff --git a/bridges/chains/chain-bridge-hub-kusama/Cargo.toml b/bridges/chains/chain-bridge-hub-kusama/Cargo.toml
index 605643b0a4eb7e5d514edb1d4f1ad9db65a2c8ec..39f7b44daa5543b83108761d7acf5f72d5a8458f 100644
--- a/bridges/chains/chain-bridge-hub-kusama/Cargo.toml
+++ b/bridges/chains/chain-bridge-hub-kusama/Cargo.toml
@@ -7,6 +7,9 @@ edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
+[package.metadata.polkadot-sdk]
+exclude-from-umbrella = true
+
[lints]
workspace = true
diff --git a/bridges/chains/chain-bridge-hub-kusama/src/lib.rs b/bridges/chains/chain-bridge-hub-kusama/src/lib.rs
index ef3ef4ab7b7a9bc111218e3c53091ac232f34721..c990e8a12f367cafbd35b0693b323a6ec5fb5e96 100644
--- a/bridges/chains/chain-bridge-hub-kusama/src/lib.rs
+++ b/bridges/chains/chain-bridge-hub-kusama/src/lib.rs
@@ -29,7 +29,7 @@ use frame_support::{
dispatch::DispatchClass,
sp_runtime::{MultiAddress, MultiSigner},
};
-use sp_runtime::RuntimeDebug;
+use sp_runtime::{RuntimeDebug, StateVersion};
/// BridgeHubKusama parachain.
#[derive(RuntimeDebug)]
@@ -48,6 +48,8 @@ impl Chain for BridgeHubKusama {
type Nonce = Nonce;
type Signature = Signature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
*BlockLength::get().max.get(DispatchClass::Normal)
}
diff --git a/bridges/chains/chain-bridge-hub-polkadot/Cargo.toml b/bridges/chains/chain-bridge-hub-polkadot/Cargo.toml
index 97e36a19c748c0e5da990eda75bdbed9aa444e6f..3b0ac96e7cd367cd373cdaedcbeaf299af7debe0 100644
--- a/bridges/chains/chain-bridge-hub-polkadot/Cargo.toml
+++ b/bridges/chains/chain-bridge-hub-polkadot/Cargo.toml
@@ -7,6 +7,9 @@ edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
+[package.metadata.polkadot-sdk]
+exclude-from-umbrella = true
+
[lints]
workspace = true
diff --git a/bridges/chains/chain-bridge-hub-polkadot/src/lib.rs b/bridges/chains/chain-bridge-hub-polkadot/src/lib.rs
index 9db71af928e5df01170cf4ab8bf5f20cd72f7610..7379b8863b1de5c1a1482db90077e958f0a33366 100644
--- a/bridges/chains/chain-bridge-hub-polkadot/src/lib.rs
+++ b/bridges/chains/chain-bridge-hub-polkadot/src/lib.rs
@@ -26,7 +26,7 @@ use bp_runtime::{
decl_bridge_finality_runtime_apis, decl_bridge_messages_runtime_apis, Chain, ChainId, Parachain,
};
use frame_support::dispatch::DispatchClass;
-use sp_runtime::RuntimeDebug;
+use sp_runtime::{RuntimeDebug, StateVersion};
/// BridgeHubPolkadot parachain.
#[derive(RuntimeDebug)]
@@ -45,6 +45,8 @@ impl Chain for BridgeHubPolkadot {
type Nonce = Nonce;
type Signature = Signature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
*BlockLength::get().max.get(DispatchClass::Normal)
}
diff --git a/bridges/chains/chain-bridge-hub-rococo/Cargo.toml b/bridges/chains/chain-bridge-hub-rococo/Cargo.toml
index 5c918470322353c32556c3e5d381fb2ea713b2ab..66848ba0e2634b3b4e525f27013b04768204c749 100644
--- a/bridges/chains/chain-bridge-hub-rococo/Cargo.toml
+++ b/bridges/chains/chain-bridge-hub-rococo/Cargo.toml
@@ -7,6 +7,9 @@ edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
+[package.metadata.polkadot-sdk]
+exclude-from-umbrella = true
+
[lints]
workspace = true
diff --git a/bridges/chains/chain-bridge-hub-rococo/src/lib.rs b/bridges/chains/chain-bridge-hub-rococo/src/lib.rs
index d7097f01c5316a58851f400a86b98eda3d7e8bcc..73af997b9950ef640040e44cbba0b93b6a7a56a3 100644
--- a/bridges/chains/chain-bridge-hub-rococo/src/lib.rs
+++ b/bridges/chains/chain-bridge-hub-rococo/src/lib.rs
@@ -25,8 +25,10 @@ use bp_messages::*;
use bp_runtime::{
decl_bridge_finality_runtime_apis, decl_bridge_messages_runtime_apis, Chain, ChainId, Parachain,
};
-use frame_support::dispatch::DispatchClass;
-use sp_runtime::{MultiAddress, MultiSigner, RuntimeDebug};
+use frame_support::{
+ dispatch::DispatchClass,
+ sp_runtime::{MultiAddress, MultiSigner, RuntimeDebug, StateVersion},
+};
/// BridgeHubRococo parachain.
#[derive(RuntimeDebug)]
@@ -45,6 +47,8 @@ impl Chain for BridgeHubRococo {
type Nonce = Nonce;
type Signature = Signature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
*BlockLength::get().max.get(DispatchClass::Normal)
}
@@ -103,10 +107,10 @@ frame_support::parameter_types! {
pub const BridgeHubRococoBaseXcmFeeInRocs: u128 = 59_034_266;
/// Transaction fee that is paid at the Rococo BridgeHub for delivering single inbound message.
- /// (initially was calculated by test `BridgeHubRococo::can_calculate_fee_for_complex_message_delivery_transaction` + `33%`)
+ /// (initially was calculated by test `BridgeHubRococo::can_calculate_fee_for_standalone_message_delivery_transaction` + `33%`)
pub const BridgeHubRococoBaseDeliveryFeeInRocs: u128 = 314_037_860;
/// Transaction fee that is paid at the Rococo BridgeHub for delivering single outbound message confirmation.
- /// (initially was calculated by test `BridgeHubRococo::can_calculate_fee_for_complex_message_confirmation_transaction` + `33%`)
+ /// (initially was calculated by test `BridgeHubRococo::can_calculate_fee_for_standalone_message_confirmation_transaction` + `33%`)
pub const BridgeHubRococoBaseConfirmationFeeInRocs: u128 = 57_414_813;
}
diff --git a/bridges/chains/chain-bridge-hub-westend/Cargo.toml b/bridges/chains/chain-bridge-hub-westend/Cargo.toml
index 0b429ab9a0bd9793a9129ed8483a608f71bfb44c..24a196c1d70d128c49ddb788a699fe6e22e6c359 100644
--- a/bridges/chains/chain-bridge-hub-westend/Cargo.toml
+++ b/bridges/chains/chain-bridge-hub-westend/Cargo.toml
@@ -7,6 +7,9 @@ edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
+[package.metadata.polkadot-sdk]
+exclude-from-umbrella = true
+
[lints]
workspace = true
diff --git a/bridges/chains/chain-bridge-hub-westend/src/lib.rs b/bridges/chains/chain-bridge-hub-westend/src/lib.rs
index 800f290d7bfa41cec4139e80a7dc9ea8962a6da5..17ff2c858a1d3eeae329cb972d95adc32952ede4 100644
--- a/bridges/chains/chain-bridge-hub-westend/src/lib.rs
+++ b/bridges/chains/chain-bridge-hub-westend/src/lib.rs
@@ -25,7 +25,7 @@ use bp_runtime::{
decl_bridge_finality_runtime_apis, decl_bridge_messages_runtime_apis, Chain, ChainId, Parachain,
};
use frame_support::dispatch::DispatchClass;
-use sp_runtime::RuntimeDebug;
+use sp_runtime::{RuntimeDebug, StateVersion};
/// BridgeHubWestend parachain.
#[derive(RuntimeDebug)]
@@ -44,6 +44,8 @@ impl Chain for BridgeHubWestend {
type Nonce = Nonce;
type Signature = Signature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
*BlockLength::get().max.get(DispatchClass::Normal)
}
diff --git a/bridges/chains/chain-kusama/Cargo.toml b/bridges/chains/chain-kusama/Cargo.toml
index ec45c1eddce5d3b7be1f3a8ae9b83ca6332e7c28..aec4041f7d574243c07f3fefa66b8b6d4cb36057 100644
--- a/bridges/chains/chain-kusama/Cargo.toml
+++ b/bridges/chains/chain-kusama/Cargo.toml
@@ -7,6 +7,9 @@ edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
+[package.metadata.polkadot-sdk]
+exclude-from-umbrella = true
+
[lints]
workspace = true
diff --git a/bridges/chains/chain-kusama/src/lib.rs b/bridges/chains/chain-kusama/src/lib.rs
index fd7172c5869d468ff534e54f9ef6278cf86a88ed..dcd0b23abbbefa2dfba741d6934b5d5510c93017 100644
--- a/bridges/chains/chain-kusama/src/lib.rs
+++ b/bridges/chains/chain-kusama/src/lib.rs
@@ -23,7 +23,7 @@ pub use bp_polkadot_core::*;
use bp_header_chain::ChainWithGrandpa;
use bp_runtime::{decl_bridge_finality_runtime_apis, Chain, ChainId};
-use frame_support::weights::Weight;
+use frame_support::{sp_runtime::StateVersion, weights::Weight};
/// Kusama Chain
pub struct Kusama;
@@ -41,6 +41,8 @@ impl Chain for Kusama {
type Nonce = Nonce;
type Signature = Signature;
+ const STATE_VERSION: StateVersion = StateVersion::V0;
+
fn max_extrinsic_size() -> u32 {
max_extrinsic_size()
}
diff --git a/bridges/chains/chain-polkadot-bulletin/Cargo.toml b/bridges/chains/chain-polkadot-bulletin/Cargo.toml
index ea5f4d2e77591bd8840e869f9b3567df5d56fd56..aecf9314273686f03a25b0f4e5988eabb157dfe7 100644
--- a/bridges/chains/chain-polkadot-bulletin/Cargo.toml
+++ b/bridges/chains/chain-polkadot-bulletin/Cargo.toml
@@ -7,6 +7,9 @@ edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
+[package.metadata.polkadot-sdk]
+exclude-from-umbrella = true
+
[lints]
workspace = true
diff --git a/bridges/chains/chain-polkadot-bulletin/src/lib.rs b/bridges/chains/chain-polkadot-bulletin/src/lib.rs
index f3d300567f2b4f92cec272e0929a3c53d718c823..88980a9575016bd5c5e1428329454e8131a2075d 100644
--- a/bridges/chains/chain-polkadot-bulletin/src/lib.rs
+++ b/bridges/chains/chain-polkadot-bulletin/src/lib.rs
@@ -37,7 +37,9 @@ use frame_support::{
};
use frame_system::limits;
use scale_info::TypeInfo;
-use sp_runtime::{traits::DispatchInfoOf, transaction_validity::TransactionValidityError, Perbill};
+use sp_runtime::{
+ traits::DispatchInfoOf, transaction_validity::TransactionValidityError, Perbill, StateVersion,
+};
// This chain reuses most of Polkadot primitives.
pub use bp_polkadot_core::{
@@ -192,6 +194,8 @@ impl Chain for PolkadotBulletin {
type Nonce = Nonce;
type Signature = Signature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
*BlockLength::get().max.get(DispatchClass::Normal)
}
diff --git a/bridges/chains/chain-polkadot/src/lib.rs b/bridges/chains/chain-polkadot/src/lib.rs
index a8cac0467d574e9355a8fe9ba2e7c2378019349d..f4b262d40735d7470a4d7e289f24bc1d4556d039 100644
--- a/bridges/chains/chain-polkadot/src/lib.rs
+++ b/bridges/chains/chain-polkadot/src/lib.rs
@@ -25,7 +25,7 @@ use bp_header_chain::ChainWithGrandpa;
use bp_runtime::{
decl_bridge_finality_runtime_apis, extensions::PrevalidateAttests, Chain, ChainId,
};
-use frame_support::weights::Weight;
+use frame_support::{sp_runtime::StateVersion, weights::Weight};
/// Polkadot Chain
pub struct Polkadot;
@@ -43,6 +43,8 @@ impl Chain for Polkadot {
type Nonce = Nonce;
type Signature = Signature;
+ const STATE_VERSION: StateVersion = StateVersion::V0;
+
fn max_extrinsic_size() -> u32 {
max_extrinsic_size()
}
diff --git a/bridges/chains/chain-rococo/Cargo.toml b/bridges/chains/chain-rococo/Cargo.toml
index 49a1a397ee096532cfc0b5d3a42cf14469f8ed46..8a99267691dc218d924fd0786e9fc45a5baa7f3c 100644
--- a/bridges/chains/chain-rococo/Cargo.toml
+++ b/bridges/chains/chain-rococo/Cargo.toml
@@ -7,6 +7,9 @@ edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
+[package.metadata.polkadot-sdk]
+exclude-from-umbrella = true
+
[lints]
workspace = true
diff --git a/bridges/chains/chain-rococo/src/lib.rs b/bridges/chains/chain-rococo/src/lib.rs
index b290fe71c829d08130556a2b061c0d63f0787d4c..bfcafdf41ea2e629c9a58f2545016b2e776375b8 100644
--- a/bridges/chains/chain-rococo/src/lib.rs
+++ b/bridges/chains/chain-rococo/src/lib.rs
@@ -23,7 +23,7 @@ pub use bp_polkadot_core::*;
use bp_header_chain::ChainWithGrandpa;
use bp_runtime::{decl_bridge_finality_runtime_apis, Chain, ChainId};
-use frame_support::weights::Weight;
+use frame_support::{sp_runtime::StateVersion, weights::Weight};
/// Rococo Chain
pub struct Rococo;
@@ -41,6 +41,8 @@ impl Chain for Rococo {
type Nonce = Nonce;
type Signature = Signature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
max_extrinsic_size()
}
diff --git a/bridges/chains/chain-westend/Cargo.toml b/bridges/chains/chain-westend/Cargo.toml
index 5e27bc647bfc5f07d5ab029307ef6dcf67121fb3..cd6abe8abe6d69d5e5b9aa65d3ff7861c42d23cf 100644
--- a/bridges/chains/chain-westend/Cargo.toml
+++ b/bridges/chains/chain-westend/Cargo.toml
@@ -7,6 +7,9 @@ edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
+[package.metadata.polkadot-sdk]
+exclude-from-umbrella = true
+
[lints]
workspace = true
diff --git a/bridges/chains/chain-westend/src/lib.rs b/bridges/chains/chain-westend/src/lib.rs
index ef451f7de0a9640bc1a278e1c712bbb099193ceb..2a247e03e59d666d3c5dd54d74e3a4f852a60bd3 100644
--- a/bridges/chains/chain-westend/src/lib.rs
+++ b/bridges/chains/chain-westend/src/lib.rs
@@ -23,7 +23,7 @@ pub use bp_polkadot_core::*;
use bp_header_chain::ChainWithGrandpa;
use bp_runtime::{decl_bridge_finality_runtime_apis, Chain, ChainId};
-use frame_support::weights::Weight;
+use frame_support::{sp_runtime::StateVersion, weights::Weight};
/// Westend Chain
pub struct Westend;
@@ -41,6 +41,8 @@ impl Chain for Westend {
type Nonce = Nonce;
type Signature = Signature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
max_extrinsic_size()
}
diff --git a/bridges/modules/beefy/src/mock.rs b/bridges/modules/beefy/src/mock.rs
index 53efd57c29a0dfc870e43be4fec7bcdf817a3282..3b751ddf066c9562cd8fc0f054b1b103306479dd 100644
--- a/bridges/modules/beefy/src/mock.rs
+++ b/bridges/modules/beefy/src/mock.rs
@@ -29,6 +29,7 @@ use sp_core::{sr25519::Signature, Pair};
use sp_runtime::{
testing::{Header, H256},
traits::{BlakeTwo256, Hash},
+ StateVersion,
};
pub use sp_consensus_beefy::ecdsa_crypto::{AuthorityId as BeefyId, Pair as BeefyPair};
@@ -93,6 +94,8 @@ impl Chain for TestBridgedChain {
type Nonce = u64;
type Signature = Signature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
unreachable!()
}
diff --git a/bridges/modules/grandpa/Cargo.toml b/bridges/modules/grandpa/Cargo.toml
index 307c7ddaaffd963e89f7b2faa7a487ce5db0dcca..6d1419ae5b030733ad9fb38a6a459ab7ce34f99f 100644
--- a/bridges/modules/grandpa/Cargo.toml
+++ b/bridges/modules/grandpa/Cargo.toml
@@ -14,7 +14,6 @@ workspace = true
[dependencies]
codec = { workspace = true }
-finality-grandpa = { workspace = true }
log = { workspace = true }
scale-info = { features = ["derive"], workspace = true }
@@ -30,13 +29,13 @@ frame-system = { workspace = true }
sp-consensus-grandpa = { features = ["serde"], workspace = true }
sp-runtime = { features = ["serde"], workspace = true }
sp-std = { workspace = true }
-sp-trie = { workspace = true }
# Optional Benchmarking Dependencies
bp-test-utils = { optional = true, workspace = true }
frame-benchmarking = { optional = true, workspace = true }
[dev-dependencies]
+bp-runtime = { features = ["test-helpers"], workspace = true }
sp-core = { workspace = true, default-features = true }
sp-io = { workspace = true, default-features = true }
@@ -47,7 +46,6 @@ std = [
"bp-runtime/std",
"bp-test-utils/std",
"codec/std",
- "finality-grandpa/std",
"frame-benchmarking/std",
"frame-support/std",
"frame-system/std",
@@ -56,7 +54,6 @@ std = [
"sp-consensus-grandpa/std",
"sp-runtime/std",
"sp-std/std",
- "sp-trie/std",
]
runtime-benchmarks = [
"bp-test-utils",
diff --git a/bridges/modules/grandpa/src/lib.rs b/bridges/modules/grandpa/src/lib.rs
index 3b77f676870e1a28b8367f1b14d24c9ca83ece4a..c62951b74656b052d4858dec2af1393e41553029 100644
--- a/bridges/modules/grandpa/src/lib.rs
+++ b/bridges/modules/grandpa/src/lib.rs
@@ -1443,11 +1443,14 @@ mod tests {
}
#[test]
- fn parse_finalized_storage_proof_rejects_proof_on_unknown_header() {
+ fn verify_storage_proof_rejects_unknown_header() {
run_test(|| {
assert_noop!(
- Pallet::::storage_proof_checker(Default::default(), vec![],)
- .map(|_| ()),
+ Pallet::::verify_storage_proof(
+ Default::default(),
+ Default::default(),
+ )
+ .map(|_| ()),
bp_header_chain::HeaderChainError::UnknownHeader,
);
});
@@ -1465,9 +1468,7 @@ mod tests {
>::put(HeaderId(2, hash));
>::insert(hash, header.build());
- assert_ok!(
- Pallet::::storage_proof_checker(hash, storage_proof).map(|_| ())
- );
+ assert_ok!(Pallet::::verify_storage_proof(hash, storage_proof).map(|_| ()));
});
}
diff --git a/bridges/modules/grandpa/src/mock.rs b/bridges/modules/grandpa/src/mock.rs
index 27df9d9c78f540d0d73f74c6a86ba19af30d4b6b..71af6182e057cca3d06b98ee6fe94283b93ab77d 100644
--- a/bridges/modules/grandpa/src/mock.rs
+++ b/bridges/modules/grandpa/src/mock.rs
@@ -20,7 +20,8 @@
use bp_header_chain::ChainWithGrandpa;
use bp_runtime::{Chain, ChainId};
use frame_support::{
- construct_runtime, derive_impl, parameter_types, traits::Hooks, weights::Weight,
+ construct_runtime, derive_impl, parameter_types, sp_runtime::StateVersion, traits::Hooks,
+ weights::Weight,
};
use sp_core::sr25519::Signature;
@@ -78,6 +79,8 @@ impl Chain for TestBridgedChain {
type Nonce = u64;
type Signature = Signature;
+ const STATE_VERSION: StateVersion = StateVersion::V1;
+
fn max_extrinsic_size() -> u32 {
unreachable!()
}
diff --git a/bridges/modules/messages/Cargo.toml b/bridges/modules/messages/Cargo.toml
index 573d0ba47668cfd5513def1a2465be10002c676f..33f524030d264e4ed292f8f67273e838e15fc3a9 100644
--- a/bridges/modules/messages/Cargo.toml
+++ b/bridges/modules/messages/Cargo.toml
@@ -13,52 +13,67 @@ workspace = true
[dependencies]
codec = { workspace = true }
log = { workspace = true }
-num-traits = { workspace = true }
scale-info = { features = ["derive"], workspace = true }
# Bridge dependencies
-
+bp-header-chain = { workspace = true }
bp-messages = { workspace = true }
bp-runtime = { workspace = true }
# Substrate Dependencies
-
frame-benchmarking = { optional = true, workspace = true }
frame-support = { workspace = true }
frame-system = { workspace = true }
sp-runtime = { workspace = true }
sp-std = { workspace = true }
+sp-trie = { optional = true, workspace = true }
[dev-dependencies]
-bp-test-utils = { workspace = true, default-features = true }
-pallet-balances = { workspace = true, default-features = true }
-sp-io = { workspace = true, default-features = true }
+bp-runtime = { features = ["test-helpers"], workspace = true }
+bp-test-utils = { workspace = true }
+pallet-balances = { workspace = true }
+pallet-bridge-grandpa = { workspace = true }
+sp-io = { workspace = true }
+sp-core = { workspace = true }
[features]
default = ["std"]
std = [
+ "bp-header-chain/std",
"bp-messages/std",
"bp-runtime/std",
+ "bp-test-utils/std",
"codec/std",
"frame-benchmarking/std",
"frame-support/std",
"frame-system/std",
"log/std",
- "num-traits/std",
+ "pallet-balances/std",
+ "pallet-bridge-grandpa/std",
"scale-info/std",
+ "sp-core/std",
+ "sp-io/std",
"sp-runtime/std",
"sp-std/std",
+ "sp-trie/std",
]
runtime-benchmarks = [
+ "bp-runtime/test-helpers",
"frame-benchmarking/runtime-benchmarks",
"frame-support/runtime-benchmarks",
"frame-system/runtime-benchmarks",
"pallet-balances/runtime-benchmarks",
+ "pallet-bridge-grandpa/runtime-benchmarks",
"sp-runtime/runtime-benchmarks",
]
try-runtime = [
"frame-support/try-runtime",
"frame-system/try-runtime",
"pallet-balances/try-runtime",
+ "pallet-bridge-grandpa/try-runtime",
"sp-runtime/try-runtime",
]
+test-helpers = [
+ "bp-runtime/test-helpers",
+ "sp-trie",
+]
diff --git a/bridges/modules/messages/README.md b/bridges/modules/messages/README.md
index c06b96b857dea1cdf7fdaed81e70d66aff116064..80fd92eb0e5a7d975ba45619838007a12f5f5553 100644
--- a/bridges/modules/messages/README.md
+++ b/bridges/modules/messages/README.md
@@ -104,17 +104,22 @@ the message. When a message is delivered to the target chain, the `MessagesDeliv
`receive_messages_delivery_proof()` transaction. The `MessagesDelivered` contains the message lane identifier and
inclusive range of delivered message nonces.
-The pallet provides no means to get the result of message dispatch at the target chain. If that is required, it must be
-done outside of the pallet. For example, XCM messages, when dispatched, have special instructions to send some data back
-to the sender. Other dispatchers may use similar mechanism for that.
-### How to plug-in Messages Module to Send Messages to the Bridged Chain?
-
-The `pallet_bridge_messages::Config` trait has 3 main associated types that are used to work with outbound messages. The
-`pallet_bridge_messages::Config::TargetHeaderChain` defines how we see the bridged chain as the target for our outbound
-messages. It must be able to check that the bridged chain may accept our message - like that the message has size below
-maximal possible transaction size of the chain and so on. And when the relayer sends us a confirmation transaction, this
-implementation must be able to parse and verify the proof of messages delivery. Normally, you would reuse the same
-(configurable) type on all chains that are sending messages to the same bridged chain.
+The pallet provides no means to get the result of message dispatch at the target chain. If that is
+required, it must be done outside of the pallet. For example, XCM messages, when dispatched, have
+special instructions to send some data back to the sender. Other dispatchers may use similar
+mechanism for that.
+
+### How to plug-in Messages Module to Send and Receive Messages from the Bridged Chain?
+
+The `pallet_bridge_messages::Config` trait has 2 main associated types that are used to work with
+inbound messages. The `pallet_bridge_messages::BridgedChain` defines basic primitives of the bridged
+chain. The `pallet_bridge_messages::BridgedHeaderChain` defines the way we access the bridged chain
+headers in our runtime. You may use `pallet_bridge_grandpa` if you're bridging with chain that uses
+GRANDPA finality or `pallet_bridge_parachains::ParachainHeaders` if you're bridging with parachain.
+
+The `pallet_bridge_messages::Config::MessageDispatch` defines a way on how to dispatch delivered
+messages. Apart from actually dispatching the message, the implementation must return the correct
+dispatch weight of the message before dispatch is called.
The last type is the `pallet_bridge_messages::Config::DeliveryConfirmationPayments`. When confirmation
transaction is received, we call the `pay_reward()` method, passing the range of delivered messages.
@@ -129,18 +134,6 @@ You should be looking at the `bp_messages::source_chain::ForbidOutboundMessages`
[`bp_messages::source_chain`](../../primitives/messages/src/source_chain.rs). It implements all required traits and will
simply reject all transactions, related to outbound messages.
-### How to plug-in Messages Module to Receive Messages from the Bridged Chain?
-
-The `pallet_bridge_messages::Config` trait has 2 main associated types that are used to work with inbound messages. The
-`pallet_bridge_messages::Config::SourceHeaderChain` defines how we see the bridged chain as the source of our inbound
-messages. When relayer sends us a delivery transaction, this implementation must be able to parse and verify the proof
-of messages wrapped in this transaction. Normally, you would reuse the same (configurable) type on all chains that are
-sending messages to the same bridged chain.
-
-The `pallet_bridge_messages::Config::MessageDispatch` defines a way on how to dispatch delivered messages. Apart from
-actually dispatching the message, the implementation must return the correct dispatch weight of the message before
-dispatch is called.
-
### I have a Messages Module in my Runtime, but I Want to Reject all Inbound Messages. What shall I do?
You should be looking at the `bp_messages::target_chain::ForbidInboundMessages` structure from the
@@ -150,36 +143,42 @@ and will simply reject all transactions, related to inbound messages.
### What about other Constants in the Messages Module Configuration Trait?
Two settings that are used to check messages in the `send_message()` function. The
-`pallet_bridge_messages::Config::ActiveOutboundLanes` is an array of all message lanes, that may be used to send
-messages. All messages sent using other lanes are rejected. All messages that have size above
-`pallet_bridge_messages::Config::MaximalOutboundPayloadSize` will also be rejected.
-
-To be able to reward the relayer for delivering messages, we store a map of message nonces range => identifier of the
-relayer that has delivered this range at the target chain runtime storage. If a relayer delivers multiple consequent
-ranges, they're merged into single entry. So there may be more than one entry for the same relayer. Eventually, this
-whole map must be delivered back to the source chain to confirm delivery and pay rewards. So to make sure we are able to
-craft this confirmation transaction, we need to: (1) keep the size of this map below a certain limit and (2) make sure
-that the weight of processing this map is below a certain limit. Both size and processing weight mostly depend on the
-number of entries. The number of entries is limited with the
-`pallet_bridge_messages::ConfigMaxUnrewardedRelayerEntriesAtInboundLane` parameter. Processing weight also depends on
-the total number of messages that are being confirmed, because every confirmed message needs to be read. So there's
-another `pallet_bridge_messages::Config::MaxUnconfirmedMessagesAtInboundLane` parameter for that.
-
-When choosing values for these parameters, you must also keep in mind that if proof in your scheme is based on finality
-of headers (and it is the most obvious option for Substrate-based chains with finality notion), then choosing too small
-values for these parameters may cause significant delays in message delivery. That's because there are too many actors
-involved in this scheme: 1) authorities that are finalizing headers of the target chain need to finalize header with
-non-empty map; 2) the headers relayer then needs to submit this header and its finality proof to the source chain; 3)
-the messages relayer must then send confirmation transaction (storage proof of this map) to the source chain; 4) when
-the confirmation transaction will be mined at some header, source chain authorities must finalize this header; 5) the
-headers relay then needs to submit this header and its finality proof to the target chain; 6) only now the messages
-relayer may submit new messages from the source to target chain and prune the entry from the map.
-
-Delivery transaction requires the relayer to provide both number of entries and total number of messages in the map.
-This means that the module never charges an extra cost for delivering a map - the relayer would need to pay exactly for
-the number of entries+messages it has delivered. So the best guess for values of these parameters would be the pair that
-would occupy `N` percent of the maximal transaction size and weight of the source chain. The `N` should be large enough
-to process large maps, at the same time keeping reserve for future source chain upgrades.
+`pallet_bridge_messages::Config::ActiveOutboundLanes` is an array of all message lanes, that
+may be used to send messages. All messages sent using other lanes are rejected. All messages that have
+size above `pallet_bridge_messages::Config::MaximalOutboundPayloadSize` will also be rejected.
+
+To be able to reward the relayer for delivering messages, we store a map of message nonces range =>
+identifier of the relayer that has delivered this range at the target chain runtime storage. If a
+relayer delivers multiple consequent ranges, they're merged into single entry. So there may be more
+than one entry for the same relayer. Eventually, this whole map must be delivered back to the source
+chain to confirm delivery and pay rewards. So to make sure we are able to craft this confirmation
+transaction, we need to: (1) keep the size of this map below a certain limit and (2) make sure that
+the weight of processing this map is below a certain limit. Both size and processing weight mostly
+depend on the number of entries. The number of entries is limited with the
+`pallet_bridge_messages::Config::BridgedChain::MAX_UNREWARDED_RELAYERS_IN_CONFIRMATION_TX` parameter.
+Processing weight also depends on the total number of messages that are being confirmed, because every
+confirmed message needs to be read. So there's another
+`pallet_bridge_messages::Config::BridgedChain::MAX_UNCONFIRMED_MESSAGES_IN_CONFIRMATION_TX` parameter
+for that.
+
+When choosing values for these parameters, you must also keep in mind that if proof in your scheme
+is based on finality of headers (and it is the most obvious option for Substrate-based chains with
+finality notion), then choosing too small values for these parameters may cause significant delays
+in message delivery. That's because there are too many actors involved in this scheme: 1) authorities
+that are finalizing headers of the target chain need to finalize header with non-empty map; 2) the
+headers relayer then needs to submit this header and its finality proof to the source chain; 3) the
+messages relayer must then send confirmation transaction (storage proof of this map) to the source
+chain; 4) when the confirmation transaction will be mined at some header, source chain authorities
+must finalize this header; 5) the headers relay then needs to submit this header and its finality
+proof to the target chain; 6) only now the messages relayer may submit new messages from the source
+to target chain and prune the entry from the map.
+
+Delivery transaction requires the relayer to provide both number of entries and total number of
+messages in the map. This means that the module never charges an extra cost for delivering a map -
+the relayer would need to pay exactly for the number of entries+messages it has delivered. So the
+best guess for values of these parameters would be the pair that would occupy `N` percent of the
+maximal transaction size and weight of the source chain. The `N` should be large enough to process
+large maps, at the same time keeping reserve for future source chain upgrades.
## Non-Essential Functionality
diff --git a/bridges/modules/messages/src/benchmarking.rs b/bridges/modules/messages/src/benchmarking.rs
index 4f13c4409672b3e76d36fd7d3dd2fab5c7e2ec1b..d38aaf32dc94bd157de0d3e910b729a7970c1684 100644
--- a/bridges/modules/messages/src/benchmarking.rs
+++ b/bridges/modules/messages/src/benchmarking.rs
@@ -16,19 +16,22 @@
//! Messages pallet benchmarking.
+#![cfg(feature = "runtime-benchmarks")]
+
use crate::{
inbound_lane::InboundLaneStorage, outbound_lane, weights_ext::EXPECTED_DEFAULT_MESSAGE_LENGTH,
- Call, OutboundLanes, RuntimeInboundLaneStorage,
+ BridgedChainOf, Call, OutboundLanes, RuntimeInboundLaneStorage,
};
use bp_messages::{
- source_chain::TargetHeaderChain, target_chain::SourceHeaderChain, DeliveredMessages,
+ source_chain::FromBridgedChainMessagesDeliveryProof,
+ target_chain::FromBridgedChainMessagesProof, ChainWithMessages, DeliveredMessages,
InboundLaneData, LaneId, MessageNonce, OutboundLaneData, UnrewardedRelayer,
UnrewardedRelayersState,
};
-use bp_runtime::StorageProofSize;
+use bp_runtime::{AccountIdOf, HashOf, UnverifiedStorageProofParams};
use codec::Decode;
-use frame_benchmarking::{account, benchmarks_instance_pallet};
+use frame_benchmarking::{account, v2::*};
use frame_support::weights::Weight;
use frame_system::RawOrigin;
use sp_runtime::{traits::TrailingZeroInput, BoundedVec};
@@ -54,7 +57,7 @@ pub struct MessageProofParams {
/// return `true` from the `is_message_successfully_dispatched`.
pub is_successful_dispatch_expected: bool,
/// Proof size requirements.
- pub size: StorageProofSize,
+ pub proof_params: UnverifiedStorageProofParams,
}
/// Benchmark-specific message delivery proof parameters.
@@ -65,7 +68,7 @@ pub struct MessageDeliveryProofParams {
/// The proof needs to include this inbound lane data.
pub inbound_lane_data: InboundLaneData,
/// Proof size requirements.
- pub size: StorageProofSize,
+ pub proof_params: UnverifiedStorageProofParams,
}
/// Trait that must be implemented by runtime.
@@ -80,8 +83,8 @@ pub trait Config: crate::Config {
/// Return id of relayer account at the bridged chain.
///
/// By default, zero account is returned.
- fn bridged_relayer_id() -> Self::InboundRelayer {
- Self::InboundRelayer::decode(&mut TrailingZeroInput::zeroes()).unwrap()
+ fn bridged_relayer_id() -> AccountIdOf> {
+ Decode::decode(&mut TrailingZeroInput::zeroes()).unwrap()
}
/// Create given account and give it enough balance for test purposes. Used to create
@@ -94,11 +97,11 @@ pub trait Config: crate::Config {
/// Prepare messages proof to receive by the module.
fn prepare_message_proof(
params: MessageProofParams,
- ) -> (::MessagesProof, Weight);
+ ) -> (FromBridgedChainMessagesProof>>, Weight);
/// Prepare messages delivery proof to receive by the module.
fn prepare_message_delivery_proof(
params: MessageDeliveryProofParams