diff --git a/.config/lychee.toml b/.config/lychee.toml
index 200521ac41eeb739228d202ac0fb2d80be305464..733b77ec0cff9e616ecc0f851d9a3ed5e8574636 100644
--- a/.config/lychee.toml
+++ b/.config/lychee.toml
@@ -2,9 +2,9 @@
# Run with `lychee -c .config/lychee.toml ./**/*.rs ./**/*.prdoc`
cache = true
-max_cache_age = "1d"
+max_cache_age = "10d"
max_redirects = 10
-max_retries = 6
+max_retries = 3
# Exclude localhost et.al.
exclude_all_private = true
@@ -51,4 +51,7 @@ exclude = [
# Behind a captcha (code 403):
"https://iohk.io/en/blog/posts/2023/11/03/partner-chains-are-coming-to-cardano/",
"https://www.reddit.com/r/rust/comments/3spfh1/does_collect_allocate_more_than_once_while/",
+ # 403 rate limited:
+ "https://etherscan.io/block/11090290",
+ "https://substrate.stackexchange.com/.*",
]
diff --git a/.github/scripts/common/lib.sh b/.github/scripts/common/lib.sh
index 932a6d546c3706f50c74873c32cb8e61e3d33461..f844e962c41def7625fa3d45ae3cbf81ecb57147 100755
--- a/.github/scripts/common/lib.sh
+++ b/.github/scripts/common/lib.sh
@@ -369,7 +369,7 @@ function relative_parent() {
# used as Github Workflow Matrix. This call is exposed by the `scan` command and can be used as:
# podman run --rm -it -v /.../fellowship-runtimes:/build docker.io/chevdor/srtool:1.70.0-0.11.1 scan
function find_runtimes() {
- libs=($(git grep -I -r --cached --max-depth 20 --files-with-matches 'construct_runtime!' -- '*lib.rs'))
+ libs=($(git grep -I -r --cached --max-depth 20 --files-with-matches '[frame_support::runtime]!' -- '*lib.rs'))
re=".*-runtime$"
JSON=$(jq --null-input '{ "include": [] }')
@@ -434,3 +434,13 @@ check_release_id() {
fi
}
+
+# Get latest release tag
+#
+# input: none
+# output: latest_release_tag
+get_latest_release_tag() {
+ TOKEN="Authorization: Bearer $GITHUB_TOKEN"
+ latest_release_tag=$(curl -s -H "$TOKEN" $api_base/paritytech/polkadot-sdk/releases/latest | jq -r '.tag_name')
+ printf $latest_release_tag
+}
diff --git a/.github/workflows/release-30_publish_release_draft.yml b/.github/workflows/release-30_publish_release_draft.yml
new file mode 100644
index 0000000000000000000000000000000000000000..12891ef70af36b4e848c68e292f9ba2881ee20d2
--- /dev/null
+++ b/.github/workflows/release-30_publish_release_draft.yml
@@ -0,0 +1,155 @@
+name: Release - Publish draft
+
+on:
+ push:
+ tags:
+ # Catches v1.2.3 and v1.2.3-rc1
+ - v[0-9]+.[0-9]+.[0-9]+*
+
+ workflow_dispatch:
+ inputs:
+ version:
+ description: Current release/rc version
+
+jobs:
+ get-rust-versions:
+ runs-on: ubuntu-latest
+ outputs:
+ rustc-stable: ${{ steps.get-rust-versions.outputs.stable }}
+ steps:
+ - id: get-rust-versions
+ run: |
+ RUST_STABLE_VERSION=$(curl -sS https://raw.githubusercontent.com/paritytech/scripts/master/dockerfiles/ci-unified/Dockerfile | grep -oP 'ARG RUST_STABLE_VERSION=\K[^ ]+')
+ echo "stable=$RUST_STABLE_VERSION" >> $GITHUB_OUTPUT
+
+ build-runtimes:
+ uses: "./.github/workflows/srtool.yml"
+ with:
+ excluded_runtimes: "substrate-test bp cumulus-test kitchensink minimal-template parachain-template penpal polkadot-test seedling shell frame-try sp solochain-template"
+
+ publish-release-draft:
+ runs-on: ubuntu-latest
+ needs: [get-rust-versions, build-runtimes]
+ outputs:
+ release_url: ${{ steps.create-release.outputs.html_url }}
+ asset_upload_url: ${{ steps.create-release.outputs.upload_url }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
+
+ - name: Prepare tooling
+ run: |
+ URL=https://github.com/chevdor/tera-cli/releases/download/v0.2.4/tera-cli_linux_amd64.deb
+ wget $URL -O tera.deb
+ sudo dpkg -i tera.deb
+ tera --version
+
+ - name: Download artifacts
+ uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
+
+ - name: Prepare draft
+ id: draft
+ env:
+ RUSTC_STABLE: ${{ needs.get-rust-versions.outputs.rustc-stable }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ ASSET_HUB_ROCOCO_DIGEST: ${{ github.workspace}}/asset-hub-rococo-runtime/asset-hub-rococo-srtool-digest.json
+ ASSET_HUB_WESTEND_DIGEST: ${{ github.workspace}}/asset-hub-westend-runtime/asset-hub-westend-srtool-digest.json
+ BRIDGE_HUB_ROCOCO_DIGEST: ${{ github.workspace}}/bridge-hub-rococo-runtime/bridge-hub-rococo-srtool-digest.json
+ BRIDGE_HUB_WESTEND_DIGEST: ${{ github.workspace}}/bridge-hub-westend-runtime/bridge-hub-westend-srtool-digest.json
+ COLLECTIVES_WESTEND_DIGEST: ${{ github.workspace}}/collectives-westend-runtime/collectives-westend-srtool-digest.json
+ CONTRACTS_ROCOCO_DIGEST: ${{ github.workspace}}/contracts-rococo-runtime/contracts-rococo-srtool-digest.json
+ CORETIME_ROCOCO_DIGEST: ${{ github.workspace}}/coretime-rococo-runtime/coretime-rococo-srtool-digest.json
+ CORETIME_WESTEND_DIGEST: ${{ github.workspace}}/coretime-westend-runtime/coretime-westend-srtool-digest.json
+ GLUTTON_WESTEND_DIGEST: ${{ github.workspace}}/glutton-westend-runtime/glutton-westend-srtool-digest.json
+ PEOPLE_ROCOCO_DIGEST: ${{ github.workspace}}/people-rococo-runtime/people-rococo-srtool-digest.json
+ PEOPLE_WESTEND_DIGEST: ${{ github.workspace}}/people-westend-runtime/people-westend-srtool-digest.json
+ ROCOCO_DIGEST: ${{ github.workspace}}/rococo-runtime/rococo-srtool-digest.json
+ WESTEND_DIGEST: ${{ github.workspace}}/westend-runtime/westend-srtool-digest.json
+ run: |
+ . ./.github/scripts/common/lib.sh
+
+ export REF1=$(get_latest_release_tag)
+ if [[ -z "${{ inputs.version }}" ]]; then
+ export REF2="${{ github.ref }}"
+ else
+ export REF2="${{ inputs.version }}"
+ fi
+ echo "REL_TAG=$REF2" >> $GITHUB_ENV
+ export VERSION=$(echo "$REF2" | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+).*$/\1/')
+
+ ./scripts/release/build-changelogs.sh
+
+ echo "Checking the folder state"
+ pwd
+ ls -la scripts/release
+
+ - name: Archive artifact context.json
+ uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
+ with:
+ name: release-notes-context
+ path: |
+ scripts/release/context.json
+ **/*-srtool-digest.json
+
+ - name: Create draft release
+ id: create-release
+ uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1.1.4
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: ${{ env.REL_TAG }}
+ release_name: Polkadot ${{ env.REL_TAG }}
+ body_path: ${{ github.workspace}}/scripts/release/RELEASE_DRAFT.md
+ draft: true
+
+ publish-runtimes:
+ needs: [ build-runtimes, publish-release-draft ]
+ continue-on-error: true
+ runs-on: ubuntu-latest
+ strategy:
+ matrix: ${{ fromJSON(needs.build-runtimes.outputs.published_runtimes) }}
+
+ steps:
+ - name: Checkout sources
+ uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
+
+ - name: Download artifacts
+ uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
+
+ - name: Get runtime info
+ env:
+ JSON: release-notes-context/${{ matrix.chain }}-runtime/${{ matrix.chain }}-srtool-digest.json
+ run: |
+ >>$GITHUB_ENV echo ASSET=$(find ${{ matrix.chain }}-runtime -name '*.compact.compressed.wasm')
+ >>$GITHUB_ENV echo SPEC=$(<${JSON} jq -r .runtimes.compact.subwasm.core_version.specVersion)
+
+ - name: Upload compressed ${{ matrix.chain }} v${{ env.SPEC }} wasm
+ if: ${{ matrix.chain != 'rococo-parachain' }}
+ uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 #v1.0.2
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ upload_url: ${{ needs.publish-release-draft.outputs.asset_upload_url }}
+ asset_path: ${{ env.ASSET }}
+ asset_name: ${{ matrix.chain }}_runtime-v${{ env.SPEC }}.compact.compressed.wasm
+ asset_content_type: application/wasm
+
+ post_to_matrix:
+ runs-on: ubuntu-latest
+ needs: publish-release-draft
+ strategy:
+ matrix:
+ channel:
+ - name: "Team: RelEng Internal"
+ room: '!GvAyzgCDgaVrvibaAF:parity.io'
+
+ steps:
+ - name: Send Matrix message to ${{ matrix.channel.name }}
+ uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3
+ with:
+ room_id: ${{ matrix.channel.room }}
+ access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }}
+ server: m.parity.io
+ message: |
+ **New version of polkadot tagged**: ${{ github.ref }}
+ Draft release created: ${{ needs.publish-release-draft.outputs.release_url }}
diff --git a/.github/workflows/srtool.yml b/.github/workflows/srtool.yml
index eb15538f559d2145700a73fb0e383d4103ce582a..95b1846b98e0c47cc6de2c92cadc16adc0cab487 100644
--- a/.github/workflows/srtool.yml
+++ b/.github/workflows/srtool.yml
@@ -12,6 +12,13 @@ on:
- release-v[0-9]+.[0-9]+.[0-9]+*
- release-cumulus-v[0-9]+*
- release-polkadot-v[0-9]+*
+ workflow_call:
+ inputs:
+ excluded_runtimes:
+ type: string
+ outputs:
+ published_runtimes:
+ value: ${{ jobs.find-runtimes.outputs.runtime }}
schedule:
- cron: "00 02 * * 1" # 2AM weekly on monday
@@ -39,7 +46,7 @@ jobs:
- name: Scan runtimes
env:
- EXCLUDED_RUNTIMES: "substrate-test"
+ EXCLUDED_RUNTIMES: ${{ inputs.excluded_runtimes }}:"substrate-test"
run: |
. ./.github/scripts/common/lib.sh
@@ -85,16 +92,6 @@ jobs:
echo "Compact Runtime: ${{ steps.srtool_build.outputs.wasm }}"
echo "Compressed Runtime: ${{ steps.srtool_build.outputs.wasm_compressed }}"
- # it takes a while to build the runtime, so let's save the artifact as soon as we have it
- - name: Archive Artifacts for ${{ matrix.chain }}
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
- with:
- name: ${{ matrix.chain }}-runtime
- path: |
- ${{ steps.srtool_build.outputs.wasm }}
- ${{ steps.srtool_build.outputs.wasm_compressed }}
- ${{ matrix.chain }}-srtool-digest.json
-
# We now get extra information thanks to subwasm
- name: Install subwasm
run: |
@@ -125,7 +122,7 @@ jobs:
tee ${{ matrix.chain }}-diff.txt
- name: Archive Subwasm results
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: ${{ matrix.chain }}-runtime
path: |
@@ -133,3 +130,6 @@ jobs:
${{ matrix.chain }}-compressed-info.json
${{ matrix.chain }}-metadata.json
${{ matrix.chain }}-diff.txt
+ ${{ steps.srtool_build.outputs.wasm }}
+ ${{ steps.srtool_build.outputs.wasm_compressed }}
+ ${{ matrix.chain }}-srtool-digest.json
diff --git a/.github/workflows/subsystem-benchmarks.yml b/.github/workflows/subsystem-benchmarks.yml
index f0d56bf6e9d3937d2f7c16873ea34bf1377e2aa2..1a726b669e9094e8be53ef5a1ddb1b3198210d33 100644
--- a/.github/workflows/subsystem-benchmarks.yml
+++ b/.github/workflows/subsystem-benchmarks.yml
@@ -48,6 +48,7 @@ jobs:
uses: benchmark-action/github-action-benchmark@v1
with:
tool: "customSmallerIsBetter"
+ name: ${{ github.event.inputs.benchmark-data-dir-path }}
output-file-path: ${{ github.event.inputs.output-file-path }}
benchmark-data-dir-path: "bench/${{ github.event.inputs.benchmark-data-dir-path }}"
github-token: ${{ steps.app-token.outputs.token }}
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fbcd94b525681c00937a35305cf2e4d25344d65e..5e57dd86f14166e695f1c64b6b5aee56529a4781 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -119,19 +119,26 @@ default:
#
.forklift-cache:
before_script:
- - 'curl --header "PRIVATE-TOKEN: $FL_CI_GROUP_TOKEN" -o forklift -L "${CI_API_V4_URL}/projects/676/packages/generic/forklift/${FL_FORKLIFT_VERSION}/forklift_${FL_FORKLIFT_VERSION}_linux_amd64"'
- - chmod +x forklift
- mkdir ~/.forklift
- cp $FL_FORKLIFT_CONFIG ~/.forklift/config.toml
- - shopt -s expand_aliases
- - export PATH=$PATH:$(pwd)
- >
if [ "$FORKLIFT_BYPASS" != "true" ]; then
- echo "FORKLIFT_BYPASS not set, creating alias cargo='forklift cargo'";
- alias cargo="forklift cargo";
+ echo "FORKLIFT_BYPASS not set";
+ if command -v forklift >/dev/null 2>&1; then
+ echo "forklift already exists";
+ forklift version
+ else
+ echo "forklift does not exist, downloading";
+ curl --header "PRIVATE-TOKEN: $FL_CI_GROUP_TOKEN" -o forklift -L "${CI_API_V4_URL}/projects/676/packages/generic/forklift/${FL_FORKLIFT_VERSION}/forklift_${FL_FORKLIFT_VERSION}_linux_amd64";
+ chmod +x forklift;
+ export PATH=$PATH:$(pwd);
+ echo ${FL_FORKLIFT_VERSION};
+ fi
+ echo "Creating alias cargo='forklift cargo'";
+ shopt -s expand_aliases;
+ alias cargo="forklift cargo";
fi
#
- - echo "FL_FORKLIFT_VERSION ${FL_FORKLIFT_VERSION}"
.common-refs:
rules:
diff --git a/.gitlab/pipeline/check.yml b/.gitlab/pipeline/check.yml
index 4c39539f1e50462f52c08060deb1930a21ac0b3c..89b2c00db9b2b13187a562987e00abcb232e0e32 100644
--- a/.gitlab/pipeline/check.yml
+++ b/.gitlab/pipeline/check.yml
@@ -7,8 +7,8 @@ cargo-clippy:
variables:
RUSTFLAGS: "-D warnings"
script:
- - SKIP_WASM_BUILD=1 cargo clippy --all-targets --locked --workspace
- - SKIP_WASM_BUILD=1 cargo clippy --all-targets --all-features --locked --workspace
+ - SKIP_WASM_BUILD=1 cargo clippy --all-targets --locked --workspace --quiet
+ - SKIP_WASM_BUILD=1 cargo clippy --all-targets --all-features --locked --workspace --quiet
check-try-runtime:
stage: check
diff --git a/.gitlab/pipeline/publish.yml b/.gitlab/pipeline/publish.yml
index 954df10bef018e1006f4e698a255b50406191eaf..d8f5d5832291f7afced292d3b0fdeb6238de26a8 100644
--- a/.gitlab/pipeline/publish.yml
+++ b/.gitlab/pipeline/publish.yml
@@ -70,7 +70,9 @@ publish-subsystem-benchmarks:
- .kubernetes-env
- .publish-gh-pages-refs
needs:
- - job: subsystem-regression-tests
+ - job: subsystem-benchmark-availability-recovery
+ artifacts: true
+ - job: subsystem-benchmark-availability-distribution
artifacts: true
- job: publish-rustdoc
artifacts: false
@@ -109,7 +111,9 @@ trigger_workflow:
needs:
- job: publish-subsystem-benchmarks
artifacts: false
- - job: subsystem-regression-tests
+ - job: subsystem-benchmark-availability-recovery
+ artifacts: true
+ - job: subsystem-benchmark-availability-distribution
artifacts: true
script:
- echo "Triggering workflow"
diff --git a/.gitlab/pipeline/test.yml b/.gitlab/pipeline/test.yml
index 9db89b9230091752199c3e2df12ba8843429422e..1d6efd7b9fd1a91c3c49aa26faa9263216e9cb4e 100644
--- a/.gitlab/pipeline/test.yml
+++ b/.gitlab/pipeline/test.yml
@@ -322,7 +322,24 @@ quick-benchmarks:
WASM_BUILD_NO_COLOR: 1
WASM_BUILD_RUSTFLAGS: "-C debug-assertions -D warnings"
script:
- - time cargo run --locked --release -p staging-node-cli --bin substrate-node --features runtime-benchmarks -- benchmark pallet --execution wasm --wasm-execution compiled --chain dev --pallet "*" --extrinsic "*" --steps 2 --repeat 1
+ - time cargo run --locked --release -p staging-node-cli --bin substrate-node --features runtime-benchmarks --quiet -- benchmark pallet --chain dev --pallet "*" --extrinsic "*" --steps 2 --repeat 1 --quiet
+
+quick-benchmarks-omni:
+ stage: test
+ extends:
+ - .docker-env
+ - .common-refs
+ - .run-immediately
+ variables:
+ # Enable debug assertions since we are running optimized builds for testing
+ # but still want to have debug assertions.
+ RUSTFLAGS: "-C debug-assertions"
+ RUST_BACKTRACE: "full"
+ WASM_BUILD_NO_COLOR: 1
+ WASM_BUILD_RUSTFLAGS: "-C debug-assertions"
+ script:
+ - time cargo build --locked --quiet --release -p asset-hub-westend-runtime --features runtime-benchmarks
+ - time cargo run --locked --release -p frame-omni-bencher --quiet -- v1 benchmark pallet --runtime target/release/wbuild/asset-hub-westend-runtime/asset_hub_westend_runtime.compact.compressed.wasm --all --steps 2 --repeat 1 --quiet
test-frame-examples-compile-to-wasm:
# into one job
@@ -494,12 +511,30 @@ test-syscalls:
fi
allow_failure: false # this rarely triggers in practice
-subsystem-regression-tests:
+subsystem-benchmark-availability-recovery:
+ stage: test
+ artifacts:
+ name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
+ when: always
+ expire_in: 1 hour
+ paths:
+ - charts/
+ extends:
+ - .docker-env
+ - .common-refs
+ - .run-immediately
+ script:
+ - cargo bench -p polkadot-availability-recovery --bench availability-recovery-regression-bench --features subsystem-benchmarks
+ tags:
+ - benchmark
+ allow_failure: true
+
+subsystem-benchmark-availability-distribution:
stage: test
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
when: always
- expire_in: 1 days
+ expire_in: 1 hour
paths:
- charts/
extends:
@@ -507,8 +542,7 @@ subsystem-regression-tests:
- .common-refs
- .run-immediately
script:
- - cargo bench --profile=testnet -p polkadot-availability-recovery --bench availability-recovery-regression-bench --features subsystem-benchmarks
- - cargo bench --profile=testnet -p polkadot-availability-distribution --bench availability-distribution-regression-bench --features subsystem-benchmarks
+ - cargo bench -p polkadot-availability-distribution --bench availability-distribution-regression-bench --features subsystem-benchmarks
tags:
- benchmark
allow_failure: true
diff --git a/BRIDGES.md b/BRIDGES.md
deleted file mode 100644
index a6f00aec09283e10d1a697bcef3f523881941663..0000000000000000000000000000000000000000
--- a/BRIDGES.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# Using Parity Bridges Common dependency (`git subtree`)
-
-In `./bridges` sub-directory you can find a `git subtree` imported version of:
-[`parity-bridges-common`](https://github.com/paritytech/parity-bridges-common/) repository.
-
-(For regular Cumulus contributor 1. is relevant) \
-(For Cumulus maintainer 1. and 2. are relevant) \
-(For Bridges team 1. and 2. and 3. are relevant)
-
-## How to fix broken Bridges code?
-
-To fix Bridges code simply create a commit in current (`Cumulus`) repo. Best if
-the commit is isolated to changes in `./bridges` sub-directory, because it makes
-it easier to import that change back to upstream repo.
-
-(Any changes to `bridges` subtree require Bridges team approve and they should manage backport to Bridges repo)
-
-
-## How to pull latest Bridges code to the `bridges` subtree
-(in practice)
-
-The `bridges` repo has a stabilized branch `polkadot-staging` dedicated for releasing.
-
-```
-cd
-
-# this will update new git branches from bridges repo
-# there could be unresolved conflicts, but don't worry,
-# lots of them are caused because of removed unneeded files with patch step,
-BRANCH=polkadot-staging ./scripts/bridges_update_subtree.sh fetch
-
-# so, after fetch and before solving conflicts just run patch,
-# this will remove unneeded files and checks if subtree modules compiles
-./scripts/bridges_update_subtree.sh patch
-
-# if there are conflicts, this could help,
-# this removes locally deleted files at least (move changes to git stash for commit)
-./scripts/bridges_update_subtree.sh merge
-
-# (optional) when conflicts resolved, you can check build again - should pass
-# also important: this updates global Cargo.lock
-./scripts/bridges_update_subtree.sh patch
-
-# add changes to the commit, first command `fetch` starts merge,
-# so after all conflicts are solved and patch passes and compiles,
-# then we need to finish merge with:
-git merge --continue
-```
-
-## How to pull latest Bridges code or contribute back?
-(in theory)
-
-Note that it's totally fine to ping the **Bridges Team** to do that for you. The point
-of adding the code as `git subtree` is to **reduce maintenance cost** for Cumulus/Polkadot
-developers.
-
-If you still would like to either update the code to match latest code from the repo
-or create an upstream PR read below. The following commands should be run in the
-current (`polkadot`) repo.
-
-### Add Bridges repo as a local remote
-```
-git remote add -f bridges git@github.com:paritytech/parity-bridges-common.git
-```
-
-If you plan to contribute back, consider forking the repository on Github and adding
-your personal fork as a remote as well.
-```
-git remote add -f my-bridges git@github.com:tomusdrw/parity-bridges-common.git
-```
-
-### To update Bridges
-```
-git fetch bridges polkadot-staging
-git subtree pull --prefix=bridges bridges polkadot-staging --squash
-```
-
-We use `--squash` to avoid adding individual commits and rather squashing them
-all into one.
-
-### Clean unneeded files here
-```
-./bridges/scripts/verify-pallets-build.sh --ignore-git-state --no-revert
-```
-
-### Contributing back to Bridges (creating upstream PR)
-```
-git subtree push --prefix=bridges my-bridges polkadot-staging
-```
-This command will push changes to your personal fork of Bridges repo, from where
-you can simply create a PR to the main repo.
diff --git a/Cargo.lock b/Cargo.lock
index 19b32dc7aae563e68ad09b3b1ab16dad7e00ce6d..61bc895e706ed3643c7bc6a9f5f73e25b2830c32 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -165,7 +165,7 @@ dependencies = [
"hex-literal",
"itoa",
"proptest",
- "rand",
+ "rand 0.8.5",
"ruint",
"serde",
"tiny-keccak",
@@ -177,23 +177,11 @@ version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc0fac0fc16baf1f63f78b47c3d24718f3619b0714076f6a02957d808d52cbef"
dependencies = [
- "alloy-rlp-derive",
"arrayvec 0.7.4",
"bytes",
"smol_str",
]
-[[package]]
-name = "alloy-rlp-derive"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0391754c09fab4eae3404d19d0d297aa1c670c1775ab51d8a5312afeca23157"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.53",
-]
-
[[package]]
name = "alloy-sol-macro"
version = "0.4.2"
@@ -204,8 +192,8 @@ dependencies = [
"dunce",
"heck 0.4.1",
"proc-macro-error",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
"syn-solidity",
"tiny-keccak",
@@ -331,8 +319,8 @@ dependencies = [
"include_dir",
"itertools 0.10.5",
"proc-macro-error",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -345,8 +333,8 @@ dependencies = [
"include_dir",
"itertools 0.10.5",
"proc-macro-error",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -542,7 +530,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44"
dependencies = [
- "quote",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -552,7 +540,7 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348"
dependencies = [
- "quote",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -564,7 +552,7 @@ checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20"
dependencies = [
"num-bigint",
"num-traits",
- "quote",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -576,8 +564,8 @@ checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565"
dependencies = [
"num-bigint",
"num-traits",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -678,8 +666,8 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -690,7 +678,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c"
dependencies = [
"num-traits",
- "rand",
+ "rand 0.8.5",
]
[[package]]
@@ -700,7 +688,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185"
dependencies = [
"num-traits",
- "rand",
+ "rand 0.8.5",
"rayon",
]
@@ -772,8 +760,8 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
"synstructure",
]
@@ -784,8 +772,8 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -831,7 +819,6 @@ dependencies = [
"assert_matches",
"asset-hub-rococo-runtime",
"asset-test-utils",
- "cumulus-pallet-parachain-system",
"emulated-integration-tests-common",
"frame-support",
"pallet-asset-conversion",
@@ -847,7 +834,6 @@ dependencies = [
"sp-runtime",
"staging-xcm",
"staging-xcm-executor",
- "testnet-parachains-constants",
]
[[package]]
@@ -969,7 +955,6 @@ dependencies = [
"sp-runtime",
"staging-xcm",
"staging-xcm-executor",
- "testnet-parachains-constants",
"westend-runtime",
"westend-system-emulated-network",
]
@@ -1104,6 +1089,16 @@ dependencies = [
"substrate-wasm-builder",
]
+[[package]]
+name = "async-attributes"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5"
+dependencies = [
+ "quote 1.0.35",
+ "syn 1.0.109",
+]
+
[[package]]
name = "async-channel"
version = "1.9.0"
@@ -1141,6 +1136,21 @@ dependencies = [
"futures-lite",
]
+[[package]]
+name = "async-global-executor"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776"
+dependencies = [
+ "async-channel",
+ "async-executor",
+ "async-io",
+ "async-lock 2.8.0",
+ "blocking",
+ "futures-lite",
+ "once_cell",
+]
+
[[package]]
name = "async-io"
version = "1.13.0"
@@ -1211,6 +1221,33 @@ dependencies = [
"windows-sys 0.48.0",
]
+[[package]]
+name = "async-std"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d"
+dependencies = [
+ "async-attributes",
+ "async-channel",
+ "async-global-executor",
+ "async-io",
+ "async-lock 2.8.0",
+ "crossbeam-utils",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-lite",
+ "gloo-timers",
+ "kv-log-macro",
+ "log",
+ "memchr",
+ "once_cell",
+ "pin-project-lite 0.2.12",
+ "pin-utils",
+ "slab",
+ "wasm-bindgen-futures",
+]
+
[[package]]
name = "async-stream"
version = "0.3.5"
@@ -1228,8 +1265,8 @@ version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -1245,8 +1282,8 @@ version = "0.1.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -1293,8 +1330,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89"
dependencies = [
"proc-macro-error",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -1304,6 +1341,17 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+[[package]]
+name = "backoff"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
+dependencies = [
+ "getrandom 0.2.10",
+ "instant",
+ "rand 0.8.5",
+]
+
[[package]]
name = "backtrace"
version = "0.3.69"
@@ -1424,8 +1472,8 @@ dependencies = [
"lazycell",
"peeking_take_while",
"prettyplease 0.2.12",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"regex",
"rustc-hash",
"shlex",
@@ -1646,6 +1694,23 @@ dependencies = [
"scale-info",
]
+[[package]]
+name = "bp-beefy"
+version = "0.1.0"
+dependencies = [
+ "binary-merkle-tree",
+ "bp-runtime",
+ "frame-support",
+ "pallet-beefy-mmr",
+ "pallet-mmr",
+ "parity-scale-codec",
+ "scale-info",
+ "serde",
+ "sp-consensus-beefy",
+ "sp-runtime",
+ "sp-std 14.0.0",
+]
+
[[package]]
name = "bp-bridge-hub-cumulus"
version = "0.7.0"
@@ -1880,7 +1945,7 @@ dependencies = [
"bp-parachains",
"bp-polkadot-core",
"bp-runtime",
- "ed25519-dalek",
+ "ed25519-dalek 2.1.0",
"finality-grandpa",
"parity-scale-codec",
"sp-application-crypto",
@@ -1954,7 +2019,6 @@ name = "bridge-hub-rococo-integration-tests"
version = "1.0.0"
dependencies = [
"asset-hub-rococo-runtime",
- "bp-messages",
"bridge-hub-rococo-runtime",
"cumulus-pallet-xcmp-queue",
"emulated-integration-tests-common",
@@ -1972,7 +2036,6 @@ dependencies = [
"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",
@@ -2139,7 +2202,6 @@ dependencies = [
name = "bridge-hub-westend-integration-tests"
version = "1.0.0"
dependencies = [
- "bp-messages",
"bridge-hub-westend-runtime",
"cumulus-pallet-xcmp-queue",
"emulated-integration-tests-common",
@@ -2411,6 +2473,12 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+[[package]]
+name = "castaway"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6"
+
[[package]]
name = "cc"
version = "1.0.83"
@@ -2551,6 +2619,19 @@ dependencies = [
"unsigned-varint",
]
+[[package]]
+name = "cid"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd94671561e36e4e7de75f753f577edafb0e7c05d6e4547229fdf7938fbcd2c3"
+dependencies = [
+ "core2",
+ "multibase",
+ "multihash 0.18.1",
+ "serde",
+ "unsigned-varint",
+]
+
[[package]]
name = "cipher"
version = "0.2.5"
@@ -2599,6 +2680,21 @@ dependencies = [
"libloading",
]
+[[package]]
+name = "clap"
+version = "2.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+dependencies = [
+ "ansi_term",
+ "atty",
+ "bitflags 1.3.2",
+ "strsim 0.8.0",
+ "textwrap 0.11.0",
+ "unicode-width",
+ "vec_map",
+]
+
[[package]]
name = "clap"
version = "3.2.25"
@@ -2613,7 +2709,7 @@ dependencies = [
"once_cell",
"strsim 0.10.0",
"termcolor",
- "textwrap",
+ "textwrap 0.16.0",
]
[[package]]
@@ -2665,8 +2761,8 @@ checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008"
dependencies = [
"heck 0.4.1",
"proc-macro-error",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -2677,8 +2773,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f"
dependencies = [
"heck 0.5.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -2836,8 +2932,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d51beaa537d73d2d1ff34ee70bc095f170420ab2ec5d687ecd3ec2b0d092514b"
dependencies = [
"nom",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -2858,6 +2954,16 @@ dependencies = [
"windows-sys 0.48.0",
]
+[[package]]
+name = "combine"
+version = "4.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
+dependencies = [
+ "bytes",
+ "memchr",
+]
+
[[package]]
name = "comfy-table"
version = "7.1.0"
@@ -3347,6 +3453,21 @@ dependencies = [
"wasmtime-types",
]
+[[package]]
+name = "crc"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2b432c56615136f8dba245fed7ec3d5518c500a31108661067e61e72fe7e6bc"
+dependencies = [
+ "crc-catalog",
+]
+
+[[package]]
+name = "crc-catalog"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
+
[[package]]
name = "crc32fast"
version = "1.3.2"
@@ -3422,16 +3543,6 @@ dependencies = [
"itertools 0.10.5",
]
-[[package]]
-name = "crossbeam-channel"
-version = "0.5.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
-dependencies = [
- "cfg-if",
- "crossbeam-utils",
-]
-
[[package]]
name = "crossbeam-deque"
version = "0.8.3"
@@ -3769,7 +3880,7 @@ dependencies = [
"polkadot-overseer",
"polkadot-primitives",
"portpicker",
- "rand",
+ "rand 0.8.5",
"sc-cli",
"sc-client-api",
"sc-consensus",
@@ -3865,6 +3976,7 @@ dependencies = [
"cumulus-primitives-proof-size-hostfunction",
"cumulus-test-client",
"cumulus-test-relay-sproof-builder",
+ "cumulus-test-runtime",
"environmental",
"frame-benchmarking",
"frame-support",
@@ -3879,9 +3991,10 @@ dependencies = [
"polkadot-parachain-primitives",
"polkadot-runtime-common",
"polkadot-runtime-parachains",
- "rand",
+ "rand 0.8.5",
"sc-client-api",
"scale-info",
+ "sp-consensus-slots",
"sp-core",
"sp-crypto-hashing",
"sp-externalities 0.25.0",
@@ -3904,8 +4017,8 @@ name = "cumulus-pallet-parachain-system-proc-macro"
version = "0.6.0"
dependencies = [
"proc-macro-crate 3.0.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -4201,7 +4314,7 @@ dependencies = [
"parity-scale-codec",
"pin-project",
"polkadot-overseer",
- "rand",
+ "rand 0.8.5",
"sc-client-api",
"sc-rpc-api",
"sc-service",
@@ -4244,15 +4357,19 @@ dependencies = [
"polkadot-primitives",
"sc-block-builder",
"sc-consensus",
+ "sc-consensus-aura",
"sc-executor",
"sc-executor-common",
"sc-service",
"sp-api",
+ "sp-application-crypto",
"sp-blockchain",
+ "sp-consensus-aura",
"sp-core",
"sp-inherents",
"sp-io",
"sp-keyring",
+ "sp-keystore",
"sp-runtime",
"sp-timestamp",
"substrate-test-client",
@@ -4275,16 +4392,22 @@ dependencies = [
name = "cumulus-test-runtime"
version = "0.1.0"
dependencies = [
+ "cumulus-pallet-aura-ext",
"cumulus-pallet-parachain-system",
+ "cumulus-primitives-aura",
"cumulus-primitives-core",
"cumulus-primitives-storage-weight-reclaim",
"frame-executive",
"frame-support",
"frame-system",
"frame-system-rpc-runtime-api",
+ "pallet-aura",
+ "pallet-authorship",
"pallet-balances",
+ "pallet-collator-selection",
"pallet-glutton",
"pallet-message-queue",
+ "pallet-session",
"pallet-sudo",
"pallet-timestamp",
"pallet-transaction-payment",
@@ -4292,6 +4415,7 @@ dependencies = [
"scale-info",
"sp-api",
"sp-block-builder",
+ "sp-consensus-aura",
"sp-core",
"sp-genesis-builder",
"sp-inherents",
@@ -4313,7 +4437,10 @@ dependencies = [
"clap 4.5.3",
"criterion 0.5.1",
"cumulus-client-cli",
+ "cumulus-client-collator",
+ "cumulus-client-consensus-aura",
"cumulus-client-consensus-common",
+ "cumulus-client-consensus-proposer",
"cumulus-client-consensus-relay-chain",
"cumulus-client-parachain-inherent",
"cumulus-client-pov-recovery",
@@ -4342,7 +4469,7 @@ dependencies = [
"polkadot-service",
"polkadot-test-service",
"portpicker",
- "rand",
+ "rand 0.8.5",
"rococo-parachain-runtime",
"sc-basic-authorship",
"sc-block-builder",
@@ -4350,6 +4477,7 @@ dependencies = [
"sc-cli",
"sc-client-api",
"sc-consensus",
+ "sc-consensus-aura",
"sc-executor",
"sc-executor-common",
"sc-executor-wasmtime",
@@ -4366,6 +4494,7 @@ dependencies = [
"sp-authority-discovery",
"sp-blockchain",
"sp-consensus",
+ "sp-consensus-aura",
"sp-consensus-grandpa",
"sp-core",
"sp-io",
@@ -4382,6 +4511,37 @@ dependencies = [
"url",
]
+[[package]]
+name = "curl"
+version = "0.4.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e2161dd6eba090ff1594084e95fd67aeccf04382ffea77999ea94ed42ec67b6"
+dependencies = [
+ "curl-sys",
+ "libc",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "socket2 0.5.6",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "curl-sys"
+version = "0.4.72+curl-8.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29cbdc8314c447d11e8fd156dcdd031d9e02a7a976163e396b548c03153bc9ea"
+dependencies = [
+ "cc",
+ "libc",
+ "libnghttp2-sys",
+ "libz-sys",
+ "openssl-sys",
+ "pkg-config",
+ "vcpkg",
+ "windows-sys 0.52.0",
+]
+
[[package]]
name = "curve25519-dalek"
version = "3.2.0"
@@ -4418,8 +4578,8 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -4457,8 +4617,8 @@ dependencies = [
"cc",
"codespan-reporting",
"once_cell",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"scratch",
"syn 2.0.53",
]
@@ -4475,8 +4635,8 @@ version = "1.0.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50c49547d73ba8dcfd4ad7325d64c6d5391ff4224d498fc39a6f3f49825a530d"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -4564,8 +4724,8 @@ version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -4575,8 +4735,8 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e79116f119dd1dba1abf1f3405f03b9b0e79a27a3883864bfebded8a3dc768cd"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -4586,8 +4746,8 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -4598,8 +4758,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
dependencies = [
"convert_case",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"rustc_version 0.4.0",
"syn 1.0.109",
]
@@ -4694,8 +4854,8 @@ version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -4754,8 +4914,8 @@ dependencies = [
"common-path",
"derive-syn-parse 0.2.0",
"once_cell",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"regex",
"syn 2.0.53",
"termcolor",
@@ -4803,8 +4963,8 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -4825,10 +4985,19 @@ dependencies = [
"elliptic-curve",
"rfc6979",
"serdect",
- "signature",
+ "signature 2.1.0",
"spki",
]
+[[package]]
+name = "ed25519"
+version = "1.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7"
+dependencies = [
+ "signature 1.6.4",
+]
+
[[package]]
name = "ed25519"
version = "2.2.2"
@@ -4836,7 +5005,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60f6d271ca33075c88028be6f04d502853d63a5ece419d269c15315d4fc1cf1d"
dependencies = [
"pkcs8",
- "signature",
+ "signature 2.1.0",
+]
+
+[[package]]
+name = "ed25519-dalek"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d"
+dependencies = [
+ "curve25519-dalek 3.2.0",
+ "ed25519 1.5.3",
+ "rand 0.7.3",
+ "serde",
+ "sha2 0.9.9",
+ "zeroize",
]
[[package]]
@@ -4846,7 +5029,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f628eaec48bfd21b865dc2950cfa014450c01d2fa2b69a86c2fd5844ec523c0"
dependencies = [
"curve25519-dalek 4.1.2",
- "ed25519",
+ "ed25519 2.2.2",
"rand_core 0.6.4",
"serde",
"sha2 0.10.7",
@@ -4875,7 +5058,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9"
dependencies = [
"curve25519-dalek 4.1.2",
- "ed25519",
+ "ed25519 2.2.2",
"hashbrown 0.14.3",
"hex",
"rand_core 0.6.4",
@@ -4963,11 +5146,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116"
dependencies = [
"heck 0.4.1",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
+[[package]]
+name = "enum-as-inner"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
+ "syn 2.0.53",
+]
+
[[package]]
name = "enumflags2"
version = "0.7.7"
@@ -4983,8 +5178,8 @@ version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -4994,8 +5189,8 @@ version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -5057,6 +5252,21 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+[[package]]
+name = "equivocation-detector"
+version = "0.1.0"
+dependencies = [
+ "async-std",
+ "async-trait",
+ "bp-header-chain",
+ "finality-relay",
+ "frame-support",
+ "futures",
+ "log",
+ "num-traits",
+ "relay-utils",
+]
+
[[package]]
name = "erased-serde"
version = "0.4.4"
@@ -5182,8 +5392,8 @@ checksum = "a718c0675c555c5f976fff4ea9e2c150fa06cefa201cadef87cfbf9324075881"
dependencies = [
"blake3",
"fs-err",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
]
[[package]]
@@ -5194,8 +5404,8 @@ checksum = "5f86a749cf851891866c10515ef6c299b5c69661465e9c3bbe7e07a2b77fb0f7"
dependencies = [
"blake2 0.10.6",
"fs-err",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -5266,8 +5476,8 @@ dependencies = [
"expander 0.0.4",
"indexmap 1.9.3",
"proc-macro-crate 1.3.1",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
"thiserror",
]
@@ -5362,10 +5572,25 @@ dependencies = [
"num-traits",
"parity-scale-codec",
"parking_lot 0.12.1",
- "rand",
+ "rand 0.8.5",
"scale-info",
]
+[[package]]
+name = "finality-relay"
+version = "0.1.0"
+dependencies = [
+ "async-std",
+ "async-trait",
+ "backoff",
+ "bp-header-chain",
+ "futures",
+ "log",
+ "num-traits",
+ "parking_lot 0.12.1",
+ "relay-utils",
+]
+
[[package]]
name = "findshlibs"
version = "0.10.2"
@@ -5385,7 +5610,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534"
dependencies = [
"byteorder",
- "rand",
+ "rand 0.8.5",
"rustc-hex",
"static_assertions",
]
@@ -5422,6 +5647,21 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
[[package]]
name = "fork-tree"
version = "12.0.0"
@@ -5500,9 +5740,10 @@ dependencies = [
"linked-hash-map",
"log",
"parity-scale-codec",
- "rand",
+ "rand 0.8.5",
"rand_pcg",
"sc-block-builder",
+ "sc-chain-spec",
"sc-cli",
"sc-client-api",
"sc-client-db",
@@ -5516,6 +5757,7 @@ dependencies = [
"sp-core",
"sp-database",
"sp-externalities 0.25.0",
+ "sp-genesis-builder",
"sp-inherents",
"sp-io",
"sp-keystore",
@@ -5550,8 +5792,8 @@ dependencies = [
"frame-support",
"parity-scale-codec",
"proc-macro-crate 3.0.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"scale-info",
"sp-arithmetic",
"syn 2.0.53",
@@ -5566,7 +5808,7 @@ dependencies = [
"frame-support",
"frame-system",
"parity-scale-codec",
- "rand",
+ "rand 0.8.5",
"scale-info",
"sp-arithmetic",
"sp-core",
@@ -5586,7 +5828,7 @@ dependencies = [
"frame-support",
"honggfuzz",
"parity-scale-codec",
- "rand",
+ "rand 0.8.5",
"scale-info",
"sp-arithmetic",
"sp-npos-elections",
@@ -5628,6 +5870,20 @@ dependencies = [
"serde",
]
+[[package]]
+name = "frame-omni-bencher"
+version = "0.1.0"
+dependencies = [
+ "clap 4.5.3",
+ "cumulus-primitives-proof-size-hostfunction",
+ "env_logger 0.11.3",
+ "frame-benchmarking-cli",
+ "log",
+ "sc-cli",
+ "sp-runtime",
+ "sp-statement-store",
+]
+
[[package]]
name = "frame-remote-externalities"
version = "0.35.0"
@@ -5707,8 +5963,8 @@ dependencies = [
"itertools 0.10.5",
"macro_magic",
"proc-macro-warning",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"regex",
"sp-crypto-hashing",
"syn 2.0.53",
@@ -5720,8 +5976,8 @@ version = "10.0.0"
dependencies = [
"frame-support-procedural-tools-derive",
"proc-macro-crate 3.0.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -5729,8 +5985,8 @@ dependencies = [
name = "frame-support-procedural-tools-derive"
version = "11.0.0"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -5962,8 +6218,8 @@ version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -6094,7 +6350,7 @@ version = "0.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9"
dependencies = [
- "rand",
+ "rand 0.8.5",
"rand_core 0.6.4",
]
@@ -6145,6 +6401,18 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+[[package]]
+name = "gloo-timers"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "js-sys",
+ "wasm-bindgen",
+]
+
[[package]]
name = "glutton-westend-runtime"
version = "3.0.0"
@@ -6205,7 +6473,7 @@ dependencies = [
"nonzero_ext",
"parking_lot 0.12.1",
"quanta",
- "rand",
+ "rand 0.8.5",
"smallvec",
]
@@ -6312,6 +6580,15 @@ dependencies = [
"hashbrown 0.14.3",
]
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
[[package]]
name = "heck"
version = "0.4.1"
@@ -6622,8 +6899,8 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -6642,8 +6919,8 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
]
[[package]]
@@ -6781,8 +7058,35 @@ dependencies = [
]
[[package]]
-name = "itertools"
-version = "0.10.5"
+name = "isahc"
+version = "1.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "334e04b4d781f436dc315cb1e7515bd96826426345d498149e4bde36b67f8ee9"
+dependencies = [
+ "async-channel",
+ "castaway",
+ "crossbeam-utils",
+ "curl",
+ "curl-sys",
+ "encoding_rs",
+ "event-listener 2.5.3",
+ "futures-lite",
+ "http",
+ "log",
+ "mime",
+ "once_cell",
+ "polling",
+ "slab",
+ "sluice",
+ "tracing",
+ "tracing-futures",
+ "url",
+ "waker-fn",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
dependencies = [
@@ -6828,6 +7132,17 @@ version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd"
+[[package]]
+name = "jsonpath_lib"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f"
+dependencies = [
+ "log",
+ "serde",
+ "serde_json",
+]
+
[[package]]
name = "jsonrpsee"
version = "0.22.2"
@@ -6881,7 +7196,7 @@ dependencies = [
"jsonrpsee-types",
"parking_lot 0.12.1",
"pin-project",
- "rand",
+ "rand 0.8.5",
"rustc-hash",
"serde",
"serde_json",
@@ -6919,8 +7234,8 @@ checksum = "30ca066e73dd70294aebc5c2675d8ffae43be944af027c857ce0d4c51785f014"
dependencies = [
"heck 0.4.1",
"proc-macro-crate 3.0.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -7138,6 +7453,15 @@ dependencies = [
"substrate-wasm-builder",
]
+[[package]]
+name = "kv-log-macro"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
+dependencies = [
+ "log",
+]
+
[[package]]
name = "kvdb"
version = "0.13.0"
@@ -7262,6 +7586,16 @@ version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
+[[package]]
+name = "libnghttp2-sys"
+version = "0.1.9+1.58.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b57e858af2798e167e709b9d969325b6d8e9d50232fcbc494d7d54f976854a64"
+dependencies = [
+ "cc",
+ "libc",
+]
+
[[package]]
name = "libp2p"
version = "0.51.4"
@@ -7339,7 +7673,7 @@ dependencies = [
"parking_lot 0.12.1",
"pin-project",
"quick-protobuf",
- "rand",
+ "rand 0.8.5",
"rw-stream-sink",
"smallvec",
"thiserror",
@@ -7358,7 +7692,7 @@ dependencies = [
"log",
"parking_lot 0.12.1",
"smallvec",
- "trust-dns-resolver",
+ "trust-dns-resolver 0.22.0",
]
[[package]]
@@ -7390,12 +7724,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce"
dependencies = [
"bs58 0.4.0",
- "ed25519-dalek",
+ "ed25519-dalek 2.1.0",
"log",
"multiaddr",
"multihash 0.17.0",
"quick-protobuf",
- "rand",
+ "rand 0.8.5",
"sha2 0.10.7",
"thiserror",
"zeroize",
@@ -7420,7 +7754,7 @@ dependencies = [
"libp2p-swarm",
"log",
"quick-protobuf",
- "rand",
+ "rand 0.8.5",
"sha2 0.10.7",
"smallvec",
"thiserror",
@@ -7442,11 +7776,11 @@ dependencies = [
"libp2p-identity",
"libp2p-swarm",
"log",
- "rand",
+ "rand 0.8.5",
"smallvec",
"socket2 0.4.9",
"tokio",
- "trust-dns-proto",
+ "trust-dns-proto 0.22.0",
"void",
]
@@ -7478,7 +7812,7 @@ dependencies = [
"log",
"once_cell",
"quick-protobuf",
- "rand",
+ "rand 0.8.5",
"sha2 0.10.7",
"snow",
"static_assertions",
@@ -7500,7 +7834,7 @@ dependencies = [
"libp2p-core",
"libp2p-swarm",
"log",
- "rand",
+ "rand 0.8.5",
"void",
]
@@ -7520,7 +7854,7 @@ dependencies = [
"log",
"parking_lot 0.12.1",
"quinn-proto",
- "rand",
+ "rand 0.8.5",
"rustls 0.20.8",
"thiserror",
"tokio",
@@ -7538,7 +7872,7 @@ dependencies = [
"libp2p-core",
"libp2p-identity",
"libp2p-swarm",
- "rand",
+ "rand 0.8.5",
"smallvec",
]
@@ -7557,7 +7891,7 @@ dependencies = [
"libp2p-identity",
"libp2p-swarm-derive",
"log",
- "rand",
+ "rand 0.8.5",
"smallvec",
"tokio",
"void",
@@ -7570,7 +7904,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fba456131824ab6acd4c7bf61e9c0f0a3014b5fc9868ccb8e10d344594cdc4f"
dependencies = [
"heck 0.4.1",
- "quote",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -7605,7 +7939,7 @@ dependencies = [
"rustls 0.20.8",
"thiserror",
"webpki",
- "x509-parser",
+ "x509-parser 0.14.0",
"yasna",
]
@@ -7683,7 +8017,7 @@ dependencies = [
"libsecp256k1-core",
"libsecp256k1-gen-ecmult",
"libsecp256k1-gen-genmult",
- "rand",
+ "rand 0.8.5",
"serde",
"sha2 0.9.9",
"typenum",
@@ -7725,6 +8059,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b"
dependencies = [
"cc",
+ "libc",
"pkg-config",
"vcpkg",
]
@@ -7810,6 +8145,60 @@ dependencies = [
"paste",
]
+[[package]]
+name = "litep2p"
+version = "0.3.0"
+source = "git+https://github.com/paritytech/litep2p?branch=master#b142c9eb611fb2fe78d2830266a3675b37299ceb"
+dependencies = [
+ "async-trait",
+ "bs58 0.4.0",
+ "bytes",
+ "cid 0.10.1",
+ "ed25519-dalek 1.0.1",
+ "futures",
+ "futures-timer",
+ "hex-literal",
+ "indexmap 2.2.3",
+ "libc",
+ "mockall",
+ "multiaddr",
+ "multihash 0.17.0",
+ "network-interface",
+ "nohash-hasher",
+ "parking_lot 0.12.1",
+ "pin-project",
+ "prost 0.11.9",
+ "prost-build",
+ "quinn",
+ "rand 0.8.5",
+ "rcgen",
+ "ring 0.16.20",
+ "rustls 0.20.8",
+ "serde",
+ "sha2 0.10.7",
+ "simple-dns",
+ "smallvec",
+ "snow",
+ "socket2 0.5.6",
+ "static_assertions",
+ "str0m",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+ "tokio-tungstenite 0.20.1",
+ "tokio-util",
+ "tracing",
+ "trust-dns-resolver 0.23.2",
+ "uint",
+ "unsigned-varint",
+ "url",
+ "webpki",
+ "x25519-dalek 2.0.0",
+ "x509-parser 0.15.1",
+ "yasna",
+ "zeroize",
+]
+
[[package]]
name = "lock_api"
version = "0.4.10"
@@ -7909,7 +8298,7 @@ checksum = "e03844fc635e92f3a0067e25fa4bf3e3dbf3f2927bf3aa01bb7bc8f1c428949d"
dependencies = [
"macro_magic_core",
"macro_magic_macros",
- "quote",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -7922,8 +8311,8 @@ dependencies = [
"const-random",
"derive-syn-parse 0.1.5",
"macro_magic_core_macros",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -7933,8 +8322,8 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ea73aa640dc01d62a590d48c0c3521ed739d53b27f919b25c3551e233481654"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -7945,7 +8334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef9d79ae96aaba821963320eb2b6e34d17df1e5a83d8a1985c29cc5be59577b3"
dependencies = [
"macro_magic_core",
- "quote",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -8076,6 +8465,24 @@ dependencies = [
"zeroize",
]
+[[package]]
+name = "messages-relay"
+version = "0.1.0"
+dependencies = [
+ "async-std",
+ "async-trait",
+ "bp-messages",
+ "env_logger 0.11.3",
+ "finality-relay",
+ "futures",
+ "hex",
+ "log",
+ "num-traits",
+ "parking_lot 0.12.1",
+ "relay-utils",
+ "sp-arithmetic",
+]
+
[[package]]
name = "mick-jaeger"
version = "0.1.8"
@@ -8083,7 +8490,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532"
dependencies = [
"futures",
- "rand",
+ "rand 0.8.5",
"thrift",
]
@@ -8189,7 +8596,7 @@ dependencies = [
"lioness",
"log",
"parking_lot 0.12.1",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"rand_distr",
"subtle 2.5.0",
@@ -8257,8 +8664,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb"
dependencies = [
"cfg-if",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -8315,10 +8722,14 @@ version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfd8a792c1694c6da4f68db0a9d707c72bd260994da179e6030a5dcee00bb815"
dependencies = [
+ "blake2b_simd",
+ "blake2s_simd",
+ "blake3",
"core2",
"digest 0.10.7",
"multihash-derive 0.8.0",
"sha2 0.10.7",
+ "sha3",
"unsigned-varint",
]
@@ -8360,8 +8771,8 @@ checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd"
dependencies = [
"proc-macro-crate 1.3.1",
"proc-macro-error",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
"synstructure",
]
@@ -8385,8 +8796,8 @@ checksum = "d38685e08adb338659871ecfc6ee47ba9b22dcc8abcf6975d379cc49145c3040"
dependencies = [
"proc-macro-crate 1.3.1",
"proc-macro-error",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
"synstructure",
]
@@ -8433,8 +8844,8 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -8445,7 +8856,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7bddcd3bf5144b6392de80e04c347cd7fab2508f6df16a85fc496ecd5cec39bc"
dependencies = [
"clap 3.2.25",
- "rand",
+ "rand 0.8.5",
]
[[package]]
@@ -8520,6 +8931,18 @@ dependencies = [
"tokio",
]
+[[package]]
+name = "network-interface"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae72fd9dbd7f55dda80c00d66acc3b2130436fcba9ea89118fc508eaae48dfb0"
+dependencies = [
+ "cc",
+ "libc",
+ "thiserror",
+ "winapi",
+]
+
[[package]]
name = "nix"
version = "0.24.3"
@@ -8586,7 +9009,7 @@ dependencies = [
"node-primitives",
"node-testing",
"parity-db",
- "rand",
+ "rand 0.8.5",
"sc-basic-authorship",
"sc-client-api",
"sc-transaction-pool",
@@ -8741,6 +9164,15 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
+[[package]]
+name = "ntapi"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"
+dependencies = [
+ "winapi",
+]
+
[[package]]
name = "nu-ansi-term"
version = "0.46.0"
@@ -8848,6 +9280,15 @@ dependencies = [
"libc",
]
+[[package]]
+name = "num_threads"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
+dependencies = [
+ "libc",
+]
+
[[package]]
name = "number_prefix"
version = "0.4.0"
@@ -8908,12 +9349,60 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+[[package]]
+name = "openssl"
+version = "0.10.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
+dependencies = [
+ "bitflags 2.4.0",
+ "cfg-if",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
+dependencies = [
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
+ "syn 2.0.53",
+]
+
[[package]]
name = "openssl-probe"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+[[package]]
+name = "openssl-src"
+version = "300.2.3+3.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cff92b6f71555b61bb9315f7c64da3ca43d87531622120fea0195fc761b4843"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.102"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2"
+dependencies = [
+ "cc",
+ "libc",
+ "openssl-src",
+ "pkg-config",
+ "vcpkg",
+]
+
[[package]]
name = "option-ext"
version = "0.2.0"
@@ -8948,8 +9437,8 @@ dependencies = [
"itertools 0.11.0",
"petgraph",
"proc-macro-crate 1.3.1",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -9216,7 +9705,7 @@ dependencies = [
"frame-election-provider-support",
"honggfuzz",
"pallet-bags-list",
- "rand",
+ "rand 0.8.5",
]
[[package]]
@@ -9327,6 +9816,30 @@ dependencies = [
"sp-std 14.0.0",
]
+[[package]]
+name = "pallet-bridge-beefy"
+version = "0.1.0"
+dependencies = [
+ "bp-beefy",
+ "bp-runtime",
+ "bp-test-utils",
+ "ckb-merkle-mountain-range",
+ "frame-support",
+ "frame-system",
+ "log",
+ "pallet-beefy-mmr",
+ "pallet-mmr",
+ "parity-scale-codec",
+ "rand 0.8.5",
+ "scale-info",
+ "serde",
+ "sp-consensus-beefy",
+ "sp-core",
+ "sp-io",
+ "sp-runtime",
+ "sp-std 14.0.0",
+]
+
[[package]]
name = "pallet-bridge-grandpa"
version = "0.7.0"
@@ -9464,7 +9977,7 @@ dependencies = [
"pallet-session",
"pallet-timestamp",
"parity-scale-codec",
- "rand",
+ "rand 0.8.5",
"scale-info",
"sp-consensus-aura",
"sp-core",
@@ -9533,7 +10046,7 @@ dependencies = [
"parity-scale-codec",
"paste",
"pretty_assertions",
- "rand",
+ "rand 0.8.5",
"rand_pcg",
"scale-info",
"serde",
@@ -9608,8 +10121,8 @@ dependencies = [
name = "pallet-contracts-proc-macro"
version = "18.0.0"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -9751,7 +10264,7 @@ dependencies = [
"pallet-election-provider-support-benchmarking",
"parity-scale-codec",
"parking_lot 0.12.1",
- "rand",
+ "rand 0.8.5",
"scale-info",
"sp-arithmetic",
"sp-core",
@@ -10124,7 +10637,7 @@ dependencies = [
"frame-system",
"log",
"parity-scale-codec",
- "rand",
+ "rand 0.8.5",
"rand_distr",
"scale-info",
"serde",
@@ -10357,7 +10870,7 @@ dependencies = [
"honggfuzz",
"log",
"pallet-nomination-pools",
- "rand",
+ "rand 0.8.5",
"sp-io",
"sp-runtime",
"sp-tracing 16.0.0",
@@ -10772,7 +11285,7 @@ dependencies = [
"pallet-staking-reward-curve",
"pallet-timestamp",
"parity-scale-codec",
- "rand",
+ "rand 0.8.5",
"scale-info",
"sp-core",
"sp-io",
@@ -10849,8 +11362,8 @@ name = "pallet-staking-reward-curve"
version = "11.0.0"
dependencies = [
"proc-macro-crate 3.0.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"sp-runtime",
"syn 2.0.53",
]
@@ -11400,6 +11913,21 @@ dependencies = [
"substrate-wasm-builder",
]
+[[package]]
+name = "parachains-relay"
+version = "0.1.0"
+dependencies = [
+ "async-std",
+ "async-trait",
+ "bp-polkadot-core",
+ "futures",
+ "log",
+ "parity-scale-codec",
+ "relay-substrate-client",
+ "relay-utils",
+ "sp-core",
+]
+
[[package]]
name = "parachains-runtimes-test-utils"
version = "7.0.0"
@@ -11438,7 +11966,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9"
dependencies = [
"bitcoin_hashes 0.13.0",
- "rand",
+ "rand 0.8.5",
"rand_core 0.6.4",
"serde",
"unicode-normalization",
@@ -11465,7 +11993,7 @@ dependencies = [
"lz4",
"memmap2 0.5.10",
"parking_lot 0.12.1",
- "rand",
+ "rand 0.8.5",
"siphasher",
"snap",
]
@@ -11492,8 +12020,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260"
dependencies = [
"proc-macro-crate 1.3.1",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -11527,7 +12055,7 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2"
dependencies = [
- "proc-macro2",
+ "proc-macro2 1.0.75",
"syn 1.0.109",
"synstructure",
]
@@ -11948,8 +12476,8 @@ checksum = "68ca01446f50dbda87c1786af8770d535423fa8a53aec03b8f4e3d7eb10e0929"
dependencies = [
"pest",
"pest_meta",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -11989,8 +12517,8 @@ version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -12103,7 +12631,7 @@ dependencies = [
"polkadot-node-subsystem-util",
"polkadot-primitives",
"polkadot-primitives-test-helpers",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"rand_core 0.6.4",
"schnorrkel 0.11.4",
@@ -12129,7 +12657,7 @@ dependencies = [
"polkadot-node-subsystem-test-helpers",
"polkadot-node-subsystem-util",
"polkadot-primitives",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"sp-application-crypto",
"sp-authority-discovery",
@@ -12158,7 +12686,7 @@ dependencies = [
"polkadot-primitives",
"polkadot-primitives-test-helpers",
"polkadot-subsystem-bench",
- "rand",
+ "rand 0.8.5",
"sc-network",
"schnellru",
"sp-core",
@@ -12190,7 +12718,7 @@ dependencies = [
"polkadot-primitives",
"polkadot-primitives-test-helpers",
"polkadot-subsystem-bench",
- "rand",
+ "rand 0.8.5",
"sc-network",
"schnellru",
"sp-application-crypto",
@@ -12228,7 +12756,6 @@ dependencies = [
"sp-runtime",
"substrate-build-script-utils",
"thiserror",
- "try-runtime-cli",
]
[[package]]
@@ -12335,7 +12862,7 @@ dependencies = [
"polkadot-node-subsystem-util",
"polkadot-primitives",
"quickcheck",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"sc-network",
"sc-network-common",
@@ -12427,7 +12954,7 @@ dependencies = [
"polkadot-overseer",
"polkadot-primitives",
"polkadot-primitives-test-helpers",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"rand_core 0.6.4",
"sc-keystore",
@@ -12705,7 +13232,7 @@ dependencies = [
"polkadot-parachain-primitives",
"polkadot-primitives",
"procfs",
- "rand",
+ "rand 0.8.5",
"rococo-runtime",
"rusty-fork",
"sc-sysinfo",
@@ -12843,6 +13370,7 @@ dependencies = [
"polkadot-node-primitives",
"polkadot-primitives",
"sc-network",
+ "sc-network-types",
"sp-core",
"thiserror",
"tokio",
@@ -12889,10 +13417,12 @@ dependencies = [
"polkadot-node-jaeger",
"polkadot-node-primitives",
"polkadot-primitives",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"sc-authority-discovery",
"sc-network",
+ "sc-network-types",
+ "sp-runtime",
"strum 0.26.2",
"thiserror",
"tracing-gum",
@@ -12967,6 +13497,7 @@ dependencies = [
"polkadot-statement-table",
"sc-client-api",
"sc-network",
+ "sc-network-types",
"sc-transaction-pool-api",
"smallvec",
"sp-api",
@@ -13010,7 +13541,7 @@ dependencies = [
"polkadot-primitives",
"polkadot-primitives-test-helpers",
"prioritized-metered-channel",
- "rand",
+ "rand 0.8.5",
"sc-client-api",
"schnellru",
"sp-application-crypto",
@@ -13191,7 +13722,7 @@ name = "polkadot-primitives-test-helpers"
version = "1.0.0"
dependencies = [
"polkadot-primitives",
- "rand",
+ "rand 0.8.5",
"sp-application-crypto",
"sp-core",
"sp-keyring",
@@ -13330,7 +13861,7 @@ dependencies = [
"polkadot-primitives",
"polkadot-primitives-test-helpers",
"polkadot-runtime-metrics",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"rstest",
"rustc-hex",
@@ -13665,12 +14196,13 @@ dependencies = [
"prometheus",
"pyroscope",
"pyroscope_pprofrs",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"rand_core 0.6.4",
"rand_distr",
"sc-keystore",
"sc-network",
+ "sc-network-types",
"sc-service",
"schnorrkel 0.11.4",
"serde",
@@ -13743,7 +14275,7 @@ dependencies = [
"polkadot-node-subsystem-types",
"polkadot-node-subsystem-util",
"polkadot-primitives",
- "rand",
+ "rand 0.8.5",
"sp-core",
"sp-keystore",
"substrate-build-script-utils",
@@ -13836,7 +14368,7 @@ dependencies = [
"polkadot-runtime-parachains",
"polkadot-service",
"polkadot-test-runtime",
- "rand",
+ "rand 0.8.5",
"sc-authority-discovery",
"sc-chain-spec",
"sc-cli",
@@ -13925,8 +14457,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c"
dependencies = [
"polkavm-common",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -14035,7 +14567,7 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9"
dependencies = [
- "rand",
+ "rand 0.8.5",
]
[[package]]
@@ -14122,7 +14654,7 @@ version = "0.1.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86"
dependencies = [
- "proc-macro2",
+ "proc-macro2 1.0.75",
"syn 1.0.109",
]
@@ -14132,7 +14664,7 @@ version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62"
dependencies = [
- "proc-macro2",
+ "proc-macro2 1.0.75",
"syn 2.0.53",
]
@@ -14193,8 +14725,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
"version_check",
]
@@ -14205,8 +14737,8 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"version_check",
]
@@ -14222,11 +14754,20 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b698b0b09d40e9b7c1a47b132d66a8b54bcd20583d9b6d06e4535e383b4405c"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
+[[package]]
+name = "proc-macro2"
+version = "0.4.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
+dependencies = [
+ "unicode-xid 0.1.0",
+]
+
[[package]]
name = "proc-macro2"
version = "1.0.75"
@@ -14294,8 +14835,8 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -14322,7 +14863,7 @@ dependencies = [
"bitflags 2.4.0",
"lazy_static",
"num-traits",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"rand_xorshift",
"regex-syntax 0.8.2",
@@ -14381,8 +14922,8 @@ checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4"
dependencies = [
"anyhow",
"itertools 0.10.5",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -14394,8 +14935,8 @@ checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
dependencies = [
"anyhow",
"itertools 0.11.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -14499,7 +15040,7 @@ checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6"
dependencies = [
"env_logger 0.8.4",
"log",
- "rand",
+ "rand 0.8.5",
]
[[package]]
@@ -14513,6 +15054,24 @@ dependencies = [
"pin-project-lite 0.1.12",
]
+[[package]]
+name = "quinn"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e8b432585672228923edbbf64b8b12c14e1112f62e88737655b4a083dbcd78e"
+dependencies = [
+ "bytes",
+ "pin-project-lite 0.2.12",
+ "quinn-proto",
+ "quinn-udp",
+ "rustc-hash",
+ "rustls 0.20.8",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "webpki",
+]
+
[[package]]
name = "quinn-proto"
version = "0.9.5"
@@ -14520,7 +15079,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c956be1b23f4261676aed05a0046e204e8a6836e50203902683a718af0797989"
dependencies = [
"bytes",
- "rand",
+ "rand 0.8.5",
"ring 0.16.20",
"rustc-hash",
"rustls 0.20.8",
@@ -14531,13 +15090,35 @@ dependencies = [
"webpki",
]
+[[package]]
+name = "quinn-udp"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "641538578b21f5e5c8ea733b736895576d0fe329bb883b937db6f4d163dbaaf4"
+dependencies = [
+ "libc",
+ "quinn-proto",
+ "socket2 0.4.9",
+ "tracing",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "quote"
+version = "0.6.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
+dependencies = [
+ "proc-macro2 0.4.30",
+]
+
[[package]]
name = "quote"
version = "1.0.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
dependencies = [
- "proc-macro2",
+ "proc-macro2 1.0.75",
]
[[package]]
@@ -14546,6 +15127,19 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
+[[package]]
+name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom 0.1.16",
+ "libc",
+ "rand_chacha 0.2.2",
+ "rand_core 0.5.1",
+ "rand_hc",
+]
+
[[package]]
name = "rand"
version = "0.8.5"
@@ -14602,7 +15196,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
dependencies = [
"num-traits",
- "rand",
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core 0.5.1",
]
[[package]]
@@ -14640,9 +15243,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
[[package]]
name = "rayon"
-version = "1.7.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
dependencies = [
"either",
"rayon-core",
@@ -14650,19 +15253,37 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.11.0"
+version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
dependencies = [
- "crossbeam-channel",
"crossbeam-deque",
"crossbeam-utils",
- "num_cpus",
]
[[package]]
-name = "rcgen"
-version = "0.10.0"
+name = "rbtag"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72c64936fcc0b811890a9d90020f3df5cec9c604efde88af7db6a35d365132a3"
+dependencies = [
+ "rbtag_derive",
+]
+
+[[package]]
+name = "rbtag_derive"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b75511b710ccca8adbb211e04763bd8c78fed585b0ec188a20ed9b0dd95567c4"
+dependencies = [
+ "proc-macro2 0.4.30",
+ "quote 0.6.13",
+ "syn 0.15.44",
+]
+
+[[package]]
+name = "rcgen"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b"
dependencies = [
@@ -14737,8 +15358,8 @@ version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -14823,6 +15444,72 @@ version = "1.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc"
+[[package]]
+name = "relay-substrate-client"
+version = "0.1.0"
+dependencies = [
+ "async-std",
+ "async-trait",
+ "bp-header-chain",
+ "bp-messages",
+ "bp-polkadot-core",
+ "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",
+ "parity-scale-codec",
+ "rand 0.8.5",
+ "relay-utils",
+ "sc-chain-spec",
+ "sc-rpc-api",
+ "sc-transaction-pool-api",
+ "scale-info",
+ "sp-consensus-grandpa",
+ "sp-core",
+ "sp-rpc",
+ "sp-runtime",
+ "sp-std 14.0.0",
+ "sp-trie",
+ "sp-version",
+ "staging-xcm",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "relay-utils"
+version = "0.1.0"
+dependencies = [
+ "ansi_term",
+ "anyhow",
+ "async-std",
+ "async-trait",
+ "backoff",
+ "bp-runtime",
+ "env_logger 0.11.3",
+ "futures",
+ "isahc",
+ "jsonpath_lib",
+ "log",
+ "num-traits",
+ "serde_json",
+ "sp-runtime",
+ "substrate-prometheus-endpoint",
+ "sysinfo",
+ "thiserror",
+ "time",
+ "tokio",
+]
+
[[package]]
name = "remote-ext-tests-bags-list"
version = "1.0.0"
@@ -15228,8 +15915,8 @@ checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605"
dependencies = [
"cfg-if",
"glob",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"regex",
"relative-path",
"rustc_version 0.4.0",
@@ -15278,7 +15965,7 @@ dependencies = [
"parity-scale-codec",
"primitive-types",
"proptest",
- "rand",
+ "rand 0.8.5",
"rlp",
"ruint-macro",
"serde",
@@ -15590,15 +16277,16 @@ dependencies = [
"libp2p",
"linked_hash_set",
"log",
- "multihash 0.18.1",
+ "multihash 0.17.0",
"multihash-codetable",
"parity-scale-codec",
"prost 0.12.3",
"prost-build",
"quickcheck",
- "rand",
+ "rand 0.8.5",
"sc-client-api",
"sc-network",
+ "sc-network-types",
"sp-api",
"sp-authority-discovery",
"sp-blockchain",
@@ -15687,8 +16375,8 @@ name = "sc-chain-spec-derive"
version = "11.0.0"
dependencies = [
"proc-macro-crate 3.0.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -15708,7 +16396,7 @@ dependencies = [
"names",
"parity-bip39",
"parity-scale-codec",
- "rand",
+ "rand 0.8.5",
"regex",
"rpassword",
"sc-client-api",
@@ -15781,7 +16469,7 @@ dependencies = [
"parity-scale-codec",
"parking_lot 0.12.1",
"quickcheck",
- "rand",
+ "rand 0.8.5",
"sc-client-api",
"sc-state-db",
"schnellru",
@@ -15804,11 +16492,11 @@ dependencies = [
"async-trait",
"futures",
"futures-timer",
- "libp2p-identity",
"log",
"mockall",
"parking_lot 0.12.1",
"sc-client-api",
+ "sc-network-types",
"sc-utils",
"serde",
"sp-api",
@@ -15949,6 +16637,7 @@ dependencies = [
"sc-network-gossip",
"sc-network-sync",
"sc-network-test",
+ "sc-network-types",
"sc-utils",
"serde",
"sp-api",
@@ -16022,7 +16711,7 @@ dependencies = [
"log",
"parity-scale-codec",
"parking_lot 0.12.1",
- "rand",
+ "rand 0.8.5",
"sc-block-builder",
"sc-chain-spec",
"sc-client-api",
@@ -16032,6 +16721,7 @@ dependencies = [
"sc-network-gossip",
"sc-network-sync",
"sc-network-test",
+ "sc-network-types",
"sc-telemetry",
"sc-transaction-pool-api",
"sc-utils",
@@ -16290,7 +16980,6 @@ dependencies = [
"bytes",
"futures",
"futures-timer",
- "libp2p-identity",
"log",
"mixnet",
"multiaddr",
@@ -16298,6 +16987,7 @@ dependencies = [
"parking_lot 0.12.1",
"sc-client-api",
"sc-network",
+ "sc-network-types",
"sc-transaction-pool-api",
"sp-api",
"sp-consensus",
@@ -16318,6 +17008,7 @@ dependencies = [
"async-trait",
"asynchronous-codec",
"bytes",
+ "cid 0.9.0",
"either",
"fnv",
"futures",
@@ -16325,25 +17016,34 @@ dependencies = [
"ip_network",
"libp2p",
"linked_hash_set",
+ "litep2p",
"log",
"mockall",
"multistream-select",
+ "once_cell",
"parity-scale-codec",
"parking_lot 0.12.1",
"partial_sort",
"pin-project",
- "rand",
+ "prost 0.11.9",
+ "prost-build",
+ "rand 0.8.5",
+ "sc-block-builder",
"sc-client-api",
"sc-network-common",
"sc-network-light",
"sc-network-sync",
+ "sc-network-types",
"sc-utils",
+ "schnellru",
"serde",
"serde_json",
"smallvec",
"sp-arithmetic",
"sp-blockchain",
+ "sp-consensus",
"sp-core",
+ "sp-crypto-hashing",
"sp-runtime",
"sp-test-primitives",
"sp-tracing 16.0.0",
@@ -16357,36 +17057,11 @@ dependencies = [
"tokio-test",
"tokio-util",
"unsigned-varint",
+ "void",
"wasm-timer",
"zeroize",
]
-[[package]]
-name = "sc-network-bitswap"
-version = "0.33.0"
-dependencies = [
- "async-channel",
- "cid",
- "futures",
- "libp2p-identity",
- "log",
- "prost 0.12.3",
- "prost-build",
- "sc-block-builder",
- "sc-client-api",
- "sc-consensus",
- "sc-network",
- "sp-blockchain",
- "sp-consensus",
- "sp-crypto-hashing",
- "sp-runtime",
- "substrate-test-runtime",
- "substrate-test-runtime-client",
- "thiserror",
- "tokio",
- "unsigned-varint",
-]
-
[[package]]
name = "sc-network-common"
version = "0.33.0"
@@ -16398,6 +17073,7 @@ dependencies = [
"parity-scale-codec",
"prost-build",
"sc-consensus",
+ "sc-network-types",
"sp-consensus",
"sp-consensus-grandpa",
"sp-runtime",
@@ -16419,6 +17095,7 @@ dependencies = [
"sc-network",
"sc-network-common",
"sc-network-sync",
+ "sc-network-types",
"schnellru",
"sp-runtime",
"substrate-prometheus-endpoint",
@@ -16434,13 +17111,13 @@ dependencies = [
"array-bytes 6.1.0",
"async-channel",
"futures",
- "libp2p-identity",
"log",
"parity-scale-codec",
"prost 0.12.3",
"prost-build",
"sc-client-api",
"sc-network",
+ "sc-network-types",
"sp-blockchain",
"sp-core",
"sp-runtime",
@@ -16460,7 +17137,9 @@ dependencies = [
"sc-network",
"sc-network-common",
"sc-network-sync",
+ "sc-network-types",
"sp-consensus",
+ "sp-runtime",
"sp-statement-store",
"substrate-prometheus-endpoint",
]
@@ -16487,6 +17166,7 @@ dependencies = [
"sc-consensus",
"sc-network",
"sc-network-common",
+ "sc-network-types",
"sc-utils",
"schnellru",
"smallvec",
@@ -16515,7 +17195,7 @@ dependencies = [
"libp2p",
"log",
"parking_lot 0.12.1",
- "rand",
+ "rand 0.8.5",
"sc-block-builder",
"sc-client-api",
"sc-consensus",
@@ -16523,6 +17203,7 @@ dependencies = [
"sc-network-common",
"sc-network-light",
"sc-network-sync",
+ "sc-network-types",
"sc-service",
"sc-utils",
"sp-blockchain",
@@ -16547,17 +17228,32 @@ dependencies = [
"sc-network",
"sc-network-common",
"sc-network-sync",
+ "sc-network-types",
"sc-utils",
"sp-consensus",
"sp-runtime",
"substrate-prometheus-endpoint",
]
+[[package]]
+name = "sc-network-types"
+version = "0.10.0-dev"
+dependencies = [
+ "bs58 0.4.0",
+ "libp2p-identity",
+ "litep2p",
+ "multiaddr",
+ "multihash 0.17.0",
+ "rand 0.8.5",
+ "thiserror",
+]
+
[[package]]
name = "sc-offchain"
version = "29.0.0"
dependencies = [
"array-bytes 6.1.0",
+ "async-trait",
"bytes",
"fnv",
"futures",
@@ -16571,12 +17267,13 @@ dependencies = [
"once_cell",
"parity-scale-codec",
"parking_lot 0.12.1",
- "rand",
+ "rand 0.8.5",
"sc-block-builder",
"sc-client-api",
"sc-client-db",
"sc-network",
"sc-network-common",
+ "sc-network-types",
"sc-transaction-pool",
"sc-transaction-pool-api",
"sc-utils",
@@ -16694,7 +17391,7 @@ dependencies = [
"parity-scale-codec",
"parking_lot 0.12.1",
"pretty_assertions",
- "rand",
+ "rand 0.8.5",
"sc-block-builder",
"sc-chain-spec",
"sc-client-api",
@@ -16748,7 +17445,7 @@ dependencies = [
"parity-scale-codec",
"parking_lot 0.12.1",
"pin-project",
- "rand",
+ "rand 0.8.5",
"sc-chain-spec",
"sc-client-api",
"sc-client-db",
@@ -16757,11 +17454,11 @@ dependencies = [
"sc-informant",
"sc-keystore",
"sc-network",
- "sc-network-bitswap",
"sc-network-common",
"sc-network-light",
"sc-network-sync",
"sc-network-transactions",
+ "sc-network-types",
"sc-rpc",
"sc-rpc-server",
"sc-rpc-spec-v2",
@@ -16903,7 +17600,7 @@ dependencies = [
"futures",
"libc",
"log",
- "rand",
+ "rand 0.8.5",
"rand_pcg",
"regex",
"sc-telemetry",
@@ -16926,7 +17623,8 @@ dependencies = [
"log",
"parking_lot 0.12.1",
"pin-project",
- "rand",
+ "rand 0.8.5",
+ "sc-network",
"sc-utils",
"serde",
"serde_json",
@@ -16969,8 +17667,8 @@ name = "sc-tracing-proc-macro"
version = "11.0.0"
dependencies = [
"proc-macro-crate 3.0.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -17060,8 +17758,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7dc2f4e8bc344b9fc3d5f74f72c2e55bfc38d28dc2ebc69c194a3df424e4d9ac"
dependencies = [
"proc-macro-crate 1.3.1",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -17092,8 +17790,8 @@ version = "0.8.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0f696e21e10fa546b7ffb1c9672c6de8fbc7a81acf59524386d8639bf12737"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"serde_derive_internals",
"syn 1.0.109",
]
@@ -17172,6 +17870,21 @@ dependencies = [
"untrusted 0.7.1",
]
+[[package]]
+name = "sctp-proto"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f64cef148d3295c730c3cb340b0b252a4d570b1c7d4bf0808f88540b0a888bc"
+dependencies = [
+ "bytes",
+ "crc",
+ "fxhash",
+ "log",
+ "rand 0.8.5",
+ "slab",
+ "thiserror",
+]
+
[[package]]
name = "sec1"
version = "0.7.3"
@@ -17371,8 +18084,8 @@ version = "1.0.197"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -17382,8 +18095,8 @@ version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -17402,6 +18115,7 @@ version = "1.0.114"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
dependencies = [
+ "indexmap 2.2.3",
"itoa",
"ryu",
"serde",
@@ -17471,8 +18185,8 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -17498,6 +18212,7 @@ dependencies = [
"cfg-if",
"cpufeatures",
"digest 0.10.7",
+ "sha1-asm",
]
[[package]]
@@ -17511,6 +18226,15 @@ dependencies = [
"digest 0.10.7",
]
+[[package]]
+name = "sha1-asm"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ba6947745e7f86be3b8af00b7355857085dbdf8901393c89514510eb61f4e21"
+dependencies = [
+ "cc",
+]
+
[[package]]
name = "sha2"
version = "0.9.9"
@@ -17616,6 +18340,12 @@ dependencies = [
"libc",
]
+[[package]]
+name = "signature"
+version = "1.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"
+
[[package]]
name = "signature"
version = "2.1.0"
@@ -17639,6 +18369,15 @@ dependencies = [
"wide",
]
+[[package]]
+name = "simple-dns"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cae9a3fcdadafb6d97f4c0e007e4247b114ee0f119f650c3cbf3a8b3a1479694"
+dependencies = [
+ "bitflags 2.4.0",
+]
+
[[package]]
name = "simple-mermaid"
version = "0.1.1"
@@ -17686,6 +18425,17 @@ dependencies = [
"version_check",
]
+[[package]]
+name = "sluice"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5"
+dependencies = [
+ "async-channel",
+ "futures-core",
+ "futures-io",
+]
+
[[package]]
name = "smallvec"
version = "1.11.2"
@@ -17754,7 +18504,7 @@ dependencies = [
"pbkdf2",
"pin-project",
"poly1305 0.8.0",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"ruzstd",
"schnorrkel 0.10.2",
@@ -17797,7 +18547,7 @@ dependencies = [
"no-std-net",
"parking_lot 0.12.1",
"pin-project",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"serde",
"serde_json",
@@ -17847,7 +18597,6 @@ version = "0.2.0"
dependencies = [
"byte-slice-cast",
"frame-support",
- "frame-system",
"hex",
"hex-literal",
"parity-scale-codec",
@@ -17862,7 +18611,6 @@ dependencies = [
"sp-std 14.0.0",
"ssz_rs",
"ssz_rs_derive",
- "static_assertions",
]
[[package]]
@@ -17898,14 +18646,12 @@ dependencies = [
"hex-literal",
"parity-bytes",
"parity-scale-codec",
- "rand",
+ "rand 0.8.5",
"rlp",
- "rustc-hex",
"scale-info",
"serde",
"serde-big-array",
"serde_json",
- "sp-core",
"sp-io",
"sp-runtime",
"sp-std 14.0.0",
@@ -17921,7 +18667,7 @@ dependencies = [
"hex",
"lazy_static",
"parity-scale-codec",
- "rand",
+ "rand 0.8.5",
"scale-info",
"snowbridge-amcl",
"zeroize",
@@ -17951,17 +18697,13 @@ dependencies = [
"snowbridge-core",
"snowbridge-outbound-queue-merkle-tree",
"sp-api",
- "sp-core",
"sp-std 14.0.0",
- "staging-xcm",
]
[[package]]
name = "snowbridge-pallet-ethereum-client"
version = "0.2.0"
dependencies = [
- "bp-runtime",
- "byte-slice-cast",
"frame-benchmarking",
"frame-support",
"frame-system",
@@ -17969,8 +18711,7 @@ dependencies = [
"log",
"pallet-timestamp",
"parity-scale-codec",
- "rand",
- "rlp",
+ "rand 0.8.5",
"scale-info",
"serde",
"serde_json",
@@ -17983,8 +18724,6 @@ dependencies = [
"sp-keyring",
"sp-runtime",
"sp-std 14.0.0",
- "ssz_rs",
- "ssz_rs_derive",
"static_assertions",
]
@@ -17992,9 +18731,6 @@ dependencies = [
name = "snowbridge-pallet-ethereum-client-fixtures"
version = "0.9.0"
dependencies = [
- "frame-benchmarking",
- "frame-support",
- "frame-system",
"hex-literal",
"snowbridge-beacon-primitives",
"snowbridge-core",
@@ -18007,21 +18743,18 @@ name = "snowbridge-pallet-inbound-queue"
version = "0.2.0"
dependencies = [
"alloy-primitives",
- "alloy-rlp",
"alloy-sol-types",
"frame-benchmarking",
"frame-support",
"frame-system",
"hex-literal",
"log",
- "num-traits",
"pallet-balances",
"parity-scale-codec",
"scale-info",
"serde",
"snowbridge-beacon-primitives",
"snowbridge-core",
- "snowbridge-ethereum",
"snowbridge-pallet-ethereum-client",
"snowbridge-pallet-inbound-queue-fixtures",
"snowbridge-router-primitives",
@@ -18031,7 +18764,6 @@ dependencies = [
"sp-runtime",
"sp-std 14.0.0",
"staging-xcm",
- "staging-xcm-builder",
"staging-xcm-executor",
]
@@ -18039,9 +18771,6 @@ dependencies = [
name = "snowbridge-pallet-inbound-queue-fixtures"
version = "0.10.0"
dependencies = [
- "frame-benchmarking",
- "frame-support",
- "frame-system",
"hex-literal",
"snowbridge-beacon-primitives",
"snowbridge-core",
@@ -18058,7 +18787,6 @@ dependencies = [
"frame-benchmarking",
"frame-support",
"frame-system",
- "hex-literal",
"pallet-message-queue",
"parity-scale-codec",
"scale-info",
@@ -18071,14 +18799,12 @@ dependencies = [
"sp-keyring",
"sp-runtime",
"sp-std 14.0.0",
- "staging-xcm",
]
[[package]]
name = "snowbridge-pallet-system"
version = "0.2.0"
dependencies = [
- "ethabi-decode",
"frame-benchmarking",
"frame-support",
"frame-system",
@@ -18098,7 +18824,6 @@ dependencies = [
"sp-runtime",
"sp-std 14.0.0",
"staging-xcm",
- "staging-xcm-builder",
"staging-xcm-executor",
]
@@ -18106,22 +18831,18 @@ dependencies = [
name = "snowbridge-router-primitives"
version = "0.9.0"
dependencies = [
- "ethabi-decode",
"frame-support",
- "frame-system",
"hex-literal",
"log",
"parity-scale-codec",
"rustc-hex",
"scale-info",
- "serde",
"snowbridge-core",
"sp-core",
"sp-io",
"sp-runtime",
"sp-std 14.0.0",
"staging-xcm",
- "staging-xcm-builder",
"staging-xcm-executor",
]
@@ -18130,7 +18851,6 @@ name = "snowbridge-runtime-common"
version = "0.2.0"
dependencies = [
"frame-support",
- "frame-system",
"log",
"parity-scale-codec",
"snowbridge-core",
@@ -18145,77 +18865,30 @@ dependencies = [
name = "snowbridge-runtime-test-common"
version = "0.2.0"
dependencies = [
- "assets-common",
- "bridge-hub-test-utils",
- "bridge-runtime-common",
- "cumulus-pallet-aura-ext",
"cumulus-pallet-parachain-system",
- "cumulus-pallet-session-benchmarking",
- "cumulus-pallet-xcm",
- "cumulus-pallet-xcmp-queue",
- "cumulus-primitives-core",
- "cumulus-primitives-utility",
- "frame-benchmarking",
- "frame-executive",
"frame-support",
"frame-system",
- "frame-system-benchmarking",
- "frame-system-rpc-runtime-api",
- "frame-try-runtime",
- "hex-literal",
- "log",
- "pallet-aura",
- "pallet-authorship",
"pallet-balances",
"pallet-collator-selection",
"pallet-message-queue",
- "pallet-multisig",
"pallet-session",
"pallet-timestamp",
- "pallet-transaction-payment",
- "pallet-transaction-payment-rpc-runtime-api",
"pallet-utility",
"pallet-xcm",
- "pallet-xcm-benchmarks",
- "parachains-common",
"parachains-runtimes-test-utils",
"parity-scale-codec",
- "polkadot-core-primitives",
- "polkadot-parachain-primitives",
- "polkadot-runtime-common",
- "scale-info",
- "serde",
- "smallvec",
- "snowbridge-beacon-primitives",
"snowbridge-core",
- "snowbridge-outbound-queue-runtime-api",
"snowbridge-pallet-ethereum-client",
"snowbridge-pallet-ethereum-client-fixtures",
- "snowbridge-pallet-inbound-queue",
"snowbridge-pallet-outbound-queue",
"snowbridge-pallet-system",
- "snowbridge-router-primitives",
- "snowbridge-system-runtime-api",
- "sp-api",
- "sp-block-builder",
- "sp-consensus-aura",
"sp-core",
- "sp-genesis-builder",
- "sp-inherents",
"sp-io",
"sp-keyring",
- "sp-offchain",
"sp-runtime",
- "sp-session",
- "sp-std 14.0.0",
- "sp-storage 19.0.0",
- "sp-transaction-pool",
- "sp-version",
"staging-parachain-info",
"staging-xcm",
- "staging-xcm-builder",
"staging-xcm-executor",
- "static_assertions",
]
[[package]]
@@ -18225,7 +18898,6 @@ dependencies = [
"parity-scale-codec",
"snowbridge-core",
"sp-api",
- "sp-core",
"sp-std 14.0.0",
"staging-xcm",
]
@@ -18263,7 +18935,7 @@ dependencies = [
"http",
"httparse",
"log",
- "rand",
+ "rand 0.8.5",
"sha-1 0.9.8",
]
@@ -18307,7 +18979,6 @@ dependencies = [
"sp-timestamp",
"substrate-build-script-utils",
"substrate-frame-rpc-system",
- "try-runtime-cli",
]
[[package]]
@@ -18379,8 +19050,8 @@ dependencies = [
"blake2 0.10.6",
"expander 2.0.0",
"proc-macro-crate 3.0.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -18440,7 +19111,7 @@ dependencies = [
"num-traits",
"parity-scale-codec",
"primitive-types",
- "rand",
+ "rand 0.8.5",
"scale-info",
"serde",
"sp-crypto-hashing",
@@ -18660,7 +19331,7 @@ dependencies = [
"parking_lot 0.12.1",
"paste",
"primitive-types",
- "rand",
+ "rand 0.8.5",
"regex",
"scale-info",
"schnorrkel 0.11.4",
@@ -18764,7 +19435,7 @@ dependencies = [
name = "sp-crypto-hashing-proc-macro"
version = "0.1.0"
dependencies = [
- "quote",
+ "quote 1.0.35",
"sp-crypto-hashing",
"syn 2.0.53",
]
@@ -18782,8 +19453,8 @@ name = "sp-debug-derive"
version = "8.0.0"
source = "git+https://github.com/paritytech/polkadot-sdk#82912acb33a9030c0ef3bf590a34fca09b72dc5f"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -18791,8 +19462,8 @@ dependencies = [
name = "sp-debug-derive"
version = "14.0.0"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -18845,7 +19516,7 @@ name = "sp-io"
version = "30.0.0"
dependencies = [
"bytes",
- "ed25519-dalek",
+ "ed25519-dalek 2.1.0",
"libsecp256k1",
"log",
"parity-scale-codec",
@@ -18880,7 +19551,7 @@ version = "0.34.0"
dependencies = [
"parity-scale-codec",
"parking_lot 0.12.1",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.2.2",
"sp-core",
"sp-externalities 0.25.0",
@@ -18935,7 +19606,7 @@ name = "sp-npos-elections"
version = "26.0.0"
dependencies = [
"parity-scale-codec",
- "rand",
+ "rand 0.8.5",
"scale-info",
"serde",
"sp-arithmetic",
@@ -18950,7 +19621,7 @@ version = "2.0.0-alpha.5"
dependencies = [
"clap 4.5.3",
"honggfuzz",
- "rand",
+ "rand 0.8.5",
"sp-npos-elections",
"sp-runtime",
]
@@ -18994,7 +19665,7 @@ dependencies = [
"log",
"parity-scale-codec",
"paste",
- "rand",
+ "rand 0.8.5",
"scale-info",
"serde",
"serde_json",
@@ -19061,8 +19732,8 @@ source = "git+https://github.com/paritytech/polkadot-sdk#82912acb33a9030c0ef3bf5
dependencies = [
"Inflector",
"proc-macro-crate 1.3.1",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -19073,8 +19744,8 @@ dependencies = [
"Inflector",
"expander 2.0.0",
"proc-macro-crate 3.0.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -19152,7 +19823,7 @@ dependencies = [
"parity-scale-codec",
"parking_lot 0.12.1",
"pretty_assertions",
- "rand",
+ "rand 0.8.5",
"smallvec",
"sp-core",
"sp-externalities 0.25.0",
@@ -19170,10 +19841,10 @@ version = "10.0.0"
dependencies = [
"aes-gcm 0.10.3",
"curve25519-dalek 4.1.2",
- "ed25519-dalek",
+ "ed25519-dalek 2.1.0",
"hkdf",
"parity-scale-codec",
- "rand",
+ "rand 0.8.5",
"scale-info",
"sha2 0.10.7",
"sp-api",
@@ -19292,14 +19963,14 @@ version = "29.0.0"
dependencies = [
"ahash 0.8.8",
"array-bytes 6.1.0",
- "criterion 0.4.0",
+ "criterion 0.5.1",
"hash-db",
"lazy_static",
"memory-db",
"nohash-hasher",
"parity-scale-codec",
"parking_lot 0.12.1",
- "rand",
+ "rand 0.8.5",
"scale-info",
"schnellru",
"sp-core",
@@ -19334,8 +20005,8 @@ name = "sp-version-proc-macro"
version = "13.0.0"
dependencies = [
"parity-scale-codec",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"sp-version",
"syn 2.0.53",
]
@@ -19419,11 +20090,11 @@ checksum = "5e6915280e2d0db8911e5032a5c275571af6bdded2916abd691a659be25d3439"
dependencies = [
"Inflector",
"num-format",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"serde",
"serde_json",
- "unicode-xid",
+ "unicode-xid 0.2.4",
]
[[package]]
@@ -19444,8 +20115,8 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f07d54c4d01a1713eb363b55ba51595da15f6f1211435b71466460da022aa140"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -19504,7 +20175,7 @@ dependencies = [
"pallet-treasury",
"parity-scale-codec",
"platforms",
- "rand",
+ "rand 0.8.5",
"regex",
"sc-authority-discovery",
"sc-basic-authorship",
@@ -19574,7 +20245,6 @@ dependencies = [
"tempfile",
"tokio",
"tokio-util",
- "try-runtime-cli",
"wait-timeout",
"wat",
]
@@ -19713,11 +20383,31 @@ checksum = "70a2595fc3aa78f2d0e45dd425b22282dd863273761cc77780914b2cf3003acf"
dependencies = [
"cfg_aliases",
"memchr",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
+[[package]]
+name = "str0m"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee48572247f422dcbe68630c973f8296fbd5157119cd36a3223e48bf83d47727"
+dependencies = [
+ "combine",
+ "crc",
+ "hmac 0.12.1",
+ "once_cell",
+ "openssl",
+ "openssl-sys",
+ "rand 0.8.5",
+ "sctp-proto",
+ "serde",
+ "sha-1 0.10.1",
+ "thiserror",
+ "tracing",
+]
+
[[package]]
name = "strobe-rs"
version = "0.8.1"
@@ -19731,6 +20421,12 @@ dependencies = [
"zeroize",
]
+[[package]]
+name = "strsim"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+
[[package]]
name = "strsim"
version = "0.10.0"
@@ -19743,6 +20439,30 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
+[[package]]
+name = "structopt"
+version = "0.3.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10"
+dependencies = [
+ "clap 2.34.0",
+ "lazy_static",
+ "structopt-derive",
+]
+
+[[package]]
+name = "structopt-derive"
+version = "0.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0"
+dependencies = [
+ "heck 0.3.3",
+ "proc-macro-error",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
+ "syn 1.0.109",
+]
+
[[package]]
name = "strum"
version = "0.24.1"
@@ -19774,8 +20494,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
dependencies = [
"heck 0.4.1",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"rustversion",
"syn 1.0.109",
]
@@ -19787,8 +20507,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
dependencies = [
"heck 0.4.1",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"rustversion",
"syn 2.0.53",
]
@@ -19800,8 +20520,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946"
dependencies = [
"heck 0.4.1",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"rustversion",
"syn 2.0.53",
]
@@ -19911,6 +20631,49 @@ dependencies = [
"tokio",
]
+[[package]]
+name = "substrate-relay-helper"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-std",
+ "async-trait",
+ "bp-header-chain",
+ "bp-messages",
+ "bp-parachains",
+ "bp-polkadot-core",
+ "bp-relayers",
+ "bp-runtime",
+ "bridge-runtime-common",
+ "equivocation-detector",
+ "finality-grandpa",
+ "finality-relay",
+ "frame-support",
+ "frame-system",
+ "futures",
+ "hex",
+ "log",
+ "messages-relay",
+ "num-traits",
+ "pallet-balances",
+ "pallet-bridge-grandpa",
+ "pallet-bridge-messages",
+ "pallet-bridge-parachains",
+ "pallet-grandpa",
+ "pallet-transaction-payment",
+ "parachains-relay",
+ "parity-scale-codec",
+ "rbtag",
+ "relay-substrate-client",
+ "relay-utils",
+ "sp-consensus-grandpa",
+ "sp-core",
+ "sp-runtime",
+ "structopt",
+ "strum 0.26.2",
+ "thiserror",
+]
+
[[package]]
name = "substrate-rpc-client"
version = "0.33.0"
@@ -20188,14 +20951,25 @@ dependencies = [
"symbolic-common",
]
+[[package]]
+name = "syn"
+version = "0.15.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
+dependencies = [
+ "proc-macro2 0.4.30",
+ "quote 0.6.13",
+ "unicode-xid 0.1.0",
+]
+
[[package]]
name = "syn"
version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"unicode-ident",
]
@@ -20205,8 +20979,8 @@ version = "2.0.53"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"unicode-ident",
]
@@ -20217,8 +20991,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047"
dependencies = [
"paste",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -20228,10 +21002,25 @@ version = "0.12.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
- "unicode-xid",
+ "unicode-xid 0.2.4",
+]
+
+[[package]]
+name = "sysinfo"
+version = "0.30.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fb4f3438c8f6389c864e61221cbc97e9bca98b4daf39a5beb7bea660f528bb2"
+dependencies = [
+ "cfg-if",
+ "core-foundation-sys",
+ "libc",
+ "ntapi",
+ "once_cell",
+ "rayon",
+ "windows 0.52.0",
]
[[package]]
@@ -20441,6 +21230,15 @@ dependencies = [
"westend-runtime-constants",
]
+[[package]]
+name = "textwrap"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+dependencies = [
+ "unicode-width",
+]
+
[[package]]
name = "textwrap"
version = "0.16.0"
@@ -20471,8 +21269,8 @@ version = "1.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10ac1c5050e43014d16b2f94d0d2ce79e65ffdd8b38d8048f9c8f6a8a6da62ac"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 1.0.109",
]
@@ -20482,8 +21280,8 @@ version = "1.0.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -20564,6 +21362,8 @@ checksum = "0bb39ee79a6d8de55f48f2293a830e040392f1c5f16e336bdd1788cd0aadce07"
dependencies = [
"deranged",
"itoa",
+ "libc",
+ "num_threads",
"serde",
"time-core",
"time-macros",
@@ -20643,8 +21443,8 @@ version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -20655,7 +21455,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f"
dependencies = [
"pin-project",
- "rand",
+ "rand 0.8.5",
"tokio",
]
@@ -20714,7 +21514,22 @@ dependencies = [
"futures-util",
"log",
"tokio",
- "tungstenite",
+ "tungstenite 0.17.3",
+]
+
+[[package]]
+name = "tokio-tungstenite"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c"
+dependencies = [
+ "futures-util",
+ "log",
+ "rustls 0.21.6",
+ "rustls-native-certs 0.6.3",
+ "tokio",
+ "tokio-rustls 0.24.1",
+ "tungstenite 0.20.1",
]
[[package]]
@@ -20833,11 +21648,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
[[package]]
name = "tracing"
-version = "0.1.37"
+version = "0.1.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
dependencies = [
- "cfg-if",
"log",
"pin-project-lite 0.2.12",
"tracing-attributes",
@@ -20846,12 +21660,12 @@ dependencies = [
[[package]]
name = "tracing-attributes"
-version = "0.1.26"
+version = "0.1.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -20892,8 +21706,8 @@ dependencies = [
"assert_matches",
"expander 2.0.0",
"proc-macro-crate 3.0.0",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -20973,11 +21787,11 @@ dependencies = [
[[package]]
name = "trie-bench"
-version = "0.38.0"
+version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4680cb226e31d2a096592d0edecdda91cc371743002f80c0f8cf80219819b3b"
+checksum = "3092f400e9f7e3ce8c1756016a8b6287163ab7a11dd47d82169260cb4cc2d680"
dependencies = [
- "criterion 0.4.0",
+ "criterion 0.5.1",
"hash-db",
"keccak-hasher",
"memory-db",
@@ -20989,12 +21803,11 @@ dependencies = [
[[package]]
name = "trie-db"
-version = "0.28.0"
+version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff28e0f815c2fea41ebddf148e008b077d2faddb026c9555b29696114d602642"
+checksum = "65ed83be775d85ebb0e272914fff6462c39b3ddd6dc67b5c1c41271aad280c69"
dependencies = [
"hash-db",
- "hashbrown 0.13.2",
"log",
"rustc-hex",
"smallvec",
@@ -21028,14 +21841,14 @@ dependencies = [
"async-trait",
"cfg-if",
"data-encoding",
- "enum-as-inner",
+ "enum-as-inner 0.5.1",
"futures-channel",
"futures-io",
"futures-util",
"idna 0.2.3",
"ipnet",
"lazy_static",
- "rand",
+ "rand 0.8.5",
"smallvec",
"socket2 0.4.9",
"thiserror",
@@ -21045,6 +21858,31 @@ dependencies = [
"url",
]
+[[package]]
+name = "trust-dns-proto"
+version = "0.23.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3119112651c157f4488931a01e586aa459736e9d6046d3bd9105ffb69352d374"
+dependencies = [
+ "async-trait",
+ "cfg-if",
+ "data-encoding",
+ "enum-as-inner 0.6.0",
+ "futures-channel",
+ "futures-io",
+ "futures-util",
+ "idna 0.4.0",
+ "ipnet",
+ "once_cell",
+ "rand 0.8.5",
+ "smallvec",
+ "thiserror",
+ "tinyvec",
+ "tokio",
+ "tracing",
+ "url",
+]
+
[[package]]
name = "trust-dns-resolver"
version = "0.22.0"
@@ -21062,56 +21900,36 @@ dependencies = [
"thiserror",
"tokio",
"tracing",
- "trust-dns-proto",
+ "trust-dns-proto 0.22.0",
]
[[package]]
-name = "try-lock"
-version = "0.2.4"
+name = "trust-dns-resolver"
+version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
-
-[[package]]
-name = "try-runtime-cli"
-version = "0.38.0"
+checksum = "10a3e6c3aff1718b3c73e395d1f35202ba2ffa847c6a62eea0db8fb4cfe30be6"
dependencies = [
- "assert_cmd",
- "async-trait",
- "clap 4.5.3",
- "frame-remote-externalities",
- "frame-try-runtime",
- "hex",
- "log",
- "node-primitives",
- "parity-scale-codec",
- "regex",
- "sc-cli",
- "sc-executor",
- "serde",
- "serde_json",
- "sp-api",
- "sp-consensus-aura",
- "sp-consensus-babe",
- "sp-core",
- "sp-debug-derive 14.0.0",
- "sp-externalities 0.25.0",
- "sp-inherents",
- "sp-io",
- "sp-keystore",
- "sp-rpc",
- "sp-runtime",
- "sp-state-machine",
- "sp-timestamp",
- "sp-transaction-storage-proof",
- "sp-version",
- "sp-weights",
- "substrate-cli-test-utils",
- "substrate-rpc-client",
- "tempfile",
+ "cfg-if",
+ "futures-util",
+ "ipconfig",
+ "lru-cache",
+ "once_cell",
+ "parking_lot 0.12.1",
+ "rand 0.8.5",
+ "resolv-conf",
+ "smallvec",
+ "thiserror",
"tokio",
- "zstd 0.12.4",
+ "tracing",
+ "trust-dns-proto 0.23.2",
]
+[[package]]
+name = "try-lock"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+
[[package]]
name = "trybuild"
version = "1.0.89"
@@ -21146,13 +21964,33 @@ dependencies = [
"http",
"httparse",
"log",
- "rand",
+ "rand 0.8.5",
"sha-1 0.10.1",
"thiserror",
"url",
"utf-8",
]
+[[package]]
+name = "tungstenite"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9"
+dependencies = [
+ "byteorder",
+ "bytes",
+ "data-encoding",
+ "http",
+ "httparse",
+ "log",
+ "rand 0.8.5",
+ "rustls 0.21.6",
+ "sha1",
+ "thiserror",
+ "url",
+ "utf-8",
+]
+
[[package]]
name = "twox-hash"
version = "1.6.3"
@@ -21161,7 +21999,7 @@ checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
dependencies = [
"cfg-if",
"digest 0.10.7",
- "rand",
+ "rand 0.8.5",
"static_assertions",
]
@@ -21216,12 +22054,24 @@ dependencies = [
"tinyvec",
]
+[[package]]
+name = "unicode-segmentation"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+
[[package]]
name = "unicode-width"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+[[package]]
+name = "unicode-xid"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
+
[[package]]
name = "unicode-xid"
version = "0.2.4"
@@ -21256,14 +22106,15 @@ checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
[[package]]
name = "unsigned-varint"
-version = "0.7.1"
+version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836"
+checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105"
dependencies = [
"asynchronous-codec",
"bytes",
"futures-io",
"futures-util",
+ "tokio-util",
]
[[package]]
@@ -21355,6 +22206,12 @@ version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+[[package]]
+name = "vec_map"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
+
[[package]]
name = "version_check"
version = "0.9.4"
@@ -21382,7 +22239,7 @@ dependencies = [
"arrayref",
"constcat",
"digest 0.10.7",
- "rand",
+ "rand 0.8.5",
"rand_chacha 0.3.1",
"rand_core 0.6.4",
"sha2 0.10.7",
@@ -21458,8 +22315,8 @@ dependencies = [
"bumpalo",
"log",
"once_cell",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
"wasm-bindgen-shared",
]
@@ -21482,7 +22339,7 @@ version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
dependencies = [
- "quote",
+ "quote 1.0.35",
"wasm-bindgen-macro-support",
]
@@ -21492,8 +22349,8 @@ version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
@@ -21525,8 +22382,8 @@ version = "0.3.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ecb993dd8c836930ed130e020e77d9b2e65dd0fbab1b67c790b0f5d80b11a575"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
]
[[package]]
@@ -21827,7 +22684,7 @@ dependencies = [
"memfd",
"memoffset 0.8.0",
"paste",
- "rand",
+ "rand 0.8.5",
"rustix 0.36.15",
"wasmtime-asm-macros",
"wasmtime-environ",
@@ -22140,6 +22997,40 @@ dependencies = [
"windows-targets 0.48.5",
]
+[[package]]
+name = "windows"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
+dependencies = [
+ "windows-core",
+ "windows-targets 0.52.0",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.0",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
[[package]]
name = "windows-sys"
version = "0.45.0"
@@ -22437,6 +23328,23 @@ dependencies = [
"time",
]
+[[package]]
+name = "x509-parser"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da"
+dependencies = [
+ "asn1-rs",
+ "data-encoding",
+ "der-parser",
+ "lazy_static",
+ "nom",
+ "oid-registry",
+ "rusticata-macros",
+ "thiserror",
+ "time",
+]
+
[[package]]
name = "xattr"
version = "1.0.1"
@@ -22522,8 +23430,8 @@ name = "xcm-procedural"
version = "7.0.0"
dependencies = [
"Inflector",
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"staging-xcm",
"syn 2.0.53",
"trybuild",
@@ -22611,7 +23519,7 @@ dependencies = [
"log",
"nohash-hasher",
"parking_lot 0.12.1",
- "rand",
+ "rand 0.8.5",
"static_assertions",
]
@@ -22645,8 +23553,8 @@ version = "0.7.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -22665,8 +23573,8 @@ version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
- "proc-macro2",
- "quote",
+ "proc-macro2 1.0.75",
+ "quote 1.0.35",
"syn 2.0.53",
]
@@ -22682,7 +23590,7 @@ dependencies = [
"serde_json",
"thiserror",
"tokio",
- "tokio-tungstenite",
+ "tokio-tungstenite 0.17.2",
"tracing-gum",
"url",
]
diff --git a/Cargo.toml b/Cargo.toml
index 252fe4fe4d6557b8cdf5845ca939d4313b1ed583..460c49f7f37c2d43e021e4bfa8f4263ac1ea3063 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -22,12 +22,14 @@ members = [
"bridges/chains/chain-polkadot-bulletin",
"bridges/chains/chain-rococo",
"bridges/chains/chain-westend",
+ "bridges/modules/beefy",
"bridges/modules/grandpa",
"bridges/modules/messages",
"bridges/modules/parachains",
"bridges/modules/relayers",
"bridges/modules/xcm-bridge-hub",
"bridges/modules/xcm-bridge-hub-router",
+ "bridges/primitives/beefy",
"bridges/primitives/header-chain",
"bridges/primitives/messages",
"bridges/primitives/parachains",
@@ -37,6 +39,13 @@ members = [
"bridges/primitives/test-utils",
"bridges/primitives/xcm-bridge-hub",
"bridges/primitives/xcm-bridge-hub-router",
+ "bridges/relays/client-substrate",
+ "bridges/relays/equivocation",
+ "bridges/relays/finality",
+ "bridges/relays/lib-substrate-relay",
+ "bridges/relays/messages",
+ "bridges/relays/parachains",
+ "bridges/relays/utils",
"bridges/snowbridge/pallets/ethereum-client",
"bridges/snowbridge/pallets/ethereum-client/fixtures",
"bridges/snowbridge/pallets/inbound-queue",
@@ -260,13 +269,13 @@ members = [
"substrate/client/mixnet",
"substrate/client/network",
"substrate/client/network-gossip",
- "substrate/client/network/bitswap",
"substrate/client/network/common",
"substrate/client/network/light",
"substrate/client/network/statement",
"substrate/client/network/sync",
"substrate/client/network/test",
"substrate/client/network/transactions",
+ "substrate/client/network/types",
"substrate/client/offchain",
"substrate/client/proposer-metrics",
"substrate/client/rpc",
@@ -492,12 +501,12 @@ members = [
"substrate/utils/frame/frame-utilities-cli",
"substrate/utils/frame/generate-bags",
"substrate/utils/frame/generate-bags/node-runtime",
+ "substrate/utils/frame/omni-bencher",
"substrate/utils/frame/remote-externalities",
"substrate/utils/frame/rpc/client",
"substrate/utils/frame/rpc/state-trie-migration-rpc",
"substrate/utils/frame/rpc/support",
"substrate/utils/frame/rpc/system",
- "substrate/utils/frame/try-runtime/cli",
"substrate/utils/prometheus",
"substrate/utils/substrate-bip39",
"substrate/utils/wasm-builder",
diff --git a/bridges/.gitignore b/bridges/.gitignore
deleted file mode 100644
index 5d10cfa41a4487247e2c331144d3dabf0ec5e6f7..0000000000000000000000000000000000000000
--- a/bridges/.gitignore
+++ /dev/null
@@ -1,26 +0,0 @@
-**/target/
-**/.env
-**/.env2
-**/rust-toolchain
-hfuzz_target
-hfuzz_workspace
-**/Cargo.lock
-
-**/*.rs.bk
-
-*.o
-*.so
-*.rlib
-*.dll
-.gdb_history
-
-*.exe
-
-.DS_Store
-
-.cargo
-.idea
-.vscode
-*.iml
-*.swp
-*.swo
diff --git a/bridges/chains/chain-bridge-hub-rococo/src/lib.rs b/bridges/chains/chain-bridge-hub-rococo/src/lib.rs
index c4e697fbe9526b85c7f10cf739c6893d50190fe9..abce872d7ba35cf24b013aa26b4b1f1d796b5785 100644
--- a/bridges/chains/chain-bridge-hub-rococo/src/lib.rs
+++ b/bridges/chains/chain-bridge-hub-rococo/src/lib.rs
@@ -107,5 +107,5 @@ frame_support::parameter_types! {
/// 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%`)
- pub const BridgeHubRococoBaseConfirmationFeeInRocs: u128 = 5_380_829_647;
+ pub const BridgeHubRococoBaseConfirmationFeeInRocs: u128 = 5_380_901_781;
}
diff --git a/bridges/modules/beefy/Cargo.toml b/bridges/modules/beefy/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..438f32fb146042f2704deb3092381a2b5cc68394
--- /dev/null
+++ b/bridges/modules/beefy/Cargo.toml
@@ -0,0 +1,63 @@
+[package]
+name = "pallet-bridge-beefy"
+version = "0.1.0"
+description = "Module implementing BEEFY on-chain light client used for bridging consensus of substrate-based chains."
+authors.workspace = true
+edition.workspace = true
+license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
+repository.workspace = true
+publish = false
+
+[lints]
+workspace = true
+
+[dependencies]
+codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
+log = { workspace = true }
+scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
+serde = { optional = true, workspace = true }
+
+# Bridge Dependencies
+
+bp-beefy = { path = "../../primitives/beefy", default-features = false }
+bp-runtime = { path = "../../primitives/runtime", default-features = false }
+
+# Substrate Dependencies
+
+frame-support = { path = "../../../substrate/frame/support", default-features = false }
+frame-system = { path = "../../../substrate/frame/system", default-features = false }
+sp-core = { path = "../../../substrate/primitives/core", default-features = false }
+sp-runtime = { path = "../../../substrate/primitives/runtime", default-features = false }
+sp-std = { path = "../../../substrate/primitives/std", default-features = false }
+
+[dev-dependencies]
+sp-consensus-beefy = { path = "../../../substrate/primitives/consensus/beefy" }
+mmr-lib = { package = "ckb-merkle-mountain-range", version = "0.5.2" }
+pallet-beefy-mmr = { path = "../../../substrate/frame/beefy-mmr" }
+pallet-mmr = { path = "../../../substrate/frame/merkle-mountain-range" }
+rand = "0.8.5"
+sp-io = { path = "../../../substrate/primitives/io" }
+bp-test-utils = { path = "../../primitives/test-utils" }
+
+[features]
+default = ["std"]
+std = [
+ "bp-beefy/std",
+ "bp-runtime/std",
+ "codec/std",
+ "frame-support/std",
+ "frame-system/std",
+ "log/std",
+ "scale-info/std",
+ "serde/std",
+ "sp-core/std",
+ "sp-runtime/std",
+ "sp-std/std",
+]
+try-runtime = [
+ "frame-support/try-runtime",
+ "frame-system/try-runtime",
+ "pallet-beefy-mmr/try-runtime",
+ "pallet-mmr/try-runtime",
+ "sp-runtime/try-runtime",
+]
diff --git a/bridges/modules/beefy/src/lib.rs b/bridges/modules/beefy/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..27c83921021bb4299b18cbf2d3216427f8c89ccc
--- /dev/null
+++ b/bridges/modules/beefy/src/lib.rs
@@ -0,0 +1,651 @@
+// Copyright 2021 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 .
+
+//! BEEFY bridge pallet.
+//!
+//! This pallet is an on-chain BEEFY light client for Substrate-based chains that are using the
+//! following pallets bundle: `pallet-mmr`, `pallet-beefy` and `pallet-beefy-mmr`.
+//!
+//! The pallet is able to verify MMR leaf proofs and BEEFY commitments, so it has access
+//! to the following data of the bridged chain:
+//!
+//! - header hashes
+//! - changes of BEEFY authorities
+//! - extra data of MMR leafs
+//!
+//! Given the header hash, other pallets are able to verify header-based proofs
+//! (e.g. storage proofs, transaction inclusion proofs, etc.).
+
+#![warn(missing_docs)]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+use bp_beefy::{ChainWithBeefy, InitializationData};
+use sp_std::{boxed::Box, prelude::*};
+
+// Re-export in crate namespace for `construct_runtime!`
+pub use pallet::*;
+
+mod utils;
+
+#[cfg(test)]
+mod mock;
+#[cfg(test)]
+mod mock_chain;
+
+/// The target that will be used when publishing logs related to this pallet.
+pub const LOG_TARGET: &str = "runtime::bridge-beefy";
+
+/// Configured bridged chain.
+pub type BridgedChain = >::BridgedChain;
+/// Block number, used by configured bridged chain.
+pub type BridgedBlockNumber = bp_runtime::BlockNumberOf>;
+/// Block hash, used by configured bridged chain.
+pub type BridgedBlockHash = bp_runtime::HashOf>;
+
+/// Pallet initialization data.
+pub type InitializationDataOf =
+ InitializationData, bp_beefy::MmrHashOf>>;
+/// BEEFY commitment hasher, used by configured bridged chain.
+pub type BridgedBeefyCommitmentHasher = bp_beefy::BeefyCommitmentHasher>;
+/// BEEFY validator id, used by configured bridged chain.
+pub type BridgedBeefyAuthorityId = bp_beefy::BeefyAuthorityIdOf>;
+/// BEEFY validator set, used by configured bridged chain.
+pub type BridgedBeefyAuthoritySet = bp_beefy::BeefyAuthoritySetOf>;
+/// BEEFY authority set, used by configured bridged chain.
+pub type BridgedBeefyAuthoritySetInfo = bp_beefy::BeefyAuthoritySetInfoOf>;
+/// BEEFY signed commitment, used by configured bridged chain.
+pub type BridgedBeefySignedCommitment = bp_beefy::BeefySignedCommitmentOf>;
+/// MMR hashing algorithm, used by configured bridged chain.
+pub type BridgedMmrHashing = bp_beefy::MmrHashingOf>;
+/// MMR hashing output type of `BridgedMmrHashing`.
+pub type BridgedMmrHash = bp_beefy::MmrHashOf>;
+/// The type of the MMR leaf extra data used by the configured bridged chain.
+pub type BridgedBeefyMmrLeafExtra = bp_beefy::BeefyMmrLeafExtraOf>;
+/// BEEFY MMR proof type used by the pallet
+pub type BridgedMmrProof = bp_beefy::MmrProofOf>;
+/// MMR leaf type, used by configured bridged chain.
+pub type BridgedBeefyMmrLeaf = bp_beefy::BeefyMmrLeafOf>;
+/// Imported commitment data, stored by the pallet.
+pub type ImportedCommitment = bp_beefy::ImportedCommitment<
+ BridgedBlockNumber,
+ BridgedBlockHash,
+ BridgedMmrHash,
+>;
+
+/// Some high level info about the imported commitments.
+#[derive(codec::Encode, codec::Decode, scale_info::TypeInfo)]
+pub struct ImportedCommitmentsInfoData {
+ /// Best known block number, provided in a BEEFY commitment. However this is not
+ /// the best proven block. The best proven block is this block's parent.
+ best_block_number: BlockNumber,
+ /// The head of the `ImportedBlockNumbers` ring buffer.
+ next_block_number_index: u32,
+}
+
+#[frame_support::pallet(dev_mode)]
+pub mod pallet {
+ use super::*;
+ use bp_runtime::{BasicOperatingMode, OwnedBridgeModule};
+ use frame_support::pallet_prelude::*;
+ use frame_system::pallet_prelude::*;
+
+ #[pallet::config]
+ pub trait Config: frame_system::Config {
+ /// The upper bound on the number of requests allowed by the pallet.
+ ///
+ /// A request refers to an action which writes a header to storage.
+ ///
+ /// Once this bound is reached the pallet will reject all commitments
+ /// until the request count has decreased.
+ #[pallet::constant]
+ type MaxRequests: Get;
+
+ /// Maximal number of imported commitments to keep in the storage.
+ ///
+ /// The setting is there to prevent growing the on-chain state indefinitely. Note
+ /// the setting does not relate to block numbers - we will simply keep as much items
+ /// in the storage, so it doesn't guarantee any fixed timeframe for imported commitments.
+ #[pallet::constant]
+ type CommitmentsToKeep: Get;
+
+ /// The chain we are bridging to here.
+ type BridgedChain: ChainWithBeefy;
+ }
+
+ #[pallet::pallet]
+ #[pallet::without_storage_info]
+ pub struct Pallet(PhantomData<(T, I)>);
+
+ #[pallet::hooks]
+ impl, I: 'static> Hooks> for Pallet {
+ fn on_initialize(_n: BlockNumberFor) -> frame_support::weights::Weight {
+ >::mutate(|count| *count = count.saturating_sub(1));
+
+ Weight::from_parts(0, 0)
+ .saturating_add(T::DbWeight::get().reads(1))
+ .saturating_add(T::DbWeight::get().writes(1))
+ }
+ }
+
+ impl, I: 'static> OwnedBridgeModule for Pallet {
+ const LOG_TARGET: &'static str = LOG_TARGET;
+ type OwnerStorage = PalletOwner;
+ type OperatingMode = BasicOperatingMode;
+ type OperatingModeStorage = PalletOperatingMode;
+ }
+
+ #[pallet::call]
+ impl, I: 'static> Pallet
+ where
+ BridgedMmrHashing: 'static + Send + Sync,
+ {
+ /// Initialize pallet with BEEFY authority set and best known finalized block number.
+ #[pallet::call_index(0)]
+ #[pallet::weight((T::DbWeight::get().reads_writes(2, 3), DispatchClass::Operational))]
+ pub fn initialize(
+ origin: OriginFor,
+ init_data: InitializationDataOf,
+ ) -> DispatchResult {
+ Self::ensure_owner_or_root(origin)?;
+
+ let is_initialized = >::exists();
+ ensure!(!is_initialized, >::AlreadyInitialized);
+
+ log::info!(target: LOG_TARGET, "Initializing bridge BEEFY pallet: {:?}", init_data);
+ Ok(initialize::(init_data)?)
+ }
+
+ /// Change `PalletOwner`.
+ ///
+ /// May only be called either by root, or by `PalletOwner`.
+ #[pallet::call_index(1)]
+ #[pallet::weight((T::DbWeight::get().reads_writes(1, 1), DispatchClass::Operational))]
+ pub fn set_owner(origin: OriginFor, new_owner: Option) -> DispatchResult {
+ >::set_owner(origin, new_owner)
+ }
+
+ /// Halt or resume all pallet operations.
+ ///
+ /// May only be called either by root, or by `PalletOwner`.
+ #[pallet::call_index(2)]
+ #[pallet::weight((T::DbWeight::get().reads_writes(1, 1), DispatchClass::Operational))]
+ pub fn set_operating_mode(
+ origin: OriginFor,
+ operating_mode: BasicOperatingMode,
+ ) -> DispatchResult {
+ >::set_operating_mode(origin, operating_mode)
+ }
+
+ /// Submit a commitment generated by BEEFY authority set.
+ ///
+ /// It will use the underlying storage pallet to fetch information about the current
+ /// authority set and best finalized block number in order to verify that the commitment
+ /// is valid.
+ ///
+ /// If successful in verification, it will update the underlying storage with the data
+ /// provided in the newly submitted commitment.
+ #[pallet::call_index(3)]
+ #[pallet::weight(0)]
+ pub fn submit_commitment(
+ origin: OriginFor,
+ commitment: BridgedBeefySignedCommitment,
+ validator_set: BridgedBeefyAuthoritySet,
+ mmr_leaf: Box>,
+ mmr_proof: BridgedMmrProof,
+ ) -> DispatchResult
+ where
+ BridgedBeefySignedCommitment: Clone,
+ {
+ Self::ensure_not_halted().map_err(Error::::BridgeModule)?;
+ ensure_signed(origin)?;
+
+ ensure!(Self::request_count() < T::MaxRequests::get(), >::TooManyRequests);
+
+ // Ensure that the commitment is for a better block.
+ let commitments_info =
+ ImportedCommitmentsInfo::::get().ok_or(Error::::NotInitialized)?;
+ ensure!(
+ commitment.commitment.block_number > commitments_info.best_block_number,
+ Error::::OldCommitment
+ );
+
+ // Verify commitment and mmr leaf.
+ let current_authority_set_info = CurrentAuthoritySetInfo::::get();
+ let mmr_root = utils::verify_commitment::(
+ &commitment,
+ ¤t_authority_set_info,
+ &validator_set,
+ )?;
+ utils::verify_beefy_mmr_leaf::(&mmr_leaf, mmr_proof, mmr_root)?;
+
+ // Update request count.
+ RequestCount::::mutate(|count| *count += 1);
+ // Update authority set if needed.
+ if mmr_leaf.beefy_next_authority_set.id > current_authority_set_info.id {
+ CurrentAuthoritySetInfo::::put(mmr_leaf.beefy_next_authority_set);
+ }
+
+ // Import commitment.
+ let block_number_index = commitments_info.next_block_number_index;
+ let to_prune = ImportedBlockNumbers::::try_get(block_number_index);
+ ImportedCommitments::::insert(
+ commitment.commitment.block_number,
+ ImportedCommitment:: {
+ parent_number_and_hash: mmr_leaf.parent_number_and_hash,
+ mmr_root,
+ },
+ );
+ ImportedBlockNumbers::::insert(
+ block_number_index,
+ commitment.commitment.block_number,
+ );
+ ImportedCommitmentsInfo::::put(ImportedCommitmentsInfoData {
+ best_block_number: commitment.commitment.block_number,
+ next_block_number_index: (block_number_index + 1) % T::CommitmentsToKeep::get(),
+ });
+ if let Ok(old_block_number) = to_prune {
+ log::debug!(
+ target: LOG_TARGET,
+ "Pruning commitment for old block: {:?}.",
+ old_block_number
+ );
+ ImportedCommitments::::remove(old_block_number);
+ }
+
+ log::info!(
+ target: LOG_TARGET,
+ "Successfully imported commitment for block {:?}",
+ commitment.commitment.block_number,
+ );
+
+ Ok(())
+ }
+ }
+
+ /// The current number of requests which have written to storage.
+ ///
+ /// If the `RequestCount` hits `MaxRequests`, no more calls will be allowed to the pallet until
+ /// the request capacity is increased.
+ ///
+ /// The `RequestCount` is decreased by one at the beginning of every block. This is to ensure
+ /// that the pallet can always make progress.
+ #[pallet::storage]
+ #[pallet::getter(fn request_count)]
+ pub type RequestCount, I: 'static = ()> = StorageValue<_, u32, ValueQuery>;
+
+ /// High level info about the imported commitments.
+ ///
+ /// Contains the following info:
+ /// - best known block number of the bridged chain, finalized by BEEFY
+ /// - the head of the `ImportedBlockNumbers` ring buffer
+ #[pallet::storage]
+ pub type ImportedCommitmentsInfo, I: 'static = ()> =
+ StorageValue<_, ImportedCommitmentsInfoData>>;
+
+ /// A ring buffer containing the block numbers of the commitments that we have imported,
+ /// ordered by the insertion time.
+ #[pallet::storage]
+ pub(super) type ImportedBlockNumbers, I: 'static = ()> =
+ StorageMap<_, Identity, u32, BridgedBlockNumber>;
+
+ /// All the commitments that we have imported and haven't been pruned yet.
+ #[pallet::storage]
+ pub type ImportedCommitments, I: 'static = ()> =
+ StorageMap<_, Blake2_128Concat, BridgedBlockNumber, ImportedCommitment>;
+
+ /// The current BEEFY authority set at the bridged chain.
+ #[pallet::storage]
+ pub type CurrentAuthoritySetInfo, I: 'static = ()> =
+ StorageValue<_, BridgedBeefyAuthoritySetInfo, ValueQuery>;
+
+ /// Optional pallet owner.
+ ///
+ /// Pallet owner has the right to halt all pallet operations and then resume it. If it is
+ /// `None`, then there are no direct ways to halt/resume pallet operations, but other
+ /// runtime methods may still be used to do that (i.e. `democracy::referendum` to update halt
+ /// flag directly or calling `halt_operations`).
+ #[pallet::storage]
+ pub type PalletOwner, I: 'static = ()> =
+ StorageValue<_, T::AccountId, OptionQuery>;
+
+ /// The current operating mode of the pallet.
+ ///
+ /// Depending on the mode either all, or no transactions will be allowed.
+ #[pallet::storage]
+ pub type PalletOperatingMode, I: 'static = ()> =
+ StorageValue<_, BasicOperatingMode, ValueQuery>;
+
+ #[pallet::genesis_config]
+ #[derive(frame_support::DefaultNoBound)]
+ pub struct GenesisConfig, I: 'static = ()> {
+ /// Optional module owner account.
+ pub owner: Option,
+ /// Optional module initialization data.
+ pub init_data: Option>,
+ }
+
+ #[pallet::genesis_build]
+ impl, I: 'static> BuildGenesisConfig for GenesisConfig {
+ fn build(&self) {
+ if let Some(ref owner) = self.owner {
+ >::put(owner);
+ }
+
+ if let Some(init_data) = self.init_data.clone() {
+ initialize::(init_data)
+ .expect("invalid initialization data of BEEFY bridge pallet");
+ } else {
+ // Since the bridge hasn't been initialized we shouldn't allow anyone to perform
+ // transactions.
+ >::put(BasicOperatingMode::Halted);
+ }
+ }
+ }
+
+ #[pallet::error]
+ pub enum Error {
+ /// The pallet has not been initialized yet.
+ NotInitialized,
+ /// The pallet has already been initialized.
+ AlreadyInitialized,
+ /// Invalid initial authority set.
+ InvalidInitialAuthoritySet,
+ /// There are too many requests for the current window to handle.
+ TooManyRequests,
+ /// The imported commitment is older than the best commitment known to the pallet.
+ OldCommitment,
+ /// The commitment is signed by unknown validator set.
+ InvalidCommitmentValidatorSetId,
+ /// The id of the provided validator set is invalid.
+ InvalidValidatorSetId,
+ /// The number of signatures in the commitment is invalid.
+ InvalidCommitmentSignaturesLen,
+ /// The number of validator ids provided is invalid.
+ InvalidValidatorSetLen,
+ /// There aren't enough correct signatures in the commitment to finalize the block.
+ NotEnoughCorrectSignatures,
+ /// MMR root is missing from the commitment.
+ MmrRootMissingFromCommitment,
+ /// MMR proof verification has failed.
+ MmrProofVerificationFailed,
+ /// The validators are not matching the merkle tree root of the authority set.
+ InvalidValidatorSetRoot,
+ /// Error generated by the `OwnedBridgeModule` trait.
+ BridgeModule(bp_runtime::OwnedBridgeModuleError),
+ }
+
+ /// Initialize pallet with given parameters.
+ pub(super) fn initialize, I: 'static>(
+ init_data: InitializationDataOf,
+ ) -> Result<(), Error> {
+ if init_data.authority_set.len == 0 {
+ return Err(Error::::InvalidInitialAuthoritySet)
+ }
+ CurrentAuthoritySetInfo::::put(init_data.authority_set);
+
+ >::put(init_data.operating_mode);
+ ImportedCommitmentsInfo::::put(ImportedCommitmentsInfoData {
+ best_block_number: init_data.best_block_number,
+ next_block_number_index: 0,
+ });
+
+ Ok(())
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use bp_runtime::{BasicOperatingMode, OwnedBridgeModuleError};
+ use bp_test_utils::generate_owned_bridge_module_tests;
+ use frame_support::{assert_noop, assert_ok, traits::Get};
+ use mock::*;
+ use mock_chain::*;
+ use sp_consensus_beefy::mmr::BeefyAuthoritySet;
+ use sp_runtime::DispatchError;
+
+ fn next_block() {
+ use frame_support::traits::OnInitialize;
+
+ let current_number = frame_system::Pallet::::block_number();
+ frame_system::Pallet::::set_block_number(current_number + 1);
+ let _ = Pallet::::on_initialize(current_number);
+ }
+
+ fn import_header_chain(headers: Vec) {
+ for header in headers {
+ if header.commitment.is_some() {
+ assert_ok!(import_commitment(header));
+ }
+ }
+ }
+
+ #[test]
+ fn fails_to_initialize_if_already_initialized() {
+ run_test_with_initialize(32, || {
+ assert_noop!(
+ Pallet::::initialize(
+ RuntimeOrigin::root(),
+ InitializationData {
+ operating_mode: BasicOperatingMode::Normal,
+ best_block_number: 0,
+ authority_set: BeefyAuthoritySet {
+ id: 0,
+ len: 1,
+ keyset_commitment: [0u8; 32].into()
+ }
+ }
+ ),
+ Error::::AlreadyInitialized,
+ );
+ });
+ }
+
+ #[test]
+ fn fails_to_initialize_if_authority_set_is_empty() {
+ run_test(|| {
+ assert_noop!(
+ Pallet::::initialize(
+ RuntimeOrigin::root(),
+ InitializationData {
+ operating_mode: BasicOperatingMode::Normal,
+ best_block_number: 0,
+ authority_set: BeefyAuthoritySet {
+ id: 0,
+ len: 0,
+ keyset_commitment: [0u8; 32].into()
+ }
+ }
+ ),
+ Error::::InvalidInitialAuthoritySet,
+ );
+ });
+ }
+
+ #[test]
+ fn fails_to_import_commitment_if_halted() {
+ run_test_with_initialize(1, || {
+ assert_ok!(Pallet::::set_operating_mode(
+ RuntimeOrigin::root(),
+ BasicOperatingMode::Halted
+ ));
+ assert_noop!(
+ import_commitment(ChainBuilder::new(1).append_finalized_header().to_header()),
+ Error::::BridgeModule(OwnedBridgeModuleError::Halted),
+ );
+ })
+ }
+
+ #[test]
+ fn fails_to_import_commitment_if_too_many_requests() {
+ run_test_with_initialize(1, || {
+ let max_requests = <::MaxRequests as Get>::get() as u64;
+ let mut chain = ChainBuilder::new(1);
+ for _ in 0..max_requests + 2 {
+ chain = chain.append_finalized_header();
+ }
+
+ // import `max_request` headers
+ for i in 0..max_requests {
+ assert_ok!(import_commitment(chain.header(i + 1)));
+ }
+
+ // try to import next header: it fails because we are no longer accepting commitments
+ assert_noop!(
+ import_commitment(chain.header(max_requests + 1)),
+ Error::::TooManyRequests,
+ );
+
+ // when next block is "started", we allow import of next header
+ next_block();
+ assert_ok!(import_commitment(chain.header(max_requests + 1)));
+
+ // but we can't import two headers until next block and so on
+ assert_noop!(
+ import_commitment(chain.header(max_requests + 2)),
+ Error::::TooManyRequests,
+ );
+ })
+ }
+
+ #[test]
+ fn fails_to_import_commitment_if_not_initialized() {
+ run_test(|| {
+ assert_noop!(
+ import_commitment(ChainBuilder::new(1).append_finalized_header().to_header()),
+ Error::::NotInitialized,
+ );
+ })
+ }
+
+ #[test]
+ fn submit_commitment_works_with_long_chain_with_handoffs() {
+ run_test_with_initialize(3, || {
+ let chain = ChainBuilder::new(3)
+ .append_finalized_header()
+ .append_default_headers(16) // 2..17
+ .append_finalized_header() // 18
+ .append_default_headers(16) // 19..34
+ .append_handoff_header(9) // 35
+ .append_default_headers(8) // 36..43
+ .append_finalized_header() // 44
+ .append_default_headers(8) // 45..52
+ .append_handoff_header(17) // 53
+ .append_default_headers(4) // 54..57
+ .append_finalized_header() // 58
+ .append_default_headers(4); // 59..63
+ import_header_chain(chain.to_chain());
+
+ assert_eq!(
+ ImportedCommitmentsInfo::::get().unwrap().best_block_number,
+ 58
+ );
+ assert_eq!(CurrentAuthoritySetInfo::::get().id, 2);
+ assert_eq!(CurrentAuthoritySetInfo::::get().len, 17);
+
+ let imported_commitment = ImportedCommitments::::get(58).unwrap();
+ assert_eq!(
+ imported_commitment,
+ bp_beefy::ImportedCommitment {
+ parent_number_and_hash: (57, chain.header(57).header.hash()),
+ mmr_root: chain.header(58).mmr_root,
+ },
+ );
+ })
+ }
+
+ #[test]
+ fn commitment_pruning_works() {
+ run_test_with_initialize(3, || {
+ let commitments_to_keep = >::CommitmentsToKeep::get();
+ let commitments_to_import: Vec = ChainBuilder::new(3)
+ .append_finalized_headers(commitments_to_keep as usize + 2)
+ .to_chain();
+
+ // import exactly `CommitmentsToKeep` commitments
+ for index in 0..commitments_to_keep {
+ next_block();
+ import_commitment(commitments_to_import[index as usize].clone())
+ .expect("must succeed");
+ assert_eq!(
+ ImportedCommitmentsInfo::::get().unwrap().next_block_number_index,
+ (index + 1) % commitments_to_keep
+ );
+ }
+
+ // ensure that all commitments are in the storage
+ assert_eq!(
+ ImportedCommitmentsInfo::::get().unwrap().best_block_number,
+ commitments_to_keep as TestBridgedBlockNumber
+ );
+ assert_eq!(
+ ImportedCommitmentsInfo::::get().unwrap().next_block_number_index,
+ 0
+ );
+ for index in 0..commitments_to_keep {
+ assert!(ImportedCommitments::::get(
+ index as TestBridgedBlockNumber + 1
+ )
+ .is_some());
+ assert_eq!(
+ ImportedBlockNumbers::::get(index),
+ Some(Into::into(index + 1)),
+ );
+ }
+
+ // import next commitment
+ next_block();
+ import_commitment(commitments_to_import[commitments_to_keep as usize].clone())
+ .expect("must succeed");
+ assert_eq!(
+ ImportedCommitmentsInfo::::get().unwrap().next_block_number_index,
+ 1
+ );
+ assert!(ImportedCommitments::::get(
+ commitments_to_keep as TestBridgedBlockNumber + 1
+ )
+ .is_some());
+ assert_eq!(
+ ImportedBlockNumbers::::get(0),
+ Some(Into::into(commitments_to_keep + 1)),
+ );
+ // the side effect of the import is that the commitment#1 is pruned
+ assert!(ImportedCommitments::::get(1).is_none());
+
+ // import next commitment
+ next_block();
+ import_commitment(commitments_to_import[commitments_to_keep as usize + 1].clone())
+ .expect("must succeed");
+ assert_eq!(
+ ImportedCommitmentsInfo::::get().unwrap().next_block_number_index,
+ 2
+ );
+ assert!(ImportedCommitments::::get(
+ commitments_to_keep as TestBridgedBlockNumber + 2
+ )
+ .is_some());
+ assert_eq!(
+ ImportedBlockNumbers::::get(1),
+ Some(Into::into(commitments_to_keep + 2)),
+ );
+ // the side effect of the import is that the commitment#2 is pruned
+ assert!(ImportedCommitments::::get(1).is_none());
+ assert!(ImportedCommitments::::get(2).is_none());
+ });
+ }
+
+ generate_owned_bridge_module_tests!(BasicOperatingMode::Normal, BasicOperatingMode::Halted);
+}
diff --git a/bridges/modules/beefy/src/mock.rs b/bridges/modules/beefy/src/mock.rs
new file mode 100644
index 0000000000000000000000000000000000000000..c99566b6b06d1855319d614f4f4ddfbf2fb1918b
--- /dev/null
+++ b/bridges/modules/beefy/src/mock.rs
@@ -0,0 +1,193 @@
+// Copyright 2019-2021 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 .
+
+use crate as beefy;
+use crate::{
+ utils::get_authorities_mmr_root, BridgedBeefyAuthoritySet, BridgedBeefyAuthoritySetInfo,
+ BridgedBeefyCommitmentHasher, BridgedBeefyMmrLeafExtra, BridgedBeefySignedCommitment,
+ BridgedMmrHash, BridgedMmrHashing, BridgedMmrProof,
+};
+
+use bp_beefy::{BeefyValidatorSignatureOf, ChainWithBeefy, Commitment, MmrDataOrHash};
+use bp_runtime::{BasicOperatingMode, Chain, ChainId};
+use codec::Encode;
+use frame_support::{construct_runtime, derive_impl, weights::Weight};
+use sp_core::{sr25519::Signature, Pair};
+use sp_runtime::{
+ testing::{Header, H256},
+ traits::{BlakeTwo256, Hash},
+};
+
+pub use sp_consensus_beefy::ecdsa_crypto::{AuthorityId as BeefyId, Pair as BeefyPair};
+use sp_core::crypto::Wraps;
+use sp_runtime::traits::Keccak256;
+
+pub type TestAccountId = u64;
+pub type TestBridgedBlockNumber = u64;
+pub type TestBridgedBlockHash = H256;
+pub type TestBridgedHeader = Header;
+pub type TestBridgedAuthoritySetInfo = BridgedBeefyAuthoritySetInfo;
+pub type TestBridgedValidatorSet = BridgedBeefyAuthoritySet;
+pub type TestBridgedCommitment = BridgedBeefySignedCommitment;
+pub type TestBridgedValidatorSignature = BeefyValidatorSignatureOf;
+pub type TestBridgedCommitmentHasher = BridgedBeefyCommitmentHasher;
+pub type TestBridgedMmrHashing = BridgedMmrHashing;
+pub type TestBridgedMmrHash = BridgedMmrHash;
+pub type TestBridgedBeefyMmrLeafExtra = BridgedBeefyMmrLeafExtra;
+pub type TestBridgedMmrProof = BridgedMmrProof;
+pub type TestBridgedRawMmrLeaf = sp_consensus_beefy::mmr::MmrLeaf<
+ TestBridgedBlockNumber,
+ TestBridgedBlockHash,
+ TestBridgedMmrHash,
+ TestBridgedBeefyMmrLeafExtra,
+>;
+pub type TestBridgedMmrNode = MmrDataOrHash;
+
+type Block = frame_system::mocking::MockBlock;
+
+construct_runtime! {
+ pub enum TestRuntime
+ {
+ System: frame_system::{Pallet, Call, Config, Storage, Event},
+ Beefy: beefy::{Pallet},
+ }
+}
+
+#[derive_impl(frame_system::config_preludes::TestDefaultConfig as frame_system::DefaultConfig)]
+impl frame_system::Config for TestRuntime {
+ type Block = Block;
+}
+
+impl beefy::Config for TestRuntime {
+ type MaxRequests = frame_support::traits::ConstU32<16>;
+ type BridgedChain = TestBridgedChain;
+ type CommitmentsToKeep = frame_support::traits::ConstU32<16>;
+}
+
+#[derive(Debug)]
+pub struct TestBridgedChain;
+
+impl Chain for TestBridgedChain {
+ const ID: ChainId = *b"tbch";
+
+ type BlockNumber = TestBridgedBlockNumber;
+ type Hash = H256;
+ type Hasher = BlakeTwo256;
+ type Header = sp_runtime::testing::Header;
+
+ type AccountId = TestAccountId;
+ type Balance = u64;
+ type Nonce = u64;
+ type Signature = Signature;
+
+ fn max_extrinsic_size() -> u32 {
+ unreachable!()
+ }
+ fn max_extrinsic_weight() -> Weight {
+ unreachable!()
+ }
+}
+
+impl ChainWithBeefy for TestBridgedChain {
+ type CommitmentHasher = Keccak256;
+ type MmrHashing = Keccak256;
+ type MmrHash = ::Output;
+ type BeefyMmrLeafExtra = ();
+ type AuthorityId = BeefyId;
+ type AuthorityIdToMerkleLeaf = pallet_beefy_mmr::BeefyEcdsaToEthereum;
+}
+
+/// Run test within test runtime.
+pub fn run_test(test: impl FnOnce() -> T) -> T {
+ sp_io::TestExternalities::new(Default::default()).execute_with(test)
+}
+
+/// Initialize pallet and run test.
+pub fn run_test_with_initialize(initial_validators_count: u32, test: impl FnOnce() -> T) -> T {
+ run_test(|| {
+ let validators = validator_ids(0, initial_validators_count);
+ let authority_set = authority_set_info(0, &validators);
+
+ crate::Pallet::::initialize(
+ RuntimeOrigin::root(),
+ bp_beefy::InitializationData {
+ operating_mode: BasicOperatingMode::Normal,
+ best_block_number: 0,
+ authority_set,
+ },
+ )
+ .expect("initialization data is correct");
+
+ test()
+ })
+}
+
+/// Import given commitment.
+pub fn import_commitment(
+ header: crate::mock_chain::HeaderAndCommitment,
+) -> sp_runtime::DispatchResult {
+ crate::Pallet::::submit_commitment(
+ RuntimeOrigin::signed(1),
+ header
+ .commitment
+ .expect("thou shall not call import_commitment on header without commitment"),
+ header.validator_set,
+ Box::new(header.leaf),
+ header.leaf_proof,
+ )
+}
+
+pub fn validator_pairs(index: u32, count: u32) -> Vec {
+ (index..index + count)
+ .map(|index| {
+ let mut seed = [1u8; 32];
+ seed[0..8].copy_from_slice(&(index as u64).encode());
+ BeefyPair::from_seed(&seed)
+ })
+ .collect()
+}
+
+/// Return identifiers of validators, starting at given index.
+pub fn validator_ids(index: u32, count: u32) -> Vec {
+ validator_pairs(index, count).into_iter().map(|pair| pair.public()).collect()
+}
+
+pub fn authority_set_info(id: u64, validators: &[BeefyId]) -> TestBridgedAuthoritySetInfo {
+ let merkle_root = get_authorities_mmr_root::(validators.iter());
+
+ TestBridgedAuthoritySetInfo { id, len: validators.len() as u32, keyset_commitment: merkle_root }
+}
+
+/// Sign BEEFY commitment.
+pub fn sign_commitment(
+ commitment: Commitment,
+ validator_pairs: &[BeefyPair],
+ signature_count: usize,
+) -> TestBridgedCommitment {
+ let total_validators = validator_pairs.len();
+ let random_validators =
+ rand::seq::index::sample(&mut rand::thread_rng(), total_validators, signature_count);
+
+ let commitment_hash = TestBridgedCommitmentHasher::hash(&commitment.encode());
+ let mut signatures = vec![None; total_validators];
+ for validator_idx in random_validators.iter() {
+ let validator = &validator_pairs[validator_idx];
+ signatures[validator_idx] =
+ Some(validator.as_inner_ref().sign_prehashed(commitment_hash.as_fixed_bytes()).into());
+ }
+
+ TestBridgedCommitment { commitment, signatures }
+}
diff --git a/bridges/modules/beefy/src/mock_chain.rs b/bridges/modules/beefy/src/mock_chain.rs
new file mode 100644
index 0000000000000000000000000000000000000000..c83907f8395684d03cc62892e519565fb72237f7
--- /dev/null
+++ b/bridges/modules/beefy/src/mock_chain.rs
@@ -0,0 +1,299 @@
+// Copyright 2019-2021 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 .
+
+//! Utilities to build bridged chain and BEEFY+MMR structures.
+
+use crate::{
+ mock::{
+ sign_commitment, validator_pairs, BeefyPair, TestBridgedBlockNumber, TestBridgedCommitment,
+ TestBridgedHeader, TestBridgedMmrHash, TestBridgedMmrHashing, TestBridgedMmrNode,
+ TestBridgedMmrProof, TestBridgedRawMmrLeaf, TestBridgedValidatorSet,
+ TestBridgedValidatorSignature, TestRuntime,
+ },
+ utils::get_authorities_mmr_root,
+};
+
+use bp_beefy::{BeefyPayload, Commitment, ValidatorSetId, MMR_ROOT_PAYLOAD_ID};
+use codec::Encode;
+use pallet_mmr::NodeIndex;
+use rand::Rng;
+use sp_consensus_beefy::mmr::{BeefyNextAuthoritySet, MmrLeafVersion};
+use sp_core::Pair;
+use sp_runtime::traits::{Hash, Header as HeaderT};
+use std::collections::HashMap;
+
+#[derive(Debug, Clone)]
+pub struct HeaderAndCommitment {
+ pub header: TestBridgedHeader,
+ pub commitment: Option,
+ pub validator_set: TestBridgedValidatorSet,
+ pub leaf: TestBridgedRawMmrLeaf,
+ pub leaf_proof: TestBridgedMmrProof,
+ pub mmr_root: TestBridgedMmrHash,
+}
+
+impl HeaderAndCommitment {
+ pub fn customize_signatures(
+ &mut self,
+ f: impl FnOnce(&mut Vec