From dd7f86f0d50064481ed0b7c0218494a5cfad997e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 30 Oct 2023 10:12:34 +0100 Subject: [PATCH 1/8] Explain approval rights (#42) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This also adds a tutorial on how to add the github name to the on-chain identity. --------- Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: Przemek Rzad Co-authored-by: André Silva --- .github/review-bot.yml | 16 ++++++---------- README.md | 10 ++++++++++ docs/on-chain-identity-process.png | Bin 0 -> 365121 bytes docs/on-chain-identity.md | 15 +++++++++++++++ relay/polkadot/README.adoc | 5 ----- 5 files changed, 31 insertions(+), 15 deletions(-) create mode 100644 docs/on-chain-identity-process.png create mode 100644 docs/on-chain-identity.md delete mode 100644 relay/polkadot/README.adoc diff --git a/.github/review-bot.yml b/.github/review-bot.yml index 230f2d0ca5..7f81f6a3c4 100644 --- a/.github/review-bot.yml +++ b/.github/review-bot.yml @@ -9,12 +9,9 @@ rules: - name: Relay and system files condition: include: - - ^relay\/kusama\/.* - - ^relay\/polkadot\/.* + - ^relay\/.* - ^system-parachains\/.* - - ^CHANGELOG$ - exclude: - - ^relay\/.+\.adoc$ + - ^CHANGELOG.md$ type: fellows minRank: 3 minApprovals: 4 @@ -22,11 +19,10 @@ rules: condition: include: - '.*' - exclude: - - ^relay\/kusama\/.* - - ^relay\/polkadot\/.* - - ^\.github/.* + exclude: + - ^relay\/.* - ^system-parachains\/.* - - ^target\/.* + - ^\.github/.* + - ^CHANGELOG.md$ type: fellows minRank: 2 diff --git a/README.md b/README.md index 8b01afe128..e24a7e40db 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,16 @@ Each leaf folder contains one runtime crate: └── glutton-kusama ``` +## Approval rights + +The approval rights are configured in [`review-bot.yml`](.github/review-bot.yml). The rights are configured as: + +- All files in `.github` require two approvals from Fellowship members of rank 4 or higher. +- `CHANGELOG.md`, `relay/*` or `system-parachains/*` require four approvals from Fellowship members of rank 3 or higher. +- All other files require the approval from one Fellowship member of rank 2 or higher. + +The review-bot uses the on-chain identity to map from a GitHub account to a Fellowship member. This requires that each Fellowship member add their GitHub handle to their on-chain identity. Check [here](docs/on-chain-identity.md) for instructions. + # Working on Pull Requests To merge a pull request, we use [Auto Merge Bot](https://github.com/paritytech/auto-merge-bot). diff --git a/docs/on-chain-identity-process.png b/docs/on-chain-identity-process.png new file mode 100644 index 0000000000000000000000000000000000000000..fb08c7e6c19a73079ab71f850d2f4f22d21e6a4d GIT binary patch literal 365121 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≫c*VdRrR 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
3RsVgTMbo>g-zzrV&@ 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 Extrinsics`. Select your fellowship member account and pick the extrinsic `identity.setIdentity`. Below is an example screenshot of what it should look like including the `github` field. + +![Example extrinsic to set on-chain identity](on-chain-identity-process.png) + +Keep in mind that when filling in the data with `Raw` type only ASCII is accepted, therefore if you need to use UTF-8 characters (e.g. diacritics or emojis), you should convert the data to hex beforehand. For example, my legal name is "André Silva", which I need to submit as `0x416e6472c3a92053696c7661`. You can use [this](https://onlinehextools.com/convert-utf8-to-hex) tool to do the conversion, just disable the options `Add Hex Base` and `Space Between Hex Values`, after the conversion you should prepend the result with a single `0x` and submit as `Raw`. + +After submitting the extrinsic you won't be able to see the `github` field in the polkadot.js UI (custom fields aren't shown). You can confirm that everything was set correctly by checking the state (`Developer > Chain State > identity.identityOf`), or by using a block explorer like [Statescan](https://polkadot.statescan.io) which shows custom fields. + +## Getting a judgment on your identity + +After your identity is properly set you can get a judgment on it from one of the existing registrars. For instructions on how to get a judgment from the W3F registrar check [this](https://registrar.web3.foundation/) page which contains links to instructions. Due to the custom field in your identity the automated verification process won't work and you'll need to join the support channel on matrix to complete the verification. diff --git a/relay/polkadot/README.adoc b/relay/polkadot/README.adoc deleted file mode 100644 index 3337331081..0000000000 --- a/relay/polkadot/README.adoc +++ /dev/null @@ -1,5 +0,0 @@ - -= Polkadot Runtime - -placeholder -//TODO Write content :) (https://github.com/paritytech/polkadot/issues/159) From 5d98c2efcdb61a90e5a325c80b6c5d2b2c1d6625 Mon Sep 17 00:00:00 2001 From: asynchronous rob Date: Tue, 14 Nov 2023 14:45:42 -0600 Subject: [PATCH 2/8] Restore governance lock periods to 7 days in Polkadot (#86) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a revert of https://github.com/paritytech/polkadot/commit/d73503cc2351ffec047a4912ecdb3e1eab5f46aa which has not been released. Deploying without this change would lead to referendum participants and delegates having their tokens locked for 4 times longer than expected. Participants in any referendums ending after the runtime upgrade is applied would be affected. Even more of an issue is delegates, where all current delegates would be affected by 4 times longer lock up issues. The affected user-base is enormous, and there is little to no possibility of reaching all these users to get them to adapt in time. Although a 7 Day lock multiplier wasn't the originally intended target for Polkadot, breaking user expectations with this change is an even larger issue. --------- Co-authored-by: Bastian Köcher Co-authored-by: Bastian Köcher --- CHANGELOG.md | 6 ++++++ relay/polkadot/src/governance/mod.rs | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52211be6e2..918e6c6df7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ Changelog for the runtimes governed by the Polkadot Fellowship. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [1.0.1] 22.10.2023 + +### Changed + +- Restore governance lock periods to 7 days in Polkadot ([polkadot-fellows/runtimes#86](https://github.com/polkadot-fellows/runtimes/pull/86)) + ## [1.0.0] 22.10.2023 ### Changed diff --git a/relay/polkadot/src/governance/mod.rs b/relay/polkadot/src/governance/mod.rs index 79c904622d..39a7188954 100644 --- a/relay/polkadot/src/governance/mod.rs +++ b/relay/polkadot/src/governance/mod.rs @@ -32,7 +32,7 @@ mod tracks; pub use tracks::TracksInfo; parameter_types! { - pub const VoteLockingPeriod: BlockNumber = prod_or_fast!(28 * DAYS, 1); + pub const VoteLockingPeriod: BlockNumber = prod_or_fast!(7 * DAYS, 1); } impl pallet_conviction_voting::Config for Runtime { From 643dfd812b2ab96ee69eea5a467dc3d764bc70f4 Mon Sep 17 00:00:00 2001 From: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Date: Thu, 16 Nov 2023 21:06:34 +0100 Subject: [PATCH 3/8] Change Version for 1.0.1 Release (#89) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make runtime version match release version. --------- Co-authored-by: Bastian Köcher --- relay/polkadot/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relay/polkadot/src/lib.rs b/relay/polkadot/src/lib.rs index 97ceedb0cd..d74def520c 100644 --- a/relay/polkadot/src/lib.rs +++ b/relay/polkadot/src/lib.rs @@ -132,7 +132,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("polkadot"), impl_name: create_runtime_str!("parity-polkadot"), authoring_version: 0, - spec_version: 1_000_000, + spec_version: 1_000_001, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 24, From 7652cb6d242ae4a4d0fc98fe988c3efda73216c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 17 Nov 2023 15:28:07 +0100 Subject: [PATCH 4/8] Lower approval requirements (#92) This pull requests lowers the approval requirements until we have a more sophisticated tool. So, that we could do assign a voting power per rank and then require that X amount of voting power. This would then mean that may 3 rank II approvals having the same voting power as rank III. --- .github/review-bot.yml | 8 +-- .github/workflows/review-trigger.yml | 2 +- relay/kusama/Cargo.toml | 2 +- .../constants/src/weights/paritydb_weights.rs | 52 +++++++++---------- .../constants/src/weights/rocksdb_weights.rs | 52 +++++++++---------- 5 files changed, 58 insertions(+), 58 deletions(-) diff --git a/.github/review-bot.yml b/.github/review-bot.yml index 7f81f6a3c4..a1a4c1f059 100644 --- a/.github/review-bot.yml +++ b/.github/review-bot.yml @@ -4,7 +4,7 @@ rules: include: - ^\.github/.* type: fellows - minRank: 4 + minRank: 3 minApprovals: 2 - name: Relay and system files condition: @@ -13,8 +13,8 @@ rules: - ^system-parachains\/.* - ^CHANGELOG.md$ type: fellows - minRank: 3 - minApprovals: 4 + minRank: 2 + minApprovals: 3 - name: General Files condition: include: @@ -25,4 +25,4 @@ rules: - ^\.github/.* - ^CHANGELOG.md$ type: fellows - minRank: 2 + minRank: 1 diff --git a/.github/workflows/review-trigger.yml b/.github/workflows/review-trigger.yml index 40e2918df2..0edbc7c9a9 100644 --- a/.github/workflows/review-trigger.yml +++ b/.github/workflows/review-trigger.yml @@ -1,6 +1,6 @@ name: Review-Trigger -on: +on: pull_request_target: types: - opened diff --git a/relay/kusama/Cargo.toml b/relay/kusama/Cargo.toml index 7911a54974..f6e6fd995a 100644 --- a/relay/kusama/Cargo.toml +++ b/relay/kusama/Cargo.toml @@ -119,7 +119,7 @@ keyring = { package = "sp-keyring", version = "26.0.0" } sp-trie = { version = "24.0.0" } separator = "0.4.1" serde_json = "1.0.96" -remote-externalities = { package = "frame-remote-externalities" , version = "0.30.0" } +remote-externalities = { package = "frame-remote-externalities", version = "0.30.0" } tokio = { version = "1.24.2", features = ["macros"] } sp-tracing = { default-features = false , version = "12.0.0" } diff --git a/relay/polkadot/constants/src/weights/paritydb_weights.rs b/relay/polkadot/constants/src/weights/paritydb_weights.rs index ae7bedc394..f9995399f8 100644 --- a/relay/polkadot/constants/src/weights/paritydb_weights.rs +++ b/relay/polkadot/constants/src/weights/paritydb_weights.rs @@ -44,34 +44,34 @@ pub mod constants { /// `ParityDB` can be enabled with a feature flag, but is still experimental. These weights /// are available for brave runtime engineers who may want to try this out as default. pub const ParityDbWeight: RuntimeDbWeight = RuntimeDbWeight { - /// Time to read one storage item. - /// Calculated by multiplying the *Average* of all values with `1.1` and adding `0`. - /// - /// Stats [NS]: - /// Min, Max: 4_611, 13_478_005 - /// Average: 10_750 - /// Median: 10_655 - /// Std-Dev: 12214.49 - /// - /// Percentiles [NS]: - /// 99th: 14_451 - /// 95th: 12_588 - /// 75th: 11_200 + // Time to read one storage item. + // Calculated by multiplying the *Average* of all values with `1.1` and adding `0`. + // + // Stats [NS]: + // Min, Max: 4_611, 13_478_005 + // Average: 10_750 + // Median: 10_655 + // Std-Dev: 12214.49 + // + // Percentiles [NS]: + // 99th: 14_451 + // 95th: 12_588 + // 75th: 11_200 read: 11_826 * constants::WEIGHT_REF_TIME_PER_NANOS, - /// Time to write one storage item. - /// Calculated by multiplying the *Average* of all values with `1.1` and adding `0`. - /// - /// Stats [NS]: - /// Min, Max: 8_023, 47_367_740 - /// Average: 34_592 - /// Median: 32_703 - /// Std-Dev: 49417.24 - /// - /// Percentiles [NS]: - /// 99th: 69_379 - /// 95th: 47_168 - /// 75th: 35_252 + // Time to write one storage item. + // Calculated by multiplying the *Average* of all values with `1.1` and adding `0`. + // + // Stats [NS]: + // Min, Max: 8_023, 47_367_740 + // Average: 34_592 + // Median: 32_703 + // Std-Dev: 49417.24 + // + // Percentiles [NS]: + // 99th: 69_379 + // 95th: 47_168 + // 75th: 35_252 write: 38_052 * constants::WEIGHT_REF_TIME_PER_NANOS, }; } diff --git a/relay/polkadot/constants/src/weights/rocksdb_weights.rs b/relay/polkadot/constants/src/weights/rocksdb_weights.rs index 029f892b01..c5cf0457b7 100644 --- a/relay/polkadot/constants/src/weights/rocksdb_weights.rs +++ b/relay/polkadot/constants/src/weights/rocksdb_weights.rs @@ -43,34 +43,34 @@ pub mod constants { /// By default, Substrate uses `RocksDB`, so this will be the weight used throughout /// the runtime. pub const RocksDbWeight: RuntimeDbWeight = RuntimeDbWeight { - /// Time to read one storage item. - /// Calculated by multiplying the *Average* of all values with `1.1` and adding `0`. - /// - /// Stats [NS]: - /// Min, Max: 5_015, 1_441_022 - /// Average: 18_635 - /// Median: 17_795 - /// Std-Dev: 4829.75 - /// - /// Percentiles [NS]: - /// 99th: 32_074 - /// 95th: 26_658 - /// 75th: 19_363 + // Time to read one storage item. + // Calculated by multiplying the *Average* of all values with `1.1` and adding `0`. + // + // Stats [NS]: + // Min, Max: 5_015, 1_441_022 + // Average: 18_635 + // Median: 17_795 + // Std-Dev: 4829.75 + // + // Percentiles [NS]: + // 99th: 32_074 + // 95th: 26_658 + // 75th: 19_363 read: 20_499 * constants::WEIGHT_REF_TIME_PER_NANOS, - /// Time to write one storage item. - /// Calculated by multiplying the *Average* of all values with `1.1` and adding `0`. - /// - /// Stats [NS]: - /// Min, Max: 16_368, 34_500_937 - /// Average: 75_882 - /// Median: 74_236 - /// Std-Dev: 64706.41 - /// - /// Percentiles [NS]: - /// 99th: 111_151 - /// 95th: 92_666 - /// 75th: 80_297 + // Time to write one storage item. + // Calculated by multiplying the *Average* of all values with `1.1` and adding `0`. + // + // Stats [NS]: + // Min, Max: 16_368, 34_500_937 + // Average: 75_882 + // Median: 74_236 + // Std-Dev: 64706.41 + // + // Percentiles [NS]: + // 99th: 111_151 + // 95th: 92_666 + // 75th: 80_297 write: 83_471 * constants::WEIGHT_REF_TIME_PER_NANOS, }; } From 2c6b1bff391c91b92f620eb06887b59f26913fc4 Mon Sep 17 00:00:00 2001 From: Javier Bullrich Date: Fri, 17 Nov 2023 15:52:35 +0100 Subject: [PATCH 5/8] use github app for auto-merge-bot (#94) This changes the credentials for auto-merge-bot With this it stops using a GitHub action but instead it uses a GitHub app, by using a GitHub app, PRs merged by it will trigger GitHub actions. This is to circumvent a security measure set up by GitHub to stop recursive action executions. This supersedes #88 --- .github/workflows/auto-merge.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml index 3cd5079778..f0d46448a8 100644 --- a/.github/workflows/auto-merge.yml +++ b/.github/workflows/auto-merge.yml @@ -5,6 +5,8 @@ on: issue_comment: types: [created] +env: master + jobs: set-auto-merge: runs-on: ubuntu-latest @@ -14,9 +16,15 @@ jobs: - name: Get the GitHub handle of the fellows uses: paritytech/get-fellows-action@v1.0.0 id: fellows + - name: Generate token + id: merge_token + uses: tibdex/github-app-token@v1 + with: + app_id: ${{ secrets.REVIEW_APP_ID }} + private_key: ${{ secrets.REVIEW_APP_KEY }} - name: Set auto merge uses: paritytech/auto-merge-bot@v1.0.0 with: - GITHUB_TOKEN: '${{ github.token }}' + GITHUB_TOKEN: ${{ steps.merge_token.outputs.token }} MERGE_METHOD: "SQUASH" ALLOWLIST: ${{ steps.fellows.outputs.github-handles }} From eb5e3f3af5d720271ddcc273662004d0c39da389 Mon Sep 17 00:00:00 2001 From: Javier Bullrich Date: Mon, 20 Nov 2023 15:18:09 +0100 Subject: [PATCH 6/8] fixed auto-merge-bot (#97) I confused `env` which is used for environment variables for `environment` which is the key word to fetch environment secrets when doing #94. This will fix that mistake. --- .github/workflows/auto-merge.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml index f0d46448a8..66325807b1 100644 --- a/.github/workflows/auto-merge.yml +++ b/.github/workflows/auto-merge.yml @@ -5,11 +5,10 @@ on: issue_comment: types: [created] -env: master - jobs: set-auto-merge: runs-on: ubuntu-latest + environment: master # Important! This forces the job to run only on comments on Pull Requests that starts with '/merge' if: ${{ github.event.issue.pull_request && startsWith(github.event.comment.body, '/merge') }} steps: From bdcd03911980e4d49e19e6b7f9ce1f3883cfd8c7 Mon Sep 17 00:00:00 2001 From: Muharem Date: Mon, 20 Nov 2023 22:56:22 +0100 Subject: [PATCH 7/8] upgrade to v1.2 (#56) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In the PR we bump versions for all dependacy crates from `polkadot-sdk` and apply all required changes Changes: - `parachains_runtime_api_impl` `v5` -> `v7`, - from https://github.com/paritytech/polkadot-sdk/pull/1543; - `Consideration` setup for preimage pallet instances, - from https://github.com/paritytech/polkadot-sdk/pull/1363; - `experimental` feature removed for `pallet-society`, `pallet-xcm`, `runtime-common` crates, - from https://github.com/paritytech/polkadot-sdk/pull/1503; - `pallet_election_provider_multi_phase::Config::SignedDepositBase` set to `GeometricDepositBase`, - from https://github.com/paritytech/polkadot-sdk/pull/1547; - support `open_outbound_hrmp_channel_for_benchmarks_or_tests` func rename, - from https://github.com/paritytech/polkadot-sdk/pull/1422; - missing weight functions added for `runtime_parachains_hrmp` and `pallet_preimage`; TODO: - [x] Deleted the Copy&paste para scheduler migration from https://github.com/polkadot-fellows/runtimes/pull/26 in b6666134d288374838fb4e47c7bdb0b9d92c0eed. This should be applied in the next runtime upgrade, but i did not properly check yet. --------- Signed-off-by: Oliver Tale-Yazdi Co-authored-by: Oliver Tale-Yazdi Co-authored-by: Bastian Köcher Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> --- CHANGELOG.md | 13 + Cargo.lock | 1158 ++++++++--------- relay/kusama/Cargo.toml | 184 +-- relay/kusama/constants/Cargo.toml | 12 +- relay/kusama/src/lib.rs | 32 +- relay/kusama/src/paras_scheduler_migration.rs | 218 ---- relay/kusama/src/weights/pallet_preimage.rs | 21 + .../src/weights/runtime_parachains_hrmp.rs | 42 + relay/polkadot/Cargo.toml | 168 +-- relay/polkadot/constants/Cargo.toml | 12 +- relay/polkadot/src/lib.rs | 34 +- .../polkadot/src/paras_scheduler_migration.rs | 218 ---- relay/polkadot/src/weights/pallet_preimage.rs | 21 + .../src/weights/runtime_parachains_hrmp.rs | 42 + .../asset-hubs/asset-hub-kusama/Cargo.toml | 120 +- .../asset-hubs/asset-hub-polkadot/Cargo.toml | 114 +- .../bridge-hubs/bridge-hub-kusama/Cargo.toml | 100 +- .../bridge-hub-polkadot/Cargo.toml | 100 +- .../collectives-polkadot/Cargo.toml | 116 +- .../collectives-polkadot/src/impls.rs | 2 +- .../collectives-polkadot/src/lib.rs | 17 +- .../src/weights/pallet_preimage.rs | 21 + .../gluttons/glutton-kusama/Cargo.toml | 58 +- 23 files changed, 1276 insertions(+), 1547 deletions(-) delete mode 100644 relay/kusama/src/paras_scheduler_migration.rs delete mode 100644 relay/polkadot/src/paras_scheduler_migration.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 918e6c6df7..60daaed988 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,19 @@ Changelog for the runtimes governed by the Polkadot Fellowship. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [Unreleased] + +### Changed + +- Upgrade parachains runtime API from v5 to v7 in Polkadot and Kusama ([polkadot-fellows/runtimes#56](https://github.com/polkadot-fellows/runtimes/pull/56)) +- Upgrade Preimage pallet's config implementations to adapt the new `Consideration` API ([polkadot-fellows/runtimes#56](https://github.com/polkadot-fellows/runtimes/pull/56)) +- Remove `experimental` feature flag for `pallet-society`, `pallet-xcm`, and `runtime-common` crates imports ([polkadot-fellows/runtimes#56](https://github.com/polkadot-fellows/runtimes/pull/56)) +- Election provider: use a geometric deposit base calculation for EPM signed submissions in Polkadot and Kusama ([polkadot-fellows/runtimes#56](https://github.com/polkadot-fellows/runtimes/pull/56)) + +### Fixed + +- Add missing weight functions for `runtime_parachains_hrmp` and `preimage` pallets ([polkadot-fellows/runtimes#56](https://github.com/polkadot-fellows/runtimes/pull/56)) + ## [1.0.1] 22.10.2023 ### Changed diff --git a/Cargo.lock b/Cargo.lock index c9865981cf..b777934cda 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -205,9 +205,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.5.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", @@ -243,9 +243,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "2.1.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ "anstyle", "windows-sys 0.48.0", @@ -273,7 +273,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df752953c49ce90719c7bf1fc587bc8227aed04732ea0c0f85e5397d7fdbd1a1" dependencies = [ "include_dir", - "itertools", + "itertools 0.10.5", "proc-macro-error", "proc-macro2", "quote", @@ -527,9 +527,9 @@ dependencies = [ [[package]] name = "asset-test-utils" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8c54a703225defe6b87f7b715bf72723342ef1ecf9a5e96d02c55a5bc31959" +checksum = "61cffdf2b648c1621ab71f24dbb08758d23709c72b7f0bd6795f16eef45579fe" dependencies = [ "assets-common", "cumulus-pallet-dmp-queue", @@ -562,9 +562,9 @@ dependencies = [ [[package]] name = "assets-common" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29b1f6400a746207ff6e077b13103427c646914d49cc459977090a966908ff91" +checksum = "ed19c72a730ac55e147d8f3204468f3dfb50d53c4c4e285d05cacd0c71bdecee" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -633,7 +633,7 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -644,7 +644,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -745,9 +745,9 @@ dependencies = [ [[package]] name = "binary-merkle-tree" -version = "8.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc86c4514675732c8bdc8a8bfc78b2e1b50dcce1a4aa5baea3338c9f2c3c1790" +checksum = "ef1ea0c49f8a41e530d4cbb7c81651d9d085d5f1470f4e4ea8c8c9c59b67a1bf" dependencies = [ "hash-db", "log", @@ -780,7 +780,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -930,9 +930,9 @@ dependencies = [ [[package]] name = "bp-bridge-hub-cumulus" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f657204b8e931d9c9b78139e661b7b58b005f627f0caf5c98257df0b81a97b" +checksum = "4ce716fc5e1c4b8201edf2e606e7ad16575b2bbc2bf0d47c79c613847bc78841" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -946,9 +946,9 @@ dependencies = [ [[package]] name = "bp-bridge-hub-rococo" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6819a3f7a5c6c48ca4796ba70a586b5736baeb2e7542907f1c675d986141b20" +checksum = "717a65501207b3228c7b43dd41bded921145a2576c826d46983ac5e212d48fd3" dependencies = [ "bp-bridge-hub-cumulus", "bp-messages", @@ -961,9 +961,9 @@ dependencies = [ [[package]] name = "bp-bridge-hub-wococo" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5145dec4dbeb78e65f44b0f2a4953d5f276f8db140906b9831aee1434c9988e" +checksum = "a9954fcb7b2d22c528eb5ce2fe8d4fd0ec9ba4f61e110416f82e09c5420b8f01" dependencies = [ "bp-bridge-hub-cumulus", "bp-messages", @@ -976,9 +976,9 @@ dependencies = [ [[package]] name = "bp-header-chain" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "842dd43f5229669efb74cdc909c0e9315a7cdbe4513b6225dc0ab0ec21e4a1b8" +checksum = "29e5f1fc28d625ae266e8cb75e755e2d975009b81d2acaa3ca491de8649c10a3" dependencies = [ "bp-runtime", "finality-grandpa", @@ -994,9 +994,9 @@ dependencies = [ [[package]] name = "bp-messages" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb9128928257331dfb41c4c283549a7795447ca5dc5bc5b6753ee6118912651" +checksum = "20c772d4a9622e851363b140621846d77a7c4723b89f40cff03f20ddc8021e2f" dependencies = [ "bp-header-chain", "bp-runtime", @@ -1010,9 +1010,9 @@ dependencies = [ [[package]] name = "bp-parachains" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6a2ffaab775e6e0295d52bd9b768862e522823ef8ecb1a0f05f87953b496239" +checksum = "489e6393ed00e33fe1dac88208488a05d8b4394bcacfb7d534f001174680df30" dependencies = [ "bp-header-chain", "bp-polkadot-core", @@ -1028,9 +1028,9 @@ dependencies = [ [[package]] name = "bp-polkadot-core" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953c2ec80269860053085ac259da9ed7b1ad3b8985435255f7635000dbd3c440" +checksum = "7bf1cd48449dc78e78dc2521242221a2c122af237dcb0590015b3daf378d3e6b" dependencies = [ "bp-messages", "bp-runtime", @@ -1047,9 +1047,9 @@ dependencies = [ [[package]] name = "bp-relayers" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d4c6316868f49602c4a011d850444181d2f1b837a238214f1e287a0e6d74710" +checksum = "f95ab06bd8ce8fe01bd6d2d4aacb6b0cd3a5b4bec33f8bb9b24fcaf0c9de6afd" dependencies = [ "bp-messages", "bp-runtime", @@ -1062,9 +1062,9 @@ dependencies = [ [[package]] name = "bp-runtime" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6356e28b2d80b622e95914d130db0a4a9d2deb27863930228eb53b29bc6f28a5" +checksum = "41088b5a0ea0a7d6de116872637e0da0b8aba00845825d199d63d3cd6b10f7ad" dependencies = [ "frame-support", "frame-system", @@ -1086,15 +1086,15 @@ dependencies = [ [[package]] name = "bp-test-utils" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eb045c0076d4f12de4ada37b5a30df377eb69988b577c98fe2c311da34b531" +checksum = "9bc1a2e7117843f44c4eab10af8ae89beacfa5331be70ff65580770e952742c3" dependencies = [ "bp-header-chain", "bp-parachains", "bp-polkadot-core", "bp-runtime", - "ed25519-dalek 1.0.1", + "ed25519-dalek", "finality-grandpa", "parity-scale-codec", "sp-application-crypto", @@ -1107,9 +1107,9 @@ dependencies = [ [[package]] name = "bp-xcm-bridge-hub-router" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e48a83f01c1469df3803773535052444c25ac050b070b1c18b48a378d913c8" +checksum = "33da9fb48f8dbfaa418098f81fb342b7fc71cbf4a3e4154e73da3ddc5c6e8eec" dependencies = [ "parity-scale-codec", "scale-info", @@ -1245,9 +1245,9 @@ dependencies = [ [[package]] name = "bridge-hub-test-utils" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3840cd4df9976e371b178033469cdcf1f68ab34f5e5fa43675bc1c5374d97786" +checksum = "e7eaec22f9b8e9c273ad81967b667601136dce45556ffb20c1a58ce05b1daa30" dependencies = [ "assert_matches", "asset-test-utils", @@ -1294,9 +1294,9 @@ dependencies = [ [[package]] name = "bridge-runtime-common" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87df6d2289a3ab0699d97b40ac3ef83f944b0db738e326327c267fdeca92b3a6" +checksum = "97cad9f78ab42138deed67edc3b5123b3db390675d129b781e305424d6ee8e29" dependencies = [ "bp-header-chain", "bp-messages", @@ -1472,9 +1472,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b40ccee03b5175c18cde8f37e7d2a33bcef6f8ec8f7cc0d81090d1bb380949c9" +checksum = "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3" dependencies = [ "smallvec", ] @@ -1594,9 +1594,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.2" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a13b88d2c62ff462f88e4a121f17a82c1af05693a2f192b5c38d14de73c19f6" +checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" dependencies = [ "clap_builder", "clap_derive", @@ -1604,9 +1604,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.2" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08" +checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" dependencies = [ "anstream", "anstyle", @@ -1616,21 +1616,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.2" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "clap_lex" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "coarsetime" @@ -1938,7 +1938,7 @@ dependencies = [ "cranelift-codegen", "cranelift-entity", "cranelift-frontend", - "itertools", + "itertools 0.10.5", "log", "smallvec", "wasmparser", @@ -2103,9 +2103,9 @@ dependencies = [ [[package]] name = "cumulus-pallet-aura-ext" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc007c63cdec6ce1f8e51cb98cce4631889881b9b9b763823164d362621afa0" +checksum = "b220a1c3071a088217c0a23020b17baba60e2685f13ae08396e10b3c62e197a5" dependencies = [ "cumulus-pallet-parachain-system", "frame-support", @@ -2122,9 +2122,9 @@ dependencies = [ [[package]] name = "cumulus-pallet-dmp-queue" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320bbaf34d68a20f48c20b751df15aad015d43f8089994761ff0234cdfc40e9a" +checksum = "c63f5595db891c0b05c846a1fd7d0f49ad8b4b19e5f79f015e125853b6a519e1" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -2140,9 +2140,9 @@ dependencies = [ [[package]] name = "cumulus-pallet-parachain-system" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0328425da88d976f122d28fdf23b094b6171b3c33adda8789495bb84ff0cece" +checksum = "8848c0ce4e55777b621703ef62224d5b8e2c250ccc03fb34c5372d995b86fa16" dependencies = [ "bytes", "cumulus-pallet-parachain-system-proc-macro", @@ -2171,21 +2171,21 @@ dependencies = [ [[package]] name = "cumulus-pallet-parachain-system-proc-macro" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7dde6ab318d17f36551556bed0f525cb7c823ab8da06ecd7b65140932da3a4" +checksum = "e1235a0c8b242349a41d84c07774e17acf942e9fee383dda31c021ccaea9eedb" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "cumulus-pallet-session-benchmarking" -version = "4.0.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c5345c0370ae667404209f674b0d1e40c6a476ba4d8fce2cd645fa224394d35" +checksum = "30bf028e8349229271e07d4ce99d8ada205a27de52d849bdd08e89a8271df424" dependencies = [ "frame-benchmarking", "frame-support", @@ -2198,9 +2198,9 @@ dependencies = [ [[package]] name = "cumulus-pallet-xcm" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45dc968dcf8a41f72b1035f1ba1dc43d3577192e612bf4f19bbc6c34b73c8a1a" +checksum = "9848582a0748e29ab06faf9b1448b7039da1f90f6400b384c391c5831cb5fd7c" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -2215,9 +2215,9 @@ dependencies = [ [[package]] name = "cumulus-pallet-xcmp-queue" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c6c8e354bcfc7ca04f316e1d4ef8e33b17efaae8f15af3ed8d360fb2bf0589" +checksum = "e0ac74a0c55c7ed27a51ce618b864e9d4a7f39de8ea03a4bd65ccff55145b5fa" dependencies = [ "cumulus-primitives-core", "frame-benchmarking", @@ -2237,9 +2237,9 @@ dependencies = [ [[package]] name = "cumulus-primitives-core" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63861b6bfd937c5eaf60058147c036caf07c4462d3f5098af24a4a757b64fe29" +checksum = "1aed2ae9917749ad77ca62acf65826a0f5e725a920ff1cab01d9bb020d59cdbf" dependencies = [ "parity-scale-codec", "polkadot-core-primitives", @@ -2255,9 +2255,9 @@ dependencies = [ [[package]] name = "cumulus-primitives-parachain-inherent" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffef2e14f1dc33bd098050209d75c9ab12512498bb498bc8f252f05e3b425853" +checksum = "87d8d415d8748df234bf0415576648fa529fbffa9de802959db7851f5e43d4dc" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2279,9 +2279,9 @@ dependencies = [ [[package]] name = "cumulus-primitives-utility" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e444b76437537a1e045b3d5e20b10117389eb865c60ce044c88dfd59261bff2" +checksum = "926a72124a351594cfdce41d7762e668d442e08c193d909d9f69fbe22e95414e" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -2298,9 +2298,9 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-interface" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e11d8ee7a514ba2bc309f5b52da520c719250a9622189f40256268db38c9db" +checksum = "642e7e83e5b3162cb2bf5b160e11443f5aabf11c5fd3c1deaf116d907ae79716" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2317,9 +2317,9 @@ dependencies = [ [[package]] name = "cumulus-test-relay-sproof-builder" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0100a89d8a8924934f861c427cc0e6ec8e5255f79ee8aab5faa87888e2d5b91" +checksum = "4fba4a4d5de5f68bde4aff857194efcaae44e874b6947d9aac9ea02bcda4382c" dependencies = [ "cumulus-primitives-core", "parity-scale-codec", @@ -2381,7 +2381,7 @@ checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -2408,7 +2408,7 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -2425,7 +2425,7 @@ checksum = "50c49547d73ba8dcfd4ad7325d64c6d5391ff4224d498fc39a6f3f49825a530d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -2648,9 +2648,9 @@ dependencies = [ [[package]] name = "directories" -version = "4.0.1" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" dependencies = [ "dirs-sys", ] @@ -2667,13 +2667,14 @@ dependencies = [ [[package]] name = "dirs-sys" -version = "0.3.7" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", + "option-ext", "redox_users", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -2695,23 +2696,23 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "docify" -version = "0.2.1" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029de870d175d11969524d91a3fb2cbf6d488b853bff99d41cf65e533ac7d9d2" +checksum = "4235e9b248e2ba4b92007fe9c646f3adf0ffde16dc74713eacc92b8bc58d8d2f" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.1" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cac43324656a1b05eb0186deb51f27d2d891c704c37f34de281ef6297ba193e5" +checksum = "47020e12d7c7505670d1363dd53d6c23724f71a90a3ae32ff8eba40de8404626" dependencies = [ "common-path", "derive-syn-parse", @@ -2719,7 +2720,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.31", + "syn 2.0.38", "termcolor", "toml 0.7.6", "walkdir", @@ -2790,15 +2791,6 @@ dependencies = [ "spki 0.7.2", ] -[[package]] -name = "ed25519" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" -dependencies = [ - "signature 1.6.4", -] - [[package]] name = "ed25519" version = "2.2.2" @@ -2809,20 +2801,6 @@ dependencies = [ "signature 2.1.0", ] -[[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek 3.2.0", - "ed25519 1.5.3", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "zeroize", -] - [[package]] name = "ed25519-dalek" version = "2.0.0" @@ -2830,7 +2808,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" dependencies = [ "curve25519-dalek 4.0.0", - "ed25519 2.2.2", + "ed25519", "rand_core 0.6.4", "serde", "sha2 0.10.7", @@ -2933,7 +2911,7 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -2944,7 +2922,7 @@ checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -3047,18 +3025,6 @@ dependencies = [ "quote", ] -[[package]] -name = "expander" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3774182a5df13c3d1690311ad32fbe913feef26baba609fa2dd5f72042bd2ab6" -dependencies = [ - "blake2", - "fs-err", - "proc-macro2", - "quote", -] - [[package]] name = "expander" version = "2.0.0" @@ -3069,7 +3035,7 @@ dependencies = [ "fs-err", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -3243,9 +3209,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4797e9270d3315a1724880ca63eaaab8f11cccbd76943a0f5c6ace9621016b47" +checksum = "a6d54d3a638f0279210c924f4a44e6548bf6345670f5af059a874a5006af4eca" dependencies = [ "parity-scale-codec", ] @@ -3267,9 +3233,9 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949ba5b5c9d552c37d7ad39bd837394c1d21727281ef32882539bc2ec6687b2d" +checksum = "a01af5751a0e4492dc979c57586976403e7ab63641add1a9fd804cad4169f4f6" dependencies = [ "frame-support", "frame-support-procedural", @@ -3293,21 +3259,21 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad4e68676c4d0160a7d9134f2376c29fd927844bff2aee1b35dd10d295d2856" +checksum = "35d1461dc3a49bbd9bdf8955eca27f54cdcc6b38373bbd636e011a8594d23f3f" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "frame-election-provider-support" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e605b5c5ce6abeba8db09dda9ad74a6d781e5c5e722670096df48917f0a33d26" +checksum = "f9fe9b8322a08a8a52ed3a7a7f7ca90827aa3bace41dc060c5b32d2ff0cd25c3" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -3323,9 +3289,9 @@ dependencies = [ [[package]] name = "frame-executive" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382016f6286f2b05a1f65dd97509bc70afd59e26dc8c7ab0126e4220c19abb58" +checksum = "da12a8c223d6991bd7f9aae542d3d7c9fadde3a81b6f16c2550b808f3b21ecd5" dependencies = [ "frame-support", "frame-system", @@ -3354,9 +3320,9 @@ dependencies = [ [[package]] name = "frame-remote-externalities" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e4661884c0ac3f2391cfaf4b210af3fdf89216e8e245c843798de23d182a62" +checksum = "b8b26379217d223364e6715ed12cdfdc9f368c6afcb15fd8771e387ab7b0265f" dependencies = [ "async-recursion", "futures", @@ -3377,9 +3343,9 @@ dependencies = [ [[package]] name = "frame-support" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "609125451f5ffb1675998e07e64e05e4b3dad330b1537952ace5897d6ed24f0a" +checksum = "c0dc5640279221fbd316a3a652963c1cb9d51630ea3f62a08a5ad7fa402f23a4" dependencies = [ "aquamarine", "bitflags 1.3.2", @@ -3418,52 +3384,52 @@ dependencies = [ [[package]] name = "frame-support-procedural" -version = "18.0.0" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd22a1ed96e765ec763bbaef2089ed8bb5f8539df40181ddac57be7be74685c7" +checksum = "f22719c65353a0010a084cb2040e2e6569aff34562e59119cb66ddd7ecfa588c" dependencies = [ "Inflector", "cfg-expr", "derive-syn-parse", "expander 2.0.0", "frame-support-procedural-tools", - "itertools", + "itertools 0.10.5", "macro_magic", "proc-macro-warning", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "frame-support-procedural-tools" -version = "7.0.0" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82858452d9332de312f5ff411fd8aecee2323a344b241078f565b8c3c2e47d38" +checksum = "e046ecdc04dd66f17d760525631f553ddcbea6f09423f78fcf52b47c97656cd0" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "frame-support-procedural-tools-derive" -version = "8.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c7a09be6bd676fc01c5dd5ba057ba1f7e492e071d4a5fd7c579d99a96093d6" +checksum = "4034ebf9ca7497fa3893191fe3e81adcd3d7cd1c232e60ef41ef58ea0c445ae9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "frame-system" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40dc2f4182ad4c05275b0d3f38e3e74bd1cd17231f28ce1e879177fd9829887c" +checksum = "dc19d4d4037b695805385d56983da173bbb969f68e0e4e6a1240bb30118e87d7" dependencies = [ "cfg-if", "frame-support", @@ -3481,9 +3447,9 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "097cc1f91dc52a648c6b983ebf7aa75bf395b038354772b47e190ecd4caac9a8" +checksum = "bb79e630dc8fbed5601e58c1b8d84ec3900a511f105140b5bbb6c18c476488d2" dependencies = [ "frame-benchmarking", "frame-support", @@ -3497,9 +3463,9 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27a0f4c5811e962938b8f93787ae907eacf8312f6797d5efd53fd9d1f4590562" +checksum = "a13ed2be7e4ad2cf140d16b94194595d3b2fea0b60a46832945c497924c2d0d0" dependencies = [ "parity-scale-codec", "sp-api", @@ -3507,9 +3473,9 @@ dependencies = [ [[package]] name = "frame-try-runtime" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6becaab3f4648f9c5eeb8eb270614b7e4b5fd7d1deccab1d4a86cb41f8fb06d4" +checksum = "a9eceb53c4efa82dd7dd08f0770abfaa9587c592a015b21dc29ce4c24422de13" dependencies = [ "frame-support", "parity-scale-codec", @@ -3612,7 +3578,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -4354,6 +4320,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.9" @@ -4559,9 +4534,9 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87fa26eba25489f17e493dd50a8b8f49448432bfd98ec06f730c83034a154e" +checksum = "7fd5fda44486f7b352e8199e091d80371b1b9fdd9b3c117e5e25ec28477220a5" dependencies = [ "frame-support", "polkadot-primitives", @@ -4762,7 +4737,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce" dependencies = [ "bs58 0.4.0", - "ed25519-dalek 2.0.0", + "ed25519-dalek", "log", "multiaddr", "multihash", @@ -5264,7 +5239,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -5278,7 +5253,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -5289,7 +5264,7 @@ checksum = "c12469fc165526520dff2807c2975310ab47cf7190a45b99b49a7dc8befab17b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -5300,7 +5275,7 @@ checksum = "b8fb85ec1620619edf2984a7693497d4ec88a9665d8b87e942856884c92dbf2a" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -5847,11 +5822,17 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "orchestra" -version = "0.0.5" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "227585216d05ba65c7ab0a0450a3cf2cbd81a98862a54c4df8e14d5ac6adb015" +checksum = "46d78e1deb2a8d54fc1f063a544130db4da31dfe4d5d3b493186424910222a76" dependencies = [ "async-trait", "dyn-clonable", @@ -5866,12 +5847,13 @@ dependencies = [ [[package]] name = "orchestra-proc-macro" -version = "0.0.5" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2871aadd82a2c216ee68a69837a526dfe788ecbe74c4c5038a6acdbff6653066" +checksum = "d035b1f968d91a826f2e34a9d6d02cb2af5aa7ca39ebd27922d850ab4b2dd2c6" dependencies = [ - "expander 0.0.6", - "itertools", + "expander 2.0.0", + "indexmap 2.0.0", + "itertools 0.11.0", "petgraph", "proc-macro-crate", "proc-macro2", @@ -5912,9 +5894,9 @@ dependencies = [ [[package]] name = "pallet-alliance" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e332ac5e332a88494488e502425aab59fbb8aaa96068c5ec75020b0ddd5eecc8" +checksum = "8aa981568b2cfe63b62b09c09d369d69283d54395ba94be3669dbe38ec6da95d" dependencies = [ "array-bytes", "frame-benchmarking", @@ -5934,9 +5916,9 @@ dependencies = [ [[package]] name = "pallet-asset-conversion" -version = "5.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1661ad646244fd155fae26799b9f12246aac8a18ed785550ceea6e4ac25cfbdc" +checksum = "f3e13819a9db7afbe281394b31f73a797bac08688c9aa43fc7114dd448742e05" dependencies = [ "frame-benchmarking", "frame-support", @@ -5953,9 +5935,9 @@ dependencies = [ [[package]] name = "pallet-asset-conversion-tx-payment" -version = "5.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47e76551d0029aa4e8d28d0108c4575fae812ff2c9e7a7fd79890a4c7a8223f" +checksum = "cec5f8b0d20b9967345e4177e30afbe3584ecf502be767e45d57b13550c8e9e0" dependencies = [ "frame-support", "frame-system", @@ -5969,9 +5951,9 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b0aea073ae2b627ddb7e775abb7872df8efb7fabd7c50dd05d3ca6ef0c72a4" +checksum = "0a7e58838852ea75ab55a57316d5a81344d8e7917da4490abffbb3a81ffb8872" dependencies = [ "frame-benchmarking", "frame-support", @@ -5988,9 +5970,9 @@ dependencies = [ [[package]] name = "pallet-assets" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2efdbd9727983844e1b82da41870829c0fd5d47ccb700fb27d734b3823d44ae" +checksum = "d704075c2b504c1f66263440cf97af860efd7e7919f25ccebdeeeb255313c261" dependencies = [ "frame-benchmarking", "frame-support", @@ -6005,9 +5987,9 @@ dependencies = [ [[package]] name = "pallet-aura" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2cf20aa88b42b71e70d254db752673e0a67f4cefd070b33c1e42d8b7d25d9a" +checksum = "d7e2b1cf20dbd9fe630c69b4b0d3bb0d5fa1223ee728b0fc0064ef65698918c2" dependencies = [ "frame-support", "frame-system", @@ -6023,9 +6005,9 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a335fdce40d450adf27def590d1f1c1f42a49f6f91420063ae2391b9eb88b4d4" +checksum = "8bdc251538bcec9340337a1624372561e6d8e6ae4eeb1adb1d7b1af13b349cda" dependencies = [ "frame-support", "frame-system", @@ -6040,9 +6022,9 @@ dependencies = [ [[package]] name = "pallet-authorship" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cda9086337d01cdb509422cbe7290aa17edab7bf5677218faae30dab23205a6" +checksum = "ae682e78744224150298730dfa1e2c39220e600dce17e42d2c77e49af3d9c59f" dependencies = [ "frame-support", "frame-system", @@ -6055,9 +6037,9 @@ dependencies = [ [[package]] name = "pallet-babe" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d7e474e0f5e9987b315dabe11269520cec98b44131e51a342e6a9d3a3d3f36" +checksum = "eebab5b1891cc12c13348509831703bea1f160eff60fa7b76b94097cf13b7dcc" dependencies = [ "frame-benchmarking", "frame-support", @@ -6080,9 +6062,9 @@ dependencies = [ [[package]] name = "pallet-bags-list" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd87d03bd1aee46275df25838fc5ba8c01fdb8df8a6860daa3d0f0b973a74ace" +checksum = "fd175d6ac024054b5fb41ce899a656e2e3972b0c4a2cbbe030b8d79fe25dc892" dependencies = [ "aquamarine", "docify", @@ -6103,9 +6085,9 @@ dependencies = [ [[package]] name = "pallet-balances" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0486a52507072bd738dc851acf7b42def3645db10777f93dccdaa5933e41269b" +checksum = "7c17ec19ad23b26866ad7d60cdf8b613f653db7f44232aa25009811441908e2b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6119,9 +6101,9 @@ dependencies = [ [[package]] name = "pallet-beefy" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7b81cbf5d642ee2881f7860390e70a290e1f94afbc3b27d59f137e8fdeb69" +checksum = "6272fe91e3d0e5ea20dd82bc0ea8b0f104fe5eb10c66cadc19f7460586b94ff3" dependencies = [ "frame-support", "frame-system", @@ -6140,9 +6122,9 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60cca2fe7df196e41e2d43fcb97a76f68ff76dae38861b60e837d1a86ea9aa1a" +checksum = "bbf6226868b86de0cb2bc795223ff02f9955329409ac61b71cd193582800872b" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -6166,9 +6148,9 @@ dependencies = [ [[package]] name = "pallet-bounties" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf8df1ab55bac70ea7a99794d7bace2a311cc3049654aef3965516b181654b88" +checksum = "e99eb21766e941ca1d92350da602ca618959c0917f216e124f2838d0e50b6c03" dependencies = [ "frame-benchmarking", "frame-support", @@ -6185,9 +6167,9 @@ dependencies = [ [[package]] name = "pallet-bridge-grandpa" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15ac3a6a500cf11ec838450054d26c330ea9dc792a5a7c2fc469d69e31e8816" +checksum = "d97671efddf3f78817a968de41c0b831c71bdc109eee5f173922596761dbf779" dependencies = [ "bp-header-chain", "bp-runtime", @@ -6207,9 +6189,9 @@ dependencies = [ [[package]] name = "pallet-bridge-messages" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6c4b5a64fd5ea73836f03c04c290ec66b53aca8f5c714bd805508a6e84ef904" +checksum = "167e0760c481a396d2219e0d25ea45230d21acf96f3e65419e91d53264332b7a" dependencies = [ "bp-messages", "bp-runtime", @@ -6227,9 +6209,9 @@ dependencies = [ [[package]] name = "pallet-bridge-parachains" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c179f0b5b698b0f643c7eac740a9e3bdea6561a3539aa45930f074f1bc1c8c" +checksum = "a4d6cf6236d9a49396d99a66500b28d80719ebc8bb06320307a5ad50fe79e71c" dependencies = [ "bp-header-chain", "bp-parachains", @@ -6249,9 +6231,9 @@ dependencies = [ [[package]] name = "pallet-bridge-relayers" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81ec236d325f1d9c5d24023088181449ca9f41e9351a2be25b2f82796be16450" +checksum = "c7097304f3a7e57a704b29bca87276e711d3d297bf37201be36c6f67b0d7c78f" dependencies = [ "bp-messages", "bp-relayers", @@ -6270,9 +6252,9 @@ dependencies = [ [[package]] name = "pallet-child-bounties" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03417c311cb707b1f0994397856e9a3611dd358f0caf67ccff91ac4ae45a005b" +checksum = "6b29f699677ce3e509f12a61529286373534948097f139944ef390add34fece5" dependencies = [ "frame-benchmarking", "frame-support", @@ -6290,9 +6272,9 @@ dependencies = [ [[package]] name = "pallet-collator-selection" -version = "4.0.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2716f12bd4d379080b8d6de82c8293f6ba2a4b4268fdf690dd71e68d52ad4ab9" +checksum = "01abb1abe8297d0a7c571b609d923ada973999b63702049343612325eb29c622" dependencies = [ "frame-benchmarking", "frame-support", @@ -6310,9 +6292,9 @@ dependencies = [ [[package]] name = "pallet-collective" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2afbe5f8793d4d01e88e39ad02c656333bafabd86f87e5699f2b4022d8057eaa" +checksum = "06d2dcd4a78c11068eafd20df2bf0cbbfda8743ec5434170644c7f0eec7d7615" dependencies = [ "frame-benchmarking", "frame-support", @@ -6328,9 +6310,9 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520968f141a44b3dfd73ce4be80de07010c3847460bfbc5fb726d329f765f903" +checksum = "5d2bbed9f775d59346703efc5e1d8a3ee3f04aa73c39f733ca80edaf02907380" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6346,9 +6328,9 @@ dependencies = [ [[package]] name = "pallet-core-fellowship" -version = "7.0.0" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13aeaa8fe18020ff64792b883e1be6cadf695556e44279893216cb48bc0d7270" +checksum = "293bfe7b2bdd064de7c86d34c8e844a9abeddde8ad2be7964f4e6be6831fca7e" dependencies = [ "frame-benchmarking", "frame-support", @@ -6365,9 +6347,9 @@ dependencies = [ [[package]] name = "pallet-democracy" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d44914750d93d466020b7d90c1170ce3e3b1fe3876df428749f4896a37bb5a" +checksum = "676fa85ebbe8ac31aef51c08cdf6422690f71d277c0369e630129b96d3ae9541" dependencies = [ "frame-benchmarking", "frame-support", @@ -6384,9 +6366,9 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ed40f39a03e6734c60d760e6b7ad5f1e115ac1d36f02a3111e60421b9ba0d2e" +checksum = "394d978de9611f3b23fc499369f86d5d82e64800959a5701d66907737e779406" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6408,9 +6390,9 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56b31f394ea662fa9199c89c5712046fbd18e52211937332016b359ac81aef69" +checksum = "3a23b0dec60fd7a0c98234a4b04ef5e1f682bdf7ff3266ca499d85e1aac7bbec" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6423,9 +6405,9 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1373439465e6110ed0ab60905660d097df2d05736e008d6bc1d415b5fdb2386a" +checksum = "23776772408c7fd612ee11c17071b1f5d93cbd8d0e0aadc16d112aca2711028d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6443,9 +6425,9 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87789ed95833afcface11a8048708dafa35951308d7de5e9aed666e8044b3cc6" +checksum = "c41338a9d75f9c4c656d5d5ff15d8154edd7de61a97361e2d0ddc552baf6e944" dependencies = [ "docify", "frame-benchmarking", @@ -6463,9 +6445,9 @@ dependencies = [ [[package]] name = "pallet-glutton" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e705170005c5ebf054dae6252aea11082231e1d45ef4f54794313183b71bbc" +checksum = "3e08c402cb7f7b7fee476d99099da04acbd3ee05b21c5e15c39455cc24683960" dependencies = [ "blake2", "frame-benchmarking", @@ -6482,9 +6464,9 @@ dependencies = [ [[package]] name = "pallet-grandpa" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b77a81a40b8f2cf6dcd49eaa69b882c1ebb651a381e959a62a875d782cac856a" +checksum = "977d01d5ce3f06fa17adf2ffa55ebaea765efa23bc11a242773a28955ee1d02b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6506,9 +6488,9 @@ dependencies = [ [[package]] name = "pallet-identity" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c9a8b0a02ae7650a8fd188b26fa0852152021fafb5da6d69e1d17f9d03e714" +checksum = "ffae303f4ecd1da950d4e27417ee4e3bbe3b8eb33776ded6184c40ed97dc5430" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6523,9 +6505,9 @@ dependencies = [ [[package]] name = "pallet-im-online" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70314914e290dbdb52adea50bf3e15965ca7b72c5a02d35dd6b9ded60bfb4877" +checksum = "7c30d7b90763c186d63e3f3f7e102c34df17917f6aeb24c4b6503356a886c16e" dependencies = [ "frame-benchmarking", "frame-support", @@ -6544,9 +6526,9 @@ dependencies = [ [[package]] name = "pallet-indices" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b23c5b95f9ef2fd17c01cc6948c88aa9e263a49a90e1a5665798d744e5f8956" +checksum = "44159982fa42f9ec453d07bc9bbd41f0d51a710a58616b437700c87113e917cc" dependencies = [ "frame-benchmarking", "frame-support", @@ -6562,9 +6544,9 @@ dependencies = [ [[package]] name = "pallet-membership" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0a055f189d360aca0919b65b91ab0b701e6bac2143ac46a285a9faf9ec7208e" +checksum = "6f4ff96fb2e4e126c96933e7a38e765b0bc30c8de0a66e3680d6a0d38356638e" dependencies = [ "frame-benchmarking", "frame-support", @@ -6580,9 +6562,9 @@ dependencies = [ [[package]] name = "pallet-message-queue" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa98dc8e920cf04f55c8d5ee878477a5be826952b99fe106e72c847c3391d0e" +checksum = "13771c5cba1de8dd9b0492ab8923a8dd6b76a657f6eed6265db65c169b5f9111" dependencies = [ "frame-benchmarking", "frame-support", @@ -6600,9 +6582,9 @@ dependencies = [ [[package]] name = "pallet-mmr" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7596f59b17e1ee05040d4fc0070d3ae781de34e847be95423d7f5310c3a9d63" +checksum = "224a83531b4a748a06501e033b09a22d51c70b8a58ae03794e7d3df4865ea49a" dependencies = [ "frame-benchmarking", "frame-support", @@ -6619,9 +6601,9 @@ dependencies = [ [[package]] name = "pallet-multisig" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e44176821dc2c2caface4303cfac8e8aa18ecf2bb15504f4a460abd2cb52dcd" +checksum = "f777e13b1d99233df1b4a6d7cf50d8c8214389be249467d8616983491ebdb537" dependencies = [ "frame-benchmarking", "frame-support", @@ -6636,9 +6618,9 @@ dependencies = [ [[package]] name = "pallet-nft-fractionalization" -version = "5.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3160a1cbdc2a28363bd2ff4cba72ccb96a98cbb86a81ab694b4e99b79a62fcee" +checksum = "77610d09fae9ffb9a8cd147cad6eb7dd5225576bc3a60689fda221e620c06282" dependencies = [ "frame-benchmarking", "frame-support", @@ -6654,9 +6636,9 @@ dependencies = [ [[package]] name = "pallet-nfts" -version = "17.0.0" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3650227e8678336e93b679e9eeafdb1e0ff04bffcca148c00e3fb906ff5b08" +checksum = "d83c46a08a715439995b204e19267bc84066cb70e659f58604ba6621a67c7847" dependencies = [ "enumflags2", "frame-benchmarking", @@ -6673,9 +6655,9 @@ dependencies = [ [[package]] name = "pallet-nfts-runtime-api" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4de7f6a1613d3391121afd73548f4f37bea22cd7d5ce269db83a497ccc286c86" +checksum = "f7869cbe7277155d30c3ff7f9cb4752eb22d54370480bfd8c144e5a088eba498" dependencies = [ "pallet-nfts", "parity-scale-codec", @@ -6684,9 +6666,9 @@ dependencies = [ [[package]] name = "pallet-nis" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422715b4239456d73a78bae69a7411836c54bda35f69753524eff601ca910102" +checksum = "c0f288d37549f0cc09c719577b21dab288785e95f91ff69e8916f7f92f438f94" dependencies = [ "frame-benchmarking", "frame-support", @@ -6701,9 +6683,9 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" -version = "20.0.0" +version = "21.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ab7e472a983273ad52af65ac431769fda82a272e54631e451a47ea99c24b15" +checksum = "61cd64134f94f4ce7ff594d15ad6599d50abde54e94fd923366855b5bf0835c7" dependencies = [ "frame-support", "frame-system", @@ -6721,9 +6703,9 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61f6f692dd7cab2ab8aeafe3a9dce645afe818712df62ac3ae432696731bb509" +checksum = "889d4929272cb67bdd444700a343f142816ebb5bbae65e771e70f52decb5931f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6742,9 +6724,9 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" -version = "18.0.0" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48f5eb57e511e2d084b4d3b00b70cb36d0b8474222a86b2195da6b61503ac6f8" +checksum = "6c3a6ba161ed6b04be29ce4b6f1e9a2b0d8ab8f3708a95c39e0e0f334aa0954a" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -6754,9 +6736,9 @@ dependencies = [ [[package]] name = "pallet-offences" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa80a36a4d7d42d2aab354242dbd37c1d253f30255be2b3edc357dc9f2ad7916" +checksum = "6dee74e6484d9dc2787baa8687b0b27115167848d2f821ca4e57826af4af50c6" dependencies = [ "frame-support", "frame-system", @@ -6772,9 +6754,9 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07b4aabb1ea386486bd4a42ab3a067fdffae6716876d59c0e3fa1cf3e1040201" +checksum = "e534be39e87f22945af557c5fcb3b4e22d57a881af4966a0ac15f6f3f9feb2c7" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6797,9 +6779,9 @@ dependencies = [ [[package]] name = "pallet-preimage" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e00ea296ac3f7f543a409e177b771459b14c76b33145d1374eabf984ebc34f14" +checksum = "50fdee12172aeac7a8c3292c559cf59947c71e37630b43d4f27f5b0f7845725c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6815,9 +6797,9 @@ dependencies = [ [[package]] name = "pallet-proxy" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186b0aa4c542217f8c6e0afaa1f5d9aea257019af6d426f591c2764e7b71d3c8" +checksum = "092eaf774e2ddf8974137fa2970835e421280fb637ddb06ebdfe47fefe29419b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6831,9 +6813,9 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c8cf8915fcdb60a6dffd6cc20eb4bf2f95bd1f9424f598d1e99d47be0d84fa0" +checksum = "d16d59a6c2169cc28de2eafd24bf9f26d68291fff19186e8dfec88577517723c" dependencies = [ "frame-benchmarking", "frame-support", @@ -6850,9 +6832,9 @@ dependencies = [ [[package]] name = "pallet-recovery" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8c78735503c504465acf94b6ea3174f1a046bbbd8246d357fee0ed422e8a26b" +checksum = "a1ee085c026d20ce52d431b8ebe3283f6047fd411953c4cd003239154211c6e5" dependencies = [ "frame-benchmarking", "frame-support", @@ -6866,9 +6848,9 @@ dependencies = [ [[package]] name = "pallet-referenda" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99bdb6d7fcdda9c4a85efbbc5ea5499e07e339491d25ac913649c196a78b6d31" +checksum = "1b78ae2f740127ca4689066c8dce9aa79e2d7273bda0ab6db06a884892055b89" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6886,9 +6868,9 @@ dependencies = [ [[package]] name = "pallet-salary" -version = "8.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "477ba8329b1984377cd94d62b869ce976de2176c3126f58aa6efdcec808b236c" +checksum = "253502cbe69e79840cd04c7a1313ce55ef99cabcc96f7d686e08a022309ff82d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6905,9 +6887,9 @@ dependencies = [ [[package]] name = "pallet-scheduler" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cfdb4f02689fb9c4f22190f60be1acc5e6553d1c89b44272509bea2ebd1855a" +checksum = "148b54bb7364da5b95dd34a1ce5d2d89d6a4a28a07e46019cef27e0e3042605b" dependencies = [ "docify", "frame-benchmarking", @@ -6924,9 +6906,9 @@ dependencies = [ [[package]] name = "pallet-session" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f6f04ae97b311aa20a91a8b0bf92f7e231cff993547d3e874c3e60020cfa96" +checksum = "2f8482f465a73688a7d58e20dea4b10c9a0425995975b2a43d9ce4fe9a21a491" dependencies = [ "frame-support", "frame-system", @@ -6947,9 +6929,9 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a370a07dbfaa94bcc5e01f4e9cda1ad6fbca019bcb0a172a2ee26f61e736dbab" +checksum = "e688d5db25f47ede6cc0d6f8a76a08e07bf2d017935f2d9e7c78c40aac53089b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6965,9 +6947,9 @@ dependencies = [ [[package]] name = "pallet-society" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548b95cf82dd9caa346469a679cdef63a34d7105a009e33eb3930f41a70b2b64" +checksum = "587e0dfc3b03d940b1168ac9b0c0d9da26ad35ebe49b198d022d9f2f97ad26fb" dependencies = [ "frame-benchmarking", "frame-support", @@ -6984,9 +6966,9 @@ dependencies = [ [[package]] name = "pallet-staking" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b9b137b78565e4012edf20a3c9fd10fa03e3b857dd3999239454da5d4d2431" +checksum = "7a1b649d9b95f842258b2e811960bf5e08285180e912303bee6b13c256a466c4" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7008,21 +6990,21 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" -version = "8.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b1438535c3430a1c3de1d4c92d9a2c0cb664deb8433c8bf4c5298012ab50c3" +checksum = "9d99ab20edb6dec19370dbda0a627739dde9cdfea9b4310e28b8a0a0ea0e83fc" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "pallet-staking-reward-fn" -version = "14.0.0" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d48988f4264ff9a8088d40e4f4bfdee9606a9abef1e432987f6e40aec76da6" +checksum = "a280ef9dfb602b5f39e448d1c7d5922c154b1aee20e42c0740ffef8e2a58f8d1" dependencies = [ "log", "sp-arithmetic", @@ -7030,9 +7012,9 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a3b908034f3c688deacd672a0c838826edb5a3c980c04faf8f5b84edabbc8a6" +checksum = "7eb64deb42c5725b257bd2d73fbe64f191e1e5378698f06c15951d43cddd13a5" dependencies = [ "parity-scale-codec", "sp-api", @@ -7040,9 +7022,9 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb8084d2091a88147c1caad25bc03b15f3f7320c18087cfe037b8e21b13bd068" +checksum = "102e4426ca996a007026ac39eded61f62c4222fef8840d0a1617b5c41cb1c38b" dependencies = [ "frame-benchmarking", "frame-support", @@ -7058,10 +7040,11 @@ dependencies = [ [[package]] name = "pallet-sudo" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f10e6b5329062c8d78a9d845ebd1201b9b505e2a4b5aa6b4fdceeeccde0c323c" +checksum = "679c265de3a128714d43a7e2edf5ea29f2a39df65e4c44e216c04d6bb5dd5be7" dependencies = [ + "docify", "frame-benchmarking", "frame-support", "frame-system", @@ -7074,10 +7057,11 @@ dependencies = [ [[package]] name = "pallet-timestamp" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924bc62e043df933e6067a2a70a71a16823253e46765e36800f0dc60a0a59018" +checksum = "dac4e66316d53673471420fb887b6a74e2507df169ced62584507ff0fb065c6b" dependencies = [ + "docify", "frame-benchmarking", "frame-support", "frame-system", @@ -7094,9 +7078,9 @@ dependencies = [ [[package]] name = "pallet-tips" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8874f39912e560ea6de9c1e51d50dcd8e9fe7a68f2f9b89e5bf42bfc637cdf36" +checksum = "4a540f30c552ab0dcf32bb378a5f19c9c98dec74647dff93cbe55186aaa6159c" dependencies = [ "frame-benchmarking", "frame-support", @@ -7114,9 +7098,9 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eeaaeaf89f80fe3d19ff9ed60430423a7ea70ca91747b04be830499334d55d3" +checksum = "f4cbb78b8499af1d338072950e4aef6acf3cc630afdb8e19b00306e5252d0386" dependencies = [ "frame-support", "frame-system", @@ -7131,9 +7115,9 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8ee4c219399d7353548641d31aea760007f88223d6de72048fd9d13a9a6601" +checksum = "402155004abb33b7f2eedfa60ba77fb6f898e62db979a796e013714d18a1c9c2" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -7144,9 +7128,9 @@ dependencies = [ [[package]] name = "pallet-treasury" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f099cd65be6adbd3602e5b3df680a5ab868b79c990c5c7b3977e849728632e" +checksum = "9dd64a50b82946d4ccf2178b7f3927ebac562b2ef31cecda53d31f3ff53a57c4" dependencies = [ "frame-benchmarking", "frame-support", @@ -7162,9 +7146,9 @@ dependencies = [ [[package]] name = "pallet-uniques" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6615e1af20293b33ec6c2bb30b9e1a9b4e0420c78b5f2aeed8afe244d9cdc6a" +checksum = "2c489508f7a29895417289850744050305387af0c066e080840f7f4d7e1e40fd" dependencies = [ "frame-benchmarking", "frame-support", @@ -7178,9 +7162,9 @@ dependencies = [ [[package]] name = "pallet-utility" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78c463bcdbe9b5f84b816ea4095d1aea776acd7bae0e9f6fe074acd84094ace" +checksum = "06465e88266b5ed015fdb1ad7345f5008a96d8fa9e012e869b6eb49a8069e809" dependencies = [ "frame-benchmarking", "frame-support", @@ -7195,9 +7179,9 @@ dependencies = [ [[package]] name = "pallet-vesting" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9fdc85285a6ced9b1ce722d4e7681b6b97ccf3a9ee439eeaf6bfc33c2022cbb" +checksum = "1da7d0e09ddc3decc4abe6adca41a24325a458040b1ecdd246143796af2d47b8" dependencies = [ "frame-benchmarking", "frame-support", @@ -7211,9 +7195,9 @@ dependencies = [ [[package]] name = "pallet-whitelist" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a09403cca331027032f2ba9a992e8b6bcd27d95255dfc30f1f6da5fd32ef57bc" +checksum = "997468b98ea225e8aed84cdb78503e3d35d0c997c2977503732c05afb626e5d9" dependencies = [ "frame-benchmarking", "frame-support", @@ -7227,9 +7211,9 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b913e408dfd2e3b1a1834aa03965b1616bf2d4c24c635a1cdd3ae10335c97e48" +checksum = "430a62e82af99a697fabe583b85bf5797ef5d9996b8dec5bc2d195e94b4da3e3" dependencies = [ "bounded-collections", "frame-benchmarking", @@ -7249,9 +7233,9 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e49d6f43940cf0146a59ce21a495f32edb746ec16ec67f41d8a4ad4ada79afe1" +checksum = "23c7213029f113604b5799b6a126239d096427cdb678a377827eaf6928fde182" dependencies = [ "frame-benchmarking", "frame-support", @@ -7269,15 +7253,15 @@ dependencies = [ [[package]] name = "parachains-common" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f61ccf16fd574bc10480b1a106bb8536b5dddd38a44de0ce20e6f44b0cb4e1" +checksum = "63b13d76e1e40c002836b4f12cd771466440d92973f19cd093ff21b79eb12fc9" dependencies = [ "cumulus-primitives-core", "cumulus-primitives-utility", "frame-support", "frame-system", - "kusama-runtime-constants 2.0.0", + "kusama-runtime-constants 3.0.0", "log", "num-traits", "pallet-asset-tx-payment", @@ -7288,7 +7272,7 @@ dependencies = [ "parity-scale-codec", "polkadot-core-primitives", "polkadot-primitives", - "polkadot-runtime-constants 2.0.0", + "polkadot-runtime-constants 3.0.0", "rococo-runtime-constants", "scale-info", "smallvec", @@ -7306,9 +7290,9 @@ dependencies = [ [[package]] name = "parachains-runtimes-test-utils" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f653770c9ad5b9209e76bee456c2979a46a2a0245a8488b70311e005b68d80" +checksum = "7a0455cbf5e12a29f12b487d82c32524d8273ab2044e4845249d189800a752db" dependencies = [ "assets-common", "cumulus-pallet-dmp-queue", @@ -7568,7 +7552,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -7623,9 +7607,9 @@ checksum = "e3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630" [[package]] name = "polkadot-core-primitives" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960aeac8618063cd9eca2a3551a92234a4c9007a970df7bf61d6fc2f9b4b85ff" +checksum = "209cc9c9f7ed951bb11a2ff2f592e6b5cd79d6f50311e4f702adce0fcc577152" dependencies = [ "parity-scale-codec", "scale-info", @@ -7636,9 +7620,9 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edffd01480c2a68452ea585cd5316447b236eb9c02bc95dba5c9654f8f4a15b1" +checksum = "3e67dbaac90484bad44e91812f8bd698cc87587728e570e33ce77c90a7c3cce8" dependencies = [ "lazy_static", "log", @@ -7655,9 +7639,9 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08e1c66cc711d6f5c04be591021c6dedaad1e074f66f3b8bd06553c7f8e5ba2" +checksum = "4b40316be4e77cc63d4fa95236ef4b188b4eb7304918ce6ca5e10aeb568a21bd" dependencies = [ "bs58 0.5.0", "futures", @@ -7675,9 +7659,9 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7f269984611861c4a5297234b4b649a483a5428194790dbea8b711b6e16ea93" +checksum = "d872b0f84734ef355d73e4492fc59c3e755d7232cd465bf0ed68679fb3291868" dependencies = [ "async-channel", "async-trait", @@ -7700,9 +7684,9 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883c5f3b51182a2f2f560230bd8e395bafa231dbc50335a4cc7eb3049860fcb4" +checksum = "b18e1dfcc68fd13a87fb2e06d6c8ec3cb83d6914140b9de3e191cf495089d63e" dependencies = [ "bounded-vec", "futures", @@ -7723,9 +7707,9 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f07bd4e5a7e83b15fea91d92767e5c2a6a3e280a55d21f9bed9e96c25019cfb" +checksum = "306c61acfa9ba62eb36c238236321e2dc2ffe51698555b361a52e5f2f3c1470b" dependencies = [ "async-trait", "derive_more", @@ -7736,6 +7720,7 @@ dependencies = [ "polkadot-node-primitives", "polkadot-primitives", "polkadot-statement-table", + "sc-client-api", "sc-network", "sc-transaction-pool-api", "smallvec", @@ -7748,9 +7733,9 @@ dependencies = [ [[package]] name = "polkadot-overseer" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2012254af68764032245239030ffdfca0c2b0d126de84c0abb3f62a02dba3b68" +checksum = "f2a68991609f78f18243c24b53cbb895147e9001967ef64ab5dbdf60e1ec5aef" dependencies = [ "async-trait", "futures", @@ -7772,9 +7757,9 @@ dependencies = [ [[package]] name = "polkadot-parachain-primitives" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be23c13fd44bab7ed83eea35e1b68bcd21d61cbc6bb15451a8b0a00e627f0ab" +checksum = "864de6d7b7ed9c955aa1da6c53585ad75c73618307b569447dd0559f8f9baef9" dependencies = [ "bounded-collections", "derive_more", @@ -7790,9 +7775,9 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce2c1568c0e0e40b24e8aa149c9194f692c9f9d1f999ab2024974bf47b9323bb" +checksum = "9de3d7ae1191401fe2476a69dece0853011d2c9fdcb7eb194cdead641f395abb" dependencies = [ "bitvec", "hex-literal", @@ -7922,9 +7907,9 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92ab9a0a68d66e0541a150e00e90480e94992d5d7e0494248a4661b1f355ee8" +checksum = "ac922a958e3e1435d7adffe49c1528b6396baf668ab45f635b79bff750053543" dependencies = [ "bitvec", "frame-benchmarking", @@ -7982,9 +7967,9 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9006804184f3f06e5c513d125aebb7764ab8116a340d71ff07ea266c2ae5b159" +checksum = "1d4a7abfe0dff335456790ac8edc342737dffbd67013a38b7bec2f6b523cc175" dependencies = [ "frame-support", "polkadot-primitives", @@ -7997,9 +7982,9 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4bb4e450cc3683d3e583067549c292db2c153a80da0af9717e41549a0a9979" +checksum = "93dbff21f9ce253f4cd976a972c5b4b18150cecb6fdae195a975e51cf3c797df" dependencies = [ "bs58 0.5.0", "frame-benchmarking", @@ -8011,9 +7996,9 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56b7d429eda889f6511ff5d1a1a86765978e59f4dc9b9b692d5d5dfa22a7436b" +checksum = "0ffa4bade116bef54be48bb1ead3917d84478f43184d5f9ae001ec333d7d7d66" dependencies = [ "bitflags 1.3.2", "bitvec", @@ -8033,6 +8018,7 @@ dependencies = [ "pallet-timestamp", "pallet-vesting", "parity-scale-codec", + "polkadot-core-primitives", "polkadot-parachain-primitives", "polkadot-primitives", "polkadot-runtime-metrics", @@ -8059,9 +8045,9 @@ dependencies = [ [[package]] name = "polkadot-statement-table" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b55bf808133addad3d826c344681cf6272acba60a2b9a007f4e4076c2e77eda" +checksum = "857b4c83022e353c48f38e4db15542e5da4d778e81058e533c44d559c72b5a51" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -8139,7 +8125,7 @@ checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" dependencies = [ "difflib", "float-cmp", - "itertools", + "itertools 0.10.5", "normalize-line-endings", "predicates-core", "regex", @@ -8178,7 +8164,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -8198,9 +8184,9 @@ dependencies = [ [[package]] name = "prioritized-metered-channel" -version = "0.2.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382698e48a268c832d0b181ed438374a6bb708a82a8ca273bb0f61c74cf209c4" +checksum = "e99f0c89bd88f393aab44a4ab949351f7bc7e7e1179d11ecbfe50cbe4c47e342" dependencies = [ "coarsetime", "crossbeam-queue", @@ -8260,14 +8246,14 @@ checksum = "3d1eaa7fa0aa1929ffdf7eeb6eac234dde6268914a14ad44d23521ab6a9b258e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] @@ -8306,7 +8292,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -8327,7 +8313,7 @@ checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" dependencies = [ "bytes", "heck", - "itertools", + "itertools 0.10.5", "lazy_static", "log", "multimap", @@ -8348,7 +8334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", - "itertools", + "itertools 0.10.5", "proc-macro2", "quote", "syn 1.0.109", @@ -8623,7 +8609,7 @@ checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -8750,9 +8736,9 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26f5a684888cc4995b2916f22014e0356f0a81fd8086079b4c1c11aaf62a8965" +checksum = "3fef0b660c7a725559c6be97a47511be63561c137da105ee13b07d9c7a462e43" dependencies = [ "frame-support", "polkadot-primitives", @@ -9022,9 +9008,9 @@ dependencies = [ [[package]] name = "sc-allocator" -version = "18.0.0" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f75d11155f65cf4e548b916a95fd3c1193d3fa89cbece489e3627cb5cd93e77c" +checksum = "2bd6e58990dcb1eae76db49c456ded9a7906ee194857cf1dfb00da8bbc8cf73d" dependencies = [ "log", "sp-core", @@ -9034,9 +9020,9 @@ dependencies = [ [[package]] name = "sc-authority-discovery" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1903c35451b28ef27e5fd7cd07f4cb906fa368626e733b6b7315c285d8c3079f" +checksum = "eb85aa27916c2262aef532e6fc12d9654ce4717689cd25c75a88c5cc36609d18" dependencies = [ "async-trait", "futures", @@ -9063,9 +9049,9 @@ dependencies = [ [[package]] name = "sc-block-builder" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d5dc368497d940a5744cf427253a4b2f8d2a2cad9b2fbb897a270a939e54b5f" +checksum = "4653cc3665319f76451f651bc5e3eb84965802293daeaf2def5bfe9c1310171b" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9079,9 +9065,9 @@ dependencies = [ [[package]] name = "sc-chain-spec" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26e51780635e06b9ff2c41a953c57dcc83d86c9459ee432f24775a44b61f2bd3" +checksum = "e5fae1616d342e570fb4770c9f1a73ab8e1aecb9c5b71020404f8e45db458260" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -9099,21 +9085,21 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" -version = "8.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b01ae962b09bc4c95661eed1d6c4996cf72b54f522d0e41d81ae1da65d7bd3c" +checksum = "88a074891d17c03c58b1314c9add361a5a7fb28d4d3addd7a32dca8b119bd877" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "sc-cli" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e347f8c3fe530de1e8e3f735cc826d46fb9b53bd41604f1b82159a2186c6af" +checksum = "bc423e21a22adc4f6056ccb5e19fca9ddc6cce1a49cd9aa44c53d6b2338fbeb3" dependencies = [ "array-bytes", "chrono", @@ -9151,9 +9137,9 @@ dependencies = [ [[package]] name = "sc-client-api" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c17ac3b6dcc569998527e9228f6370d22ba84136f4c1753f6ba4d07c41a3f1" +checksum = "d49efb455b1b276557ba3cac01c2e42811148cc73149858296e4ae96707dc70e" dependencies = [ "fnv", "futures", @@ -9173,14 +9159,15 @@ dependencies = [ "sp-state-machine", "sp-statement-store", "sp-storage", + "sp-trie", "substrate-prometheus-endpoint", ] [[package]] name = "sc-client-db" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c292bad8f2f55772953fc6d0b6970089eb3b1782862799828413b0db847473" +checksum = "a1062af3e43f09e0080714382ee3e7dd850037908938323eefdcd4f4b61bdd6b" dependencies = [ "hash-db", "kvdb", @@ -9205,9 +9192,9 @@ dependencies = [ [[package]] name = "sc-consensus" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc2effbf5b5be7e7b5a0d448d6b83f446cd2425b9be0ab55b97bde8f60a8f46" +checksum = "f5f8da1ef0f036209b80d8bde5c8990ea1a86241532d84b5fd15f5e721da849c" dependencies = [ "async-trait", "futures", @@ -9231,9 +9218,9 @@ dependencies = [ [[package]] name = "sc-executor" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b38c64210870649f89b476295ccd7c078ed7c2b9a3c82f413ad2c9396b63a" +checksum = "5cfeaa8dc2a70ed5820667d3251266ed156f38d8062c2f976aa7c618411f1776" dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", @@ -9254,9 +9241,9 @@ dependencies = [ [[package]] name = "sc-executor-common" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7023e1d9c86b817995a72e294b98f196cc3eb9c162f0b69ba95c3b0bd841ef32" +checksum = "5d404519f2a636d5977b1ac16c90aeb4129fe4609a5b284960a2dcb005c08da6" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -9267,9 +9254,9 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61689d40f3840a20d8987cb2a86d3841f2c3ab851a5cea0c6f466a062abbcd" +checksum = "a82515a0cb74a2acb58f6ced20fae56eeb87ba4d813e60e46cf190a53d44c931" dependencies = [ "anyhow", "cfg-if", @@ -9285,9 +9272,9 @@ dependencies = [ [[package]] name = "sc-informant" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da26c939c308d9bad95a7489a64c84863149451f6b6f5d77be1f8acbba0aa9e8" +checksum = "233ece6736217208ffac94f84de2d15465f80f676f881dacd0a9b3411b476951" dependencies = [ "ansi_term", "futures", @@ -9302,9 +9289,9 @@ dependencies = [ [[package]] name = "sc-keystore" -version = "20.0.0" +version = "21.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a26be641a4d25ec382a340f90c26f5422644269422d2f6e8390073a26d9023" +checksum = "1c15cc8b79eb0832cac48fde41e9ecd011df5d57dad7608f2b89fe721e97012c" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -9317,9 +9304,9 @@ dependencies = [ [[package]] name = "sc-network" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df0d414c9e17d563a0c0dce01c6b6f10aa50d9ba0e904c2fe5e6b2aaf845f5de" +checksum = "3edad0e7930c2572d6920dc257bc03af6f40ba272bc45602edd0a045d94e5e59" dependencies = [ "array-bytes", "async-channel", @@ -9359,9 +9346,9 @@ dependencies = [ [[package]] name = "sc-network-bitswap" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d188183e28b77d7cdfbd07cc251d9e6c6b1c9960405d92943cfc642be1758ef" +checksum = "e6a0d247f576989cb2fe49df0511cbbd826f1e47b444848971e2bddec8f18a65" dependencies = [ "async-channel", "cid", @@ -9380,9 +9367,9 @@ dependencies = [ [[package]] name = "sc-network-common" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d09f99d3845d5bb325641a3de1db8049bccca29e8272e65b8ea415c1153b01" +checksum = "b418c79cea8ab5b43f5bbe7ee95da7d6490bdfedbe92a9b07a714ca4f09a2426" dependencies = [ "async-trait", "bitflags 1.3.2", @@ -9398,9 +9385,9 @@ dependencies = [ [[package]] name = "sc-network-light" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f0d6072d48cc9ae8ce06ee8790eccb5268c9af083a9029ff8d38d0e3eb541d" +checksum = "e36fc98d43aa75eb0d0690af6a8c6a929318f6cb4bf1fc039410ece56c8bb5a9" dependencies = [ "array-bytes", "async-channel", @@ -9420,9 +9407,9 @@ dependencies = [ [[package]] name = "sc-network-sync" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58b26c047661612e72321a1df53d76e79aad99b0846d795ea3807d9b25baf6d1" +checksum = "1d049b008a7353fc46cb45a1f6f68e5e5128442b6726cfd82da09cb676443e73" dependencies = [ "array-bytes", "async-channel", @@ -9455,9 +9442,9 @@ dependencies = [ [[package]] name = "sc-network-transactions" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "940233816ec996869ca47c2153d4e66c9df376cf32e62b6c78630f418705fd62" +checksum = "7ef6606f7705bc9c038c9e11715b7ddbdb2a5b43c12d8e3cc346e0b9927218e4" dependencies = [ "array-bytes", "futures", @@ -9474,9 +9461,9 @@ dependencies = [ [[package]] name = "sc-rpc" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f86ce48d8c8c6b4ebaf4775955cc79985732db5407e4893e0976be8f6b28eb5b" +checksum = "ede50e654b3e0c076bb9beb041612af80f07dfb883cc05d8aaae1c7a1bb72761" dependencies = [ "futures", "jsonrpsee", @@ -9506,9 +9493,9 @@ dependencies = [ [[package]] name = "sc-rpc-api" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60585da26d11aefb112d3a6925cc75fd76bee1961b2de615e6207df2b86a459c" +checksum = "1cac4149b7427beed423006c78e0b75c0193ac01d6e66ff0dd8a1909747cf593" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -9526,9 +9513,9 @@ dependencies = [ [[package]] name = "sc-rpc-server" -version = "8.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc99b691cc6a88afc9c64b40e50cdef64920f7b3c3e2d752aa8dfe192a4c2f0" +checksum = "9a62b9c5bf359cd4923ce10d294532936aa68d0cd59e890a0414f6434397180b" dependencies = [ "http", "jsonrpsee", @@ -9542,9 +9529,9 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d4a55644ca962d4a094b54bb0e2a30bcbe12c17385096650c771c14f7318c8e" +checksum = "2e770646ab839fb33dfeb7cbde94d98cdaf78526c70b10aa59ec5810953ff2a5" dependencies = [ "array-bytes", "futures", @@ -9571,9 +9558,9 @@ dependencies = [ [[package]] name = "sc-service" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e58550b3ee0bba7beec7d2ce5612b712a34d3326ff68fa95799f6c328f5bb8dd" +checksum = "b9c7fa14eaf48c44edff226ce9b18dc984c122e9deebbf825a8945be7c046ade" dependencies = [ "async-trait", "directories", @@ -9636,9 +9623,9 @@ dependencies = [ [[package]] name = "sc-state-db" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b72de87b85342d40852e2dd8b17c07a47406ffe8f1ce97acb2605769df7ed7" +checksum = "43bc9266fdec30b59857e794fc329aa600aaa6ed46799f9df859a7e30c0ec34b" dependencies = [ "log", "parity-scale-codec", @@ -9648,9 +9635,9 @@ dependencies = [ [[package]] name = "sc-sysinfo" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca1dc4ea7ab8b96f0c948d26b2af7e540a8d182ba13f7b81930c119dc50f7087" +checksum = "4ff97437e564c0e7483d7e32384e3f6571f656728ea03a6e1b07a6325e064a76" dependencies = [ "futures", "libc", @@ -9668,9 +9655,9 @@ dependencies = [ [[package]] name = "sc-telemetry" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba96178e1d0286ecc4a37fbf39a4660d8d10640baedffb58ff18de7162d117cb" +checksum = "4b46193a2979c86da75fc43276d222359757ea257b512fe6e4128e7a50b0bb22" dependencies = [ "chrono", "futures", @@ -9688,9 +9675,9 @@ dependencies = [ [[package]] name = "sc-tracing" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e86aa30a30596a5ca9e0492474d907edff1e5e569a121bb4eb178f4a262b8d1" +checksum = "4fcb4398268e83957ebbc84e6290307198e817caa47386135d3de6ba3316203a" dependencies = [ "ansi_term", "atty", @@ -9718,21 +9705,21 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" -version = "8.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f602d1fa418385ed0e25be1305c9b03f68ff7ccb3b5df88a2145e7e1fb9117e" +checksum = "71bd05d3f24c0c2489c57b90a76db883c23c25577718ca05c9b0181fd427f501" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "sc-transaction-pool" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1787f18283fa7714203a705ff3b7bcb288eb85149e3679db0197f09319503f9" +checksum = "a6af477c0e8a2698aabf442a3918313e8f096eb6695ceaaa7e12679c496d2826" dependencies = [ "async-trait", "futures", @@ -9757,9 +9744,9 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "792c4841d8fba48d4a61e03db45854d8273dee31ae0d4ffb98af5176d0e31a03" +checksum = "c4f1b864d0ae8f1891eb310672c12fc160d24e37ef297d5ef0db257558fe13b1" dependencies = [ "async-trait", "futures", @@ -9774,9 +9761,9 @@ dependencies = [ [[package]] name = "sc-utils" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "563bde62fa4681746c8960d434fa65e7ea40c7fab46692b26998132f43e1e100" +checksum = "e8b01c8eed623f999d402e44679d42ad42586afd4638aaed38708a307b59f4d7" dependencies = [ "async-channel", "futures", @@ -10021,14 +10008,14 @@ checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "serde_json" -version = "1.0.105" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -10194,9 +10181,9 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "slot-range-helper" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25d332388412dc3ccbd1c4332876984736ee46b8f4a0ae6ea626d8ebf24ac312" +checksum = "5109eff24021551c130973a924318728720e6c74fc98d206b4f42b7763978fdc" dependencies = [ "enumn", "parity-scale-codec", @@ -10273,9 +10260,9 @@ dependencies = [ [[package]] name = "sp-api" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86901915aaf9c73f9a8588fae10072c6082e7bf169edae175950410b77ad8103" +checksum = "ddc5213210472ba2becdc094fbb9d30c4455753b1a608962797e1e971c3e5ec4" dependencies = [ "hash-db", "log", @@ -10295,9 +10282,9 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972809a3e3a583423bca2ee6d08eb5397814ef6b265abf43e888c4ed9916ff83" +checksum = "20e7f093302d30b9d35436db024376459bdc9da7530abcacf5d87c32a67d94fd" dependencies = [ "Inflector", "blake2", @@ -10305,14 +10292,14 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "sp-application-crypto" -version = "25.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fa730e4f3a2aec3f4ee777410599a86eb17067ee5410c58ab496e88d7bb840c" +checksum = "b74454c936a45ac55c8de95b9fd8b5e38f8b43d97df8f4274dd6777b20d95569" dependencies = [ "parity-scale-codec", "scale-info", @@ -10324,9 +10311,9 @@ dependencies = [ [[package]] name = "sp-arithmetic" -version = "18.0.0" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3d3ff6d6d717d7563659e9e47e958d33ebd2d0b3d8b1a9961cf9832944375e" +checksum = "e41f710a77e9debd1c9b80f862709dce648e50f0904cde4117488e7d11d4796d" dependencies = [ "integer-sqrt", "num-traits", @@ -10339,9 +10326,9 @@ dependencies = [ [[package]] name = "sp-authority-discovery" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06a92d2af502f53c11c4656f58a1f49856b633f455433c6e0c94e59039f560f0" +checksum = "3259fe9bf2e48eba37067f464a3db79ef20e25f1297cbad310c11738757c5c6a" dependencies = [ "parity-scale-codec", "scale-info", @@ -10353,9 +10340,9 @@ dependencies = [ [[package]] name = "sp-block-builder" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "149acca1cfe20a2fc888e2e04b2811f7fd04a5bc47630a5d6191664f4ed7b224" +checksum = "6c6a066e310d4c0c240829d7bb5d6bd01dde55d03e15b665f0372b40952f37e6" dependencies = [ "sp-api", "sp-inherents", @@ -10365,9 +10352,9 @@ dependencies = [ [[package]] name = "sp-blockchain" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4d1f97e0cb623f919b6c6dbcd1d6438b8d8c456df4d045fb2778251d9d7803" +checksum = "f506119858f25a73ed9d61a2ead0d5b97b5141055b3b4a12b9b82e530b06c673" dependencies = [ "futures", "log", @@ -10384,9 +10371,9 @@ dependencies = [ [[package]] name = "sp-consensus" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e74272780c5c6ea026b3e66cdd7b369b90e1e94c17d91c41e2359224f2439ea" +checksum = "04e142e27f140d50701e613d925f61482fafccb7d90933ee30d7bae54d293ea3" dependencies = [ "async-trait", "futures", @@ -10400,9 +10387,9 @@ dependencies = [ [[package]] name = "sp-consensus-aura" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564b98aa33315f542ba0ace2bb5f94a1a0503608b125edbd6537420fcf03a47" +checksum = "0dcc6df7a006a55651d0e7bdf2d8d4583d5b917cb4b7b6a1331398e96307a883" dependencies = [ "async-trait", "parity-scale-codec", @@ -10418,9 +10405,9 @@ dependencies = [ [[package]] name = "sp-consensus-babe" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53de79497a7ac68e7f414c2fea712b255b129991fbf6cbd63002fab9314437fe" +checksum = "572374a1260687fa18481ccac58c4a64611df379fb1aa65389ce96c6661b3b05" dependencies = [ "async-trait", "parity-scale-codec", @@ -10438,9 +10425,9 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" -version = "8.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cd87757ce886d92502d11b84022ee42d268ba3a63703c273c1f31f536b01b7b" +checksum = "1969665f2c07bd7403810c3e1180ef03e388f74be04a1362fe4471d14a7cda14" dependencies = [ "lazy_static", "parity-scale-codec", @@ -10458,9 +10445,9 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" -version = "8.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c750af0e64f19a5c364748c49339900e12f6ecd577f71879052604fd7f9312c4" +checksum = "04d20516ed05a6a17f712050d6be385ca53c16b2d49938a29ca05e07f7aa5118" dependencies = [ "finality-grandpa", "log", @@ -10477,9 +10464,9 @@ dependencies = [ [[package]] name = "sp-consensus-slots" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9edd2b6ac697a55075e3a4c5697f1142cd59de015f93aaf0aa843d1194ae268" +checksum = "9ebe1c46246a76af1105639c7434c1383d376fd45a8548fc18ed66dbf86f803c" dependencies = [ "parity-scale-codec", "scale-info", @@ -10490,12 +10477,11 @@ dependencies = [ [[package]] name = "sp-core" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "412e2ec53b1bc63778e2d70c347224e6cd2e25c4bacb509585db85f0788747b7" +checksum = "7921d278ed2aebbb21a644c96e09663dc49a6139d1e2e063c059dc9f866e149b" dependencies = [ "array-bytes", - "arrayvec 0.7.4", "bitflags 1.3.2", "blake2", "bounded-collections", @@ -10537,9 +10523,9 @@ dependencies = [ [[package]] name = "sp-core-hashing" -version = "11.0.0" +version = "12.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558116d02341b6f28b033c19a2a5fa555afa3c52628639170087e7685d51e743" +checksum = "a7cb5c31aa385d6997a5b73fdc9837c1c0145559205198555c3000739a474767" dependencies = [ "blake2b_simd", "byteorder", @@ -10551,20 +10537,20 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" -version = "11.0.0" +version = "12.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8681fa136cf504ba2b722fcb10d78df147c15d201b997e06c4c8c72258001a" +checksum = "3a4327a220777a8d492ed3d0bcd4c769cbb030301e7d4a2d9e09513d690c313b" dependencies = [ "quote", "sp-core-hashing", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "sp-database" -version = "7.0.0" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac16ca1b4f309dd51a7a06b1843b73e6e81ff70a05dac17d3c8f9c86e4fba5da" +checksum = "ab25f79468af89010a8eb84e6bf56068b59929a55291c03519f47208360f3ebe" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10572,20 +10558,20 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b235a0ad7124d58e6f0a728c8354da5b185b77bcf18b131b3a480cdaa23d95" +checksum = "16f7d375610590566e11882bf5b5a4b8d0666a96ba86808b2650bbbd9be50bf8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "sp-externalities" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "588cf40c36de918f545d712ad1a70631ae71653e4a321506dfcd8fa6fd26453c" +checksum = "ede074871514ca7c5d2eca9563515d858c6220b47ae815714ed4393a4e99db4a" dependencies = [ "environmental", "parity-scale-codec", @@ -10595,9 +10581,9 @@ dependencies = [ [[package]] name = "sp-genesis-builder" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae51f8a24e1be6593be94581f3465a10d7c86ce403cbf9dcf703d14f35309d1" +checksum = "10b9f0251a09b578393f3297abe54a29abdb7e93c17e89a88dc1cabb8e2d5a2d" dependencies = [ "serde_json", "sp-api", @@ -10607,9 +10593,9 @@ dependencies = [ [[package]] name = "sp-inherents" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4355b6a68001ff5308a09fe069c778c184030ee3b95271dd44841d056ecadf13" +checksum = "439882da80e9bcfd1ba53df7ec5070d4d7f2a9a93f988aa3598f99ee5bfc76eb" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -10622,12 +10608,12 @@ dependencies = [ [[package]] name = "sp-io" -version = "25.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9926dba7d67d87e40f49e18ff6cfc01373d5be13e3d373f02182bb5ec8ab37b" +checksum = "88fb6e281de5054565f07a9f79504d21133e115db549993c99f1b21236c677a5" dependencies = [ "bytes", - "ed25519-dalek 2.0.0", + "ed25519-dalek", "libsecp256k1", "log", "parity-scale-codec", @@ -10647,9 +10633,9 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dfcca2fad349d5fd197a56b4deef229b872c9172a8267d77c81a9f45a38f18a" +checksum = "05f09927534d2233e135e4b4a0c758554d0ff66178f6e9cfba2e151dfeac97b3" dependencies = [ "lazy_static", "sp-core", @@ -10659,9 +10645,9 @@ dependencies = [ [[package]] name = "sp-keystore" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f0f9546dd151881c60e75355806f1cbbc893f64aa465fc5bf87a47de59467b" +checksum = "8b9f19e773319d96223ce8dba960267e6cb977907537a8f738746ceb86592413" dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", @@ -10672,9 +10658,9 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" -version = "7.0.0" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cb1a26782e618f26b43ec8c6ecd799657134cd12af1902ceddaf1fad8031a1b" +checksum = "377a0e22a104a1a83804562fba6702537af6a36df9ee2049c89c3be9148b42b1" dependencies = [ "thiserror", "zstd 0.12.4", @@ -10682,9 +10668,9 @@ dependencies = [ [[package]] name = "sp-metadata-ir" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d493f8324241f20d80cbc920fa0ab7a173907d0bf1a10812098a924cdff48d7" +checksum = "eb0dec8af38c68358600da59cf14424e1230fe9ae1d4b4f64a098288145c0775" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -10694,9 +10680,9 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74488c6296d65190b67a3945ef2f5cc8ac0f8b92023dcfc6e88164380654b6a0" +checksum = "f616a1e1f731d027808d06d6b10de8d1e401397571e8f8e4ba84c1e74afc334c" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -10713,9 +10699,9 @@ dependencies = [ [[package]] name = "sp-npos-elections" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234e5bf197f5232cd00aeab2dc0b4c69b9fc2179d4ea67abd11fdea00a54bddf" +checksum = "ec60b253bf9097e8ffe103563c515ef80550556ab3b2ec5513ed17a4ad7de520" dependencies = [ "parity-scale-codec", "scale-info", @@ -10728,9 +10714,9 @@ dependencies = [ [[package]] name = "sp-offchain" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e1b9996004e6a39c06e6d66bd7684c8a07e73dd9137a2b6f2bbfde675d636a" +checksum = "50b1501eb4ede6471162ff48c85ccabb21434b698c8b61e2651f85c00bc1656f" dependencies = [ "sp-api", "sp-core", @@ -10739,9 +10725,9 @@ dependencies = [ [[package]] name = "sp-panic-handler" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261572cc0db4b41cf7587b4f7bdc15b8f83f748f17ae1c3c2f56a3e8e62ee913" +checksum = "cd099ba2d6c1bfe5d0c79aa56e440fa3c9257eadfc0c782c09cdc2122b1e60ed" dependencies = [ "backtrace", "lazy_static", @@ -10750,9 +10736,9 @@ dependencies = [ [[package]] name = "sp-rpc" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5828020dd51228aeee12a571720f3354deb95bc159f5edf4b7f2ffb3e023a12e" +checksum = "1d8534ae0a6043f70a93054bf0d3da27436637a8134ed44667c360e7a955cb3d" dependencies = [ "rustc-hash", "serde", @@ -10761,9 +10747,9 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f645e9e2c82d052ea48ed987a8789daca1c03f9b5ed1aa49cd080092eda85330" +checksum = "46c0641e1a9d340960b562bcceea1457680fd0e109fc1040f8f5364fd7bc2506" dependencies = [ "either", "hash256-std-hasher", @@ -10784,9 +10770,9 @@ dependencies = [ [[package]] name = "sp-runtime-interface" -version = "19.0.0" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ef767d6e400ee54a420bcbc570030741420c2d938a6e379d21cab9875a339c5" +checksum = "17a4030ad93f05c93f2cc294c74bc5fea227f90fb3d1426d4a6f165e017fb7ea" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -10803,22 +10789,22 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "13.0.0" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd795a4a2205b64d95da897f85b7c83a0044f30df22b0ea282f8387dc6ca428" +checksum = "b232943ee7ca83a6d56face33b8af12e9fb470a15a53835f4e12a6e452a41c1c" dependencies = [ "Inflector", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "sp-session" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff5d53ba296b793574fc12b6ebf49d6755d24439979290682ca58d759db5bb73" +checksum = "bfd062688577cc54493ba6f58383bfed89c66d5ef7b7c3747293b0da06c7f795" dependencies = [ "parity-scale-codec", "scale-info", @@ -10832,9 +10818,9 @@ dependencies = [ [[package]] name = "sp-staking" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb11c6a7765d2df277110fe25bba075f697aba999b29a6c9b55eb2b95401b0" +checksum = "1d3b2a4a7aa67a9adb2a8f49ed516f6694b5fa70792ab9b0125934b1c8cdc2e3" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10847,9 +10833,9 @@ dependencies = [ [[package]] name = "sp-state-machine" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771dce7d78335718ab8475984b6dbc1f374777049ed1c308186679e611333be2" +checksum = "2bf4c76bea1a9e4a2e79afe70f42f1d368a8a45308e58f19bfd755c5ddb2b4a3" dependencies = [ "hash-db", "log", @@ -10869,13 +10855,13 @@ dependencies = [ [[package]] name = "sp-statement-store" -version = "5.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c431b349889565a6b7f13eaa8216af8f826b015cbe1c9ef21999a44edd61d7" +checksum = "a11bbdc403457dd7a850078936aa7cc753c617b7bbeba5f5766ce5a55b2bf124" dependencies = [ "aes-gcm 0.10.2", "curve25519-dalek 4.0.0", - "ed25519-dalek 2.0.0", + "ed25519-dalek", "hkdf", "parity-scale-codec", "rand 0.8.5", @@ -10894,15 +10880,15 @@ dependencies = [ [[package]] name = "sp-std" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed09ef1760e8be9b64b7f739f1cf9a94528130be475d8e4f2d1be1e690c9f9c" +checksum = "8c91d32e165d08a14098ce5ec923eaec59d1d0583758a18a770beec1b780b0d0" [[package]] name = "sp-storage" -version = "15.0.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20f503280c004d94033a32cb84274ede30ef0b4b634770b1e7d595f8245bda4" +checksum = "ac9660ecd48314443e73ad0f44d58b76426666a1343d72f6f65664e174da9244" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10914,9 +10900,9 @@ dependencies = [ [[package]] name = "sp-timestamp" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00d60953f7fc9b4f51bbcbac8f0cd8d6e6266a7cc18f661330308bbcec1eb053" +checksum = "3b0ab4b6b2d31db93e7da68894ccb7c5a305524cea051109820b958361d162be" dependencies = [ "async-trait", "parity-scale-codec", @@ -10928,9 +10914,9 @@ dependencies = [ [[package]] name = "sp-tracing" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebabec43485ebdb2fdb5c6f9b388590d4797a3888024d74724ada2f16b2113b8" +checksum = "69a61948986d2a9f8d67d60884ff0277d910df09ebe08d0e1f309da777516453" dependencies = [ "parity-scale-codec", "sp-std", @@ -10941,9 +10927,9 @@ dependencies = [ [[package]] name = "sp-transaction-pool" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa16493e2b8f84b03167c901f4ef7af8fe3e58c4c3426d41cc48dc10597d255d" +checksum = "42ea9c85f85f52e0a49c3f2ec6cff952fdc3ffe8392bebe21ed30eddd8d059c5" dependencies = [ "sp-api", "sp-runtime", @@ -10951,9 +10937,9 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a926dbe30a0af60eae24ff01c532e545b9093eda36f520f2a744e40112e62b" +checksum = "30a2d2d676a4c8e9ff18cb43782ed557d00de28ee9fb090842a8510e4a7ce0a7" dependencies = [ "async-trait", "parity-scale-codec", @@ -10967,9 +10953,9 @@ dependencies = [ [[package]] name = "sp-trie" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78585a84d02d1c71e8eb8c00ed586c22a46ad4e773d9ff65c8ed3b8e98b9f51" +checksum = "4bb2d292eb90452dcb0909fb44e74bf04395e3ffa37a66c0f1635a00600382a4" dependencies = [ "ahash 0.8.3", "hash-db", @@ -10991,9 +10977,9 @@ dependencies = [ [[package]] name = "sp-version" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a8d11b816cd2c68467c697aecca868ab5828af02ef093681a88554d045b878" +checksum = "125da59ea46ecb23860e7d895f6f2882f596b71ffca0ae4887558aac541f4342" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11009,21 +10995,21 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6de7bbf860de93bb9b0ccd8e4a74e0dc40089e7192c397bac2b357d4da74e20c" +checksum = "92897ffa04436cbd100c49ea1f8b637cb68e2a9fe144115f4b545b5ace2f47e2" dependencies = [ "parity-scale-codec", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] name = "sp-wasm-interface" -version = "16.0.0" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee009ac79098027f5990984e0c5ee2fd4883b16bbd6ab97931f28c2148aaa3ea" +checksum = "bf43bb0c8eb76dc41057ce0fb6b744b94c9aec28b31dff53a1efc4f04ef25384" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -11035,9 +11021,9 @@ dependencies = [ [[package]] name = "sp-weights" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86566cae93412e40bea0db9e6b110a7379105412a9aed1af73b5d2fb69cb7000" +checksum = "4e1cef0aad13ed8a8522a6e86ace16fb97ab220c16d2357e628352b528582693" dependencies = [ "parity-scale-codec", "scale-info", @@ -11222,9 +11208,9 @@ dependencies = [ [[package]] name = "staging-parachain-info" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd1938a5d4938701c5a1ffd9c6cac6e906e219d85557f061f55f9f41e8d886c6" +checksum = "1a5bab12d15197074042e4f63034a58a1fad1abca3c779b9623696e163f549b5" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -11237,9 +11223,9 @@ dependencies = [ [[package]] name = "staging-xcm" -version = "2.0.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eec456fd5fcbc4dffe9c6042b452c1930eb1d5af5534d6ef36b8238b4517c9b7" +checksum = "5b199be791bd630ec9edc78b3896826d802f59202739a73cca5d0cd4d95b6088" dependencies = [ "bounded-collections", "derivative", @@ -11255,9 +11241,9 @@ dependencies = [ [[package]] name = "staging-xcm-builder" -version = "2.0.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07c1ca6d8f2b7fcbfe8866c1a1cb8105b62c72a74e727dd8c9943e8ac0c410eb" +checksum = "855a422587cd951cae29249a6011c18c55486e6f4ae44f1dad1e971413eac880" dependencies = [ "frame-support", "frame-system", @@ -11278,9 +11264,9 @@ dependencies = [ [[package]] name = "staging-xcm-executor" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b2ab1d434de75fb698d07d863ebede9745bd500d0284c659055201024627ca" +checksum = "a50ece4a1d0651af4ccb78170e8008a44cd119ee4fdf5190d997c78e24e46a03" dependencies = [ "environmental", "frame-benchmarking", @@ -11393,9 +11379,9 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "055e4661d7d20f68388a26419216035df64a06f34506b947c8a6e2db49d85461" +checksum = "7e99fe4e955b8d7c25bd3a88a6907933867d11ef6194ef935e865a9e87c320ff" dependencies = [ "hyper", "log", @@ -11406,9 +11392,9 @@ dependencies = [ [[package]] name = "substrate-rpc-client" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c3d8512f21a03e4eda6b3bb6da45c6840266c66f82a31b57eb183b33d67c7f2" +checksum = "624257055386482adba21684a4af2cebdbaf0a8dd0e1b7cd9eec05b564afa5db" dependencies = [ "async-trait", "jsonrpsee", @@ -11420,9 +11406,9 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e792ccae135d69e0bc0eaeafc649e356cc9844017502496364d6b13db09e18" +checksum = "3a23975404eca6d81818f3f3d4ecde9635dae3e616f366dbc1a0d510c86f02a2" dependencies = [ "ansi_term", "build-helper", @@ -11465,9 +11451,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.31" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718fa2415bcb8d8bd775917a1bf12a7931b6dfa890753378538118181e0cb398" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -11564,7 +11550,7 @@ checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -11739,7 +11725,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -11895,7 +11881,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -11920,9 +11906,9 @@ dependencies = [ [[package]] name = "tracing-gum" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3d0644282db9729b5e373c01e8c8ba6d239e18989749c8aead177fe293eb5ca" +checksum = "388d505e3d23a34f23f4093937252f9a3a874184083680292a3c80f16c2937a7" dependencies = [ "coarsetime", "polkadot-node-jaeger", @@ -11933,15 +11919,15 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "599cd79d4843008763dd613a19ca7d28e12e6c43ab69fc5089b7ce587dd8e021" +checksum = "e0f4ac73c340c95608556d9a52545c227be6b262ab3f3039a4dc005aad449bff" dependencies = [ "expander 2.0.0", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -11990,9 +11976,9 @@ dependencies = [ [[package]] name = "trie-db" -version = "0.27.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "767abe6ffed88a1889671a102c2861ae742726f52e0a5a425b92c9fbfa7e9c85" +checksum = "ff28e0f815c2fea41ebddf148e008b077d2faddb026c9555b29696114d602642" dependencies = [ "hash-db", "hashbrown 0.13.2", @@ -12311,7 +12297,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", "wasm-bindgen-shared", ] @@ -12345,7 +12331,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -12889,9 +12875,9 @@ dependencies = [ [[package]] name = "westend-runtime-constants" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c4085403f25dda1eb8ce8859a118f9681c35687e893a8a2511179f7436643a" +checksum = "281a188361cdcd28ade41bfca74d1b52f28bb6eb8f51bfd15ca3be721396ab75" dependencies = [ "frame-support", "polkadot-primitives", @@ -13234,14 +13220,14 @@ dependencies = [ [[package]] name = "xcm-procedural" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bde452a547dd6926f94539b113171419b10d2b642a59cad296754259733bca6" +checksum = "5d69991e802386307acc13e9d67004da522d083fe338111fe79c4317878445e4" dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] @@ -13284,7 +13270,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.31", + "syn 2.0.38", ] [[package]] diff --git a/relay/kusama/Cargo.toml b/relay/kusama/Cargo.toml index f6e6fd995a..f458a0676e 100644 --- a/relay/kusama/Cargo.toml +++ b/relay/kusama/Cargo.toml @@ -19,112 +19,112 @@ serde_derive = { version = "1.0.117", optional = true } static_assertions = "1.1.0" smallvec = "1.8.0" -authority-discovery-primitives = { package = "sp-authority-discovery", default-features = false , version = "21.0.0" } -babe-primitives = { package = "sp-consensus-babe", default-features = false , version = "0.27.0" } -beefy-primitives = { package = "sp-consensus-beefy", default-features = false , version = "8.0.0" } -binary-merkle-tree = { default-features = false , version = "8.0.0" } +authority-discovery-primitives = { package = "sp-authority-discovery", default-features = false , version = "22.0.0" } +babe-primitives = { package = "sp-consensus-babe", default-features = false , version = "0.28.0" } +beefy-primitives = { package = "sp-consensus-beefy", default-features = false , version = "9.0.0" } +binary-merkle-tree = { default-features = false , version = "9.0.0" } kusama-runtime-constants = { package = "kusama-runtime-constants", path = "constants", default-features = false } -sp-api = { default-features = false , version = "21.0.0" } -inherents = { package = "sp-inherents", default-features = false , version = "21.0.0" } -offchain-primitives = { package = "sp-offchain", default-features = false , version = "21.0.0" } -sp-std = { package = "sp-std", default-features = false , version = "10.0.0" } -sp-application-crypto = { default-features = false , version = "25.0.0" } -sp-arithmetic = { default-features = false , version = "18.0.0" } -sp-io = { default-features = false , version = "25.0.0" } -sp-mmr-primitives = { default-features = false , version = "21.0.0" } -sp-runtime = { default-features = false , version = "26.0.0" } -sp-staking = { default-features = false , version = "21.0.0" } -sp-core = { default-features = false , version = "23.0.0" } -sp-session = { default-features = false , version = "22.0.0" } -sp-storage = { default-features = false , version = "15.0.0" } -sp-version = { default-features = false , version = "24.0.0" } -tx-pool-api = { package = "sp-transaction-pool", default-features = false , version = "21.0.0" } -block-builder-api = { package = "sp-block-builder", default-features = false , version = "21.0.0" } -sp-npos-elections = { default-features = false , version = "21.0.0" } +sp-api = { default-features = false , version = "22.0.0" } +inherents = { package = "sp-inherents", default-features = false , version = "22.0.0" } +offchain-primitives = { package = "sp-offchain", default-features = false , version = "22.0.0" } +sp-std = { package = "sp-std", default-features = false , version = "11.0.0" } +sp-application-crypto = { default-features = false , version = "26.0.0" } +sp-arithmetic = { default-features = false , version = "19.0.0" } +sp-io = { default-features = false , version = "26.0.0" } +sp-mmr-primitives = { default-features = false , version = "22.0.0" } +sp-runtime = { default-features = false , version = "27.0.0" } +sp-staking = { default-features = false , version = "22.0.0" } +sp-core = { default-features = false , version = "24.0.0" } +sp-session = { default-features = false , version = "23.0.0" } +sp-storage = { default-features = false , version = "16.0.0" } +sp-version = { default-features = false , version = "25.0.0" } +tx-pool-api = { package = "sp-transaction-pool", default-features = false , version = "22.0.0" } +block-builder-api = { package = "sp-block-builder", default-features = false , version = "22.0.0" } +sp-npos-elections = { default-features = false , version = "22.0.0" } -pallet-authority-discovery = { default-features = false , version = "23.0.0" } -pallet-authorship = { default-features = false , version = "23.0.0" } -pallet-babe = { default-features = false , version = "23.0.0" } -pallet-bags-list = { default-features = false , version = "22.0.0" } -pallet-balances = { default-features = false , version = "23.0.0" } -pallet-beefy = { default-features = false , version = "23.0.0" } -pallet-beefy-mmr = { default-features = false , version = "23.0.0" } -pallet-bounties = { default-features = false , version = "22.0.0" } -pallet-child-bounties = { default-features = false , version = "22.0.0" } -pallet-transaction-payment = { default-features = false , version = "23.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false , version = "23.0.0" } -pallet-nomination-pools-runtime-api = { default-features = false , version = "18.0.0" } -pallet-collective = { default-features = false , version = "23.0.0" } -pallet-conviction-voting = { default-features = false , version = "23.0.0" } -pallet-democracy = { default-features = false , version = "23.0.0" } -pallet-elections-phragmen = { default-features = false , version = "24.0.0" } -pallet-election-provider-multi-phase = { default-features = false , version = "22.0.0" } -pallet-fast-unstake = { default-features = false , version = "22.0.0" } -frame-executive = { default-features = false , version = "23.0.0" } -pallet-grandpa = { default-features = false , version = "23.0.0" } -pallet-nis = { default-features = false , version = "23.0.0" } -pallet-identity = { default-features = false , version = "23.0.0" } -pallet-im-online = { default-features = false , version = "22.0.0" } -pallet-indices = { default-features = false , version = "23.0.0" } -pallet-membership = { default-features = false , version = "23.0.0" } -pallet-message-queue = { default-features = false , version = "26.0.0" } -pallet-mmr = { default-features = false , version = "22.0.0" } -pallet-multisig = { default-features = false , version = "23.0.0" } -pallet-nomination-pools = { default-features = false , version = "20.0.0" } -pallet-offences = { default-features = false , version = "22.0.0" } -pallet-preimage = { default-features = false , version = "23.0.0" } -pallet-proxy = { default-features = false , version = "23.0.0" } -pallet-ranked-collective = { default-features = false , version = "23.0.0" } -pallet-recovery = { default-features = false , version = "23.0.0" } -pallet-referenda = { default-features = false , version = "23.0.0" } -pallet-scheduler = { default-features = false , version = "24.0.0" } -pallet-session = { default-features = false , version = "23.0.0" } -pallet-society = { default-features = false, features = ["experimental"] , version = "23.0.0" } -frame-support = { default-features = false , version = "23.0.0" } -pallet-staking = { default-features = false , version = "23.0.0" } -pallet-state-trie-migration = { default-features = false , version = "24.0.0" } -pallet-staking-runtime-api = { default-features = false , version = "9.0.0" } -frame-system = { default-features = false , version = "23.0.0" } -frame-system-rpc-runtime-api = { default-features = false , version = "21.0.0" } -pallet-timestamp = { default-features = false , version = "22.0.0" } -pallet-tips = { default-features = false , version = "22.0.0" } -pallet-treasury = { default-features = false , version = "22.0.0" } -pallet-utility = { default-features = false , version = "23.0.0" } -pallet-vesting = { default-features = false , version = "23.0.0" } -pallet-whitelist = { default-features = false , version = "22.0.0" } -pallet-xcm = { default-features = false , version = "2.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "2.0.0" } -frame-election-provider-support = { default-features = false , version = "23.0.0" } +pallet-authority-discovery = { default-features = false , version = "24.0.0" } +pallet-authorship = { default-features = false , version = "24.0.0" } +pallet-babe = { default-features = false , version = "24.0.0" } +pallet-bags-list = { default-features = false , version = "23.0.0" } +pallet-balances = { default-features = false , version = "24.0.0" } +pallet-beefy = { default-features = false , version = "24.0.0" } +pallet-beefy-mmr = { default-features = false , version = "24.0.0" } +pallet-bounties = { default-features = false , version = "23.0.0" } +pallet-child-bounties = { default-features = false , version = "23.0.0" } +pallet-transaction-payment = { default-features = false , version = "24.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false , version = "24.0.0" } +pallet-nomination-pools-runtime-api = { default-features = false , version = "19.0.0" } +pallet-collective = { default-features = false , version = "24.0.0" } +pallet-conviction-voting = { default-features = false , version = "24.0.0" } +pallet-democracy = { default-features = false , version = "24.0.0" } +pallet-elections-phragmen = { default-features = false , version = "25.0.0" } +pallet-election-provider-multi-phase = { default-features = false , version = "23.0.0" } +pallet-fast-unstake = { default-features = false , version = "23.0.0" } +frame-executive = { default-features = false , version = "24.0.0" } +pallet-grandpa = { default-features = false , version = "24.0.0" } +pallet-nis = { default-features = false , version = "24.0.0" } +pallet-identity = { default-features = false , version = "24.0.0" } +pallet-im-online = { default-features = false , version = "23.0.0" } +pallet-indices = { default-features = false , version = "24.0.0" } +pallet-membership = { default-features = false , version = "24.0.0" } +pallet-message-queue = { default-features = false , version = "27.0.0" } +pallet-mmr = { default-features = false , version = "23.0.0" } +pallet-multisig = { default-features = false , version = "24.0.0" } +pallet-nomination-pools = { default-features = false , version = "21.0.0" } +pallet-offences = { default-features = false , version = "23.0.0" } +pallet-preimage = { default-features = false , version = "24.0.0" } +pallet-proxy = { default-features = false , version = "24.0.0" } +pallet-ranked-collective = { default-features = false , version = "24.0.0" } +pallet-recovery = { default-features = false , version = "24.0.0" } +pallet-referenda = { default-features = false , version = "24.0.0" } +pallet-scheduler = { default-features = false , version = "25.0.0" } +pallet-session = { default-features = false , version = "24.0.0" } +pallet-society = { default-features = false, version = "24.0.0" } +frame-support = { default-features = false , version = "24.0.0" } +pallet-staking = { default-features = false , version = "24.0.0" } +pallet-state-trie-migration = { default-features = false , version = "25.0.0" } +pallet-staking-runtime-api = { default-features = false , version = "10.0.0" } +frame-system = { default-features = false , version = "24.0.0" } +frame-system-rpc-runtime-api = { default-features = false , version = "22.0.0" } +pallet-timestamp = { default-features = false , version = "23.0.0" } +pallet-tips = { default-features = false , version = "23.0.0" } +pallet-treasury = { default-features = false , version = "23.0.0" } +pallet-utility = { default-features = false , version = "24.0.0" } +pallet-vesting = { default-features = false , version = "24.0.0" } +pallet-whitelist = { default-features = false , version = "23.0.0" } +pallet-xcm = { default-features = false , version = "3.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "3.0.0" } +frame-election-provider-support = { default-features = false , version = "24.0.0" } -frame-benchmarking = { default-features = false, optional = true , version = "23.0.0" } -frame-try-runtime = { default-features = false, optional = true , version = "0.29.0" } -pallet-offences-benchmarking = { default-features = false, optional = true , version = "23.0.0" } -pallet-session-benchmarking = { default-features = false, optional = true , version = "23.0.0" } -pallet-nomination-pools-benchmarking = { default-features = false, optional = true , version = "21.0.0" } -frame-system-benchmarking = { default-features = false, optional = true , version = "23.0.0" } -pallet-election-provider-support-benchmarking = { default-features = false, optional = true , version = "22.0.0" } +frame-benchmarking = { default-features = false, optional = true , version = "24.0.0" } +frame-try-runtime = { default-features = false, optional = true , version = "0.30.0" } +pallet-offences-benchmarking = { default-features = false, optional = true , version = "24.0.0" } +pallet-session-benchmarking = { default-features = false, optional = true , version = "24.0.0" } +pallet-nomination-pools-benchmarking = { default-features = false, optional = true , version = "22.0.0" } +frame-system-benchmarking = { default-features = false, optional = true , version = "24.0.0" } +pallet-election-provider-support-benchmarking = { default-features = false, optional = true , version = "23.0.0" } hex-literal = "0.4.1" -runtime-common = { package = "polkadot-runtime-common", default-features = false, features = ["experimental"] , version = "2.0.0" } -runtime-parachains = { package = "polkadot-runtime-parachains", default-features = false , version = "2.0.0" } -primitives = { package = "polkadot-primitives", default-features = false , version = "2.0.0" } +runtime-common = { package = "polkadot-runtime-common", default-features = false, version = "3.0.0" } +runtime-parachains = { package = "polkadot-runtime-parachains", default-features = false , version = "3.0.0" } +primitives = { package = "polkadot-primitives", default-features = false , version = "3.0.0" } -xcm = { package = "staging-xcm", default-features = false , version = "2.0.1" } -xcm-executor = { package = "staging-xcm-executor", default-features = false , version = "2.0.0" } -xcm-builder = { package = "staging-xcm-builder", default-features = false , version = "2.0.1" } +xcm = { package = "staging-xcm", default-features = false , version = "3.0.1" } +xcm-executor = { package = "staging-xcm-executor", default-features = false , version = "3.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false , version = "3.0.1" } [dev-dependencies] tiny-keccak = { version = "2.0.2", features = ["keccak"] } -keyring = { package = "sp-keyring", version = "26.0.0" } -sp-trie = { version = "24.0.0" } +keyring = { package = "sp-keyring", version = "27.0.0" } +sp-trie = { version = "25.0.0" } separator = "0.4.1" serde_json = "1.0.96" -remote-externalities = { package = "frame-remote-externalities", version = "0.30.0" } +remote-externalities = { package = "frame-remote-externalities" , version = "0.31.0" } tokio = { version = "1.24.2", features = ["macros"] } -sp-tracing = { default-features = false , version = "12.0.0" } +sp-tracing = { default-features = false , version = "13.0.0" } [build-dependencies] -substrate-wasm-builder = { version = "12.0.0" } +substrate-wasm-builder = { version = "13.0.0" } [features] default = [ "std" ] diff --git a/relay/kusama/constants/Cargo.toml b/relay/kusama/constants/Cargo.toml index d2f32861a1..5ac1bca49a 100644 --- a/relay/kusama/constants/Cargo.toml +++ b/relay/kusama/constants/Cargo.toml @@ -9,12 +9,12 @@ license.workspace = true [dependencies] smallvec = "1.8.0" -frame-support = { default-features = false , version = "23.0.0" } -primitives = { package = "polkadot-primitives", default-features = false , version = "2.0.0" } -runtime-common = { package = "polkadot-runtime-common", default-features = false , version = "2.0.0" } -sp-runtime = { default-features = false , version = "26.0.0" } -sp-weights = { default-features = false , version = "22.0.0" } -sp-core = { default-features = false , version = "23.0.0" } +frame-support = { default-features = false , version = "24.0.0" } +primitives = { package = "polkadot-primitives", default-features = false , version = "3.0.0" } +runtime-common = { package = "polkadot-runtime-common", default-features = false , version = "3.0.0" } +sp-runtime = { default-features = false , version = "27.0.0" } +sp-weights = { default-features = false , version = "23.0.0" } +sp-core = { default-features = false , version = "24.0.0" } [features] default = [ "std" ] diff --git a/relay/kusama/src/lib.rs b/relay/kusama/src/lib.rs index 8900d60d0b..8c98d1475c 100644 --- a/relay/kusama/src/lib.rs +++ b/relay/kusama/src/lib.rs @@ -46,7 +46,7 @@ use runtime_parachains::{ inclusion::{AggregateMessageOrigin, UmpQueueId}, initializer as parachains_initializer, origin as parachains_origin, paras as parachains_paras, paras_inherent as parachains_paras_inherent, reward_points as parachains_reward_points, - runtime_api_impl::v5 as parachains_runtime_api_impl, + runtime_api_impl::v7 as parachains_runtime_api_impl, scheduler as parachains_scheduler, session_info as parachains_session_info, shared as parachains_shared, }; @@ -63,8 +63,9 @@ use frame_election_provider_support::{ use frame_support::{ construct_runtime, parameter_types, traits::{ - ConstU32, Contains, EitherOf, EitherOfDiverse, InstanceFilter, KeyOwnerProofSystem, - PrivilegeCmp, ProcessMessage, ProcessMessageError, StorageMapShim, WithdrawReasons, + fungible::HoldConsideration, ConstU32, Contains, EitherOf, EitherOfDiverse, InstanceFilter, + KeyOwnerProofSystem, LinearStoragePrice, PrivilegeCmp, ProcessMessage, ProcessMessageError, + StorageMapShim, WithdrawReasons, }, weights::{ConstantMultiplier, WeightMeter}, PalletId, @@ -92,7 +93,7 @@ use xcm::latest::Junction; pub use frame_system::Call as SystemCall; pub use pallet_balances::Call as BalancesCall; -pub use pallet_election_provider_multi_phase::Call as EPMCall; +pub use pallet_election_provider_multi_phase::{Call as EPMCall, GeometricDepositBase}; #[cfg(feature = "std")] pub use pallet_staking::StakerStatus; use pallet_staking::UseValidatorsMap; @@ -109,8 +110,6 @@ mod weights; // Voter bag threshold definitions. mod bag_thresholds; -mod paras_scheduler_migration; - // Historical information of society finances. mod past_payouts; @@ -241,6 +240,8 @@ impl pallet_scheduler::Config for Runtime { parameter_types! { pub const PreimageBaseDeposit: Balance = deposit(2, 64); pub const PreimageByteDeposit: Balance = deposit(0, 1); + pub const PreimageHoldReason: RuntimeHoldReason = + RuntimeHoldReason::Preimage(pallet_preimage::HoldReason::Preimage); } impl pallet_preimage::Config for Runtime { @@ -248,8 +249,12 @@ impl pallet_preimage::Config for Runtime { type RuntimeEvent = RuntimeEvent; type Currency = Balances; type ManagerOrigin = EnsureRoot; - type BaseDeposit = PreimageBaseDeposit; - type ByteDeposit = PreimageByteDeposit; + type Consideration = HoldConsideration< + AccountId, + Balances, + PreimageHoldReason, + LinearStoragePrice, + >; } parameter_types! { @@ -507,7 +512,8 @@ parameter_types! { // signed config pub const SignedMaxSubmissions: u32 = 16; pub const SignedMaxRefunds: u32 = 16 / 4; - pub const SignedDepositBase: Balance = deposit(2, 0); + pub const SignedFixedDeposit: Balance = deposit(2, 0); + pub const SignedDepositIncreaseFactor: Percent = Percent::from_percent(10); pub const SignedDepositByte: Balance = deposit(0, 10) / 1024; // Each good submission will get 1/10 KSM as reward pub SignedRewardBase: Balance = UNITS / 10; @@ -580,7 +586,8 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type SignedMaxSubmissions = SignedMaxSubmissions; type SignedMaxRefunds = SignedMaxRefunds; type SignedRewardBase = SignedRewardBase; - type SignedDepositBase = SignedDepositBase; + type SignedDepositBase = + GeometricDepositBase; type SignedDepositByte = SignedDepositByte; type SignedDepositWeight = (); type SignedMaxWeight = @@ -1562,7 +1569,7 @@ construct_runtime! { Multisig: pallet_multisig::{Pallet, Call, Storage, Event} = 31, // Preimage registrar. - Preimage: pallet_preimage::{Pallet, Call, Storage, Event} = 32, + Preimage: pallet_preimage::{Pallet, Call, Storage, Event, HoldReason} = 32, // Bounties modules. Bounties: pallet_bounties::{Pallet, Call, Storage, Event} = 35, @@ -1736,7 +1743,6 @@ pub mod migrations { >, pallet_im_online::migration::v1::Migration, parachains_configuration::migration::v7::MigrateToV7, - paras_scheduler_migration::v1::MigrateToV1, parachains_configuration::migration::v8::MigrateToV8, // Unlock/unreserve balances from Gov v1 pallets that hold them @@ -2480,7 +2486,7 @@ mod fees_tests { fn signed_deposit_is_sensible() { // ensure this number does not change, or that it is checked after each change. // a 1 MB solution should need around 0.16 KSM deposit - let deposit = SignedDepositBase::get() + (SignedDepositByte::get() * 1024 * 1024); + let deposit = SignedFixedDeposit::get() + (SignedDepositByte::get() * 1024 * 1024); assert_eq_error_rate!(deposit, UNITS * 167 / 100, UNITS / 100); } } diff --git a/relay/kusama/src/paras_scheduler_migration.rs b/relay/kusama/src/paras_scheduler_migration.rs deleted file mode 100644 index d294861843..0000000000 --- a/relay/kusama/src/paras_scheduler_migration.rs +++ /dev/null @@ -1,218 +0,0 @@ -//! A copy of the migration found in the polkadot sdk repo. -//! -//! It is copied as the version of the migration found in the crate used by this runtime is broken. - -use frame_support::{ - migrations::VersionedMigration, pallet_prelude::ValueQuery, storage_alias, - traits::OnRuntimeUpgrade, weights::Weight, -}; -use frame_system::pallet_prelude::BlockNumberFor; -use parity_scale_codec::{Decode, Encode}; -use primitives::{ - v5::{Assignment, ParasEntry}, - CoreIndex, CoreOccupied, GroupIndex, Id as ParaId, -}; -use runtime_parachains::scheduler::*; -use scale_info::TypeInfo; -use sp_core::{Get, RuntimeDebug}; -use sp_std::{ - collections::{btree_map::BTreeMap, vec_deque::VecDeque}, - prelude::*, -}; - -const LOG_TARGET: &str = "runtime::parachains::scheduler"; - -mod v0 { - use super::*; - - use primitives::{CollatorId, Id}; - - #[storage_alias] - pub(super) type Scheduled = StorageValue, Vec, ValueQuery>; - - #[derive(Clone, Encode, Decode)] - #[cfg_attr(feature = "std", derive(PartialEq))] - pub struct ParathreadClaim(pub Id, pub CollatorId); - - #[derive(Clone, Encode, Decode)] - #[cfg_attr(feature = "std", derive(PartialEq))] - pub struct ParathreadEntry { - /// The claim. - pub claim: ParathreadClaim, - /// Number of retries. - pub retries: u32, - } - - /// What is occupying a specific availability core. - #[derive(Clone, Encode, Decode)] - #[cfg_attr(feature = "std", derive(PartialEq))] - pub enum CoreOccupied { - /// A parathread. - Parathread(ParathreadEntry), - /// A parachain. - Parachain, - } - - /// The actual type isn't important, as we only delete the key in the state. - #[storage_alias] - pub(crate) type AvailabilityCores = - StorageValue, Vec>, ValueQuery>; - - /// The actual type isn't important, as we only delete the key in the state. - #[storage_alias] - pub(super) type ParathreadQueue = StorageValue, (), ValueQuery>; - - #[storage_alias] - pub(super) type ParathreadClaimIndex = StorageValue, (), ValueQuery>; - - /// The assignment type. - #[derive(Clone, Encode, Decode, TypeInfo, RuntimeDebug)] - #[cfg_attr(feature = "std", derive(PartialEq))] - pub enum AssignmentKind { - /// A parachain. - Parachain, - /// A parathread. - Parathread(CollatorId, u32), - } - - /// How a free core is scheduled to be assigned. - #[derive(Clone, Encode, Decode, TypeInfo, RuntimeDebug)] - #[cfg_attr(feature = "std", derive(PartialEq))] - pub struct CoreAssignment { - /// The core that is assigned. - pub core: CoreIndex, - /// The unique ID of the para that is assigned to the core. - pub para_id: ParaId, - /// The kind of the assignment. - pub kind: AssignmentKind, - /// The index of the validator group assigned to the core. - pub group_idx: GroupIndex, - } -} - -pub mod v1 { - use super::*; - - #[storage_alias] - pub(crate) type AvailabilityCores = - StorageValue, Vec>>, ValueQuery>; - - #[storage_alias] - pub(crate) type ClaimQueue = StorageValue< - Pallet, - BTreeMap>>>>, - ValueQuery, - >; - - #[allow(deprecated)] - pub type MigrateToV1 = VersionedMigration< - 0, - 1, - UncheckedMigrateToV1, - Pallet, - ::DbWeight, - >; - - #[deprecated(note = "Use MigrateToV1 instead")] - pub struct UncheckedMigrateToV1(sp_std::marker::PhantomData); - #[allow(deprecated)] - impl OnRuntimeUpgrade for UncheckedMigrateToV1 { - fn on_runtime_upgrade() -> Weight { - let weight_consumed = migrate_to_v1::(); - - log::info!(target: LOG_TARGET, "Migrating para scheduler storage to v1"); - - weight_consumed - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result, sp_runtime::DispatchError> { - let n: u32 = v0::Scheduled::::get().len() as u32 + - v0::AvailabilityCores::::get().iter().filter(|c| c.is_some()).count() as u32; - - log::info!( - target: LOG_TARGET, - "Number of scheduled and waiting for availability before: {n}", - ); - - Ok(n.encode()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade(state: Vec) -> Result<(), sp_runtime::DispatchError> { - log::info!(target: LOG_TARGET, "Running post_upgrade()"); - - frame_support::ensure!( - v0::Scheduled::::get().is_empty(), - "Scheduled should be empty after the migration" - ); - - let expected_len = u32::decode(&mut &state[..]).unwrap(); - let availability_cores_waiting = AvailabilityCores::::get() - .iter() - .filter(|c| !matches!(c, CoreOccupied::Free)) - .count(); - - frame_support::ensure!( - ClaimQueue::::get().iter().map(|la_vec| la_vec.1.len()).sum::() as u32 + - availability_cores_waiting as u32 == - expected_len, - "ClaimQueue and AvailabilityCores should have the correct length", - ); - - Ok(()) - } - } -} - -pub fn migrate_to_v1() -> Weight { - let mut weight: Weight = Weight::zero(); - - v0::ParathreadQueue::::kill(); - v0::ParathreadClaimIndex::::kill(); - - let now = >::block_number(); - let scheduled = v0::Scheduled::::take(); - let sched_len = scheduled.len() as u64; - for core_assignment in scheduled { - let core_idx = core_assignment.core; - let assignment = Assignment::new(core_assignment.para_id); - let pe = ParasEntry::new(assignment, now); - - v1::ClaimQueue::::mutate(|la| { - la.entry(core_idx).or_default().push_back(Some(pe)); - }); - } - - let parachains = runtime_parachains::paras::Pallet::::parachains(); - let availability_cores = v0::AvailabilityCores::::take(); - let mut new_availability_cores = Vec::new(); - - for (core_index, core) in availability_cores.into_iter().enumerate() { - let new_core = if let Some(core) = core { - match core { - v0::CoreOccupied::Parachain => CoreOccupied::Paras(ParasEntry::new( - Assignment::new(parachains[core_index]), - now, - )), - v0::CoreOccupied::Parathread(entry) => - CoreOccupied::Paras(ParasEntry::new(Assignment::new(entry.claim.0), now)), - } - } else { - CoreOccupied::Free - }; - - new_availability_cores.push(new_core); - } - - v1::AvailabilityCores::::set(new_availability_cores); - - // 2x as once for Scheduled and once for Claimqueue - weight = weight.saturating_add(T::DbWeight::get().reads_writes(2 * sched_len, 2 * sched_len)); - // reading parachains + availability_cores, writing AvailabilityCores - weight = weight.saturating_add(T::DbWeight::get().reads_writes(2, 1)); - // 2x kill - weight = weight.saturating_add(T::DbWeight::get().writes(2)); - - weight -} diff --git a/relay/kusama/src/weights/pallet_preimage.rs b/relay/kusama/src/weights/pallet_preimage.rs index ddb39cc858..1240693cd9 100644 --- a/relay/kusama/src/weights/pallet_preimage.rs +++ b/relay/kusama/src/weights/pallet_preimage.rs @@ -210,4 +210,25 @@ impl pallet_preimage::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } + /// Storage: `Preimage::StatusFor` (r:1024 w:1024) + /// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(91), added: 2566, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + /// Storage: `Preimage::RequestStatusFor` (r:0 w:1024) + /// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`) + /// The range of component `n` is `[0, 1024]`. + fn ensure_updated(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `193 + n * (91 ±0)` + // Estimated: `3593 + n * (2566 ±0)` + // Minimum execution time: 2_452_000 picoseconds. + Weight::from_parts(2_641_000, 3593) + // Standard Error: 19_797 + .saturating_add(Weight::from_parts(15_620_946, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes(1_u64)) + .saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2566).saturating_mul(n.into())) + } } diff --git a/relay/kusama/src/weights/runtime_parachains_hrmp.rs b/relay/kusama/src/weights/runtime_parachains_hrmp.rs index a8853e8a55..84e9b99080 100644 --- a/relay/kusama/src/weights/runtime_parachains_hrmp.rs +++ b/relay/kusama/src/weights/runtime_parachains_hrmp.rs @@ -275,4 +275,46 @@ impl runtime_parachains::hrmp::WeightInfo for WeightInf .saturating_add(T::DbWeight::get().reads(12)) .saturating_add(T::DbWeight::get().writes(8)) } + /// Storage: `Paras::ParaLifecycles` (r:1 w:0) + /// Proof: `Paras::ParaLifecycles` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpOpenChannelRequests` (r:1 w:1) + /// Proof: `Hrmp::HrmpOpenChannelRequests` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpChannels` (r:1 w:0) + /// Proof: `Hrmp::HrmpChannels` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpEgressChannelsIndex` (r:1 w:0) + /// Proof: `Hrmp::HrmpEgressChannelsIndex` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpOpenChannelRequestCount` (r:1 w:1) + /// Proof: `Hrmp::HrmpOpenChannelRequestCount` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpOpenChannelRequestsList` (r:1 w:1) + /// Proof: `Hrmp::HrmpOpenChannelRequestsList` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Dmp::DownwardMessageQueues` (r:2 w:2) + /// Proof: `Dmp::DownwardMessageQueues` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Dmp::DownwardMessageQueueHeads` (r:2 w:2) + /// Proof: `Dmp::DownwardMessageQueueHeads` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpIngressChannelsIndex` (r:1 w:0) + /// Proof: `Hrmp::HrmpIngressChannelsIndex` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpAcceptedChannelRequestCount` (r:1 w:1) + /// Proof: `Hrmp::HrmpAcceptedChannelRequestCount` (`max_values`: None, `max_size`: None, mode: `Measured`) + fn establish_system_channel() -> Weight { + // Proof Size summary in bytes: + // Measured: `417` + // Estimated: `6357` + // Minimum execution time: 629_674_000 picoseconds. + Weight::from_parts(640_174_000, 0) + .saturating_add(Weight::from_parts(0, 6357)) + .saturating_add(T::DbWeight::get().reads(12)) + .saturating_add(T::DbWeight::get().writes(8)) + } + /// Storage: `Hrmp::HrmpChannels` (r:1 w:1) + /// Proof: `Hrmp::HrmpChannels` (`max_values`: None, `max_size`: None, mode: `Measured`) + fn poke_channel_deposits() -> Weight { + // Proof Size summary in bytes: + // Measured: `263` + // Estimated: `3728` + // Minimum execution time: 173_371_000 picoseconds. + Weight::from_parts(175_860_000, 0) + .saturating_add(Weight::from_parts(0, 3728)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } } diff --git a/relay/polkadot/Cargo.toml b/relay/polkadot/Cargo.toml index 3c72f30e09..65c31fd197 100644 --- a/relay/polkadot/Cargo.toml +++ b/relay/polkadot/Cargo.toml @@ -18,105 +18,105 @@ serde_derive = { version = "1.0.117", optional = true } static_assertions = "1.1.0" smallvec = "1.8.0" -authority-discovery-primitives = { package = "sp-authority-discovery", default-features = false , version = "21.0.0" } -babe-primitives = { package = "sp-consensus-babe", default-features = false , version = "0.27.0" } -beefy-primitives = { package = "sp-consensus-beefy", default-features = false , version = "8.0.0" } -block-builder-api = { package = "sp-block-builder", default-features = false , version = "21.0.0" } -inherents = { package = "sp-inherents", default-features = false , version = "21.0.0" } -offchain-primitives = { package = "sp-offchain", default-features = false , version = "21.0.0" } -tx-pool-api = { package = "sp-transaction-pool", default-features = false , version = "21.0.0" } -sp-arithmetic = { default-features = false , version = "18.0.0" } -sp-api = { default-features = false , version = "21.0.0" } -sp-std = { default-features = false , version = "10.0.0" } -sp-io = { default-features = false , version = "25.0.0" } -sp-mmr-primitives = { default-features = false , version = "21.0.0" } -sp-runtime = { default-features = false , version = "26.0.0" } -sp-staking = { default-features = false , version = "21.0.0" } -sp-core = { default-features = false , version = "23.0.0" } -sp-session = { default-features = false , version = "22.0.0" } -sp-storage = { default-features = false , version = "15.0.0" } -sp-version = { default-features = false , version = "24.0.0" } -sp-npos-elections = { default-features = false , version = "21.0.0" } +authority-discovery-primitives = { package = "sp-authority-discovery", default-features = false , version = "22.0.0" } +babe-primitives = { package = "sp-consensus-babe", default-features = false , version = "0.28.0" } +beefy-primitives = { package = "sp-consensus-beefy", default-features = false , version = "9.0.0" } +block-builder-api = { package = "sp-block-builder", default-features = false , version = "22.0.0" } +inherents = { package = "sp-inherents", default-features = false , version = "22.0.0" } +offchain-primitives = { package = "sp-offchain", default-features = false , version = "22.0.0" } +tx-pool-api = { package = "sp-transaction-pool", default-features = false , version = "22.0.0" } +sp-arithmetic = { default-features = false , version = "19.0.0" } +sp-api = { default-features = false , version = "22.0.0" } +sp-std = { default-features = false , version = "11.0.0" } +sp-io = { default-features = false , version = "26.0.0" } +sp-mmr-primitives = { default-features = false , version = "22.0.0" } +sp-runtime = { default-features = false , version = "27.0.0" } +sp-staking = { default-features = false , version = "22.0.0" } +sp-core = { default-features = false , version = "24.0.0" } +sp-session = { default-features = false , version = "23.0.0" } +sp-storage = { default-features = false , version = "16.0.0" } +sp-version = { default-features = false , version = "25.0.0" } +sp-npos-elections = { default-features = false , version = "22.0.0" } -pallet-authority-discovery = { default-features = false , version = "23.0.0" } -pallet-authorship = { default-features = false , version = "23.0.0" } -pallet-babe = { default-features = false , version = "23.0.0" } -pallet-bags-list = { default-features = false , version = "22.0.0" } -pallet-balances = { default-features = false , version = "23.0.0" } -pallet-bounties = { default-features = false , version = "22.0.0" } -pallet-child-bounties = { default-features = false , version = "22.0.0" } -pallet-transaction-payment = { default-features = false , version = "23.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false , version = "23.0.0" } -pallet-collective = { default-features = false , version = "23.0.0" } -pallet-conviction-voting = { default-features = false , version = "23.0.0" } -pallet-democracy = { default-features = false , version = "23.0.0" } -pallet-elections-phragmen = { default-features = false , version = "24.0.0" } -pallet-election-provider-multi-phase = { default-features = false , version = "22.0.0" } -pallet-fast-unstake = { default-features = false , version = "22.0.0" } -frame-executive = { default-features = false , version = "23.0.0" } -pallet-grandpa = { default-features = false , version = "23.0.0" } -pallet-identity = { default-features = false , version = "23.0.0" } -pallet-im-online = { default-features = false , version = "22.0.0" } -pallet-indices = { default-features = false , version = "23.0.0" } -pallet-membership = { default-features = false , version = "23.0.0" } -pallet-message-queue = { default-features = false , version = "26.0.0" } -pallet-multisig = { default-features = false , version = "23.0.0" } -pallet-nomination-pools = { default-features = false , version = "20.0.0" } -pallet-nomination-pools-runtime-api = { default-features = false , version = "18.0.0" } -pallet-offences = { default-features = false , version = "22.0.0" } -pallet-preimage = { default-features = false , version = "23.0.0" } -pallet-proxy = { default-features = false , version = "23.0.0" } -pallet-referenda = { default-features = false , version = "23.0.0" } -pallet-scheduler = { default-features = false , version = "24.0.0" } -pallet-session = { default-features = false , version = "23.0.0" } -frame-support = { default-features = false , version = "23.0.0" } -pallet-staking = { default-features = false , version = "23.0.0" } -pallet-staking-reward-fn = { default-features = false, version = "14.0.0" } -pallet-staking-reward-curve = { version = "8.0.0" } -pallet-staking-runtime-api = { default-features = false , version = "9.0.0" } -frame-system = { default-features = false , version = "23.0.0" } -frame-system-rpc-runtime-api = { default-features = false , version = "21.0.0" } +pallet-authority-discovery = { default-features = false , version = "24.0.0" } +pallet-authorship = { default-features = false , version = "24.0.0" } +pallet-babe = { default-features = false , version = "24.0.0" } +pallet-bags-list = { default-features = false , version = "23.0.0" } +pallet-balances = { default-features = false , version = "24.0.0" } +pallet-bounties = { default-features = false , version = "23.0.0" } +pallet-child-bounties = { default-features = false , version = "23.0.0" } +pallet-transaction-payment = { default-features = false , version = "24.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false , version = "24.0.0" } +pallet-collective = { default-features = false , version = "24.0.0" } +pallet-conviction-voting = { default-features = false , version = "24.0.0" } +pallet-democracy = { default-features = false , version = "24.0.0" } +pallet-elections-phragmen = { default-features = false , version = "25.0.0" } +pallet-election-provider-multi-phase = { default-features = false , version = "23.0.0" } +pallet-fast-unstake = { default-features = false , version = "23.0.0" } +frame-executive = { default-features = false , version = "24.0.0" } +pallet-grandpa = { default-features = false , version = "24.0.0" } +pallet-identity = { default-features = false , version = "24.0.0" } +pallet-im-online = { default-features = false , version = "23.0.0" } +pallet-indices = { default-features = false , version = "24.0.0" } +pallet-membership = { default-features = false , version = "24.0.0" } +pallet-message-queue = { default-features = false , version = "27.0.0" } +pallet-multisig = { default-features = false , version = "24.0.0" } +pallet-nomination-pools = { default-features = false , version = "21.0.0" } +pallet-nomination-pools-runtime-api = { default-features = false , version = "19.0.0" } +pallet-offences = { default-features = false , version = "23.0.0" } +pallet-preimage = { default-features = false , version = "24.0.0" } +pallet-proxy = { default-features = false , version = "24.0.0" } +pallet-referenda = { default-features = false , version = "24.0.0" } +pallet-scheduler = { default-features = false , version = "25.0.0" } +pallet-session = { default-features = false , version = "24.0.0" } +frame-support = { default-features = false , version = "24.0.0" } +pallet-staking = { default-features = false , version = "24.0.0" } +pallet-staking-reward-curve = { version = "9.0.0" } +pallet-staking-reward-fn = { default-features = false, version = "15.0.0" } +pallet-staking-runtime-api = { default-features = false , version = "10.0.0" } +frame-system = { default-features = false , version = "24.0.0" } +frame-system-rpc-runtime-api = { default-features = false , version = "22.0.0" } polkadot-runtime-constants = { package = "polkadot-runtime-constants", path = "constants", default-features = false } -pallet-timestamp = { default-features = false , version = "22.0.0" } -pallet-tips = { default-features = false , version = "22.0.0" } -pallet-treasury = { default-features = false , version = "22.0.0" } -pallet-whitelist = { default-features = false , version = "22.0.0" } -pallet-vesting = { default-features = false , version = "23.0.0" } -pallet-utility = { default-features = false , version = "23.0.0" } -frame-election-provider-support = { default-features = false , version = "23.0.0" } -pallet-xcm = { default-features = false, features=["experimental"] , version = "2.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "2.0.0" } +pallet-timestamp = { default-features = false , version = "23.0.0" } +pallet-tips = { default-features = false , version = "23.0.0" } +pallet-treasury = { default-features = false , version = "23.0.0" } +pallet-whitelist = { default-features = false , version = "23.0.0" } +pallet-vesting = { default-features = false , version = "24.0.0" } +pallet-utility = { default-features = false , version = "24.0.0" } +frame-election-provider-support = { default-features = false , version = "24.0.0" } +pallet-xcm = { default-features = false, version = "3.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "3.0.0" } -frame-benchmarking = { default-features = false, optional = true , version = "23.0.0" } -frame-try-runtime = { default-features = false, optional = true , version = "0.29.0" } -frame-system-benchmarking = { default-features = false, optional = true , version = "23.0.0" } -pallet-election-provider-support-benchmarking = { default-features = false, optional = true , version = "22.0.0" } -pallet-offences-benchmarking = { default-features = false, optional = true , version = "23.0.0" } -pallet-session-benchmarking = { default-features = false, optional = true , version = "23.0.0" } -pallet-nomination-pools-benchmarking = { default-features = false, optional = true , version = "21.0.0" } +frame-benchmarking = { default-features = false, optional = true , version = "24.0.0" } +frame-try-runtime = { default-features = false, optional = true , version = "0.30.0" } +frame-system-benchmarking = { default-features = false, optional = true , version = "24.0.0" } +pallet-election-provider-support-benchmarking = { default-features = false, optional = true , version = "23.0.0" } +pallet-offences-benchmarking = { default-features = false, optional = true , version = "24.0.0" } +pallet-session-benchmarking = { default-features = false, optional = true , version = "24.0.0" } +pallet-nomination-pools-benchmarking = { default-features = false, optional = true , version = "22.0.0" } hex-literal = { version = "0.4.1", optional = true } -runtime-common = { package = "polkadot-runtime-common", default-features = false, features = ["experimental"] , version = "2.0.0" } -runtime-parachains = { package = "polkadot-runtime-parachains", default-features = false , version = "2.0.0" } -primitives = { package = "polkadot-primitives", default-features = false , version = "2.0.0" } +runtime-common = { package = "polkadot-runtime-common", default-features = false , version = "3.0.0" } +runtime-parachains = { package = "polkadot-runtime-parachains", default-features = false , version = "3.0.0" } +primitives = { package = "polkadot-primitives", default-features = false , version = "3.0.0" } -xcm = { package = "staging-xcm", default-features = false , version = "2.0.1" } -xcm-executor = { package = "staging-xcm-executor", default-features = false , version = "2.0.0" } -xcm-builder = { package = "staging-xcm-builder", default-features = false , version = "2.0.1" } +xcm = { package = "staging-xcm", default-features = false , version = "3.0.1" } +xcm-executor = { package = "staging-xcm-executor", default-features = false , version = "3.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false , version = "3.0.1" } [dev-dependencies] hex-literal = "0.4.1" tiny-keccak = { version = "2.0.2", features = ["keccak"] } -keyring = { package = "sp-keyring", version = "26.0.0" } -sp-trie = { version = "24.0.0" } +keyring = { package = "sp-keyring", version = "27.0.0" } +sp-trie = { version = "25.0.0" } serde_json = "1.0.96" separator = "0.4.1" -remote-externalities = { package = "frame-remote-externalities" , version = "0.30.0" } +remote-externalities = { package = "frame-remote-externalities" , version = "0.31.0" } tokio = { version = "1.24.2", features = ["macros"] } -sp-tracing = { default-features = false , version = "12.0.0" } +sp-tracing = { default-features = false , version = "13.0.0" } [build-dependencies] -substrate-wasm-builder = { version = "12.0.0" } +substrate-wasm-builder = { version = "13.0.0" } [features] default = [ "std" ] diff --git a/relay/polkadot/constants/Cargo.toml b/relay/polkadot/constants/Cargo.toml index d5d580cf3d..0b77ef424f 100644 --- a/relay/polkadot/constants/Cargo.toml +++ b/relay/polkadot/constants/Cargo.toml @@ -9,12 +9,12 @@ license.workspace = true [dependencies] smallvec = "1.8.0" -frame-support = { default-features = false , version = "23.0.0" } -primitives = { package = "polkadot-primitives", default-features = false , version = "2.0.0" } -runtime-common = { package = "polkadot-runtime-common", default-features = false , version = "2.0.0" } -sp-runtime = { default-features = false , version = "26.0.0" } -sp-weights = { default-features = false , version = "22.0.0" } -sp-core = { default-features = false , version = "23.0.0" } +frame-support = { default-features = false , version = "24.0.0" } +primitives = { package = "polkadot-primitives", default-features = false , version = "3.0.0" } +runtime-common = { package = "polkadot-runtime-common", default-features = false , version = "3.0.0" } +sp-runtime = { default-features = false , version = "27.0.0" } +sp-weights = { default-features = false , version = "23.0.0" } +sp-core = { default-features = false , version = "24.0.0" } [features] default = [ "std" ] diff --git a/relay/polkadot/src/lib.rs b/relay/polkadot/src/lib.rs index d74def520c..a276d45d89 100644 --- a/relay/polkadot/src/lib.rs +++ b/relay/polkadot/src/lib.rs @@ -34,7 +34,7 @@ use runtime_parachains::{ inclusion::{AggregateMessageOrigin, UmpQueueId}, initializer as parachains_initializer, origin as parachains_origin, paras as parachains_paras, paras_inherent as parachains_paras_inherent, reward_points as parachains_reward_points, - runtime_api_impl::v5 as parachains_runtime_api_impl, + runtime_api_impl::v7 as parachains_runtime_api_impl, scheduler as parachains_scheduler, session_info as parachains_session_info, shared as parachains_shared, }; @@ -47,8 +47,9 @@ use frame_election_provider_support::{ use frame_support::{ construct_runtime, parameter_types, traits::{ - ConstU32, Contains, EitherOf, EitherOfDiverse, InstanceFilter, KeyOwnerProofSystem, - PrivilegeCmp, ProcessMessage, ProcessMessageError, WithdrawReasons, + fungible::HoldConsideration, ConstU32, Contains, EitherOf, EitherOfDiverse, InstanceFilter, + KeyOwnerProofSystem, LinearStoragePrice, PrivilegeCmp, ProcessMessage, ProcessMessageError, + WithdrawReasons, }, weights::{ConstantMultiplier, WeightMeter}, PalletId, @@ -89,7 +90,7 @@ use xcm::latest::Junction; pub use frame_system::Call as SystemCall; pub use pallet_balances::Call as BalancesCall; -pub use pallet_election_provider_multi_phase::Call as EPMCall; +pub use pallet_election_provider_multi_phase::{Call as EPMCall, GeometricDepositBase}; #[cfg(feature = "std")] pub use pallet_staking::StakerStatus; use pallet_staking::UseValidatorsMap; @@ -106,8 +107,6 @@ mod weights; mod bag_thresholds; -mod paras_scheduler_migration; - // Governance configurations. pub mod governance; use governance::{ @@ -225,9 +224,10 @@ impl pallet_scheduler::Config for Runtime { } parameter_types! { - pub const PreimageMaxSize: u32 = 4096 * 1024; pub const PreimageBaseDeposit: Balance = deposit(2, 64); pub const PreimageByteDeposit: Balance = deposit(0, 1); + pub const PreimageHoldReason: RuntimeHoldReason = + RuntimeHoldReason::Preimage(pallet_preimage::HoldReason::Preimage); } impl pallet_preimage::Config for Runtime { @@ -235,8 +235,12 @@ impl pallet_preimage::Config for Runtime { type RuntimeEvent = RuntimeEvent; type Currency = Balances; type ManagerOrigin = EnsureRoot; - type BaseDeposit = PreimageBaseDeposit; - type ByteDeposit = PreimageByteDeposit; + type Consideration = HoldConsideration< + AccountId, + Balances, + PreimageHoldReason, + LinearStoragePrice, + >; } parameter_types! { @@ -381,8 +385,8 @@ parameter_types! { // signed config pub const SignedMaxSubmissions: u32 = 16; pub const SignedMaxRefunds: u32 = 16 / 4; - // 40 DOTs fixed deposit.. - pub const SignedDepositBase: Balance = deposit(2, 0); + pub const SignedFixedDeposit: Balance = deposit(2, 0); + pub const SignedDepositIncreaseFactor: Percent = Percent::from_percent(10); // 0.01 DOT per KB of solution data. pub const SignedDepositByte: Balance = deposit(0, 10) / 1024; // Each good submission will get 1 DOT as reward @@ -455,7 +459,8 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type SignedMaxSubmissions = SignedMaxSubmissions; type SignedMaxRefunds = SignedMaxRefunds; type SignedRewardBase = SignedRewardBase; - type SignedDepositBase = SignedDepositBase; + type SignedDepositBase = + GeometricDepositBase; type SignedDepositByte = SignedDepositByte; type SignedDepositWeight = (); type SignedMaxWeight = @@ -1378,7 +1383,7 @@ construct_runtime! { // Basic stuff; balances is uncallable initially. System: frame_system::{Pallet, Call, Storage, Config, Event} = 0, Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event} = 1, - Preimage: pallet_preimage::{Pallet, Call, Storage, Event} = 10, + Preimage: pallet_preimage::{Pallet, Call, Storage, Event, HoldReason} = 10, // Babe must be before session. Babe: pallet_babe::{Pallet, Call, Storage, Config, ValidateUnsigned} = 2, @@ -1573,7 +1578,6 @@ pub mod migrations { pub type Unreleased = ( pallet_im_online::migration::v1::Migration, parachains_configuration::migration::v7::MigrateToV7, - crate::paras_scheduler_migration::v1::MigrateToV1, parachains_configuration::migration::v8::MigrateToV8, // Gov v1 storage migrations @@ -2399,7 +2403,7 @@ mod test_fees { fn signed_deposit_is_sensible() { // ensure this number does not change, or that it is checked after each change. // a 1 MB solution should take (40 + 10) DOTs of deposit. - let deposit = SignedDepositBase::get() + (SignedDepositByte::get() * 1024 * 1024); + let deposit = SignedFixedDeposit::get() + (SignedDepositByte::get() * 1024 * 1024); assert_eq_error_rate!(deposit, 50 * DOLLARS, DOLLARS); } } diff --git a/relay/polkadot/src/paras_scheduler_migration.rs b/relay/polkadot/src/paras_scheduler_migration.rs deleted file mode 100644 index d294861843..0000000000 --- a/relay/polkadot/src/paras_scheduler_migration.rs +++ /dev/null @@ -1,218 +0,0 @@ -//! A copy of the migration found in the polkadot sdk repo. -//! -//! It is copied as the version of the migration found in the crate used by this runtime is broken. - -use frame_support::{ - migrations::VersionedMigration, pallet_prelude::ValueQuery, storage_alias, - traits::OnRuntimeUpgrade, weights::Weight, -}; -use frame_system::pallet_prelude::BlockNumberFor; -use parity_scale_codec::{Decode, Encode}; -use primitives::{ - v5::{Assignment, ParasEntry}, - CoreIndex, CoreOccupied, GroupIndex, Id as ParaId, -}; -use runtime_parachains::scheduler::*; -use scale_info::TypeInfo; -use sp_core::{Get, RuntimeDebug}; -use sp_std::{ - collections::{btree_map::BTreeMap, vec_deque::VecDeque}, - prelude::*, -}; - -const LOG_TARGET: &str = "runtime::parachains::scheduler"; - -mod v0 { - use super::*; - - use primitives::{CollatorId, Id}; - - #[storage_alias] - pub(super) type Scheduled = StorageValue, Vec, ValueQuery>; - - #[derive(Clone, Encode, Decode)] - #[cfg_attr(feature = "std", derive(PartialEq))] - pub struct ParathreadClaim(pub Id, pub CollatorId); - - #[derive(Clone, Encode, Decode)] - #[cfg_attr(feature = "std", derive(PartialEq))] - pub struct ParathreadEntry { - /// The claim. - pub claim: ParathreadClaim, - /// Number of retries. - pub retries: u32, - } - - /// What is occupying a specific availability core. - #[derive(Clone, Encode, Decode)] - #[cfg_attr(feature = "std", derive(PartialEq))] - pub enum CoreOccupied { - /// A parathread. - Parathread(ParathreadEntry), - /// A parachain. - Parachain, - } - - /// The actual type isn't important, as we only delete the key in the state. - #[storage_alias] - pub(crate) type AvailabilityCores = - StorageValue, Vec>, ValueQuery>; - - /// The actual type isn't important, as we only delete the key in the state. - #[storage_alias] - pub(super) type ParathreadQueue = StorageValue, (), ValueQuery>; - - #[storage_alias] - pub(super) type ParathreadClaimIndex = StorageValue, (), ValueQuery>; - - /// The assignment type. - #[derive(Clone, Encode, Decode, TypeInfo, RuntimeDebug)] - #[cfg_attr(feature = "std", derive(PartialEq))] - pub enum AssignmentKind { - /// A parachain. - Parachain, - /// A parathread. - Parathread(CollatorId, u32), - } - - /// How a free core is scheduled to be assigned. - #[derive(Clone, Encode, Decode, TypeInfo, RuntimeDebug)] - #[cfg_attr(feature = "std", derive(PartialEq))] - pub struct CoreAssignment { - /// The core that is assigned. - pub core: CoreIndex, - /// The unique ID of the para that is assigned to the core. - pub para_id: ParaId, - /// The kind of the assignment. - pub kind: AssignmentKind, - /// The index of the validator group assigned to the core. - pub group_idx: GroupIndex, - } -} - -pub mod v1 { - use super::*; - - #[storage_alias] - pub(crate) type AvailabilityCores = - StorageValue, Vec>>, ValueQuery>; - - #[storage_alias] - pub(crate) type ClaimQueue = StorageValue< - Pallet, - BTreeMap>>>>, - ValueQuery, - >; - - #[allow(deprecated)] - pub type MigrateToV1 = VersionedMigration< - 0, - 1, - UncheckedMigrateToV1, - Pallet, - ::DbWeight, - >; - - #[deprecated(note = "Use MigrateToV1 instead")] - pub struct UncheckedMigrateToV1(sp_std::marker::PhantomData); - #[allow(deprecated)] - impl OnRuntimeUpgrade for UncheckedMigrateToV1 { - fn on_runtime_upgrade() -> Weight { - let weight_consumed = migrate_to_v1::(); - - log::info!(target: LOG_TARGET, "Migrating para scheduler storage to v1"); - - weight_consumed - } - - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result, sp_runtime::DispatchError> { - let n: u32 = v0::Scheduled::::get().len() as u32 + - v0::AvailabilityCores::::get().iter().filter(|c| c.is_some()).count() as u32; - - log::info!( - target: LOG_TARGET, - "Number of scheduled and waiting for availability before: {n}", - ); - - Ok(n.encode()) - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade(state: Vec) -> Result<(), sp_runtime::DispatchError> { - log::info!(target: LOG_TARGET, "Running post_upgrade()"); - - frame_support::ensure!( - v0::Scheduled::::get().is_empty(), - "Scheduled should be empty after the migration" - ); - - let expected_len = u32::decode(&mut &state[..]).unwrap(); - let availability_cores_waiting = AvailabilityCores::::get() - .iter() - .filter(|c| !matches!(c, CoreOccupied::Free)) - .count(); - - frame_support::ensure!( - ClaimQueue::::get().iter().map(|la_vec| la_vec.1.len()).sum::() as u32 + - availability_cores_waiting as u32 == - expected_len, - "ClaimQueue and AvailabilityCores should have the correct length", - ); - - Ok(()) - } - } -} - -pub fn migrate_to_v1() -> Weight { - let mut weight: Weight = Weight::zero(); - - v0::ParathreadQueue::::kill(); - v0::ParathreadClaimIndex::::kill(); - - let now = >::block_number(); - let scheduled = v0::Scheduled::::take(); - let sched_len = scheduled.len() as u64; - for core_assignment in scheduled { - let core_idx = core_assignment.core; - let assignment = Assignment::new(core_assignment.para_id); - let pe = ParasEntry::new(assignment, now); - - v1::ClaimQueue::::mutate(|la| { - la.entry(core_idx).or_default().push_back(Some(pe)); - }); - } - - let parachains = runtime_parachains::paras::Pallet::::parachains(); - let availability_cores = v0::AvailabilityCores::::take(); - let mut new_availability_cores = Vec::new(); - - for (core_index, core) in availability_cores.into_iter().enumerate() { - let new_core = if let Some(core) = core { - match core { - v0::CoreOccupied::Parachain => CoreOccupied::Paras(ParasEntry::new( - Assignment::new(parachains[core_index]), - now, - )), - v0::CoreOccupied::Parathread(entry) => - CoreOccupied::Paras(ParasEntry::new(Assignment::new(entry.claim.0), now)), - } - } else { - CoreOccupied::Free - }; - - new_availability_cores.push(new_core); - } - - v1::AvailabilityCores::::set(new_availability_cores); - - // 2x as once for Scheduled and once for Claimqueue - weight = weight.saturating_add(T::DbWeight::get().reads_writes(2 * sched_len, 2 * sched_len)); - // reading parachains + availability_cores, writing AvailabilityCores - weight = weight.saturating_add(T::DbWeight::get().reads_writes(2, 1)); - // 2x kill - weight = weight.saturating_add(T::DbWeight::get().writes(2)); - - weight -} diff --git a/relay/polkadot/src/weights/pallet_preimage.rs b/relay/polkadot/src/weights/pallet_preimage.rs index 3e95c87cb5..e7576d9147 100644 --- a/relay/polkadot/src/weights/pallet_preimage.rs +++ b/relay/polkadot/src/weights/pallet_preimage.rs @@ -210,4 +210,25 @@ impl pallet_preimage::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } + /// Storage: `Preimage::StatusFor` (r:1024 w:1024) + /// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(91), added: 2566, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + /// Storage: `Preimage::RequestStatusFor` (r:0 w:1024) + /// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`) + /// The range of component `n` is `[0, 1024]`. + fn ensure_updated(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `193 + n * (91 ±0)` + // Estimated: `3593 + n * (2566 ±0)` + // Minimum execution time: 2_452_000 picoseconds. + Weight::from_parts(2_641_000, 3593) + // Standard Error: 19_797 + .saturating_add(Weight::from_parts(15_620_946, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes(1_u64)) + .saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2566).saturating_mul(n.into())) + } } diff --git a/relay/polkadot/src/weights/runtime_parachains_hrmp.rs b/relay/polkadot/src/weights/runtime_parachains_hrmp.rs index e0af408e88..05540b6ade 100644 --- a/relay/polkadot/src/weights/runtime_parachains_hrmp.rs +++ b/relay/polkadot/src/weights/runtime_parachains_hrmp.rs @@ -275,4 +275,46 @@ impl runtime_parachains::hrmp::WeightInfo for WeightInf .saturating_add(T::DbWeight::get().reads(12)) .saturating_add(T::DbWeight::get().writes(8)) } + /// Storage: `Paras::ParaLifecycles` (r:1 w:0) + /// Proof: `Paras::ParaLifecycles` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpOpenChannelRequests` (r:1 w:1) + /// Proof: `Hrmp::HrmpOpenChannelRequests` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpChannels` (r:1 w:0) + /// Proof: `Hrmp::HrmpChannels` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpEgressChannelsIndex` (r:1 w:0) + /// Proof: `Hrmp::HrmpEgressChannelsIndex` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpOpenChannelRequestCount` (r:1 w:1) + /// Proof: `Hrmp::HrmpOpenChannelRequestCount` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpOpenChannelRequestsList` (r:1 w:1) + /// Proof: `Hrmp::HrmpOpenChannelRequestsList` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Dmp::DownwardMessageQueues` (r:2 w:2) + /// Proof: `Dmp::DownwardMessageQueues` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Dmp::DownwardMessageQueueHeads` (r:2 w:2) + /// Proof: `Dmp::DownwardMessageQueueHeads` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpIngressChannelsIndex` (r:1 w:0) + /// Proof: `Hrmp::HrmpIngressChannelsIndex` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Hrmp::HrmpAcceptedChannelRequestCount` (r:1 w:1) + /// Proof: `Hrmp::HrmpAcceptedChannelRequestCount` (`max_values`: None, `max_size`: None, mode: `Measured`) + fn establish_system_channel() -> Weight { + // Proof Size summary in bytes: + // Measured: `417` + // Estimated: `6357` + // Minimum execution time: 629_674_000 picoseconds. + Weight::from_parts(640_174_000, 0) + .saturating_add(Weight::from_parts(0, 6357)) + .saturating_add(T::DbWeight::get().reads(12)) + .saturating_add(T::DbWeight::get().writes(8)) + } + /// Storage: `Hrmp::HrmpChannels` (r:1 w:1) + /// Proof: `Hrmp::HrmpChannels` (`max_values`: None, `max_size`: None, mode: `Measured`) + fn poke_channel_deposits() -> Weight { + // Proof Size summary in bytes: + // Measured: `263` + // Estimated: `3728` + // Minimum execution time: 173_371_000 picoseconds. + Weight::from_parts(175_860_000, 0) + .saturating_add(Weight::from_parts(0, 3728)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } } diff --git a/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml b/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml index 13d150bc87..0b9e2dd906 100644 --- a/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml +++ b/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml @@ -16,77 +16,77 @@ scale-info = { version = "2.9.0", default-features = false, features = ["derive" smallvec = "1.11.0" # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-executive = { default-features = false, version = "23.0.0" } -frame-support = { default-features = false, version = "23.0.0" } -frame-system = { default-features = false, version = "23.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "21.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.29.0" } -pallet-asset-conversion-tx-payment = { default-features = false, version = "5.0.0" } -pallet-assets = { default-features = false, version = "24.0.0" } -pallet-asset-conversion = { default-features = false, version = "5.0.0" } -pallet-aura = { default-features = false, version = "22.0.0" } -pallet-authorship = { default-features = false, version = "23.0.0" } -pallet-balances = { default-features = false, version = "23.0.0" } -pallet-multisig = { default-features = false, version = "23.0.0" } -pallet-nft-fractionalization = { default-features = false, version = "5.0.0" } -pallet-nfts = { default-features = false, version = "17.0.0" } -pallet-nfts-runtime-api = { default-features = false, version = "9.0.0" } -pallet-proxy = { default-features = false, version = "23.0.0" } -pallet-session = { default-features = false, version = "23.0.0" } -pallet-state-trie-migration = { default-features = false, optional = true , version = "24.0.0" } -pallet-timestamp = { default-features = false, version = "22.0.0" } -pallet-transaction-payment = { default-features = false, version = "23.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "23.0.0" } -pallet-uniques = { default-features = false, version = "23.0.0" } -pallet-utility = { default-features = false, version = "23.0.0" } -sp-api = { default-features = false, version = "21.0.0" } -sp-block-builder = { default-features = false, version = "21.0.0" } -sp-consensus-aura = { default-features = false, version = "0.27.0" } -sp-core = { default-features = false, version = "23.0.0" } -sp-inherents = { default-features = false, version = "21.0.0" } -sp-offchain = { default-features = false, version = "21.0.0" } -sp-runtime = { default-features = false, version = "26.0.0" } -sp-session = { default-features = false, version = "22.0.0" } -sp-std = { default-features = false, version = "10.0.0" } -sp-storage = { default-features = false, version = "15.0.0" } -sp-transaction-pool = { default-features = false, version = "21.0.0" } -sp-version = { default-features = false, version = "24.0.0" } -sp-weights = { default-features = false, version = "22.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-executive = { default-features = false, version = "24.0.0" } +frame-support = { default-features = false, version = "24.0.0" } +frame-system = { default-features = false, version = "24.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "22.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.30.0" } +pallet-asset-conversion-tx-payment = { default-features = false, version = "6.0.0" } +pallet-assets = { default-features = false, version = "25.0.0" } +pallet-asset-conversion = { default-features = false, version = "6.0.0" } +pallet-aura = { default-features = false, version = "23.0.0" } +pallet-authorship = { default-features = false, version = "24.0.0" } +pallet-balances = { default-features = false, version = "24.0.0" } +pallet-multisig = { default-features = false, version = "24.0.0" } +pallet-nft-fractionalization = { default-features = false, version = "6.0.0" } +pallet-nfts = { default-features = false, version = "18.0.0" } +pallet-nfts-runtime-api = { default-features = false, version = "10.0.0" } +pallet-proxy = { default-features = false, version = "24.0.0" } +pallet-session = { default-features = false, version = "24.0.0" } +pallet-state-trie-migration = { default-features = false, optional = true , version = "25.0.0" } +pallet-timestamp = { default-features = false, version = "23.0.0" } +pallet-transaction-payment = { default-features = false, version = "24.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "24.0.0" } +pallet-uniques = { default-features = false, version = "24.0.0" } +pallet-utility = { default-features = false, version = "24.0.0" } +sp-api = { default-features = false, version = "22.0.0" } +sp-block-builder = { default-features = false, version = "22.0.0" } +sp-consensus-aura = { default-features = false, version = "0.28.0" } +sp-core = { default-features = false, version = "24.0.0" } +sp-inherents = { default-features = false, version = "22.0.0" } +sp-offchain = { default-features = false, version = "22.0.0" } +sp-runtime = { default-features = false, version = "27.0.0" } +sp-session = { default-features = false, version = "23.0.0" } +sp-std = { default-features = false, version = "11.0.0" } +sp-storage = { default-features = false, version = "16.0.0" } +sp-transaction-pool = { default-features = false, version = "22.0.0" } +sp-version = { default-features = false, version = "25.0.0" } +sp-weights = { default-features = false, version = "23.0.0" } # num-traits feature needed for dex integer sq root: primitive-types = { version = "0.12.1", default-features = false, features = ["codec", "scale-info", "num-traits"] } # Polkadot kusama-runtime-constants = { path = "../../../relay/kusama/constants", default-features = false} -pallet-xcm = { default-features = false, version = "2.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "2.0.0" } -polkadot-core-primitives = { default-features = false, version = "2.0.0" } -polkadot-parachain-primitives = { default-features = false, version = "1.0.0" } -polkadot-runtime-common = { default-features = false, version = "2.0.0" } -xcm = { package = "staging-xcm", default-features = false, version = "2.0.1" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "2.0.1" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "2.0.0" } +pallet-xcm = { default-features = false, version = "3.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "3.0.0" } +polkadot-core-primitives = { default-features = false, version = "3.0.0" } +polkadot-parachain-primitives = { default-features = false, version = "2.0.0" } +polkadot-runtime-common = { default-features = false, version = "3.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "3.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "3.0.1" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "3.0.0" } # Cumulus -cumulus-pallet-aura-ext = { default-features = false , version = "0.2.0" } -cumulus-pallet-dmp-queue = { default-features = false , version = "0.2.0" } -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.2.0" } -cumulus-pallet-session-benchmarking = { default-features = false, version = "4.0.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.2.0" } -cumulus-pallet-xcmp-queue = { default-features = false , version = "0.2.0" } -cumulus-primitives-core = { default-features = false , version = "0.2.0" } -cumulus-primitives-utility = { default-features = false , version = "0.2.0" } -pallet-collator-selection = { default-features = false , version = "4.0.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.2.0" } -parachains-common = { default-features = false , version = "2.0.0" } -assets-common = { default-features = false , version = "0.2.0" } +cumulus-pallet-aura-ext = { default-features = false , version = "0.3.0" } +cumulus-pallet-dmp-queue = { default-features = false , version = "0.3.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.3.0" } +cumulus-pallet-session-benchmarking = { default-features = false, version = "5.0.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.3.0" } +cumulus-pallet-xcmp-queue = { default-features = false , version = "0.3.0" } +cumulus-primitives-core = { default-features = false , version = "0.3.0" } +cumulus-primitives-utility = { default-features = false , version = "0.3.0" } +pallet-collator-selection = { default-features = false , version = "5.0.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.3.0" } +parachains-common = { default-features = false , version = "3.0.0" } +assets-common = { default-features = false , version = "0.3.0" } [dev-dependencies] -asset-test-utils = { version = "2.0.0" } +asset-test-utils = { version = "3.0.0" } [build-dependencies] -substrate-wasm-builder = { optional = true , version = "12.0.0" } +substrate-wasm-builder = { optional = true , version = "13.0.0" } [features] default = [ "std" ] diff --git a/system-parachains/asset-hubs/asset-hub-polkadot/Cargo.toml b/system-parachains/asset-hubs/asset-hub-polkadot/Cargo.toml index 973f527540..7e218ca8ee 100644 --- a/system-parachains/asset-hubs/asset-hub-polkadot/Cargo.toml +++ b/system-parachains/asset-hubs/asset-hub-polkadot/Cargo.toml @@ -16,73 +16,73 @@ scale-info = { version = "2.9.0", default-features = false, features = ["derive" smallvec = "1.11.0" # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-executive = { default-features = false, version = "23.0.0" } -frame-support = { default-features = false, version = "23.0.0" } -frame-system = { default-features = false, version = "23.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "21.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.29.0" } -pallet-asset-tx-payment = { default-features = false , version = "23.0.0" } -pallet-assets = { default-features = false, version = "24.0.0" } -pallet-aura = { default-features = false, version = "22.0.0" } -pallet-authorship = { default-features = false, version = "23.0.0" } -pallet-balances = { default-features = false, version = "23.0.0" } -pallet-multisig = { default-features = false, version = "23.0.0" } -pallet-nfts = { default-features = false, version = "17.0.0" } -pallet-nfts-runtime-api = { default-features = false, version = "9.0.0" } -pallet-proxy = { default-features = false, version = "23.0.0" } -pallet-session = { default-features = false, version = "23.0.0" } -pallet-timestamp = { default-features = false, version = "22.0.0" } -pallet-transaction-payment = { default-features = false, version = "23.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "23.0.0" } -pallet-uniques = { default-features = false, version = "23.0.0" } -pallet-utility = { default-features = false, version = "23.0.0" } -sp-api = { default-features = false, version = "21.0.0" } -sp-block-builder = { default-features = false, version = "21.0.0" } -sp-consensus-aura = { default-features = false, version = "0.27.0" } -sp-core = { default-features = false, version = "23.0.0" } -sp-inherents = { default-features = false, version = "21.0.0" } -sp-offchain = { default-features = false, version = "21.0.0" } -sp-runtime = { default-features = false, version = "26.0.0" } -sp-session = { default-features = false, version = "22.0.0" } -sp-std = { default-features = false, version = "10.0.0" } -sp-storage = { default-features = false, version = "15.0.0" } -sp-transaction-pool = { default-features = false, version = "21.0.0" } -sp-version = { default-features = false, version = "24.0.0" } -sp-weights = { default-features = false, version = "22.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-executive = { default-features = false, version = "24.0.0" } +frame-support = { default-features = false, version = "24.0.0" } +frame-system = { default-features = false, version = "24.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "22.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.30.0" } +pallet-asset-tx-payment = { default-features = false , version = "24.0.0" } +pallet-assets = { default-features = false, version = "25.0.0" } +pallet-aura = { default-features = false, version = "23.0.0" } +pallet-authorship = { default-features = false, version = "24.0.0" } +pallet-balances = { default-features = false, version = "24.0.0" } +pallet-multisig = { default-features = false, version = "24.0.0" } +pallet-nfts = { default-features = false, version = "18.0.0" } +pallet-nfts-runtime-api = { default-features = false, version = "10.0.0" } +pallet-proxy = { default-features = false, version = "24.0.0" } +pallet-session = { default-features = false, version = "24.0.0" } +pallet-timestamp = { default-features = false, version = "23.0.0" } +pallet-transaction-payment = { default-features = false, version = "24.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "24.0.0" } +pallet-uniques = { default-features = false, version = "24.0.0" } +pallet-utility = { default-features = false, version = "24.0.0" } +sp-api = { default-features = false, version = "22.0.0" } +sp-block-builder = { default-features = false, version = "22.0.0" } +sp-consensus-aura = { default-features = false, version = "0.28.0" } +sp-core = { default-features = false, version = "24.0.0" } +sp-inherents = { default-features = false, version = "22.0.0" } +sp-offchain = { default-features = false, version = "22.0.0" } +sp-runtime = { default-features = false, version = "27.0.0" } +sp-session = { default-features = false, version = "23.0.0" } +sp-std = { default-features = false, version = "11.0.0" } +sp-storage = { default-features = false, version = "16.0.0" } +sp-transaction-pool = { default-features = false, version = "22.0.0" } +sp-version = { default-features = false, version = "25.0.0" } +sp-weights = { default-features = false, version = "23.0.0" } # Polkadot -pallet-xcm = { default-features = false, version = "2.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "2.0.0" } -polkadot-core-primitives = { default-features = false, version = "2.0.0" } -polkadot-parachain-primitives = { default-features = false, version = "1.0.0" } -polkadot-runtime-common = { default-features = false, version = "2.0.0" } +pallet-xcm = { default-features = false, version = "3.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "3.0.0" } +polkadot-core-primitives = { default-features = false, version = "3.0.0" } +polkadot-parachain-primitives = { default-features = false, version = "2.0.0" } +polkadot-runtime-common = { default-features = false, version = "3.0.0" } polkadot-runtime-constants = { path = "../../../relay/polkadot/constants", default-features = false} -xcm = { package = "staging-xcm", default-features = false, version = "2.0.1" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "2.0.1" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "2.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "3.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "3.0.1" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "3.0.0" } # Cumulus -cumulus-pallet-aura-ext = { default-features = false , version = "0.2.0" } -cumulus-pallet-dmp-queue = { default-features = false , version = "0.2.0" } -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.2.0" } -cumulus-pallet-session-benchmarking = { default-features = false, version = "4.0.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.2.0" } -cumulus-pallet-xcmp-queue = { default-features = false , version = "0.2.0" } -cumulus-primitives-core = { default-features = false , version = "0.2.0" } -cumulus-primitives-utility = { default-features = false , version = "0.2.0" } -pallet-collator-selection = { default-features = false , version = "4.0.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.2.0" } -parachains-common = { default-features = false , version = "2.0.0" } -assets-common = { default-features = false , version = "0.2.0" } +cumulus-pallet-aura-ext = { default-features = false , version = "0.3.0" } +cumulus-pallet-dmp-queue = { default-features = false , version = "0.3.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.3.0" } +cumulus-pallet-session-benchmarking = { default-features = false, version = "5.0.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.3.0" } +cumulus-pallet-xcmp-queue = { default-features = false , version = "0.3.0" } +cumulus-primitives-core = { default-features = false , version = "0.3.0" } +cumulus-primitives-utility = { default-features = false , version = "0.3.0" } +pallet-collator-selection = { default-features = false , version = "5.0.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.3.0" } +parachains-common = { default-features = false , version = "3.0.0" } +assets-common = { default-features = false , version = "0.3.0" } [dev-dependencies] hex-literal = "0.4.1" -asset-test-utils = { version = "2.0.0" } +asset-test-utils = { version = "3.0.0" } [build-dependencies] -substrate-wasm-builder = { optional = true , version = "12.0.0" } +substrate-wasm-builder = { optional = true , version = "13.0.0" } [features] default = [ "std" ] diff --git a/system-parachains/bridge-hubs/bridge-hub-kusama/Cargo.toml b/system-parachains/bridge-hubs/bridge-hub-kusama/Cargo.toml index 11225c620b..5f608342a1 100644 --- a/system-parachains/bridge-hubs/bridge-hub-kusama/Cargo.toml +++ b/system-parachains/bridge-hubs/bridge-hub-kusama/Cargo.toml @@ -9,7 +9,7 @@ repository.workspace = true version.workspace = true [build-dependencies] -substrate-wasm-builder = { optional = true , version = "12.0.0" } +substrate-wasm-builder = { optional = true , version = "13.0.0" } [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } @@ -20,62 +20,62 @@ serde = { version = "1.0.188", optional = true, features = ["derive"] } smallvec = "1.11.0" # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-executive = { default-features = false, version = "23.0.0" } -frame-support = { default-features = false, version = "23.0.0" } -frame-system = { default-features = false, version = "23.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "21.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.29.0" } -pallet-aura = { default-features = false, version = "22.0.0" } -pallet-authorship = { default-features = false, version = "23.0.0" } -pallet-balances = { default-features = false, version = "23.0.0" } -pallet-multisig = { default-features = false, version = "23.0.0" } -pallet-session = { default-features = false, version = "23.0.0" } -pallet-timestamp = { default-features = false, version = "22.0.0" } -pallet-transaction-payment = { default-features = false, version = "23.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "23.0.0" } -pallet-utility = { default-features = false, version = "23.0.0" } -sp-api = { default-features = false, version = "21.0.0" } -sp-block-builder = { default-features = false, version = "21.0.0" } -sp-consensus-aura = { default-features = false, version = "0.27.0" } -sp-core = { default-features = false, version = "23.0.0" } -sp-inherents = { default-features = false, version = "21.0.0" } -sp-io = { default-features = false, version = "25.0.0" } -sp-offchain = { default-features = false, version = "21.0.0" } -sp-runtime = { default-features = false, version = "26.0.0" } -sp-session = { default-features = false, version = "22.0.0" } -sp-std = { default-features = false, version = "10.0.0" } -sp-storage = { default-features = false, version = "15.0.0" } -sp-transaction-pool = { default-features = false, version = "21.0.0" } -sp-version = { default-features = false, version = "24.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-executive = { default-features = false, version = "24.0.0" } +frame-support = { default-features = false, version = "24.0.0" } +frame-system = { default-features = false, version = "24.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "22.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.30.0" } +pallet-aura = { default-features = false, version = "23.0.0" } +pallet-authorship = { default-features = false, version = "24.0.0" } +pallet-balances = { default-features = false, version = "24.0.0" } +pallet-multisig = { default-features = false, version = "24.0.0" } +pallet-session = { default-features = false, version = "24.0.0" } +pallet-timestamp = { default-features = false, version = "23.0.0" } +pallet-transaction-payment = { default-features = false, version = "24.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "24.0.0" } +pallet-utility = { default-features = false, version = "24.0.0" } +sp-api = { default-features = false, version = "22.0.0" } +sp-block-builder = { default-features = false, version = "22.0.0" } +sp-consensus-aura = { default-features = false, version = "0.28.0" } +sp-core = { default-features = false, version = "24.0.0" } +sp-inherents = { default-features = false, version = "22.0.0" } +sp-io = { default-features = false, version = "26.0.0" } +sp-offchain = { default-features = false, version = "22.0.0" } +sp-runtime = { default-features = false, version = "27.0.0" } +sp-session = { default-features = false, version = "23.0.0" } +sp-std = { default-features = false, version = "11.0.0" } +sp-storage = { default-features = false, version = "16.0.0" } +sp-transaction-pool = { default-features = false, version = "22.0.0" } +sp-version = { default-features = false, version = "25.0.0" } # Polkadot kusama-runtime-constants = { path = "../../../relay/kusama/constants", default-features = false} -pallet-xcm = { default-features = false, version = "2.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "2.0.0" } -polkadot-core-primitives = { default-features = false, version = "2.0.0" } -polkadot-parachain-primitives = { default-features = false, version = "1.0.0" } -polkadot-runtime-common = { default-features = false, version = "2.0.0" } -xcm = { package = "staging-xcm", default-features = false, version = "2.0.1" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "2.0.1" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "2.0.0" } +pallet-xcm = { default-features = false, version = "3.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "3.0.0" } +polkadot-core-primitives = { default-features = false, version = "3.0.0" } +polkadot-parachain-primitives = { default-features = false, version = "2.0.0" } +polkadot-runtime-common = { default-features = false, version = "3.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "3.0.1" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "3.0.1" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "3.0.0" } # Cumulus -cumulus-pallet-aura-ext = { default-features = false , version = "0.2.0" } -cumulus-pallet-dmp-queue = { default-features = false , version = "0.2.0" } -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.2.0" } -cumulus-pallet-session-benchmarking = { default-features = false, version = "4.0.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.2.0" } -cumulus-pallet-xcmp-queue = { default-features = false , version = "0.2.0" } -cumulus-primitives-core = { default-features = false , version = "0.2.0" } -cumulus-primitives-utility = { default-features = false , version = "0.2.0" } -pallet-collator-selection = { default-features = false , version = "4.0.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.2.0" } -parachains-common = { default-features = false , version = "2.0.0" } +cumulus-pallet-aura-ext = { default-features = false , version = "0.3.0" } +cumulus-pallet-dmp-queue = { default-features = false , version = "0.3.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.3.0" } +cumulus-pallet-session-benchmarking = { default-features = false, version = "5.0.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.3.0" } +cumulus-pallet-xcmp-queue = { default-features = false , version = "0.3.0" } +cumulus-primitives-core = { default-features = false , version = "0.3.0" } +cumulus-primitives-utility = { default-features = false , version = "0.3.0" } +pallet-collator-selection = { default-features = false , version = "5.0.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.3.0" } +parachains-common = { default-features = false , version = "3.0.0" } [dev-dependencies] -bridge-hub-test-utils = { version = "0.2.0" } +bridge-hub-test-utils = { version = "0.3.0" } [features] default = [ "std" ] diff --git a/system-parachains/bridge-hubs/bridge-hub-polkadot/Cargo.toml b/system-parachains/bridge-hubs/bridge-hub-polkadot/Cargo.toml index cac2fcc358..d0384b967f 100644 --- a/system-parachains/bridge-hubs/bridge-hub-polkadot/Cargo.toml +++ b/system-parachains/bridge-hubs/bridge-hub-polkadot/Cargo.toml @@ -9,7 +9,7 @@ repository.workspace = true version.workspace = true [build-dependencies] -substrate-wasm-builder = { optional = true , version = "12.0.0" } +substrate-wasm-builder = { optional = true , version = "13.0.0" } [dependencies] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } @@ -20,62 +20,62 @@ serde = { version = "1.0.188", optional = true, features = ["derive"] } smallvec = "1.11.0" # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-executive = { default-features = false, version = "23.0.0" } -frame-support = { default-features = false, version = "23.0.0" } -frame-system = { default-features = false, version = "23.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "21.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.29.0" } -pallet-aura = { default-features = false, version = "22.0.0" } -pallet-authorship = { default-features = false, version = "23.0.0" } -pallet-balances = { default-features = false, version = "23.0.0" } -pallet-multisig = { default-features = false, version = "23.0.0" } -pallet-session = { default-features = false, version = "23.0.0" } -pallet-timestamp = { default-features = false, version = "22.0.0" } -pallet-transaction-payment = { default-features = false, version = "23.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "23.0.0" } -pallet-utility = { default-features = false, version = "23.0.0" } -sp-api = { default-features = false, version = "21.0.0" } -sp-block-builder = { default-features = false, version = "21.0.0" } -sp-consensus-aura = { default-features = false, version = "0.27.0" } -sp-core = { default-features = false, version = "23.0.0" } -sp-inherents = { default-features = false, version = "21.0.0" } -sp-io = { default-features = false, version = "25.0.0" } -sp-offchain = { default-features = false, version = "21.0.0" } -sp-runtime = { default-features = false, version = "26.0.0" } -sp-session = { default-features = false, version = "22.0.0" } -sp-std = { default-features = false, version = "10.0.0" } -sp-storage = { default-features = false, version = "15.0.0" } -sp-transaction-pool = { default-features = false, version = "21.0.0" } -sp-version = { default-features = false, version = "24.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-executive = { default-features = false, version = "24.0.0" } +frame-support = { default-features = false, version = "24.0.0" } +frame-system = { default-features = false, version = "24.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "22.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.30.0" } +pallet-aura = { default-features = false, version = "23.0.0" } +pallet-authorship = { default-features = false, version = "24.0.0" } +pallet-balances = { default-features = false, version = "24.0.0" } +pallet-multisig = { default-features = false, version = "24.0.0" } +pallet-session = { default-features = false, version = "24.0.0" } +pallet-timestamp = { default-features = false, version = "23.0.0" } +pallet-transaction-payment = { default-features = false, version = "24.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "24.0.0" } +pallet-utility = { default-features = false, version = "24.0.0" } +sp-api = { default-features = false, version = "22.0.0" } +sp-block-builder = { default-features = false, version = "22.0.0" } +sp-consensus-aura = { default-features = false, version = "0.28.0" } +sp-core = { default-features = false, version = "24.0.0" } +sp-inherents = { default-features = false, version = "22.0.0" } +sp-io = { default-features = false, version = "26.0.0" } +sp-offchain = { default-features = false, version = "22.0.0" } +sp-runtime = { default-features = false, version = "27.0.0" } +sp-session = { default-features = false, version = "23.0.0" } +sp-std = { default-features = false, version = "11.0.0" } +sp-storage = { default-features = false, version = "16.0.0" } +sp-transaction-pool = { default-features = false, version = "22.0.0" } +sp-version = { default-features = false, version = "25.0.0" } # Polkadot polkadot-runtime-constants = { path = "../../../relay/polkadot/constants", default-features = false} -pallet-xcm = { default-features = false, version = "2.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "2.0.0" } -polkadot-core-primitives = { default-features = false, version = "2.0.0" } -polkadot-parachain-primitives = { default-features = false, version = "1.0.0" } -polkadot-runtime-common = { default-features = false, version = "2.0.0" } -xcm = { package = "staging-xcm", default-features = false, version = "2.0.1" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "2.0.1" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "2.0.0" } +pallet-xcm = { default-features = false, version = "3.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "3.0.0" } +polkadot-core-primitives = { default-features = false, version = "3.0.0" } +polkadot-parachain-primitives = { default-features = false, version = "2.0.0" } +polkadot-runtime-common = { default-features = false, version = "3.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "3.0.1" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "3.0.1" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "3.0.0" } # Cumulus -cumulus-pallet-aura-ext = { default-features = false , version = "0.2.0" } -cumulus-pallet-dmp-queue = { default-features = false , version = "0.2.0" } -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.2.0" } -cumulus-pallet-session-benchmarking = { default-features = false, version = "4.0.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.2.0" } -cumulus-pallet-xcmp-queue = { default-features = false , version = "0.2.0" } -cumulus-primitives-core = { default-features = false , version = "0.2.0" } -cumulus-primitives-utility = { default-features = false , version = "0.2.0" } -pallet-collator-selection = { default-features = false , version = "4.0.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.2.0" } -parachains-common = { default-features = false , version = "2.0.0" } +cumulus-pallet-aura-ext = { default-features = false , version = "0.3.0" } +cumulus-pallet-dmp-queue = { default-features = false , version = "0.3.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.3.0" } +cumulus-pallet-session-benchmarking = { default-features = false, version = "5.0.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.3.0" } +cumulus-pallet-xcmp-queue = { default-features = false , version = "0.3.0" } +cumulus-primitives-core = { default-features = false , version = "0.3.0" } +cumulus-primitives-utility = { default-features = false , version = "0.3.0" } +pallet-collator-selection = { default-features = false , version = "5.0.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.3.0" } +parachains-common = { default-features = false , version = "3.0.0" } [dev-dependencies] -bridge-hub-test-utils = { version = "0.2.0" } +bridge-hub-test-utils = { version = "0.3.0" } [features] default = [ "std" ] diff --git a/system-parachains/collectives/collectives-polkadot/Cargo.toml b/system-parachains/collectives/collectives-polkadot/Cargo.toml index 5af3c75bed..a3a42e0896 100644 --- a/system-parachains/collectives/collectives-polkadot/Cargo.toml +++ b/system-parachains/collectives/collectives-polkadot/Cargo.toml @@ -16,73 +16,73 @@ scale-info = { version = "2.9.0", default-features = false, features = ["derive" smallvec = "1.11.0" # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-executive = { default-features = false, version = "23.0.0" } -frame-support = { default-features = false, version = "23.0.0" } -frame-system = { default-features = false, version = "23.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "21.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.29.0" } -pallet-alliance = { default-features = false, version = "22.0.0" } -pallet-aura = { default-features = false, version = "22.0.0" } -pallet-authorship = { default-features = false, version = "23.0.0" } -pallet-balances = { default-features = false, version = "23.0.0" } -pallet-collective = { default-features = false, version = "23.0.0" } -pallet-multisig = { default-features = false, version = "23.0.0" } -pallet-preimage = { default-features = false , version = "23.0.0" } -pallet-proxy = { default-features = false, version = "23.0.0" } -pallet-scheduler = { default-features = false , version = "24.0.0" } -pallet-session = { default-features = false, version = "23.0.0" } -pallet-timestamp = { default-features = false, version = "22.0.0" } -pallet-transaction-payment = { default-features = false, version = "23.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "23.0.0" } -pallet-utility = { default-features = false, version = "23.0.0" } -pallet-referenda = { default-features = false, version = "23.0.0" } -pallet-ranked-collective = { default-features = false, version = "23.0.0" } -pallet-core-fellowship = { default-features = false, version = "7.0.0" } -pallet-salary = { default-features = false, version = "8.0.0" } -sp-api = { default-features = false, version = "21.0.0" } -sp-arithmetic = { default-features = false , version = "18.0.0" } -sp-block-builder = { default-features = false, version = "21.0.0" } -sp-consensus-aura = { default-features = false, version = "0.27.0" } -sp-core = { default-features = false, version = "23.0.0" } -sp-inherents = { default-features = false, version = "21.0.0" } -sp-offchain = { default-features = false, version = "21.0.0" } -sp-runtime = { default-features = false, version = "26.0.0" } -sp-session = { default-features = false, version = "22.0.0" } -sp-std = { default-features = false, version = "10.0.0" } -sp-storage = { default-features = false, version = "15.0.0" } -sp-transaction-pool = { default-features = false, version = "21.0.0" } -sp-version = { default-features = false, version = "24.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-executive = { default-features = false, version = "24.0.0" } +frame-support = { default-features = false, version = "24.0.0" } +frame-system = { default-features = false, version = "24.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "22.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.30.0" } +pallet-alliance = { default-features = false, version = "23.0.0" } +pallet-aura = { default-features = false, version = "23.0.0" } +pallet-authorship = { default-features = false, version = "24.0.0" } +pallet-balances = { default-features = false, version = "24.0.0" } +pallet-collective = { default-features = false, version = "24.0.0" } +pallet-multisig = { default-features = false, version = "24.0.0" } +pallet-preimage = { default-features = false , version = "24.0.0" } +pallet-proxy = { default-features = false, version = "24.0.0" } +pallet-scheduler = { default-features = false , version = "25.0.0" } +pallet-session = { default-features = false, version = "24.0.0" } +pallet-timestamp = { default-features = false, version = "23.0.0" } +pallet-transaction-payment = { default-features = false, version = "24.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "24.0.0" } +pallet-utility = { default-features = false, version = "24.0.0" } +pallet-referenda = { default-features = false, version = "24.0.0" } +pallet-ranked-collective = { default-features = false, version = "24.0.0" } +pallet-core-fellowship = { default-features = false, version = "8.0.0" } +pallet-salary = { default-features = false, version = "9.0.0" } +sp-api = { default-features = false, version = "22.0.0" } +sp-arithmetic = { default-features = false , version = "19.0.0" } +sp-block-builder = { default-features = false, version = "22.0.0" } +sp-consensus-aura = { default-features = false, version = "0.28.0" } +sp-core = { default-features = false, version = "24.0.0" } +sp-inherents = { default-features = false, version = "22.0.0" } +sp-offchain = { default-features = false, version = "22.0.0" } +sp-runtime = { default-features = false, version = "27.0.0" } +sp-session = { default-features = false, version = "23.0.0" } +sp-std = { default-features = false, version = "11.0.0" } +sp-storage = { default-features = false, version = "16.0.0" } +sp-transaction-pool = { default-features = false, version = "22.0.0" } +sp-version = { default-features = false, version = "25.0.0" } # Polkadot -pallet-xcm = { default-features = false, version = "2.0.0" } -polkadot-core-primitives = { default-features = false, version = "2.0.0" } -polkadot-parachain-primitives = { default-features = false, version = "1.0.0" } -polkadot-runtime-common = { default-features = false, version = "2.0.0" } +pallet-xcm = { default-features = false, version = "3.0.0" } +polkadot-core-primitives = { default-features = false, version = "3.0.0" } +polkadot-parachain-primitives = { default-features = false, version = "2.0.0" } +polkadot-runtime-common = { default-features = false, version = "3.0.0" } polkadot-runtime-constants = { path = "../../../relay/polkadot/constants", default-features = false} -xcm = { package = "staging-xcm", default-features = false, version = "2.0.1" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "2.0.1" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "2.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "3.0.1" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "3.0.1" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "3.0.0" } # Cumulus -cumulus-pallet-aura-ext = { default-features = false , version = "0.2.0" } -cumulus-pallet-dmp-queue = { default-features = false , version = "0.2.0" } -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.2.0" } -cumulus-pallet-session-benchmarking = { default-features = false, version = "4.0.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.2.0" } -cumulus-pallet-xcmp-queue = { default-features = false , version = "0.2.0" } -cumulus-primitives-core = { default-features = false , version = "0.2.0" } -cumulus-primitives-utility = { default-features = false , version = "0.2.0" } -pallet-collator-selection = { default-features = false , version = "4.0.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.2.0" } -parachains-common = { default-features = false , version = "2.0.0" } +cumulus-pallet-aura-ext = { default-features = false , version = "0.3.0" } +cumulus-pallet-dmp-queue = { default-features = false , version = "0.3.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.3.0" } +cumulus-pallet-session-benchmarking = { default-features = false, version = "5.0.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.3.0" } +cumulus-pallet-xcmp-queue = { default-features = false , version = "0.3.0" } +cumulus-primitives-core = { default-features = false , version = "0.3.0" } +cumulus-primitives-utility = { default-features = false , version = "0.3.0" } +pallet-collator-selection = { default-features = false , version = "5.0.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.3.0" } +parachains-common = { default-features = false , version = "3.0.0" } [build-dependencies] -substrate-wasm-builder = { optional = true , version = "12.0.0" } +substrate-wasm-builder = { optional = true , version = "13.0.0" } [dev-dependencies] -sp-io = { default-features = false, version = "25.0.0" } +sp-io = { default-features = false, version = "26.0.0" } [features] default = [ "std" ] diff --git a/system-parachains/collectives/collectives-polkadot/src/impls.rs b/system-parachains/collectives/collectives-polkadot/src/impls.rs index 12ea0f5798..fb2feb63ec 100644 --- a/system-parachains/collectives/collectives-polkadot/src/impls.rs +++ b/system-parachains/collectives/collectives-polkadot/src/impls.rs @@ -185,7 +185,7 @@ pub mod benchmarks { impl> EnsureSuccessful for OpenHrmpChannel { fn ensure_successful() { if let ChannelStatus::Closed = ParachainSystem::get_channel_status(I::get().into()) { - ParachainSystem::open_outbound_hrmp_channel_for_benchmarks(I::get().into()) + ParachainSystem::open_outbound_hrmp_channel_for_benchmarks_or_tests(I::get().into()) } } } diff --git a/system-parachains/collectives/collectives-polkadot/src/lib.rs b/system-parachains/collectives/collectives-polkadot/src/lib.rs index 31c6923e85..a51e65fc81 100644 --- a/system-parachains/collectives/collectives-polkadot/src/lib.rs +++ b/system-parachains/collectives/collectives-polkadot/src/lib.rs @@ -64,7 +64,10 @@ use frame_support::{ construct_runtime, dispatch::DispatchClass, parameter_types, - traits::{ConstBool, ConstU16, ConstU32, ConstU64, ConstU8, EitherOfDiverse, InstanceFilter}, + traits::{ + fungible::HoldConsideration, ConstBool, ConstU16, ConstU32, ConstU64, ConstU8, + EitherOfDiverse, InstanceFilter, LinearStoragePrice, + }, weights::{ConstantMultiplier, Weight}, PalletId, }; @@ -542,6 +545,8 @@ impl pallet_scheduler::Config for Runtime { parameter_types! { pub const PreimageBaseDeposit: Balance = deposit(2, 64); pub const PreimageByteDeposit: Balance = deposit(0, 1); + pub const PreimageHoldReason: RuntimeHoldReason = + RuntimeHoldReason::Preimage(pallet_preimage::HoldReason::Preimage); } impl pallet_preimage::Config for Runtime { @@ -549,8 +554,12 @@ impl pallet_preimage::Config for Runtime { type RuntimeEvent = RuntimeEvent; type Currency = Balances; type ManagerOrigin = EnsureRoot; - type BaseDeposit = PreimageBaseDeposit; - type ByteDeposit = PreimageByteDeposit; + type Consideration = HoldConsideration< + AccountId, + Balances, + PreimageHoldReason, + LinearStoragePrice, + >; } // Create the runtime by composing the FRAME pallets that were previously configured. @@ -586,7 +595,7 @@ construct_runtime!( Utility: pallet_utility::{Pallet, Call, Event} = 40, Multisig: pallet_multisig::{Pallet, Call, Storage, Event} = 41, Proxy: pallet_proxy::{Pallet, Call, Storage, Event} = 42, - Preimage: pallet_preimage::{Pallet, Call, Storage, Event} = 43, + Preimage: pallet_preimage::{Pallet, Call, Storage, Event, HoldReason} = 43, Scheduler: pallet_scheduler::{Pallet, Call, Storage, Event} = 44, // The main stage. diff --git a/system-parachains/collectives/collectives-polkadot/src/weights/pallet_preimage.rs b/system-parachains/collectives/collectives-polkadot/src/weights/pallet_preimage.rs index 71e91699fd..0e50acf71b 100644 --- a/system-parachains/collectives/collectives-polkadot/src/weights/pallet_preimage.rs +++ b/system-parachains/collectives/collectives-polkadot/src/weights/pallet_preimage.rs @@ -210,4 +210,25 @@ impl pallet_preimage::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } + /// Storage: `Preimage::StatusFor` (r:1024 w:1024) + /// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(91), added: 2566, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + /// Storage: `Preimage::RequestStatusFor` (r:0 w:1024) + /// Proof: `Preimage::RequestStatusFor` (`max_values`: None, `max_size`: Some(75), added: 2550, mode: `MaxEncodedLen`) + /// The range of component `n` is `[0, 1024]`. + fn ensure_updated(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `193 + n * (91 ±0)` + // Estimated: `3593 + n * (2566 ±0)` + // Minimum execution time: 2_452_000 picoseconds. + Weight::from_parts(2_641_000, 3593) + // Standard Error: 19_797 + .saturating_add(Weight::from_parts(15_620_946, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes(1_u64)) + .saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2566).saturating_mul(n.into())) + } } diff --git a/system-parachains/gluttons/glutton-kusama/Cargo.toml b/system-parachains/gluttons/glutton-kusama/Cargo.toml index c7552d0e2c..9fec42b5b8 100644 --- a/system-parachains/gluttons/glutton-kusama/Cargo.toml +++ b/system-parachains/gluttons/glutton-kusama/Cargo.toml @@ -13,41 +13,41 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = scale-info = { version = "2.9.0", default-features = false, features = ["derive"] } # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-executive = { default-features = false, version = "23.0.0" } -frame-support = { default-features = false, version = "23.0.0" } -frame-system = { default-features = false, version = "23.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "21.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "23.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.29.0" } -pallet-glutton = { default-features = false, optional = true, version = "9.0.0" } -pallet-sudo = { default-features = false, optional = true, version = "23.0.0" } -sp-api = { default-features = false, version = "21.0.0" } -sp-block-builder = { default-features = false, version = "21.0.0" } -sp-core = { default-features = false, version = "23.0.0" } -sp-inherents = { default-features = false, version = "21.0.0" } -sp-offchain = { default-features = false, version = "21.0.0" } -sp-runtime = { default-features = false, version = "26.0.0" } -sp-session = { default-features = false, version = "22.0.0" } -sp-std = { default-features = false, version = "10.0.0" } -sp-storage = { default-features = false, version = "15.0.0" } -sp-transaction-pool = { default-features = false, version = "21.0.0" } -sp-version = { default-features = false, version = "24.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-executive = { default-features = false, version = "24.0.0" } +frame-support = { default-features = false, version = "24.0.0" } +frame-system = { default-features = false, version = "24.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "22.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "24.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.30.0" } +pallet-glutton = { default-features = false, optional = true, version = "10.0.0" } +pallet-sudo = { default-features = false, optional = true, version = "24.0.0" } +sp-api = { default-features = false, version = "22.0.0" } +sp-block-builder = { default-features = false, version = "22.0.0" } +sp-core = { default-features = false, version = "24.0.0" } +sp-inherents = { default-features = false, version = "22.0.0" } +sp-offchain = { default-features = false, version = "22.0.0" } +sp-runtime = { default-features = false, version = "27.0.0" } +sp-session = { default-features = false, version = "23.0.0" } +sp-std = { default-features = false, version = "11.0.0" } +sp-storage = { default-features = false, version = "16.0.0" } +sp-transaction-pool = { default-features = false, version = "22.0.0" } +sp-version = { default-features = false, version = "25.0.0" } # Polkadot -xcm = { package = "staging-xcm", default-features = false, version = "2.0.1" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "2.0.1" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "2.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "3.0.1" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "3.0.1" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "3.0.0" } # Cumulus -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.2.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.2.0" } -cumulus-primitives-core = { default-features = false , version = "0.2.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.2.0" } -parachains-common = { default-features = false , version = "2.0.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.3.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.3.0" } +cumulus-primitives-core = { default-features = false , version = "0.3.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.3.0" } +parachains-common = { default-features = false , version = "3.0.0" } [build-dependencies] -substrate-wasm-builder = { version = "12.0.0" } +substrate-wasm-builder = { version = "13.0.0" } [features] default = [ "std" ] From 41d3ca6050c6dfbb509764193dce11ff9ccef141 Mon Sep 17 00:00:00 2001 From: Javier Bullrich Date: Wed, 22 Nov 2023 12:15:37 +0100 Subject: [PATCH 8/8] auto-merge: replaced review bot for merge bot (#98) When adapted the code from #88 I forgot to update the location of the credentials, so it was using review-bot which can only enable auto-merge but can not merge a ready to merge PR. Follow up to #97 --- .github/workflows/auto-merge.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml index 66325807b1..32cb12fb49 100644 --- a/.github/workflows/auto-merge.yml +++ b/.github/workflows/auto-merge.yml @@ -19,8 +19,8 @@ jobs: id: merge_token uses: tibdex/github-app-token@v1 with: - app_id: ${{ secrets.REVIEW_APP_ID }} - private_key: ${{ secrets.REVIEW_APP_KEY }} + app_id: ${{ secrets.MERGE_APP_ID }} + private_key: ${{ secrets.MERGE_APP_KEY }} - name: Set auto merge uses: paritytech/auto-merge-bot@v1.0.0 with:

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