From 59172d5fb8feea2646490618bead3b2b4fb06220 Mon Sep 17 00:00:00 2001 From: Branislav Kontur Date: Tue, 27 Feb 2024 20:18:46 +0100 Subject: [PATCH] Upgrade to latest polkadot-sdk@1.6 release (#159) Based on bump to [`polkadot-sdk@1.5.0`](https://github.com/polkadot-fellows/runtimes/pull/137). Attached result of `cargo upgrade -v --pinned --incompatible` [cargo-upgrade-version-bump.log](https://github.com/polkadot-fellows/runtimes/files/14044160/cargo-upgrade-version-bump.log) _Note: Encointer was not upgraded (because its pallet references `polkadot@1.3.0` release)._ ## ~~For reviewers~~ ~~This PR is against `polkadot-fellows`'s main to bring it to the fellows repo, but if you want to see a real diff relevant to the `polkadot-sdk@1.6.0` update please check: https://github.com/bkontur/runtimes/compare/bko-bump-to-1.5...bkontur:runtimes:bko-bump-to-1.6.~~ ## TODO - [x] fix compilation - [x] fix integration tests - [x] fix benchmarks (also try them) - `collectives-polkadot` `payout` - [ ] ~~Does not require a CHANGELOG entry~~ - [x] `warning: use of deprecated struct `staging_xcm_builder::CurrencyAdapter`: Use `FungibleAdapter` instead` - [ ] search for `TODO:(PR#159) change to FungibleAdapter` and/or wait for https://github.com/paritytech/polkadot-sdk/pull/3287 - [x] patch for `pallet-nomination-pools` migration fix https://github.com/paritytech/polkadot-sdk/pull/3093 - will be fixed here https://github.com/polkadot-fellows/runtimes/issues/188#issuecomment-1945556395 - [x] patch for `xcm-executor` fix (for 1.6.0) e.g. https://github.com/paritytech/polkadot-sdk/pull/3174 - [x] check/fix coretime stuff for Kusama/Polkadot - search for `// TODO:(PR#159)(PR#1694)` - see [comment](https://github.com/polkadot-fellows/runtimes/pull/159#issuecomment-1930163319) - fixed by https://github.com/bkontur/runtimes/pull/3 - [x] check the `MaxControllersInDeprecationBatch`https://github.com/polkadot-fellows/runtimes/pull/159/files#r1492361038 - [x] check `pallet_identity::Config` for Kusama and Polkadot https://github.com/polkadot-fellows/runtimes/pull/159/files#r1492363866 --------- Signed-off-by: Adrian Catangiu Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: Francisco Aguirre Co-authored-by: Ross Bulat Co-authored-by: Alain Brenzikofer Co-authored-by: eskimor Co-authored-by: Adrian Catangiu Co-authored-by: fellowship-merge-bot[bot] <151052383+fellowship-merge-bot[bot]@users.noreply.github.com> --- .../workflows/integration-tests-matrix.json | 8 + CHANGELOG.md | 7 +- Cargo.lock | 10418 +++++++--------- Cargo.toml | 20 +- chain-spec-generator/Cargo.toml | 34 +- .../src/system_parachains_specs.rs | 14 +- .../assets/asset-hub-kusama/Cargo.toml | 37 - .../assets/asset-hub-kusama/src/lib.rs | 107 - .../assets/asset-hub-polkadot/Cargo.toml | 35 - .../assets/asset-hub-polkadot/src/lib.rs | 107 - integration-tests/emulated/chains/Cargo.toml | 43 - .../assets/asset-hub-kusama/Cargo.toml | 26 + .../assets/asset-hub-kusama/src/genesis.rs | 71 + .../assets/asset-hub-kusama/src/lib.rs | 59 + .../assets/asset-hub-polkadot/Cargo.toml | 26 + .../assets/asset-hub-polkadot/src/genesis.rs | 68 + .../assets/asset-hub-polkadot/src/lib.rs | 57 + .../bridges/bridge-hub-kusama/Cargo.toml | 25 + .../bridges/bridge-hub-kusama/src/genesis.rs | 77 + .../bridges/bridge-hub-kusama/src/lib.rs | 51 + .../bridges/bridge-hub-polkadot/Cargo.toml | 25 + .../bridge-hub-polkadot/src/genesis.rs | 76 + .../bridges/bridge-hub-polkadot/src/lib.rs | 51 + .../collectives-polkadot/Cargo.toml | 25 + .../collectives-polkadot/src/genesis.rs | 68 + .../collectives-polkadot/src/lib.rs | 52 + .../parachains/testing/penpal/Cargo.toml | 26 + .../parachains/testing/penpal/src/genesis.rs | 71 + .../parachains/testing/penpal/src/lib.rs | 79 + .../emulated/chains/relays/kusama/Cargo.toml | 31 + .../chains/relays/kusama/src/genesis.rs | 127 + .../emulated/chains/relays/kusama/src/lib.rs | 49 + .../chains/relays/polkadot/Cargo.toml | 32 + .../chains/relays/polkadot/src/genesis.rs | 139 + .../chains/relays/polkadot/src/lib.rs | 51 + .../emulated/chains/src/genesis.rs | 650 - integration-tests/emulated/chains/src/lib.rs | 339 - integration-tests/emulated/common/Cargo.toml | 44 - .../emulated/common/src/impls.rs | 786 -- integration-tests/emulated/common/src/lib.rs | 149 - .../emulated/common/src/macros.rs | 221 - .../emulated/common/src/xcm_helpers.rs | 72 - integration-tests/emulated/helpers/Cargo.toml | 24 + integration-tests/emulated/helpers/src/lib.rs | 124 + .../kusama-polkadot-system/Cargo.toml | 22 + .../kusama-polkadot-system/src/lib.rs | 100 + .../networks/kusama-system/Cargo.toml | 19 + .../networks/kusama-system/src/lib.rs | 51 + .../networks/polkadot-system/Cargo.toml | 20 + .../networks/polkadot-system/src/lib.rs | 55 + .../tests/assets/asset-hub-kusama/Cargo.toml | 37 + .../tests/assets/asset-hub-kusama/src/lib.rs | 70 + .../assets/asset-hub-kusama/src/tests/mod.rs | 4 +- .../src/tests/reserve_transfer.rs | 109 +- .../assets/asset-hub-kusama/src/tests/send.rs | 13 +- .../src/tests/set_xcm_versions.rs | 0 .../assets/asset-hub-kusama/src/tests/swap.rs | 74 +- .../asset-hub-kusama/src/tests/teleport.rs | 98 +- .../assets/asset-hub-polkadot/Cargo.toml | 40 + .../assets/asset-hub-polkadot/src/lib.rs | 79 + .../src/tests/fellowship_treasury.rs | 131 + .../asset-hub-polkadot/src/tests/mod.rs | 6 +- .../src/tests/reserve_transfer.rs | 134 +- .../asset-hub-polkadot/src/tests/send.rs | 15 +- .../src/tests/set_xcm_versions.rs | 0 .../asset-hub-polkadot/src/tests/teleport.rs | 132 +- .../asset-hub-polkadot/src/tests/treasury.rs | 126 + .../bridges/bridge-hub-kusama/Cargo.toml | 41 + .../bridges/bridge-hub-kusama/src/lib.rs | 75 + .../src/tests/asset_transfers.rs | 171 + .../bridge-hub-kusama/src/tests/mod.rs | 114 + .../bridge-hub-kusama/src/tests/send_xcm.rs | 177 + .../bridge-hub-kusama/src/tests/teleport.rs | 30 + .../bridges/bridge-hub-polkadot/Cargo.toml | 37 + .../bridges/bridge-hub-polkadot/src/lib.rs | 71 + .../src/tests/asset_transfers.rs | 173 + .../bridge-hub-polkadot/src/tests/mod.rs | 114 + .../bridge-hub-polkadot/src/tests/send_xcm.rs | 177 + .../bridge-hub-polkadot/src/tests/teleport.rs | 30 + relay/kusama/Cargo.toml | 209 +- relay/kusama/constants/Cargo.toml | 16 +- relay/kusama/constants/src/lib.rs | 20 +- relay/kusama/src/lib.rs | 100 +- relay/kusama/src/weights/frame_system.rs | 27 + relay/kusama/src/weights/mod.rs | 2 + relay/kusama/src/weights/pallet_identity.rs | 94 + relay/kusama/src/weights/pallet_staking.rs | 20 + .../runtime_parachains_assigner_on_demand.rs | 91 + .../weights/runtime_parachains_coretime.rs | 84 + relay/kusama/src/xcm_config.rs | 17 +- relay/polkadot/Cargo.toml | 206 +- relay/polkadot/constants/Cargo.toml | 16 +- relay/polkadot/constants/src/lib.rs | 18 +- relay/polkadot/src/governance/old.rs | 190 - relay/polkadot/src/lib.rs | 20 +- relay/polkadot/src/weights/frame_system.rs | 27 + relay/polkadot/src/weights/pallet_identity.rs | 94 + relay/polkadot/src/weights/pallet_staking.rs | 20 + relay/polkadot/src/xcm_config.rs | 13 +- .../asset-hubs/asset-hub-kusama/Cargo.toml | 130 +- .../asset-hub-kusama/primitives/Cargo.toml | 8 +- .../asset-hubs/asset-hub-kusama/src/lib.rs | 108 +- .../src/weights/frame_system.rs | 27 + .../src/weights/pallet_asset_conversion.rs | 38 +- .../asset-hub-kusama/src/xcm_config.rs | 109 +- .../asset-hub-kusama/tests/tests.rs | 12 +- .../asset-hubs/asset-hub-polkadot/Cargo.toml | 124 +- .../asset-hub-polkadot/primitives/Cargo.toml | 8 +- .../asset-hubs/asset-hub-polkadot/src/lib.rs | 27 +- .../src/weights/frame_system.rs | 27 + .../asset-hub-polkadot/src/xcm_config.rs | 50 +- .../asset-hub-polkadot/tests/tests.rs | 12 +- .../bridge-hubs/bridge-hub-kusama/Cargo.toml | 136 +- .../bridge-hub-kusama/primitives/Cargo.toml | 14 +- .../bridge-hub-kusama/primitives/src/lib.rs | 6 +- .../src/bridge_to_polkadot_config.rs | 26 +- .../bridge-hubs/bridge-hub-kusama/src/lib.rs | 16 + .../src/weights/frame_system.rs | 27 + .../bridge-hub-kusama/src/xcm_config.rs | 42 +- .../bridge-hub-kusama/tests/tests.rs | 220 +- .../bridge-hub-polkadot/Cargo.toml | 136 +- .../bridge-hub-polkadot/primitives/Cargo.toml | 14 +- .../bridge-hub-polkadot/primitives/src/lib.rs | 6 +- .../src/bridge_to_kusama_config.rs | 25 +- .../bridge-hub-polkadot/src/lib.rs | 16 + .../src/weights/frame_system.rs | 27 + .../bridge-hub-polkadot/src/xcm_config.rs | 38 +- .../bridge-hub-polkadot/tests/tests.rs | 215 +- .../collectives-polkadot/Cargo.toml | 122 +- .../src/fellowship/mod.rs | 5 +- .../collectives-polkadot/src/lib.rs | 1 + .../src/weights/frame_system.rs | 27 + .../collectives-polkadot/src/xcm_config.rs | 46 +- system-parachains/constants/Cargo.toml | 10 +- system-parachains/encointer/Cargo.toml | 150 +- system-parachains/encointer/src/lib.rs | 77 +- .../src/weights/cumulus_pallet_dmp_queue.rs | 131 + .../cumulus_pallet_parachain_system.rs | 80 + .../src/weights/cumulus_pallet_xcmp_queue.rs | 135 +- .../encointer/src/weights/frame_system.rs | 95 +- .../encointer/src/weights/mod.rs | 3 + .../src/weights/pallet_message_queue.rs | 179 + system-parachains/encointer/src/xcm_config.rs | 28 +- .../gluttons/glutton-kusama/Cargo.toml | 62 +- .../gluttons/glutton-kusama/src/lib.rs | 3 +- .../src/weights/frame_system.rs | 27 + .../glutton-kusama/src/weights/mod.rs | 1 + 147 files changed, 10900 insertions(+), 10356 deletions(-) delete mode 100644 integration-tests/emulated/assets/asset-hub-kusama/Cargo.toml delete mode 100644 integration-tests/emulated/assets/asset-hub-kusama/src/lib.rs delete mode 100644 integration-tests/emulated/assets/asset-hub-polkadot/Cargo.toml delete mode 100644 integration-tests/emulated/assets/asset-hub-polkadot/src/lib.rs delete mode 100644 integration-tests/emulated/chains/Cargo.toml create mode 100644 integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/Cargo.toml create mode 100644 integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/src/genesis.rs create mode 100644 integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/src/lib.rs create mode 100644 integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/Cargo.toml create mode 100644 integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/src/genesis.rs create mode 100644 integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/src/lib.rs create mode 100644 integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/Cargo.toml create mode 100644 integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/src/genesis.rs create mode 100644 integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/src/lib.rs create mode 100644 integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/Cargo.toml create mode 100644 integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/src/genesis.rs create mode 100644 integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/src/lib.rs create mode 100644 integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/Cargo.toml create mode 100644 integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/src/genesis.rs create mode 100644 integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/src/lib.rs create mode 100644 integration-tests/emulated/chains/parachains/testing/penpal/Cargo.toml create mode 100644 integration-tests/emulated/chains/parachains/testing/penpal/src/genesis.rs create mode 100644 integration-tests/emulated/chains/parachains/testing/penpal/src/lib.rs create mode 100644 integration-tests/emulated/chains/relays/kusama/Cargo.toml create mode 100644 integration-tests/emulated/chains/relays/kusama/src/genesis.rs create mode 100644 integration-tests/emulated/chains/relays/kusama/src/lib.rs create mode 100644 integration-tests/emulated/chains/relays/polkadot/Cargo.toml create mode 100644 integration-tests/emulated/chains/relays/polkadot/src/genesis.rs create mode 100644 integration-tests/emulated/chains/relays/polkadot/src/lib.rs delete mode 100644 integration-tests/emulated/chains/src/genesis.rs delete mode 100644 integration-tests/emulated/chains/src/lib.rs delete mode 100644 integration-tests/emulated/common/Cargo.toml delete mode 100644 integration-tests/emulated/common/src/impls.rs delete mode 100644 integration-tests/emulated/common/src/lib.rs delete mode 100644 integration-tests/emulated/common/src/macros.rs delete mode 100644 integration-tests/emulated/common/src/xcm_helpers.rs create mode 100644 integration-tests/emulated/helpers/Cargo.toml create mode 100644 integration-tests/emulated/helpers/src/lib.rs create mode 100644 integration-tests/emulated/networks/kusama-polkadot-system/Cargo.toml create mode 100644 integration-tests/emulated/networks/kusama-polkadot-system/src/lib.rs create mode 100644 integration-tests/emulated/networks/kusama-system/Cargo.toml create mode 100644 integration-tests/emulated/networks/kusama-system/src/lib.rs create mode 100644 integration-tests/emulated/networks/polkadot-system/Cargo.toml create mode 100644 integration-tests/emulated/networks/polkadot-system/src/lib.rs create mode 100644 integration-tests/emulated/tests/assets/asset-hub-kusama/Cargo.toml create mode 100644 integration-tests/emulated/tests/assets/asset-hub-kusama/src/lib.rs rename integration-tests/emulated/{ => tests}/assets/asset-hub-kusama/src/tests/mod.rs (89%) rename integration-tests/emulated/{ => tests}/assets/asset-hub-kusama/src/tests/reserve_transfer.rs (82%) rename integration-tests/emulated/{ => tests}/assets/asset-hub-kusama/src/tests/send.rs (88%) rename integration-tests/emulated/{ => tests}/assets/asset-hub-kusama/src/tests/set_xcm_versions.rs (100%) rename integration-tests/emulated/{ => tests}/assets/asset-hub-kusama/src/tests/swap.rs (81%) rename integration-tests/emulated/{ => tests}/assets/asset-hub-kusama/src/tests/teleport.rs (88%) create mode 100644 integration-tests/emulated/tests/assets/asset-hub-polkadot/Cargo.toml create mode 100644 integration-tests/emulated/tests/assets/asset-hub-polkadot/src/lib.rs create mode 100644 integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/fellowship_treasury.rs rename integration-tests/emulated/{ => tests}/assets/asset-hub-polkadot/src/tests/mod.rs (85%) rename integration-tests/emulated/{ => tests}/assets/asset-hub-polkadot/src/tests/reserve_transfer.rs (81%) rename integration-tests/emulated/{ => tests}/assets/asset-hub-polkadot/src/tests/send.rs (87%) rename integration-tests/emulated/{ => tests}/assets/asset-hub-polkadot/src/tests/set_xcm_versions.rs (100%) rename integration-tests/emulated/{ => tests}/assets/asset-hub-polkadot/src/tests/teleport.rs (86%) create mode 100644 integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/treasury.rs create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-kusama/Cargo.toml create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/lib.rs create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/asset_transfers.rs create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/mod.rs create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/send_xcm.rs create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/teleport.rs create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-polkadot/Cargo.toml create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/lib.rs create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/asset_transfers.rs create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/mod.rs create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/send_xcm.rs create mode 100644 integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/teleport.rs create mode 100644 relay/kusama/src/weights/runtime_parachains_assigner_on_demand.rs create mode 100644 relay/kusama/src/weights/runtime_parachains_coretime.rs delete mode 100644 relay/polkadot/src/governance/old.rs create mode 100644 system-parachains/encointer/src/weights/cumulus_pallet_dmp_queue.rs create mode 100644 system-parachains/encointer/src/weights/cumulus_pallet_parachain_system.rs create mode 100644 system-parachains/encointer/src/weights/pallet_message_queue.rs diff --git a/.github/workflows/integration-tests-matrix.json b/.github/workflows/integration-tests-matrix.json index f5f50521a5..f16c7f0f3a 100644 --- a/.github/workflows/integration-tests-matrix.json +++ b/.github/workflows/integration-tests-matrix.json @@ -6,5 +6,13 @@ { "name": "asset-hub-polkadot", "package": "asset-hub-polkadot-integration-tests" + }, + { + "name": "bridge-hub-kusama", + "package": "bridge-hub-kusama-integration-tests" + }, + { + "name": "bridge-hub-polkadot", + "package": "bridge-hub-polkadot-integration-tests" } ] diff --git a/CHANGELOG.md b/CHANGELOG.md index fd3fc3d74f..ca331bdf94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,13 +13,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). 0022-adopt-encointer-runtime.md) ([polkadot-fellows/runtimes#80](https://github.com/polkadot-fellows/runtimes/pull/80)) - Feature for enabling debug prints in the Polkadot and Kusama runtime ([polkadot-fellows/runtimes#85](https://github.com/polkadot-fellows/runtimes/pull/85)) - Added new "Wish for Change" track ([polkadot-fellows/runtimes#184](https://github.com/polkadot-fellows/runtimes/pull/184)) +- Enable Coretime and on-demand on Kusama ([polkadot-fellows/runtimes#159](https://github.com/polkadot-fellows/runtimes/pull/159) ### Changed - Upgrade parachains runtime API from v7 to v8 in Kusama ([context](https://paritytech.github.io/polkadot-sdk/book/protocol-validator-disabling.html), [polkadot-fellows/runtimes#148](https://github.com/polkadot-fellows/runtimes/pull/148)). - Fixed the lowering of Asset Hub existential deposits. - MMR leaves generated by `pallet_mmr` point to the next-authority-set of the current block instead of the prior block [polkadot-fellows/runtimes#169](https://github.com/polkadot-fellows/runtimes/pull/169) -- Upgrade dependencies to the `polkadot-sdk@1.5.0` release ([polkadot-fellows/runtimes#137](https://github.com/polkadot-fellows/runtimes/pull/137)) - Deprecate the `xcm::body::TREASURER_INDEX` constant and use the standard `Treasury` variant from the `xcm::BodyId` type instead ([polkadot-fellows/runtimes#149](https://github.com/polkadot-fellows/runtimes/pull/149)) - Bump parachains runtime API to v9 in Kusama to enable the `node_features` function [polkadot-fellows/runtimes#194](https://github.com/polkadot-fellows/runtimes/pull/194) @@ -27,6 +27,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Removed the `SafeCallFilter` from the Relay Chain XCM config ([polkadot-fellows/runtimes#172](https://github.com/polkadot-fellows/runtimes/pull/172)). +### Based on Polkadot-SDK + +- Upgrade dependencies to the [polkadot-sdk@1.5.0](https://github.com/paritytech/polkadot-sdk/releases/tag/polkadot-v1.5.0) release ([polkadot-fellows/runtimes#137](https://github.com/polkadot-fellows/runtimes/pull/137)) +- Upgrade dependencies to the [polkadot-sdk@1.6.0](https://github.com/paritytech/polkadot-sdk/releases/tag/polkadot-v1.6.0) release ([polkadot-fellows/runtimes#159](https://github.com/polkadot-fellows/runtimes/pull/159)) + ## [1.1.1] 25.01.2024 ### Fixed diff --git a/Cargo.lock b/Cargo.lock index d23d40659d..4d0a464a0f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -110,6 +110,12 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +[[package]] +name = "always-assert" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4436e0292ab1bb631b42973c61205e704475fe8126af845c8d923c0996328127" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -136,9 +142,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.5" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" +checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" dependencies = [ "anstyle", "anstyle-parse", @@ -199,16 +205,16 @@ dependencies = [ [[package]] name = "aquamarine" -version = "0.3.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df752953c49ce90719c7bf1fc587bc8227aed04732ea0c0f85e5397d7fdbd1a1" +checksum = "074b80d14d0240b6ce94d68f059a2d26a5d77280ae142662365a21ef6e2594ef" dependencies = [ "include_dir", "itertools 0.10.5", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.48", ] [[package]] @@ -337,7 +343,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand 0.8.5", + "rand", ] [[package]] @@ -415,29 +421,45 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" +[[package]] +name = "asset-hub-kusama-emulated-chain" +version = "0.0.0" +dependencies = [ + "asset-hub-kusama-runtime", + "cumulus-primitives-core", + "emulated-integration-tests-common", + "frame-support", + "kusama-emulated-chain", + "parachains-common", + "serde_json", + "sp-core", + "sp-runtime", + "system-parachains-constants", +] + [[package]] name = "asset-hub-kusama-integration-tests" -version = "1.0.0" +version = "0.1.0" dependencies = [ "assert_matches", "asset-hub-kusama-runtime", "asset-test-utils", - "emulated-chains", - "frame-support 27.0.0", - "integration-tests-common", + "emulated-integration-tests-common", + "frame-support", + "integration-tests-helpers", + "kusama-system-emulated-network", "pallet-asset-conversion", - "pallet-assets 28.0.0", - "pallet-balances 27.0.0", - "pallet-message-queue 30.0.0", - "pallet-xcm 6.0.0", - "parachains-common 6.0.0", + "pallet-assets", + "pallet-balances", + "pallet-message-queue", + "pallet-xcm", + "parachains-common", "parity-scale-codec", - "sp-runtime 30.0.1", + "sp-runtime", "staging-kusama-runtime", - "staging-xcm 6.0.0", - "staging-xcm-executor 6.0.2", + "staging-xcm", + "staging-xcm-executor", "system-parachains-constants", - "xcm-emulator", ] [[package]] @@ -450,100 +472,121 @@ dependencies = [ "bp-asset-hub-polkadot", "bp-bridge-hub-kusama", "bp-bridge-hub-polkadot", - "cumulus-pallet-aura-ext 0.6.0", - "cumulus-pallet-dmp-queue 0.6.0", - "cumulus-pallet-parachain-system 0.6.0", + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", "cumulus-pallet-session-benchmarking", - "cumulus-pallet-xcm 0.6.0", - "cumulus-pallet-xcmp-queue 0.6.0", - "cumulus-primitives-core 0.6.0", - "cumulus-primitives-utility 0.6.2", - "frame-benchmarking 27.0.0", - "frame-executive 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "frame-system-benchmarking 27.0.0", - "frame-system-rpc-runtime-api 25.0.0", - "frame-try-runtime 0.33.0", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-utility", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", "hex-literal", "kusama-runtime-constants", "log", "pallet-asset-conversion", "pallet-asset-conversion-tx-payment", - "pallet-assets 28.0.0", - "pallet-aura 26.0.0", - "pallet-authorship 27.0.0", - "pallet-balances 27.0.0", - "pallet-collator-selection 8.0.0", - "pallet-message-queue 30.0.0", + "pallet-assets", + "pallet-aura", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "pallet-message-queue", "pallet-multisig", "pallet-nft-fractionalization", "pallet-nfts", "pallet-nfts-runtime-api", - "pallet-proxy 27.0.0", - "pallet-session 27.0.0", + "pallet-proxy", + "pallet-session", "pallet-state-trie-migration", - "pallet-timestamp 26.0.0", - "pallet-transaction-payment 27.0.0", - "pallet-transaction-payment-rpc-runtime-api 27.0.0", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", "pallet-uniques", - "pallet-utility 27.0.0", - "pallet-xcm 6.0.0", - "pallet-xcm-benchmarks 6.0.2", + "pallet-utility", + "pallet-xcm", + "pallet-xcm-benchmarks", "pallet-xcm-bridge-hub-router", - "parachains-common 6.0.0", + "parachains-common", "parachains-runtimes-test-utils", "parity-scale-codec", - "polkadot-core-primitives 6.0.0", - "polkadot-parachain-primitives 5.0.0", - "polkadot-runtime-common 6.0.0", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-runtime-common", "polkadot-runtime-constants", "primitive-types", "scale-info", - "sp-api 25.0.0", - "sp-block-builder 25.0.0", - "sp-consensus-aura 0.31.0", - "sp-core 27.0.0", - "sp-genesis-builder 0.6.0", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-offchain 25.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-transaction-pool 25.0.0", - "sp-version 28.0.0", - "sp-weights 26.0.0", - "staging-parachain-info 0.6.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", - "substrate-wasm-builder 16.0.0", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-storage", + "sp-transaction-pool", + "sp-version", + "sp-weights", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", + "system-parachains-constants", +] + +[[package]] +name = "asset-hub-polkadot-emulated-chain" +version = "0.0.0" +dependencies = [ + "asset-hub-polkadot-runtime", + "cumulus-primitives-core", + "emulated-integration-tests-common", + "frame-support", + "parachains-common", + "polkadot-emulated-chain", + "serde_json", + "sp-core", + "sp-runtime", "system-parachains-constants", ] [[package]] name = "asset-hub-polkadot-integration-tests" -version = "1.0.0" +version = "0.1.0" dependencies = [ + "assert_matches", "asset-hub-polkadot-runtime", "asset-test-utils", - "emulated-chains", - "frame-support 27.0.0", - "integration-tests-common", - "pallet-assets 28.0.0", - "pallet-balances 27.0.0", - "pallet-message-queue 30.0.0", - "pallet-xcm 6.0.0", - "parachains-common 6.0.0", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "emulated-integration-tests-common", + "frame-support", + "integration-tests-helpers", + "pallet-assets", + "pallet-balances", + "pallet-message-queue", + "pallet-treasury", + "pallet-xcm", + "parachains-common", "parity-scale-codec", "polkadot-runtime", - "sp-runtime 30.0.1", - "staging-xcm 6.0.0", - "staging-xcm-executor 6.0.2", + "polkadot-runtime-common", + "polkadot-system-emulated-network", + "sp-runtime", + "staging-xcm", + "staging-xcm-executor", "system-parachains-constants", - "xcm-emulator", ] [[package]] @@ -556,134 +599,134 @@ dependencies = [ "bp-asset-hub-polkadot", "bp-bridge-hub-kusama", "bp-bridge-hub-polkadot", - "cumulus-pallet-aura-ext 0.6.0", - "cumulus-pallet-dmp-queue 0.6.0", - "cumulus-pallet-parachain-system 0.6.0", + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", "cumulus-pallet-session-benchmarking", - "cumulus-pallet-xcm 0.6.0", - "cumulus-pallet-xcmp-queue 0.6.0", - "cumulus-primitives-core 0.6.0", - "cumulus-primitives-utility 0.6.2", - "frame-benchmarking 27.0.0", - "frame-executive 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "frame-system-benchmarking 27.0.0", - "frame-system-rpc-runtime-api 25.0.0", - "frame-try-runtime 0.33.0", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-utility", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", "hex-literal", "kusama-runtime-constants", "log", - "pallet-asset-tx-payment 27.0.0", - "pallet-assets 28.0.0", - "pallet-aura 26.0.0", - "pallet-authorship 27.0.0", - "pallet-balances 27.0.0", - "pallet-collator-selection 8.0.0", - "pallet-message-queue 30.0.0", + "pallet-asset-tx-payment", + "pallet-assets", + "pallet-aura", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "pallet-message-queue", "pallet-multisig", "pallet-nfts", "pallet-nfts-runtime-api", - "pallet-proxy 27.0.0", - "pallet-session 27.0.0", - "pallet-timestamp 26.0.0", - "pallet-transaction-payment 27.0.0", - "pallet-transaction-payment-rpc-runtime-api 27.0.0", + "pallet-proxy", + "pallet-session", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", "pallet-uniques", - "pallet-utility 27.0.0", - "pallet-xcm 6.0.0", - "pallet-xcm-benchmarks 6.0.2", + "pallet-utility", + "pallet-xcm", + "pallet-xcm-benchmarks", "pallet-xcm-bridge-hub-router", - "parachains-common 6.0.0", + "parachains-common", "parachains-runtimes-test-utils", "parity-scale-codec", - "polkadot-core-primitives 6.0.0", - "polkadot-parachain-primitives 5.0.0", - "polkadot-runtime-common 6.0.0", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-runtime-common", "polkadot-runtime-constants", "scale-info", - "sp-api 25.0.0", - "sp-block-builder 25.0.0", - "sp-consensus-aura 0.31.0", - "sp-core 27.0.0", - "sp-genesis-builder 0.6.0", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-offchain 25.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-transaction-pool 25.0.0", - "sp-version 28.0.0", - "sp-weights 26.0.0", - "staging-parachain-info 0.6.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", - "substrate-wasm-builder 16.0.0", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-storage", + "sp-transaction-pool", + "sp-version", + "sp-weights", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", "system-parachains-constants", ] [[package]] name = "asset-test-utils" -version = "6.0.1" +version = "7.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe1d074264d2de1e1a228f9226159bccf9d03ad2e53fc88d2e037804756d480" +checksum = "dcb8a236738d24ef9006c6d775540a433a9d5573d41fa96b49aa305673c3e535" dependencies = [ "assets-common", - "cumulus-pallet-parachain-system 0.6.0", - "cumulus-pallet-xcmp-queue 0.6.0", - "cumulus-primitives-core 0.6.0", - "cumulus-primitives-parachain-inherent 0.6.0", - "cumulus-test-relay-sproof-builder 0.6.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "pallet-assets 28.0.0", - "pallet-balances 27.0.0", - "pallet-collator-selection 8.0.0", - "pallet-session 27.0.0", - "pallet-xcm 6.0.0", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-test-relay-sproof-builder", + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-collator-selection", + "pallet-session", + "pallet-xcm", "pallet-xcm-bridge-hub-router", - "parachains-common 6.0.0", + "parachains-common", "parachains-runtimes-test-utils", "parity-scale-codec", - "polkadot-parachain-primitives 5.0.0", - "sp-consensus-aura 0.31.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "staging-parachain-info 0.6.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", - "substrate-wasm-builder 16.0.0", + "polkadot-parachain-primitives", + "sp-consensus-aura", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", ] [[package]] name = "assets-common" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3eefe3c913d16da32e39ad87edcbe7c6d94c34a33b7fdc08763247d69b516b5" +checksum = "c7d2d5b75d36daec8ffad11f121f581cc3aec2b7b117d8ab68f6e3ac914a5569" dependencies = [ - "cumulus-primitives-core 0.6.0", - "frame-support 27.0.0", + "cumulus-primitives-core", + "frame-support", "impl-trait-for-tuples", "log", "pallet-asset-conversion", - "pallet-asset-tx-payment 27.0.0", - "pallet-xcm 6.0.0", - "parachains-common 6.0.0", + "pallet-asset-tx-payment", + "pallet-xcm", + "parachains-common", "parity-scale-codec", "scale-info", - "sp-api 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", - "substrate-wasm-builder 16.0.0", + "sp-api", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", ] [[package]] @@ -710,7 +753,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 0.38.28", + "rustix 0.38.31", "slab", "tracing", "windows-sys 0.52.0", @@ -760,17 +803,6 @@ dependencies = [ "pin-project-lite 0.2.13", ] -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.1.0" @@ -833,9 +865,9 @@ dependencies = [ [[package]] name = "binary-merkle-tree" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2839a4cb8e9e2c1f2cadb92de7a151c68de424a2e6433ced90e4d67c2ace0b" +checksum = "4bf2706ac2641485d35ed06ebfe0b3b2c43e19a7ad8a90215580a91dd1766114" dependencies = [ "hash-db", "log", @@ -862,7 +894,7 @@ dependencies = [ "lazy_static", "lazycell", "peeking_take_while", - "prettyplease 0.2.15", + "prettyplease 0.2.16", "proc-macro2", "quote", "regex", @@ -878,7 +910,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" dependencies = [ "bitcoin_hashes", - "rand 0.8.5", + "rand", "rand_core 0.6.4", "serde", "unicode-normalization", @@ -1035,40 +1067,40 @@ dependencies = [ name = "bp-asset-hub-kusama" version = "1.0.0" dependencies = [ - "bp-xcm-bridge-hub-router 0.5.0", - "frame-support 27.0.0", + "bp-xcm-bridge-hub-router", + "frame-support", "parity-scale-codec", "scale-info", - "sp-std 13.0.0", - "staging-xcm 6.0.0", + "sp-std", + "staging-xcm", ] [[package]] name = "bp-asset-hub-polkadot" version = "1.0.0" dependencies = [ - "bp-xcm-bridge-hub-router 0.5.0", - "frame-support 27.0.0", + "bp-xcm-bridge-hub-router", + "frame-support", "parity-scale-codec", "scale-info", - "sp-std 13.0.0", - "staging-xcm 6.0.0", + "sp-std", + "staging-xcm", ] [[package]] name = "bp-bridge-hub-cumulus" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d76abad1eafb53d1377365c3004456bb61abb5795d06498323770c5647290a2" +checksum = "7a2ab8c4b01666c7b1fca260a4ef755c6de01ddac94566b13b3b974ed7966d6d" dependencies = [ "bp-messages", "bp-polkadot-core", "bp-runtime", - "frame-support 27.0.0", - "frame-system 27.0.0", - "polkadot-primitives 6.0.0", - "sp-api 25.0.0", - "sp-std 13.0.0", + "frame-support", + "frame-system", + "polkadot-primitives", + "sp-api", + "sp-std", ] [[package]] @@ -1078,12 +1110,12 @@ dependencies = [ "bp-bridge-hub-cumulus", "bp-messages", "bp-runtime", - "frame-support 27.0.0", + "frame-support", "kusama-runtime-constants", "polkadot-runtime-constants", - "sp-api 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-api", + "sp-runtime", + "sp-std", ] [[package]] @@ -1093,136 +1125,136 @@ dependencies = [ "bp-bridge-hub-cumulus", "bp-messages", "bp-runtime", - "frame-support 27.0.0", + "frame-support", "kusama-runtime-constants", "polkadot-runtime-constants", - "sp-api 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-api", + "sp-runtime", + "sp-std", ] [[package]] name = "bp-header-chain" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0135eafdf5d8ee896e875c7f403417b7e8c1a60794daa03ea8d4614ad11bc2e" +checksum = "13815b42c75e06a6f6b19521a824cb6bf1624654b041ae0b4abeb279df0e2588" dependencies = [ "bp-runtime", "finality-grandpa", - "frame-support 27.0.0", + "frame-support", "parity-scale-codec", "scale-info", "serde", - "sp-consensus-grandpa 12.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-consensus-grandpa", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "bp-kusama" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c318068ab7f4d07cf122d4227a7951be7007b70029f160885b86527d3c1d64" +checksum = "b7cf6db324f903d20b2b5e8e213488b6df6c058d3c86ca5a0fa532d1f8a02b3b" dependencies = [ "bp-header-chain", "bp-polkadot-core", "bp-runtime", - "frame-support 27.0.0", - "sp-api 25.0.0", - "sp-std 13.0.0", + "frame-support", + "sp-api", + "sp-std", ] [[package]] name = "bp-messages" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba0e3d7c760f6121f93286f4cbee7fa50c86a6b5a230b3b357bc81e5c1826d9" +checksum = "220c494acdb350a79a7268f4a73d7a6b6cd3f2138f301856a6f6c4a5c09ef926" dependencies = [ "bp-header-chain", "bp-runtime", - "frame-support 27.0.0", + "frame-support", "parity-scale-codec", "scale-info", "serde", - "sp-core 27.0.0", - "sp-std 13.0.0", + "sp-core", + "sp-std", ] [[package]] name = "bp-parachains" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b615d01bc99346daa91aea18c18bb7edfca5d29ab5730d04060753d5b59afc73" +checksum = "cf36b503d044eab3078e0f2c49087031b807b8277968ebcb22c7f2e611cf4602" dependencies = [ "bp-header-chain", "bp-polkadot-core", "bp-runtime", - "frame-support 27.0.0", + "frame-support", "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "bp-polkadot" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1af8ed56bc7dddc4a3b30ca1568cf406df77ed0b883e0c55e21917b2396460e" +checksum = "4f631c9127a07e4d4f9af9b2f92463c1b8a601f7f7cf9394a932c4373f77201c" dependencies = [ "bp-header-chain", "bp-polkadot-core", "bp-runtime", - "frame-support 27.0.0", - "sp-api 25.0.0", - "sp-std 13.0.0", + "frame-support", + "sp-api", + "sp-std", ] [[package]] name = "bp-polkadot-core" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca2fa4991db1c5bf9f8ec4c5e0e320a19e76cfe197f850d353f3abae84ae98a" +checksum = "80145cd18bd06347b5571a767112163e1da41e8b10a90bf9d2d982bf0ba5fcb7" dependencies = [ "bp-messages", "bp-runtime", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-support", + "frame-system", "parity-scale-codec", "parity-util-mem", "scale-info", "serde", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "bp-relayers" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4736fdf102aca9ff3e656905557427668e0f339d8b0702b245d354eba63c7186" +checksum = "cf10c05632fad95ba4c6c3d1b2f3a3109bde6aa8f295098351a6e5b1270ba201" dependencies = [ "bp-messages", "bp-runtime", - "frame-support 27.0.0", + "frame-support", "parity-scale-codec", "scale-info", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "bp-runtime" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "426e8c3390a33f7ebd7c009b33278c8f4c42d6be008264387efcb1dee80af96b" +checksum = "1fad9aefbc3e6cb63e0ac82a4dae9f1404416b41fb45931a4b43946cfa23c814" dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-support", + "frame-system", "hash-db", "impl-trait-for-tuples", "log", @@ -1230,20 +1262,20 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", - "sp-std 13.0.0", - "sp-trie 28.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", "trie-db", ] [[package]] name = "bp-test-utils" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382a1045b3a21ce3e9becc3bcf95a3c92519b48e405c39dfdf85f43cdf7906b9" +checksum = "9282521d9d851e93bb312e2465f72d5b2e549a70e68bf7421db4870b854011ee" dependencies = [ "bp-header-chain", "bp-parachains", @@ -1252,45 +1284,75 @@ dependencies = [ "ed25519-dalek", "finality-grandpa", "parity-scale-codec", - "sp-application-crypto 29.0.0", - "sp-consensus-grandpa 12.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-trie 28.0.0", + "sp-application-crypto", + "sp-consensus-grandpa", + "sp-core", + "sp-runtime", + "sp-std", + "sp-trie", ] [[package]] name = "bp-xcm-bridge-hub" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "118842d57deb8d54e2288595a33689fc364ffbf5877648e84940b2cf4b4dd4a6" +checksum = "6663e0179d475e30cfcf28cf597cdc8f4bb1c2c39a557b4cbe0057db0657fb67" dependencies = [ - "sp-std 13.0.0", + "sp-std", ] [[package]] name = "bp-xcm-bridge-hub-router" -version = "0.3.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be3b4fafc31f17da1b4ea403c4118e4f4f1d9a5a696729b374551d582e48633b" +checksum = "8f58cd5d7880f4bc8fc569e5bb0174302cd3f7e18a322e0fec2a4733cced35cb" dependencies = [ "parity-scale-codec", "scale-info", - "sp-core 25.0.0", - "sp-runtime 28.0.0", + "sp-core", + "sp-runtime", ] [[package]] -name = "bp-xcm-bridge-hub-router" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98f3ee360878f0cebae637b8584d9425609176ae93e10c8e05ffff544948db19" +name = "bridge-hub-kusama-emulated-chain" +version = "0.0.0" +dependencies = [ + "bridge-hub-kusama-runtime", + "cumulus-primitives-core", + "emulated-integration-tests-common", + "frame-support", + "parachains-common", + "serde_json", + "sp-core", + "sp-runtime", + "system-parachains-constants", +] + +[[package]] +name = "bridge-hub-kusama-integration-tests" +version = "0.1.0" dependencies = [ + "bp-messages", + "bridge-hub-kusama-runtime", + "cumulus-pallet-xcmp-queue", + "emulated-integration-tests-common", + "frame-support", + "hex", + "hex-literal", + "integration-tests-helpers", + "kusama-polkadot-system-emulated-network", + "kusama-system-emulated-network", + "pallet-assets", + "pallet-balances", + "pallet-bridge-messages", + "pallet-message-queue", + "pallet-xcm", + "parachains-common", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-runtime 30.0.1", + "sp-runtime", + "staging-xcm", + "staging-xcm-executor", ] [[package]] @@ -1311,74 +1373,112 @@ dependencies = [ "bp-runtime", "bridge-hub-test-utils", "bridge-runtime-common", - "cumulus-pallet-aura-ext 0.6.0", - "cumulus-pallet-dmp-queue 0.6.0", - "cumulus-pallet-parachain-system 0.6.0", + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", "cumulus-pallet-session-benchmarking", - "cumulus-pallet-xcm 0.6.0", - "cumulus-pallet-xcmp-queue 0.6.0", - "cumulus-primitives-core 0.6.0", - "cumulus-primitives-utility 0.6.2", - "frame-benchmarking 27.0.0", - "frame-executive 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "frame-system-benchmarking 27.0.0", - "frame-system-rpc-runtime-api 25.0.0", - "frame-try-runtime 0.33.0", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-utility", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", "hex-literal", "kusama-runtime-constants", "log", - "pallet-aura 26.0.0", - "pallet-authorship 27.0.0", - "pallet-balances 27.0.0", + "pallet-aura", + "pallet-authorship", + "pallet-balances", "pallet-bridge-grandpa", "pallet-bridge-messages", "pallet-bridge-parachains", "pallet-bridge-relayers", - "pallet-collator-selection 8.0.0", - "pallet-message-queue 30.0.0", + "pallet-collator-selection", + "pallet-message-queue", "pallet-multisig", - "pallet-session 27.0.0", - "pallet-timestamp 26.0.0", - "pallet-transaction-payment 27.0.0", - "pallet-transaction-payment-rpc-runtime-api 27.0.0", - "pallet-utility 27.0.0", - "pallet-xcm 6.0.0", - "pallet-xcm-benchmarks 6.0.2", + "pallet-session", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-utility", + "pallet-xcm", + "pallet-xcm-benchmarks", "pallet-xcm-bridge-hub", - "parachains-common 6.0.0", + "parachains-common", "parity-scale-codec", - "polkadot-core-primitives 6.0.0", - "polkadot-parachain-primitives 5.0.0", - "polkadot-runtime-common 6.0.0", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-runtime-common", "polkadot-runtime-constants", "scale-info", "serde", - "sp-api 25.0.0", - "sp-block-builder 25.0.0", - "sp-consensus-aura 0.31.0", - "sp-core 27.0.0", - "sp-genesis-builder 0.6.0", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-keyring 30.0.0", - "sp-offchain 25.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-transaction-pool 25.0.0", - "sp-version 28.0.0", - "staging-parachain-info 0.6.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-storage", + "sp-transaction-pool", + "sp-version", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", "static_assertions", - "substrate-wasm-builder 16.0.0", + "substrate-wasm-builder", + "system-parachains-constants", +] + +[[package]] +name = "bridge-hub-polkadot-emulated-chain" +version = "0.0.0" +dependencies = [ + "bridge-hub-polkadot-runtime", + "cumulus-primitives-core", + "emulated-integration-tests-common", + "frame-support", + "parachains-common", + "serde_json", + "sp-core", + "sp-runtime", "system-parachains-constants", ] +[[package]] +name = "bridge-hub-polkadot-integration-tests" +version = "0.1.0" +dependencies = [ + "bp-messages", + "bridge-hub-polkadot-runtime", + "cumulus-pallet-xcmp-queue", + "emulated-integration-tests-common", + "frame-support", + "integration-tests-helpers", + "kusama-polkadot-system-emulated-network", + "pallet-assets", + "pallet-balances", + "pallet-bridge-messages", + "pallet-message-queue", + "pallet-xcm", + "parachains-common", + "parity-scale-codec", + "sp-runtime", + "staging-xcm", + "staging-xcm-executor", +] + [[package]] name = "bridge-hub-polkadot-runtime" version = "1.0.0" @@ -1397,79 +1497,79 @@ dependencies = [ "bp-runtime", "bridge-hub-test-utils", "bridge-runtime-common", - "cumulus-pallet-aura-ext 0.6.0", - "cumulus-pallet-dmp-queue 0.6.0", - "cumulus-pallet-parachain-system 0.6.0", + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", "cumulus-pallet-session-benchmarking", - "cumulus-pallet-xcm 0.6.0", - "cumulus-pallet-xcmp-queue 0.6.0", - "cumulus-primitives-core 0.6.0", - "cumulus-primitives-utility 0.6.2", - "frame-benchmarking 27.0.0", - "frame-executive 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "frame-system-benchmarking 27.0.0", - "frame-system-rpc-runtime-api 25.0.0", - "frame-try-runtime 0.33.0", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-utility", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", "hex-literal", "kusama-runtime-constants", "log", - "pallet-aura 26.0.0", - "pallet-authorship 27.0.0", - "pallet-balances 27.0.0", + "pallet-aura", + "pallet-authorship", + "pallet-balances", "pallet-bridge-grandpa", "pallet-bridge-messages", "pallet-bridge-parachains", "pallet-bridge-relayers", - "pallet-collator-selection 8.0.0", - "pallet-message-queue 30.0.0", + "pallet-collator-selection", + "pallet-message-queue", "pallet-multisig", - "pallet-session 27.0.0", - "pallet-timestamp 26.0.0", - "pallet-transaction-payment 27.0.0", - "pallet-transaction-payment-rpc-runtime-api 27.0.0", - "pallet-utility 27.0.0", - "pallet-xcm 6.0.0", - "pallet-xcm-benchmarks 6.0.2", + "pallet-session", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-utility", + "pallet-xcm", + "pallet-xcm-benchmarks", "pallet-xcm-bridge-hub", - "parachains-common 6.0.0", + "parachains-common", "parity-scale-codec", - "polkadot-core-primitives 6.0.0", - "polkadot-parachain-primitives 5.0.0", - "polkadot-runtime-common 6.0.0", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-runtime-common", "polkadot-runtime-constants", "scale-info", "serde", - "sp-api 25.0.0", - "sp-block-builder 25.0.0", - "sp-consensus-aura 0.31.0", - "sp-core 27.0.0", - "sp-genesis-builder 0.6.0", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-keyring 30.0.0", - "sp-offchain 25.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-transaction-pool 25.0.0", - "sp-version 28.0.0", - "staging-parachain-info 0.6.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-storage", + "sp-transaction-pool", + "sp-version", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", "static_assertions", - "substrate-wasm-builder 16.0.0", + "substrate-wasm-builder", "system-parachains-constants", ] [[package]] name = "bridge-hub-test-utils" -version = "0.6.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a97535e02f211094d454027af30288a1e5fb43075344354430cefc418e3266e" +checksum = "ee0335912c914ac71c5e772234a21294a61e928c1f57d265bde004b21b27240e" dependencies = [ "asset-test-utils", "bp-header-chain", @@ -1480,42 +1580,44 @@ dependencies = [ "bp-runtime", "bp-test-utils", "bridge-runtime-common", - "cumulus-pallet-parachain-system 0.6.0", - "cumulus-pallet-xcmp-queue 0.6.0", - "frame-benchmarking 27.0.0", - "frame-executive 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "impl-trait-for-tuples", "log", - "pallet-balances 27.0.0", + "pallet-balances", "pallet-bridge-grandpa", "pallet-bridge-messages", "pallet-bridge-parachains", "pallet-bridge-relayers", - "pallet-collator-selection 8.0.0", - "pallet-session 27.0.0", - "pallet-utility 27.0.0", - "pallet-xcm 6.0.0", - "pallet-xcm-benchmarks 6.0.2", - "parachains-common 6.0.0", + "pallet-collator-selection", + "pallet-session", + "pallet-utility", + "pallet-xcm", + "pallet-xcm-benchmarks", + "parachains-common", "parachains-runtimes-test-utils", "parity-scale-codec", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-keyring 30.0.0", - "sp-runtime 30.0.1", - "sp-tracing 15.0.0", - "staging-parachain-info 0.6.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", + "sp-core", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-std", + "sp-tracing", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] name = "bridge-runtime-common" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb844adfe3e4d866e77f535d2d6e19bbc0b733c8cb1f317f42ebe798cd14309e" +checksum = "ad84d21ab89055d3d2d85064a04f51c0993f1885379b0d4ef2c0dff26b0fbfb1" dependencies = [ "bp-header-chain", "bp-messages", @@ -1524,27 +1626,27 @@ dependencies = [ "bp-relayers", "bp-runtime", "bp-xcm-bridge-hub", - "bp-xcm-bridge-hub-router 0.5.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "bp-xcm-bridge-hub-router", + "frame-support", + "frame-system", "hash-db", "log", "pallet-bridge-grandpa", "pallet-bridge-messages", "pallet-bridge-parachains", "pallet-bridge-relayers", - "pallet-transaction-payment 27.0.0", - "pallet-utility 27.0.0", - "parity-scale-codec", - "scale-info", - "sp-api 25.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-trie 28.0.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", + "pallet-transaction-payment", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-trie", + "staging-xcm", + "staging-xcm-builder", "static_assertions", ] @@ -1755,30 +1857,28 @@ dependencies = [ "bridge-hub-polkadot-runtime", "clap", "collectives-polkadot-runtime", - "cumulus-primitives-core 0.6.0", + "cumulus-primitives-core", "encointer-kusama-runtime", "glutton-kusama-runtime", - "hex-literal", "kusama-runtime-constants", "pallet-im-online", - "pallet-staking 27.0.0", - "parachains-common 6.0.0", - "polkadot-primitives 6.0.0", + "pallet-staking", + "parachains-common", + "polkadot-primitives", "polkadot-runtime", "polkadot-runtime-constants", - "polkadot-runtime-parachains 6.0.0", - "sc-chain-spec 26.0.0", + "polkadot-runtime-parachains", + "sc-chain-spec", "sc-consensus-grandpa", "serde", "serde_json", - "sp-authority-discovery 25.0.0", - "sp-consensus-babe 0.31.0", + "sp-authority-discovery", + "sp-consensus-babe", "sp-consensus-beefy", - "sp-core 25.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", + "sp-core", + "sp-runtime", "staging-kusama-runtime", - "staging-xcm 6.0.0", + "staging-xcm", ] [[package]] @@ -1839,9 +1939,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" dependencies = [ "glob", "libc", @@ -1850,9 +1950,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.14" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e92c5c1a78c62968ec57dbc2440366a2d6e5a23faf829970ff1585dc6b18e2" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" dependencies = [ "clap_builder", "clap_derive", @@ -1860,9 +1960,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.14" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4323769dc8a61e2c39ad7dc26f6f2800524691a44d74fe3d1071a5c24db6370" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" dependencies = [ "anstream", "anstyle", @@ -1891,13 +1991,12 @@ checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "coarsetime" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71367d3385c716342014ad17e3d19f7788ae514885a1f4c24f500260fb365e1a" +checksum = "13b3839cf01bb7960114be3ccf2340f541b6d0c81f8690b007b2b39f750f7e5d" dependencies = [ "libc", - "once_cell", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasix", "wasm-bindgen", ] @@ -1911,76 +2010,91 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "collectives-polkadot-emulated-chain" +version = "0.0.0" +dependencies = [ + "collectives-polkadot-runtime", + "cumulus-primitives-core", + "emulated-integration-tests-common", + "frame-support", + "parachains-common", + "serde_json", + "sp-core", + "sp-runtime", + "system-parachains-constants", +] + [[package]] name = "collectives-polkadot-runtime" version = "1.0.0" dependencies = [ - "cumulus-pallet-aura-ext 0.6.0", - "cumulus-pallet-dmp-queue 0.6.0", - "cumulus-pallet-parachain-system 0.6.0", + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", "cumulus-pallet-session-benchmarking", - "cumulus-pallet-xcm 0.6.0", - "cumulus-pallet-xcmp-queue 0.6.0", - "cumulus-primitives-core 0.6.0", - "cumulus-primitives-utility 0.6.2", - "frame-benchmarking 27.0.0", - "frame-executive 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "frame-system-benchmarking 27.0.0", - "frame-system-rpc-runtime-api 25.0.0", - "frame-try-runtime 0.33.0", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-utility", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", "hex-literal", "log", "pallet-alliance", - "pallet-asset-rate 6.0.0", - "pallet-aura 26.0.0", - "pallet-authorship 27.0.0", - "pallet-balances 27.0.0", - "pallet-collator-selection 8.0.0", - "pallet-collective 27.0.0", + "pallet-asset-rate", + "pallet-aura", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "pallet-collective", "pallet-core-fellowship", - "pallet-message-queue 30.0.0", + "pallet-message-queue", "pallet-multisig", "pallet-preimage", - "pallet-proxy 27.0.0", + "pallet-proxy", "pallet-ranked-collective", "pallet-referenda", "pallet-salary", - "pallet-scheduler 28.0.0", - "pallet-session 27.0.0", - "pallet-timestamp 26.0.0", - "pallet-transaction-payment 27.0.0", - "pallet-transaction-payment-rpc-runtime-api 27.0.0", - "pallet-treasury 26.0.0", - "pallet-utility 27.0.0", - "pallet-xcm 6.0.0", - "parachains-common 6.0.0", - "parity-scale-codec", - "polkadot-core-primitives 6.0.0", - "polkadot-parachain-primitives 5.0.0", - "polkadot-runtime-common 6.0.0", + "pallet-scheduler", + "pallet-session", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-treasury", + "pallet-utility", + "pallet-xcm", + "parachains-common", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-runtime-common", "polkadot-runtime-constants", "scale-info", - "sp-api 25.0.0", - "sp-arithmetic 22.0.0", - "sp-block-builder 25.0.0", - "sp-consensus-aura 0.31.0", - "sp-core 27.0.0", - "sp-genesis-builder 0.6.0", - "sp-inherents 25.0.0", - "sp-offchain 25.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-transaction-pool 25.0.0", - "sp-version 28.0.0", - "staging-parachain-info 0.6.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", - "substrate-wasm-builder 16.0.0", + "sp-api", + "sp-arithmetic", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-storage", + "sp-transaction-pool", + "sp-version", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", "system-parachains-constants", ] @@ -1990,6 +2104,17 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +[[package]] +name = "comfy-table" +version = "7.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c64043d6c7b7a4c58e39e7efccfdea7b93d885a795d0c054a69dbbf4dd52686" +dependencies = [ + "strum 0.25.0", + "strum_macros 0.25.3", + "unicode-width", +] + [[package]] name = "common-path" version = "1.0.0" @@ -2096,6 +2221,16 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "cpu-time" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9e393a7668fe1fad3075085b86c781883000b4ede868f43627b34a87c8b7ded" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "cpufeatures" version = "0.2.11" @@ -2248,11 +2383,10 @@ dependencies = [ [[package]] name = "crossbeam-queue" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" dependencies = [ - "cfg-if", "crossbeam-utils", ] @@ -2332,165 +2466,84 @@ dependencies = [ [[package]] name = "cumulus-pallet-aura-ext" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071cdddd31e2b0d47a74249675de828857f61eb5f6afa36cfcf63ea6ee2b60f2" -dependencies = [ - "cumulus-pallet-parachain-system 0.4.1", - "frame-support 25.0.0", - "frame-system 25.0.0", - "pallet-aura 24.0.0", - "pallet-timestamp 24.0.0", - "parity-scale-codec", - "scale-info", - "sp-application-crypto 27.0.0", - "sp-consensus-aura 0.29.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "cumulus-pallet-aura-ext" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0976731a7fdc209cf677e660dcabd60bd101c9d326a9b105bb4dfc2f588591d" -dependencies = [ - "cumulus-pallet-parachain-system 0.6.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "pallet-aura 26.0.0", - "pallet-timestamp 26.0.0", - "parity-scale-codec", - "scale-info", - "sp-application-crypto 29.0.0", - "sp-consensus-aura 0.31.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "cumulus-pallet-dmp-queue" -version = "0.4.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1cb9d43cdfeedea19b4f6b8386e5b6264a97938b29f5c711a84e9dc7105ff7" +checksum = "8100a3283be2c46905345141e9a063f092949c6630a1fb70993b04c97f309e55" dependencies = [ - "cumulus-primitives-core 0.4.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "log", + "cumulus-pallet-parachain-system", + "frame-support", + "frame-system", + "pallet-aura", + "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "staging-xcm 4.0.0", + "sp-application-crypto", + "sp-consensus-aura", + "sp-runtime", + "sp-std", ] [[package]] name = "cumulus-pallet-dmp-queue" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e14d2bfe35cd9fd86302c575b42d7f2e8510b6cdbb1e0730ad5b31da9caa60" -dependencies = [ - "cumulus-primitives-core 0.6.0", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "staging-xcm 6.0.0", -] - -[[package]] -name = "cumulus-pallet-parachain-system" -version = "0.4.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20d2280051998fcf113f04d25d4b39f27b449570b6350fdfb7e92541cb0aae7" +checksum = "f461956a4a85c053657fe64e73852940c8a52e7d8fc20ccb4f91688e73f0820b" dependencies = [ - "bytes", - "cumulus-pallet-parachain-system-proc-macro 0.4.0", - "cumulus-primitives-core 0.4.0", - "cumulus-primitives-parachain-inherent 0.4.0", - "environmental", - "frame-support 25.0.0", - "frame-system 25.0.0", - "impl-trait-for-tuples", + "cumulus-primitives-core", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", - "polkadot-parachain-primitives 3.0.0", - "polkadot-runtime-parachains 4.0.0", "scale-info", - "sp-core 25.0.0", - "sp-externalities 0.23.0", - "sp-inherents 23.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-state-machine 0.32.0", - "sp-std 12.0.0", - "sp-trie 26.0.0", - "sp-version 26.0.0", - "staging-xcm 4.0.0", - "trie-db", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", ] [[package]] name = "cumulus-pallet-parachain-system" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0980004d033c8e160148a6ae82423a7fff02455f7d6bccba2b16e87ef4a53b76" +checksum = "4a1a0e6800ea92447eab2c9170cc77d21987fd0e61ed79a6e1318f7b127b3e2c" dependencies = [ "bytes", - "cumulus-pallet-parachain-system-proc-macro 0.5.0", - "cumulus-primitives-core 0.6.0", - "cumulus-primitives-parachain-inherent 0.6.0", + "cumulus-pallet-parachain-system-proc-macro", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", "cumulus-primitives-proof-size-hostfunction", "environmental", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "impl-trait-for-tuples", "log", - "pallet-message-queue 30.0.0", - "parity-scale-codec", - "polkadot-parachain-primitives 5.0.0", - "polkadot-runtime-parachains 6.0.0", - "scale-info", - "sp-core 27.0.0", - "sp-externalities 0.24.0", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", - "sp-std 13.0.0", - "sp-trie 28.0.0", - "sp-version 28.0.0", - "staging-xcm 6.0.0", + "pallet-message-queue", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-runtime-parachains", + "scale-info", + "sp-core", + "sp-externalities", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", + "sp-version", + "staging-xcm", "trie-db", ] [[package]] name = "cumulus-pallet-parachain-system-proc-macro" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84baea20d10325b2501b6fa06d4a7902a43d6a6c62c71b5309e75c3ad8ae1441" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 2.0.48", -] - -[[package]] -name = "cumulus-pallet-parachain-system-proc-macro" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc86fdc17ef11f9adcd7565a4238107a3538426990fa4ffed8e6dc1d40582a2" +checksum = "befbaf3a1ce23ac8476481484fef5f4d500cbd15b4dad6380ce1d28134b0c1f7" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.48", @@ -2498,347 +2551,167 @@ dependencies = [ [[package]] name = "cumulus-pallet-session-benchmarking" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fec7368454572169916c9b0621bc1da04774260e32486fd1d2f58dbb21a7b85d" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "pallet-session 27.0.0", - "parity-scale-codec", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "cumulus-pallet-xcm" -version = "0.4.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff03e14a0f5847bdee67a673ee945d3acd5c1d7238d46993208dcbfb774e27f" +checksum = "b90c6389bd56472581a2b9510c97e6fe869fe6c73c58d3d533ee3c74b92cce14" dependencies = [ - "cumulus-primitives-core 0.4.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-session", "parity-scale-codec", - "scale-info", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "staging-xcm 4.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "cumulus-pallet-xcm" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04efb075677bd1c54934294049f7264ef58dec22d18614c59ea76c99275b0ba7" +checksum = "d9e5e8dd3f9c98620e32cbb1783725a3e75a3147cb351b43de37663824311cd9" dependencies = [ - "cumulus-primitives-core 0.6.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "cumulus-primitives-core", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "staging-xcm 6.0.0", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", ] [[package]] name = "cumulus-pallet-xcmp-queue" -version = "0.4.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6af9816dd6564149729ba133c2c984c88fb15c4a2cb66f57be06b9147744e51" +checksum = "439cdba45813623e7f45374f160f3356d27fb1aaca2536dd7f60ef2a7e9b30cd" dependencies = [ - "bp-xcm-bridge-hub-router 0.3.0", - "cumulus-primitives-core 0.4.0", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "bounded-collections", + "bp-xcm-bridge-hub-router", + "cumulus-primitives-core", + "frame-benchmarking", + "frame-support", + "frame-system", "log", + "pallet-message-queue", "parity-scale-codec", - "polkadot-runtime-common 4.0.0", - "polkadot-runtime-parachains 4.0.0", - "rand_chacha 0.3.1", + "polkadot-runtime-common", + "polkadot-runtime-parachains", "scale-info", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "staging-xcm 4.0.0", - "staging-xcm-executor 4.0.2", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-executor", ] [[package]] -name = "cumulus-pallet-xcmp-queue" -version = "0.6.0" +name = "cumulus-primitives-core" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eda7f0f2644ef02fa18054a483650dfd7085caad7137221cbc05747c13ad7d7" +checksum = "036b64697b5fd04c8039ccf15b9891104c496afb6c418c2cea1234d4898d0a28" dependencies = [ - "bounded-collections", - "bp-xcm-bridge-hub-router 0.5.0", - "cumulus-primitives-core 0.6.0", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "pallet-message-queue 30.0.0", "parity-scale-codec", - "polkadot-runtime-common 6.0.0", - "polkadot-runtime-parachains 6.0.0", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "staging-xcm 6.0.0", - "staging-xcm-executor 6.0.2", + "sp-api", + "sp-runtime", + "sp-std", + "sp-trie", + "staging-xcm", ] [[package]] -name = "cumulus-primitives-core" -version = "0.4.0" +name = "cumulus-primitives-parachain-inherent" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40f62add2352287be4cb58b0017a91f61d953e2c6d2777c20d93185558196e1" +checksum = "9cb6fe06744fed6e84682c48816181ad63652003570c2135c425481440fcd2f2" dependencies = [ + "async-trait", + "cumulus-primitives-core", "parity-scale-codec", - "polkadot-core-primitives 4.0.0", - "polkadot-parachain-primitives 3.0.0", - "polkadot-primitives 4.0.0", "scale-info", - "sp-api 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-trie 26.0.0", - "staging-xcm 4.0.0", + "sp-core", + "sp-inherents", + "sp-std", + "sp-trie", ] [[package]] -name = "cumulus-primitives-core" -version = "0.6.0" +name = "cumulus-primitives-proof-size-hostfunction" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475c9928839e4ff8c168dc1eb4e31dc53e3b6380b85b5cdc1965da96026ec025" +checksum = "a132e17ac2c79436bc5004b0d56cb35ca65b966434f14e5ff8a9bc1afcfca5a4" dependencies = [ - "parity-scale-codec", - "polkadot-core-primitives 6.0.0", - "polkadot-parachain-primitives 5.0.0", - "polkadot-primitives 6.0.0", - "scale-info", - "sp-api 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-trie 28.0.0", - "staging-xcm 6.0.0", + "sp-externalities", + "sp-runtime-interface", + "sp-trie", ] [[package]] -name = "cumulus-primitives-parachain-inherent" -version = "0.4.0" +name = "cumulus-primitives-utility" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0b1e0e6dcf393dbf05b31122a8c4739acf407a96ec8fd707886f36ee95c355" +checksum = "d2ece52eeb7e87faea0d374356571ebc13f279df3bf79a1dc8a0db6c49d6ba23" dependencies = [ - "async-trait", - "cumulus-primitives-core 0.4.0", - "cumulus-relay-chain-interface 0.4.0", - "cumulus-test-relay-sproof-builder 0.4.0", + "cumulus-primitives-core", + "frame-support", + "log", + "pallet-xcm-benchmarks", "parity-scale-codec", - "sc-client-api 25.0.0", - "scale-info", - "sp-api 23.0.0", - "sp-core 25.0.0", - "sp-inherents 23.0.0", - "sp-runtime 28.0.0", - "sp-state-machine 0.32.0", - "sp-std 12.0.0", - "sp-storage 17.0.0", - "sp-trie 26.0.0", - "tracing", + "polkadot-runtime-common", + "polkadot-runtime-parachains", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] -name = "cumulus-primitives-parachain-inherent" -version = "0.6.0" +name = "cumulus-test-relay-sproof-builder" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe636dcb0964587379b82af2856d1c174267e477a64229e878aed4150a813089" +checksum = "c0ec12490a40b00427119fd1e12a6d1fe0652d2df3e992dea1bc4f331effed12" dependencies = [ - "async-trait", - "cumulus-primitives-core 0.6.0", - "cumulus-relay-chain-interface 0.6.0", - "cumulus-test-relay-sproof-builder 0.6.0", + "cumulus-primitives-core", "parity-scale-codec", - "sc-client-api 27.0.0", - "scale-info", - "sp-api 25.0.0", - "sp-core 27.0.0", - "sp-inherents 25.0.0", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-trie 28.0.0", - "tracing", + "polkadot-primitives", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", ] [[package]] -name = "cumulus-primitives-proof-size-hostfunction" -version = "0.1.0" +name = "curve25519-dalek" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d8668bb256b32b5fd5a1226811b3d763bd463f3200effee810c7a6f77feef30" +checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" dependencies = [ - "sp-externalities 0.24.0", - "sp-runtime-interface 23.0.0", - "sp-trie 28.0.0", + "byteorder", + "digest 0.8.1", + "rand_core 0.5.1", + "subtle 2.5.0", + "zeroize", ] [[package]] -name = "cumulus-primitives-timestamp" -version = "0.4.0" +name = "curve25519-dalek" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771ef4a34f7bcd4e8782f73d8dbd0df031b1c1c82e54b06af69f88df2cddc316" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" dependencies = [ - "cumulus-primitives-core 0.4.0", - "futures", - "parity-scale-codec", - "sp-inherents 23.0.0", - "sp-std 12.0.0", - "sp-timestamp 23.0.0", -] - -[[package]] -name = "cumulus-primitives-utility" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d0ad7498cb748684f0f309ee037e9a29a91fb3ec5b5276b5fc723c3716bdd8a" -dependencies = [ - "cumulus-primitives-core 0.4.0", - "frame-support 25.0.0", - "log", - "pallet-xcm-benchmarks 4.0.1", - "parity-scale-codec", - "polkadot-runtime-common 4.0.0", - "polkadot-runtime-parachains 4.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "staging-xcm 4.0.0", - "staging-xcm-builder 4.0.1", - "staging-xcm-executor 4.0.2", -] - -[[package]] -name = "cumulus-primitives-utility" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a19c875e3fa4ac39aaf43117c7ff5230eb5b2de90d75aa782a4d81b07435bb3" -dependencies = [ - "cumulus-primitives-core 0.6.0", - "frame-support 27.0.0", - "log", - "pallet-xcm-benchmarks 6.0.2", - "parity-scale-codec", - "polkadot-runtime-common 6.0.0", - "polkadot-runtime-parachains 6.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", -] - -[[package]] -name = "cumulus-relay-chain-interface" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af081ef8885042e7ae96e9d1cf32ec6f0616fe4cb78f0325ed7c5accded687fb" -dependencies = [ - "async-trait", - "cumulus-primitives-core 0.4.0", - "futures", - "jsonrpsee-core", - "parity-scale-codec", - "polkadot-overseer 4.0.0", - "sc-client-api 25.0.0", - "sp-api 23.0.0", - "sp-blockchain 25.0.0", - "sp-state-machine 0.32.0", - "thiserror", -] - -[[package]] -name = "cumulus-relay-chain-interface" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a42b67dc400ff5f9dc07aedb8602f5deac2f2ac2290fd5529e4eb1345a3202a" -dependencies = [ - "async-trait", - "cumulus-primitives-core 0.6.0", - "futures", - "jsonrpsee-core", - "parity-scale-codec", - "polkadot-overseer 6.0.0", - "sc-client-api 27.0.0", - "sp-api 25.0.0", - "sp-blockchain 27.0.0", - "sp-state-machine 0.34.0", - "thiserror", -] - -[[package]] -name = "cumulus-test-relay-sproof-builder" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b921a9cb6758faa1c739f135fd87aa1e10a4e86a1c1db3119b396a62287cf2" -dependencies = [ - "cumulus-primitives-core 0.4.0", - "parity-scale-codec", - "polkadot-primitives 4.0.0", - "sp-runtime 28.0.0", - "sp-state-machine 0.32.0", - "sp-std 12.0.0", - "sp-trie 26.0.0", -] - -[[package]] -name = "cumulus-test-relay-sproof-builder" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c66e3ae7ba8cc8ac846c421bb01869fa516c9a1d490fb711d94a793dc5ab178" -dependencies = [ - "cumulus-primitives-core 0.6.0", - "parity-scale-codec", - "polkadot-primitives 6.0.0", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", - "sp-std 13.0.0", - "sp-trie 28.0.0", -] - -[[package]] -name = "curve25519-dalek" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" -dependencies = [ - "byteorder", - "digest 0.8.1", - "rand_core 0.5.1", - "subtle 2.5.0", - "zeroize", -] - -[[package]] -name = "curve25519-dalek" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle 2.5.0", - "zeroize", + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle 2.5.0", + "zeroize", ] [[package]] @@ -3241,33 +3114,38 @@ dependencies = [ ] [[package]] -name = "emulated-chains" -version = "1.0.0" +name = "emulated-integration-tests-common" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff5b923201b2f914787a3d3156826f03879502c09dd8da4471731d0cacef9089" dependencies = [ - "asset-hub-kusama-runtime", - "asset-hub-polkadot-runtime", - "bridge-hub-kusama-runtime", - "bridge-hub-polkadot-runtime", - "collectives-polkadot-runtime", - "frame-support 27.0.0", - "integration-tests-common", - "kusama-runtime-constants", + "asset-test-utils", + "bp-messages", + "bridge-runtime-common", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "frame-support", + "pallet-assets", + "pallet-balances", + "pallet-bridge-messages", "pallet-im-online", - "pallet-staking 27.0.0", - "parachains-common 6.0.0", - "penpal-runtime", - "polkadot-parachain-primitives 5.0.0", - "polkadot-primitives 6.0.0", - "polkadot-runtime", - "polkadot-runtime-constants", - "polkadot-runtime-parachains 6.0.0", - "sp-authority-discovery 25.0.0", - "sp-consensus-babe 0.31.0", + "pallet-message-queue", + "pallet-xcm", + "parachains-common", + "parity-scale-codec", + "paste", + "polkadot-primitives", + "polkadot-runtime-parachains", + "polkadot-service", + "sc-consensus-grandpa", + "serde_json", + "sp-authority-discovery", + "sp-consensus-babe", "sp-consensus-beefy", - "sp-consensus-grandpa 12.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "staging-kusama-runtime", + "sp-core", + "sp-runtime", + "staging-xcm", "xcm-emulator", ] @@ -3279,75 +3157,74 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encointer-balances-tx-payment" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "574a256785661fe0353b6664a896b03eaac804e01de3b7146a1e68bea23823c6" +checksum = "407d7faa8fd1d242602012e6b6d51a8edc99321ac5a20425efa64c7ec432f868" dependencies = [ "encointer-primitives", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-support", + "frame-system", "log", - "pallet-asset-tx-payment 25.0.0", + "pallet-asset-tx-payment", "pallet-encointer-balances", "pallet-encointer-ceremonies", - "pallet-transaction-payment 25.0.0", - "sp-runtime 28.0.0", + "pallet-transaction-payment", + "sp-runtime", ] [[package]] name = "encointer-balances-tx-payment-rpc-runtime-api" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc19094858c453d1622fee74cd5ac4aeafc5afcc1695c442361528604f3a3cd" +checksum = "4eb7b235a2ecbec5b913ee30c4372a9bb01c27cbca1368662ad9629df788a1be" dependencies = [ "encointer-primitives", - "frame-support 25.0.0", + "frame-support", "parity-scale-codec", "scale-info", - "sp-api 23.0.0", - "sp-std 12.0.0", + "sp-api", + "sp-std", ] [[package]] name = "encointer-ceremonies-assignment" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0e915dfb90455b04de86863d5e8c28727b88a5e79035d1592f5340befc2d31a" +checksum = "3f5e534e5d624f17a34ae5c6cf61ddbfd68b6a2d3900d855760ebb551f9d4fdd" dependencies = [ "encointer-primitives", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "encointer-kusama-runtime" version = "1.0.0" dependencies = [ - "cumulus-pallet-aura-ext 0.4.0", - "cumulus-pallet-dmp-queue 0.4.0", - "cumulus-pallet-parachain-system 0.4.1", - "cumulus-pallet-xcm 0.4.0", - "cumulus-pallet-xcmp-queue 0.4.0", - "cumulus-primitives-core 0.4.0", - "cumulus-primitives-timestamp", - "cumulus-primitives-utility 0.4.1", + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-utility", "encointer-balances-tx-payment", "encointer-balances-tx-payment-rpc-runtime-api", "encointer-primitives", - "frame-benchmarking 25.0.0", - "frame-executive 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "frame-system-benchmarking 25.0.0", - "frame-system-rpc-runtime-api 23.0.0", - "frame-try-runtime 0.31.0", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", "hex-literal", "kusama-runtime-constants", "log", - "pallet-asset-tx-payment 25.0.0", - "pallet-aura 24.0.0", - "pallet-balances 25.0.0", - "pallet-collective 25.0.0", + "pallet-asset-tx-payment", + "pallet-aura", + "pallet-balances", + "pallet-collective", "pallet-encointer-balances", "pallet-encointer-bazaar", "pallet-encointer-bazaar-rpc-runtime-api", @@ -3359,75 +3236,76 @@ dependencies = [ "pallet-encointer-reputation-commitments", "pallet-encointer-scheduler", "pallet-insecure-randomness-collective-flip", - "pallet-membership 25.0.0", - "pallet-proxy 25.0.0", - "pallet-scheduler 26.0.0", - "pallet-timestamp 24.0.0", - "pallet-transaction-payment 25.0.0", - "pallet-transaction-payment-rpc-runtime-api 25.0.0", - "pallet-treasury 24.0.0", - "pallet-utility 25.0.0", - "pallet-xcm 4.0.0", - "parachains-common 4.0.0", - "parity-scale-codec", - "polkadot-core-primitives 4.0.0", - "polkadot-parachain-primitives 3.0.0", - "polkadot-primitives 4.0.0", - "polkadot-runtime-common 4.0.0", + "pallet-membership", + "pallet-message-queue", + "pallet-proxy", + "pallet-scheduler", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-treasury", + "pallet-utility", + "pallet-xcm", + "parachains-common", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-runtime-common", "scale-info", "smallvec", - "sp-api 23.0.0", - "sp-block-builder 23.0.0", - "sp-consensus-aura 0.29.0", - "sp-core 25.0.0", - "sp-genesis-builder 0.4.0", - "sp-inherents 23.0.0", - "sp-offchain 23.0.0", - "sp-runtime 28.0.0", - "sp-session 24.0.0", - "sp-std 12.0.0", - "sp-transaction-pool 23.0.0", - "sp-version 26.0.0", - "staging-parachain-info 0.4.0", - "staging-xcm 4.0.0", - "staging-xcm-builder 4.0.1", - "staging-xcm-executor 4.0.2", - "substrate-wasm-builder 14.0.0", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-transaction-pool", + "sp-version", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", "system-parachains-constants", ] [[package]] name = "encointer-meetup-validation" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bef78af8c5897da00bb93d7d77573ad7d4e6169f3daac2a36ba450760611c94" +checksum = "01d27e886abe0f6fb716dcf7ee0b4e91ae624d96dce6e87c1d5bada9a4bf76d3" dependencies = [ "encointer-primitives", "parity-scale-codec", "scale-info", "serde", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "encointer-primitives" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306cf10a0e74f42080c064fdc1d827b5c3fd6e0c40ee5f4e36bb2f5ee76c51dc" +checksum = "9db298e46082c2f9692d6e8d5365fde266ac09ed18dd1c72c109281acad1b2fb" dependencies = [ "bs58 0.4.0", "crc", "ep-core", - "frame-support 25.0.0", + "frame-support", "log", "parity-scale-codec", "scale-info", "serde", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", "substrate-geohash", ] @@ -3495,19 +3373,19 @@ checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" [[package]] name = "ep-core" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfa4c3869cba69547a6cf0b80faf892822cee70027f86439ea7d145286fc6ba" +checksum = "84eac7952f21e9d5a28e5e3074a2ed1e7d26bbc08da770e43ec538ba2ee0d124" dependencies = [ "array-bytes 6.2.2", "impl-serde", "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 20.0.0", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-arithmetic", + "sp-core", + "sp-runtime", + "sp-std", "substrate-fixed", ] @@ -3658,15 +3536,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "fdlimit" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1b" -dependencies = [ - "libc", -] - [[package]] name = "fdlimit" version = "0.3.0" @@ -3738,7 +3607,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand 0.8.5", + "rand", "rustc-hex", "static_assertions", ] @@ -3777,9 +3646,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" -version = "11.0.0" +version = "12.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c2d0a4310dcf0e5cce78e35e60dc2fda80ef61c8f8fc382e685dfc24fcf5db9" +checksum = "e93d3f0315c2eccf23453609e0ab92fe7c6ad1ca8129bcaf80b9a08c8d7fc52b" dependencies = [ "parity-scale-codec", ] @@ -3801,63 +3670,86 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" -version = "25.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dd4946d63eab00d899f08a7e74e965cc6785c2298efaea6a2752905f4810407" +checksum = "2b16f7f853f64ec6fbc981b3e224cc3400752662da140ec62c160b5b859bab68" dependencies = [ - "frame-support 25.0.0", - "frame-support-procedural 20.0.0", - "frame-system 25.0.0", + "frame-support", + "frame-support-procedural", + "frame-system", "linregress", "log", "parity-scale-codec", "paste", "scale-info", "serde", - "sp-api 23.0.0", - "sp-application-crypto 27.0.0", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-runtime-interface 21.0.0", - "sp-std 12.0.0", - "sp-storage 17.0.0", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-runtime-interface", + "sp-std", + "sp-storage", "static_assertions", ] [[package]] -name = "frame-benchmarking" -version = "27.0.0" +name = "frame-benchmarking-cli" +version = "32.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f99ad86e915f3a57b4a1b56a296e9e3f5bb5aec44189e6d85a773398c6ce614b" +checksum = "69fec078a73892cb5a7146671cf76e3abf23201fefe431a013399ac2e5b03b54" dependencies = [ - "frame-support 27.0.0", - "frame-support-procedural 22.0.0", - "frame-system 27.0.0", - "linregress", + "Inflector", + "array-bytes 6.2.2", + "chrono", + "clap", + "comfy-table", + "frame-benchmarking", + "frame-support", + "frame-system", + "gethostname", + "handlebars", + "itertools 0.10.5", + "lazy_static", + "linked-hash-map", "log", "parity-scale-codec", - "paste", - "scale-info", + "rand", + "rand_pcg", + "sc-block-builder", + "sc-cli", + "sc-client-api", + "sc-client-db", + "sc-executor", + "sc-service", + "sc-sysinfo", "serde", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-runtime-interface 23.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "static_assertions", + "serde_json", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-database", + "sp-externalities", + "sp-inherents", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-state-machine", + "sp-storage", + "sp-trie", + "sp-wasm-interface", + "thiserror", + "thousands", ] [[package]] name = "frame-election-provider-solution-type" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03911cf3675af64252a6de7b4f383eafa80d5ea5830184e7a0739aeb0b95272d" +checksum = "c5c3bff645e46577c69c272733c53fa3a77d1ee6e40dfb66157bc94b0740b8fc" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.48", @@ -3865,76 +3757,39 @@ dependencies = [ [[package]] name = "frame-election-provider-support" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebad507fb038db2f7ce982d30bd9828a59785c9a4780348d59cd6cceaee80d1a" -dependencies = [ - "frame-election-provider-solution-type", - "frame-support 25.0.0", - "frame-system 25.0.0", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 20.0.0", - "sp-core 25.0.0", - "sp-npos-elections 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "frame-election-provider-support" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26d8dabf04394bb59a44e41664984289c2b5b28d565193fac49695db846f167" +checksum = "c596d956c4eedaffbe2fd6f75562e63e3e60001222bc6f8cc45fa77f3ea51791" dependencies = [ "frame-election-provider-solution-type", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-npos-elections 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-arithmetic", + "sp-core", + "sp-npos-elections", + "sp-runtime", + "sp-std", ] [[package]] name = "frame-executive" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dda2c20ea3267ee20c9a5482f320236510c4ade6aec1dd930cb57dc5651c64f" -dependencies = [ - "frame-support 25.0.0", - "frame-system 25.0.0", - "frame-try-runtime 0.31.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-tracing 14.0.0", -] - -[[package]] -name = "frame-executive" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da9af388ae194ff65aba5c7cd7afe9fdaea6a021a06417efc6e4aebd996e7a3" +checksum = "5a5247e367912fe95f813e96542921ab4edf671860fd557625b55f40155abf90" dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", - "frame-try-runtime 0.33.0", + "frame-support", + "frame-system", + "frame-try-runtime", "log", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-tracing 15.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-tracing", ] [[package]] @@ -3951,9 +3806,9 @@ dependencies = [ [[package]] name = "frame-remote-externalities" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fce6dcbe54a14394ba471f8f1c38a9b7b9bbccda9c23ef04de74403527ef4bf" +checksum = "26ac8b505de5aa10e9c9548a3642fc708fc47fe3843b840992e6e6ab139f39d0" dependencies = [ "futures", "indicatif", @@ -3961,10 +3816,10 @@ dependencies = [ "log", "parity-scale-codec", "serde", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-state-machine", "spinners", "substrate-rpc-client", "tokio", @@ -3973,50 +3828,9 @@ dependencies = [ [[package]] name = "frame-support" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "023504bbdd0e8d1ebe3d9d289b009337cdb9a24c5e74615ffd7b188aa1664c2d" -dependencies = [ - "aquamarine", - "bitflags 1.3.2", - "docify", - "environmental", - "frame-metadata", - "frame-support-procedural 20.0.0", - "impl-trait-for-tuples", - "k256", - "log", - "macro_magic", - "parity-scale-codec", - "paste", - "scale-info", - "serde", - "serde_json", - "smallvec", - "sp-api 23.0.0", - "sp-arithmetic 20.0.0", - "sp-core 25.0.0", - "sp-core-hashing-proc-macro 13.0.0", - "sp-debug-derive 12.0.0", - "sp-genesis-builder 0.4.0", - "sp-inherents 23.0.0", - "sp-io 27.0.0", - "sp-metadata-ir 0.4.0", - "sp-runtime 28.0.0", - "sp-staking 23.0.0", - "sp-state-machine 0.32.0", - "sp-std 12.0.0", - "sp-tracing 14.0.0", - "sp-weights 24.0.0", - "static_assertions", - "tt-call", -] - -[[package]] -name = "frame-support" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "654f8001ac929387a460ed2b1dd9ef70af81221ef2b3519bf4c91ecef88f68e4" +checksum = "e48b00bb3e82c465a435b08827e7abe5144345bc1a998848bdd7ce72fa203bb5" dependencies = [ "aquamarine", "array-bytes 6.2.2", @@ -4024,7 +3838,7 @@ dependencies = [ "docify", "environmental", "frame-metadata", - "frame-support-procedural 22.0.0", + "frame-support-procedural", "impl-trait-for-tuples", "k256", "log", @@ -4035,50 +3849,30 @@ dependencies = [ "serde", "serde_json", "smallvec", - "sp-api 25.0.0", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-core-hashing-proc-macro 14.0.0", - "sp-debug-derive 13.0.0", - "sp-genesis-builder 0.6.0", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-metadata-ir 0.5.0", - "sp-runtime 30.0.1", - "sp-staking 25.0.0", - "sp-state-machine 0.34.0", - "sp-std 13.0.0", - "sp-tracing 15.0.0", - "sp-weights 26.0.0", + "sp-api", + "sp-arithmetic", + "sp-core", + "sp-core-hashing-proc-macro", + "sp-debug-derive", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-metadata-ir", + "sp-runtime", + "sp-staking", + "sp-state-machine", + "sp-std", + "sp-tracing", + "sp-weights", "static_assertions", "tt-call", ] [[package]] name = "frame-support-procedural" -version = "20.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6bc383298353ff2790ac1a301262c21ac196dbc26ef67a2213c46524a06dd1" -dependencies = [ - "Inflector", - "cfg-expr", - "derive-syn-parse", - "expander 2.0.0", - "frame-support-procedural-tools", - "itertools 0.10.5", - "macro_magic", - "proc-macro-warning", - "proc-macro2", - "quote", - "sp-core-hashing 13.0.0", - "syn 2.0.48", -] - -[[package]] -name = "frame-support-procedural" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef13774b6423deb98878e75cd7d22e3bd1ed60c216b000d000a8549de402fcd2" +checksum = "0be717139a0da9b31b559356db73f6ce48876d331e833ebdc32de3a9ad581e15" dependencies = [ "Inflector", "cfg-expr", @@ -4090,18 +3884,18 @@ dependencies = [ "proc-macro-warning", "proc-macro2", "quote", - "sp-core-hashing 14.0.0", + "sp-core-hashing", "syn 2.0.48", ] [[package]] name = "frame-support-procedural-tools" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ac1266522a8c9a2d2d26d205ec3028b88582d5f3cd5cbc75d0ec8271d197b7" +checksum = "3363df38464c47a73eb521a4f648bfcc7537a82d70347ef8af3f73b6d019e910" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate 1.3.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.48", @@ -4109,9 +3903,9 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c078db2242ea7265faa486004e7fd8daaf1a577cfcac0070ce55d926922883" +checksum = "68672b9ec6fe72d259d3879dc212c5e42e977588cdac830c76f54d9f492aeb58" dependencies = [ "proc-macro2", "quote", @@ -4120,130 +3914,71 @@ dependencies = [ [[package]] name = "frame-system" -version = "25.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e316407c45a5093c833966a906301aa0dcbd05048061cd9cde2548d017bfd9" +checksum = "983b3215c8d97775b90dc1db88f858c46401682bd2fb8572bdd102ff8c2ca2a6" dependencies = [ "cfg-if", - "frame-support 25.0.0", + "docify", + "frame-support", "log", "parity-scale-codec", "scale-info", "serde", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-version 26.0.0", - "sp-weights 24.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-version", + "sp-weights", ] [[package]] -name = "frame-system" -version = "27.0.0" +name = "frame-system-benchmarking" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93a51b0fc4d1f35cc4e56c356738ce0e3d1f8483062d9243653b91fd2d20b083" +checksum = "f78a2fe203b01b596156b2514e0b890b4a628dbdb50925316e755aa623b6fe53" dependencies = [ - "cfg-if", - "docify", - "frame-support 27.0.0", - "log", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "serde", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-version 28.0.0", - "sp-weights 26.0.0", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] -name = "frame-system-benchmarking" -version = "25.0.0" +name = "frame-system-rpc-runtime-api" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b1388055d29a7a1c4d41b1623d3fcbc9d7f31d17abe04500b270b26901d926" +checksum = "28d183819ea7df1d89acd61fe423ae6bec24a29d87db5c18182339a751c0837a" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", "parity-scale-codec", - "scale-info", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-api", ] [[package]] -name = "frame-system-benchmarking" -version = "27.0.0" +name = "frame-try-runtime" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "398ca6909232d9e4a2686e862e49bd68314f1ee9796ba0ec29d55300523bf89f" +checksum = "c5b3dab79d14d2e8f6329d7e5cb49f2bdb81b9ef3019b1c405d94defa137a353" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-support", "parity-scale-codec", - "scale-info", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-api", + "sp-runtime", + "sp-std", ] [[package]] -name = "frame-system-rpc-runtime-api" -version = "23.0.0" +name = "fs-err" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17572a34fd866ad6cab6977a2c30b38645e0a499b3486de00ae9103f7002d6d3" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" dependencies = [ - "parity-scale-codec", - "sp-api 23.0.0", -] - -[[package]] -name = "frame-system-rpc-runtime-api" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ce3dd1fb4ac9a390ebac1744bbb368fcf457a3fda0df2d788c535a3ef5819e1" -dependencies = [ - "parity-scale-codec", - "sp-api 25.0.0", -] - -[[package]] -name = "frame-try-runtime" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f082e770275f9b46ddf46b09bc7a993f84db691c39d9e4d038ac07443cb17a18" -dependencies = [ - "frame-support 25.0.0", - "parity-scale-codec", - "sp-api 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "frame-try-runtime" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5edad06e1918b138964e0fee7d7b6d248e7d23e7946f868b165723564ba01b09" -dependencies = [ - "frame-support 27.0.0", - "parity-scale-codec", - "sp-api 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "fs-err" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" -dependencies = [ - "autocfg", + "autocfg", ] [[package]] @@ -4408,6 +4143,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "getrandom" version = "0.1.16" @@ -4430,6 +4175,16 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "getrandom_or_panic" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" +dependencies = [ + "rand", + "rand_core 0.6.4", +] + [[package]] name = "ghash" version = "0.5.0" @@ -4480,39 +4235,39 @@ dependencies = [ name = "glutton-kusama-runtime" version = "1.0.0" dependencies = [ - "cumulus-pallet-parachain-system 0.6.0", - "cumulus-pallet-xcm 0.6.0", - "cumulus-primitives-core 0.6.0", - "frame-benchmarking 27.0.0", - "frame-executive 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "frame-system-benchmarking 27.0.0", - "frame-system-rpc-runtime-api 25.0.0", - "frame-try-runtime 0.33.0", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcm", + "cumulus-primitives-core", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", "pallet-glutton", - "pallet-message-queue 30.0.0", + "pallet-message-queue", "pallet-sudo", - "parachains-common 6.0.0", - "parity-scale-codec", - "scale-info", - "sp-api 25.0.0", - "sp-block-builder 25.0.0", - "sp-core 27.0.0", - "sp-genesis-builder 0.6.0", - "sp-inherents 25.0.0", - "sp-offchain 25.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-transaction-pool 25.0.0", - "sp-version 28.0.0", - "staging-parachain-info 0.6.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", - "substrate-wasm-builder 16.0.0", + "parachains-common", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-block-builder", + "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-storage", + "sp-transaction-pool", + "sp-version", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", "system-parachains-constants", ] @@ -4546,6 +4301,20 @@ dependencies = [ "tracing", ] +[[package]] +name = "handlebars" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225" +dependencies = [ + "log", + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "hash-db" version = "0.16.0" @@ -4604,15 +4373,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.3.3" @@ -4996,35 +4756,16 @@ dependencies = [ ] [[package]] -name = "integration-tests-common" -version = "1.0.0" +name = "integration-tests-helpers" +version = "0.0.1" dependencies = [ "asset-test-utils", - "bp-messages", - "bridge-runtime-common", - "cumulus-pallet-dmp-queue 0.6.0", - "cumulus-pallet-parachain-system 0.6.0", - "cumulus-pallet-xcmp-queue 0.6.0", - "cumulus-primitives-core 0.6.0", - "frame-support 27.0.0", - "pallet-assets 28.0.0", - "pallet-balances 27.0.0", - "pallet-bridge-messages", - "pallet-im-online", - "pallet-message-queue 30.0.0", - "pallet-xcm 6.0.0", - "parachains-common 6.0.0", - "parity-scale-codec", + "cumulus-pallet-xcmp-queue", + "pallet-balances", + "pallet-message-queue", + "pallet-xcm", "paste", - "polkadot-primitives 6.0.0", - "polkadot-runtime-parachains 6.0.0", - "sp-authority-discovery 25.0.0", - "sp-consensus-babe 0.31.0", - "sp-consensus-beefy", - "sp-consensus-grandpa 12.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "staging-xcm 6.0.0", + "staging-xcm", "xcm-emulator", ] @@ -5034,7 +4775,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.3", + "hermit-abi", "libc", "windows-sys 0.48.0", ] @@ -5069,11 +4810,20 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.3", - "rustix 0.38.28", + "hermit-abi", + "rustix 0.38.31", "windows-sys 0.48.0", ] +[[package]] +name = "is_executable" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9acdc6d67b75e626ad644734e8bc6df893d9cd2a834129065d3dd6158ea9c8" +dependencies = [ + "winapi", +] + [[package]] name = "itertools" version = "0.10.5" @@ -5170,7 +4920,7 @@ dependencies = [ "hyper", "jsonrpsee-types", "parking_lot 0.12.1", - "rand 0.8.5", + "rand", "rustc-hash", "serde", "serde_json", @@ -5288,18 +5038,62 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c33070833c9ee02266356de0c43f723152bd38bd96ddf52c82b3af10c9138b28" +[[package]] +name = "kusama-emulated-chain" +version = "1.0.0" +dependencies = [ + "emulated-integration-tests-common", + "kusama-runtime-constants", + "pallet-im-online", + "parachains-common", + "polkadot-primitives", + "sc-consensus-grandpa", + "serde_json", + "sp-authority-discovery", + "sp-consensus-babe", + "sp-consensus-beefy", + "sp-core", + "sp-runtime", + "staging-kusama-runtime", +] + +[[package]] +name = "kusama-polkadot-system-emulated-network" +version = "0.1.0" +dependencies = [ + "asset-hub-kusama-emulated-chain", + "asset-hub-polkadot-emulated-chain", + "bridge-hub-kusama-emulated-chain", + "bridge-hub-polkadot-emulated-chain", + "emulated-integration-tests-common", + "kusama-emulated-chain", + "penpal-emulated-chain", + "polkadot-emulated-chain", +] + [[package]] name = "kusama-runtime-constants" version = "1.0.0" dependencies = [ - "frame-support 27.0.0", - "polkadot-primitives 6.0.0", - "polkadot-runtime-common 6.0.0", + "frame-support", + "polkadot-primitives", + "polkadot-runtime-common", "smallvec", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-weights 26.0.0", - "staging-xcm 6.0.0", + "sp-core", + "sp-runtime", + "sp-weights", + "staging-xcm-builder", +] + +[[package]] +name = "kusama-system-emulated-network" +version = "0.1.0" +dependencies = [ + "asset-hub-kusama-emulated-chain", + "bridge-hub-kusama-emulated-chain", + "emulated-integration-tests-common", + "kusama-emulated-chain", + "penpal-emulated-chain", ] [[package]] @@ -5335,6 +5129,17 @@ dependencies = [ "smallvec", ] +[[package]] +name = "landlock" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1530c5b973eeed4ac216af7e24baf5737645a6272e361f1fb95710678b67d9cc" +dependencies = [ + "enumflags2", + "libc", + "thiserror", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -5355,12 +5160,12 @@ checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -5446,7 +5251,7 @@ dependencies = [ "parking_lot 0.12.1", "pin-project", "quick-protobuf", - "rand 0.8.5", + "rand", "rw-stream-sink", "smallvec", "thiserror", @@ -5502,7 +5307,7 @@ dependencies = [ "multiaddr", "multihash 0.17.0", "quick-protobuf", - "rand 0.8.5", + "rand", "sha2 0.10.8", "thiserror", "zeroize", @@ -5527,7 +5332,7 @@ dependencies = [ "libp2p-swarm", "log", "quick-protobuf", - "rand 0.8.5", + "rand", "sha2 0.10.8", "smallvec", "thiserror", @@ -5549,7 +5354,7 @@ dependencies = [ "libp2p-identity", "libp2p-swarm", "log", - "rand 0.8.5", + "rand", "smallvec", "socket2 0.4.10", "tokio", @@ -5585,7 +5390,7 @@ dependencies = [ "log", "once_cell", "quick-protobuf", - "rand 0.8.5", + "rand", "sha2 0.10.8", "snow", "static_assertions", @@ -5607,7 +5412,7 @@ dependencies = [ "libp2p-core", "libp2p-swarm", "log", - "rand 0.8.5", + "rand", "void", ] @@ -5627,7 +5432,7 @@ dependencies = [ "log", "parking_lot 0.12.1", "quinn-proto", - "rand 0.8.5", + "rand", "rustls 0.20.9", "thiserror", "tokio", @@ -5645,7 +5450,7 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm", - "rand 0.8.5", + "rand", "smallvec", ] @@ -5664,7 +5469,7 @@ dependencies = [ "libp2p-identity", "libp2p-swarm-derive", "log", - "rand 0.8.5", + "rand", "smallvec", "tokio", "void", @@ -5801,7 +5606,7 @@ dependencies = [ "libsecp256k1-core", "libsecp256k1-gen-ecmult", "libsecp256k1-gen-genmult", - "rand 0.8.5", + "rand", "serde", "sha2 0.9.9", "typenum", @@ -6073,7 +5878,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.38.28", + "rustix 0.38.31", ] [[package]] @@ -6115,6 +5920,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + [[package]] name = "mick-jaeger" version = "0.1.8" @@ -6122,7 +5939,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532" dependencies = [ "futures", - "rand 0.8.5", + "rand", "thrift", ] @@ -6169,7 +5986,7 @@ dependencies = [ "lioness", "log", "parking_lot 0.12.1", - "rand 0.8.5", + "rand", "rand_chacha 0.3.1", "rand_distr", "subtle 2.5.0", @@ -6177,6 +5994,43 @@ dependencies = [ "zeroize", ] +[[package]] +name = "mmr-gadget" +version = "29.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d0ba6676a84f182dabd7c3ec2c92f0e882fe4e4179ddf76f02ac132e6eb0ab" +dependencies = [ + "futures", + "log", + "parity-scale-codec", + "sc-client-api", + "sc-offchain", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-consensus-beefy", + "sp-core", + "sp-mmr-primitives", + "sp-runtime", +] + +[[package]] +name = "mmr-rpc" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19066d17147f6819ec25f5f6fc3b9fca2008ae745ac7fa2d55ddb1d207119eae" +dependencies = [ + "anyhow", + "jsonrpsee", + "parity-scale-codec", + "serde", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-mmr-primitives", + "sp-runtime", +] + [[package]] name = "mockall" version = "0.11.4" @@ -6382,11 +6236,11 @@ dependencies = [ [[package]] name = "names" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d66043b25d4a6cccb23619d10c19c25304b355a7dccd4a8e11423dd2382146" +checksum = "7bddcd3bf5144b6392de80e04c347cd7fab2508f6df16a85fc496ecd5cec39bc" dependencies = [ - "rand 0.8.5", + "rand", ] [[package]] @@ -6541,6 +6395,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg", + "num-bigint", "num-integer", "num-traits", ] @@ -6561,7 +6416,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.3", + "hermit-abi", "libc", ] @@ -6633,9 +6488,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchestra" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46d78e1deb2a8d54fc1f063a544130db4da31dfe4d5d3b493186424910222a76" +checksum = "2356622ffdfe72362a45a1e5e87bb113b8327e596e39b91f11f0ef4395c8da79" dependencies = [ "async-trait", "dyn-clonable", @@ -6643,16 +6498,16 @@ dependencies = [ "futures-timer", "orchestra-proc-macro", "pin-project", - "prioritized-metered-channel", + "prioritized-metered-channel 0.6.1", "thiserror", "tracing", ] [[package]] name = "orchestra-proc-macro" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d035b1f968d91a826f2e34a9d6d02cb2af5aa7ca39ebd27922d850ab4b2dd2c6" +checksum = "eedb646674596266dc9bb2b5c7eea7c36b32ecc7777eba0d510196972d72c4fd" dependencies = [ "expander 2.0.0", "indexmap 2.1.0", @@ -6675,1680 +6530,1305 @@ dependencies = [ [[package]] name = "pallet-alliance" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf8ceda912ff13d75e4144724daec0b0829ccf7a518b672e91d027f431d3d327" +checksum = "40fbbd9263e776fbb907283928363c82857a97b3c78120ce15a9ea06ece6570a" dependencies = [ "array-bytes 6.2.2", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-collective 27.0.0", + "pallet-collective", "pallet-identity", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-core-hashing 14.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-core-hashing", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-asset-conversion" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4b91839d5d00be65483a80964eb9c6f60e59bfcc3dbafc2899c46b0465ebecb" +checksum = "aa2139677a59351fbd8513ddd92be4a7443d7d92f8f6897b2bbc78f55d1c6b8a" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-api 25.0.0", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-api", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-asset-conversion-tx-payment" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80810624ea3a3bab34568a45c7abca5777d60ed6312e271d04893ee5e69e002e" +checksum = "95388ffba6e39a34d9e95db0d7f776f36225fac387f3edbcc33856aa2df7913a" dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-support", + "frame-system", "pallet-asset-conversion", - "pallet-transaction-payment 27.0.0", + "pallet-transaction-payment", "parity-scale-codec", "scale-info", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-asset-rate" -version = "4.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740aebbcfefe8528f56ff8a339f810520a28df3ec159d016ef719aaa9f131af4" +checksum = "1e6f4917bc6c9ed6864813bbb828e94c63e1878a21af89d25dd0ff7da742f53e" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-asset-rate" -version = "6.0.0" +name = "pallet-asset-tx-payment" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "094849e7310c9ad5d7dabf20ec8792c61812af32d4cc96b4319b973d320863fd" +checksum = "e967664d86219ca9f7d33504e8d914225cdb92e9e793d35edaab1fd2574f162f" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-transaction-payment", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-asset-tx-payment" -version = "25.0.0" +name = "pallet-assets" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028e30633114612160fc4e7add46504790abb3780db79eae1efae98c034dca0b" +checksum = "aca79db2bc70c269170893604d8a56d0f32d52c75a23a3d887b6b4df132366b7" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "pallet-transaction-payment 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", "parity-scale-codec", "scale-info", - "serde", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-asset-tx-payment" +name = "pallet-aura" version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c3855550f4440a6e7ed47b23945473d708bb76e6a3c41f1a132514e0ed91349" +checksum = "10c6ecf016520a6883df14b2f1d469d98166377eba4b299af7b76eee0130e3a6" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "pallet-transaction-payment 27.0.0", + "frame-support", + "frame-system", + "log", + "pallet-timestamp", "parity-scale-codec", "scale-info", - "serde", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-application-crypto", + "sp-consensus-aura", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-assets" -version = "26.0.0" +name = "pallet-authority-discovery" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b91035c82dc9e64eaf52f3f6a39f4674bcb56333553882d6ff5d12500a9182" +checksum = "b9224b0a0bb4fa721d51f56947c73d4189710691b4cb40e7f7a8abf59795759a" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "log", + "frame-support", + "frame-system", + "pallet-session", "parity-scale-codec", "scale-info", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-application-crypto", + "sp-authority-discovery", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-assets" +name = "pallet-authorship" version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0394a32537f67d6f2d0b5642be44bcd2e3ffd44ba458ea4b756dd6e9168cd90" +checksum = "817b0420f9c14bd9bfbaf9e2f769a7e8124ab4fe3da0d07c80485c0901947ab8" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", + "frame-support", + "frame-system", + "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-aura" -version = "24.0.0" +name = "pallet-babe" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04fbef67cf62445b7fd8e68241e6b71d9fb8c77abb3d52259eebf525a4cd5586" +checksum = "4ba445228a941062d7c4d6295810a359df7757d6182c36ddb824f8c3bf350380" dependencies = [ - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-timestamp 24.0.0", + "pallet-authorship", + "pallet-session", + "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-application-crypto 27.0.0", - "sp-consensus-aura 0.29.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-application-crypto", + "sp-consensus-babe", + "sp-core", + "sp-io", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", ] [[package]] -name = "pallet-aura" -version = "26.0.0" +name = "pallet-bags-list" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "796c9823f84c4fc3b92b170ef9339bad67f9376a16d8df943331b72809dade39" +checksum = "00b0d7b6922a6bed960591efb49da6637312c034337faf4c85d8b35f2e2c611a" dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", + "aquamarine", + "docify", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", "log", - "pallet-timestamp 26.0.0", + "pallet-balances", "parity-scale-codec", "scale-info", - "sp-application-crypto 29.0.0", - "sp-consensus-aura 0.31.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-tracing", ] [[package]] -name = "pallet-authority-discovery" -version = "25.0.0" +name = "pallet-balances" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda272a66bbf1602579efcede67606ac43cda6d462ad551c527d8cadc871813d" +checksum = "8406b5616e468d80972b6365f3cd8211d0dbf4d107b379fac85fddcfdf0b5562" dependencies = [ - "frame-support 25.0.0", - "frame-system 25.0.0", - "pallet-session 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", "parity-scale-codec", "scale-info", - "sp-application-crypto 27.0.0", - "sp-authority-discovery 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-authority-discovery" -version = "27.0.0" +name = "pallet-beefy" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "361a82bd3370cef45db42171bb335c124ce19d577d6b3af22b3956d57aec631f" +checksum = "03f71d32d9681e9d78102dad00377629cac24b4bf43f6371c0dc7e5b25981eb4" dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", - "pallet-session 27.0.0", + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", "parity-scale-codec", "scale-info", - "sp-application-crypto 29.0.0", - "sp-authority-discovery 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "serde", + "sp-consensus-beefy", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", ] [[package]] -name = "pallet-authorship" -version = "25.0.0" +name = "pallet-beefy-mmr" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d38eab59f7d15fe43c81fc3cd92f4c1f895ca6d0efb74fc2a6d6d7d3d34d413" +checksum = "d8b8eaa5c053d9cbf20faa397f21b80b9b5bafbe428890b0171fd1bba16f52ce" dependencies = [ - "frame-support 25.0.0", - "frame-system 25.0.0", - "impl-trait-for-tuples", + "array-bytes 6.2.2", + "binary-merkle-tree", + "frame-support", + "frame-system", + "log", + "pallet-beefy", + "pallet-mmr", + "pallet-session", "parity-scale-codec", "scale-info", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "serde", + "sp-api", + "sp-consensus-beefy", + "sp-core", + "sp-io", + "sp-runtime", + "sp-state-machine", + "sp-std", ] [[package]] -name = "pallet-authorship" +name = "pallet-bounties" version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37359c9f33c8f660126390b42281c0c1c6736ff2f7e1f1361299234f43fd3de8" +checksum = "b5d421e3228bc4e8170d817d657aa87761b77ee4675a9e16328e1ca070cb4c41" dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", - "impl-trait-for-tuples", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-treasury", "parity-scale-codec", "scale-info", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-babe" -version = "25.0.0" +name = "pallet-bridge-grandpa" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b12430ca4b79b27231acb1ff3f99d33d6503fbeba40bfc8380e42d59b6d52b0" +checksum = "f6023fc7f2ed561589721f64fbdf9368737eae1b7b712d4b75e4c2b3d0d4a6f6" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "bp-header-chain", + "bp-runtime", + "bp-test-utils", + "finality-grandpa", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-authorship 25.0.0", - "pallet-session 25.0.0", - "pallet-timestamp 24.0.0", "parity-scale-codec", "scale-info", - "sp-application-crypto 27.0.0", - "sp-consensus-babe 0.29.0", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-session 24.0.0", - "sp-staking 23.0.0", - "sp-std 12.0.0", + "sp-consensus-grandpa", + "sp-runtime", + "sp-std", + "sp-trie", ] [[package]] -name = "pallet-babe" -version = "27.0.0" +name = "pallet-bridge-messages" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ef6815dbc5ceb3f036e7b4037a6a37876df8817cec07637f269f79879430d2" +checksum = "ca7058e4135266d55f71251996857832656eaa392a0b526f396ff06666921cc6" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "bp-messages", + "bp-runtime", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-authorship 27.0.0", - "pallet-session 27.0.0", - "pallet-timestamp 26.0.0", + "num-traits", "parity-scale-codec", "scale-info", - "sp-application-crypto 29.0.0", - "sp-consensus-babe 0.31.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-staking 25.0.0", - "sp-std 13.0.0", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-bags-list" -version = "26.0.0" +name = "pallet-bridge-parachains" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46d48f60b6da70607edc794cc05e72ae70ea532ec539094ffcc4c7c9250a453b" +checksum = "538965e029986aa4cc996d507ad98af51b24ed399fca14ad9ae131f11270ecbf" dependencies = [ - "aquamarine", - "docify", - "frame-benchmarking 27.0.0", - "frame-election-provider-support 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "bp-header-chain", + "bp-parachains", + "bp-polkadot-core", + "bp-runtime", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-balances 27.0.0", + "pallet-bridge-grandpa", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-tracing 15.0.0", + "sp-runtime", + "sp-std", + "sp-trie", ] [[package]] -name = "pallet-balances" -version = "25.0.0" +name = "pallet-bridge-relayers" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de2915b425ae77d63ba25c194780599b7be25307454a138cfb316c16d001e68" +checksum = "d6820dd74455aa2b377d509c30a64562b03b887d08a8fbe7c9963da157f9a9d0" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "bp-messages", + "bp-relayers", + "bp-runtime", + "frame-benchmarking", + "frame-support", + "frame-system", "log", + "pallet-bridge-messages", "parity-scale-codec", "scale-info", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-arithmetic", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-balances" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919a13c14461ab698c59aadd80d23694c98a17ed6c2dd7c8cc974577738f1836" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-beefy" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b6a09b8f3cc9dcc2edac7319ffc4f74ada08d570eb3fb23aed00b49b4c437f" -dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "pallet-authorship 27.0.0", - "pallet-session 27.0.0", - "parity-scale-codec", - "scale-info", - "serde", - "sp-consensus-beefy", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-staking 25.0.0", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-beefy-mmr" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e959c1126a433a8a6e756c8e85081e727a60c75353785a2b805ea25d2f7ff5fd" -dependencies = [ - "array-bytes 6.2.2", - "binary-merkle-tree", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "pallet-beefy", - "pallet-mmr", - "pallet-session 27.0.0", - "parity-scale-codec", - "scale-info", - "serde", - "sp-api 25.0.0", - "sp-consensus-beefy", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-bounties" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9982eb7f49564bd1815c804a1ca73a15f7d021a70d36cfb35c1e2f5dffb7c739" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "pallet-treasury 26.0.0", - "parity-scale-codec", - "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-bridge-grandpa" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17d6a612927f39c3a92a426fe0d226cc17b2bc8b60122e767d186d5e210ed12a" -dependencies = [ - "bp-header-chain", - "bp-runtime", - "bp-test-utils", - "finality-grandpa", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-consensus-grandpa 12.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-trie 28.0.0", -] - -[[package]] -name = "pallet-bridge-messages" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cfc14baf0e65041a2cf9874c08d3e82212fe5d10f6a3ac1d0f40fcffac188f" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "num-traits", - "parity-scale-codec", - "scale-info", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-bridge-parachains" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80f4ab34d6a2c3bf8f72a3c1dc8bab5c0097e8d9ce27083f69b4d1c7d619ec61" -dependencies = [ - "bp-header-chain", - "bp-parachains", - "bp-polkadot-core", - "bp-runtime", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "pallet-bridge-grandpa", - "parity-scale-codec", - "scale-info", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-trie 28.0.0", -] - -[[package]] -name = "pallet-bridge-relayers" +name = "pallet-broker" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "273095478c3a09de73b7a01db3b2f938070621bc47e92cbbdadd31b7ba73f94c" +checksum = "904983f117ff92ee24b251f2a883ff01b6f8e9063649877f3892ecbb516e3cbd" dependencies = [ - "bp-messages", - "bp-relayers", - "bp-runtime", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "pallet-bridge-messages", + "bitvec", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-arithmetic 22.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-arithmetic", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-child-bounties" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a27dfd21f4b038b534376d289954dc2fe735101b5d07ed6356f8578a1e134d2" +checksum = "fb62c44d3ab8dcbf106b22acc138eaea6e51563d16a8d4a246303f2e20eeb9e5" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "pallet-bounties", - "pallet-treasury 26.0.0", - "parity-scale-codec", - "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-collator-selection" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c093c8867dbdb540da33076566605320b2eda78da5062d3d954f05862db18d" -dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "log", - "pallet-authorship 25.0.0", - "pallet-session 25.0.0", + "pallet-treasury", "parity-scale-codec", - "rand 0.8.5", "scale-info", - "sp-runtime 28.0.0", - "sp-staking 23.0.0", - "sp-std 12.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-collator-selection" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c352469427fb52314865ec220c8b83d05457de6c99f746b497575bb5c224682" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "pallet-authorship 27.0.0", - "pallet-session 27.0.0", - "parity-scale-codec", - "rand 0.8.5", - "scale-info", - "sp-runtime 30.0.1", - "sp-staking 25.0.0", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-collective" -version = "25.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dddb120b5ee520146617a8c49b4d4c980ba9188918d43085539bf78815e7ec1d" +checksum = "f4199122c135e161d2e2f4cbc9339c54a11ac4b11e0beb67e53b49a3c90d566b" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", + "pallet-authorship", + "pallet-session", "parity-scale-codec", + "rand", "scale-info", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-collective" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e45e487c9ff2e3d36265f4cd2ead2721f9881670417c767fd95081d28bb2c890" +checksum = "1ed22cf9d91c120695063cfa95ae0ffabcadefdf2581657ddb5fd68555b3a2e0" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-conviction-voting" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93572f2a2e85e419bcd13ed65093eef677d7001616c7ba078fa05106dae11a1" +checksum = "4a189b5fb4a473edc7b2d52109fe10d0017b9b56f7c0324018b5970125db3ce3" dependencies = [ "assert_matches", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", "serde", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-core-fellowship" -version = "11.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d8c79b5837a1ba4b1803e2b03ccbc761deb5f84589227faa3995e20e7d7afdf" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-democracy" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e0aa3ee4c1c4b530b9d6a1dfdfbac69b64a9bad3d2fdd4748b961a4ec0962c2" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-election-provider-multi-phase" -version = "24.0.0" +version = "12.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "481178ef558a9409d9c12fc01279b517e3a0a7797664e89761447dba3a182ce6" +checksum = "e8b59821d4508572c7b7cf9f044b1c87b7aa857acca1af2ec712d901a0002649" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-election-provider-support 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-election-provider-support-benchmarking 24.0.0", "parity-scale-codec", - "rand 0.8.5", "scale-info", - "sp-arithmetic 20.0.0", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-npos-elections 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "strum", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-election-provider-multi-phase" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3f6303bbd336414959861b9a530f53e295d66f8d27dd8bd626daaf8fa051a1f" +checksum = "dc5e1f80bb4ce08b27f5a8a733d5c2d72d083a7d48afa4bdbb1ef3594a31e353" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-election-provider-support 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", "log", - "pallet-election-provider-support-benchmarking 26.0.0", + "pallet-election-provider-support-benchmarking", "parity-scale-codec", - "rand 0.8.5", + "rand", "scale-info", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-npos-elections 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "strum", -] - -[[package]] -name = "pallet-election-provider-support-benchmarking" -version = "24.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ab6413ec88b64acf849a202795c67940dc3bcc846ce03bd0893b90e2119ecf" -dependencies = [ - "frame-benchmarking 25.0.0", - "frame-election-provider-support 25.0.0", - "frame-system 25.0.0", - "parity-scale-codec", - "sp-npos-elections 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-npos-elections", + "sp-runtime", + "sp-std", + "strum 0.24.1", ] [[package]] name = "pallet-election-provider-support-benchmarking" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baa4d9a426c024e1aa3bb6adbb03aa3b6887be8775e3fba0abda48ca9b17c864" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-election-provider-support 27.0.0", - "frame-system 27.0.0", - "parity-scale-codec", - "sp-npos-elections 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-elections-phragmen" -version = "28.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9f5a24ff9e46113edc57dfc1be6343652fac6dd967662cdc82b194aa38be9e" +checksum = "193a8592c5fd534d56d07b2abe14e830d23947fb66f31867083e4f3ef80c8caa" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", + "frame-benchmarking", + "frame-election-provider-support", + "frame-system", "parity-scale-codec", - "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-npos-elections 25.0.0", - "sp-runtime 30.0.1", - "sp-staking 25.0.0", - "sp-std 13.0.0", + "sp-npos-elections", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-encointer-balances" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a2ea2b74c36582daf64b632064b3525da8aa2cdced57581272264ebd811a7a" +checksum = "3abd8385b727858b9eac996991bb6bc2967ee51a5f1bdfd178455f073b1985c5" dependencies = [ "approx", "encointer-primitives", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-asset-tx-payment 25.0.0", - "pallet-transaction-payment 25.0.0", + "pallet-asset-tx-payment", + "pallet-transaction-payment", "parity-scale-codec", "scale-info", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-encointer-bazaar" -version = "3.0.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f5797985a0a1d94338ab69659e62fb3b9435f070db39a0e610fd1757cf77fd" +checksum = "59c2f8fd0131a9e1c997e9f634c04e40af131a1c62c75ecd22d4f2fe25d6d1c0" dependencies = [ "encointer-primitives", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "pallet-encointer-communities", "parity-scale-codec", "scale-info", - "sp-core 25.0.0", - "sp-std 12.0.0", + "sp-core", + "sp-std", ] [[package]] name = "pallet-encointer-bazaar-rpc-runtime-api" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6471fa29e940363ff8090bb620ad82564286f955bfaa33a15147190438542aa6" +checksum = "1ca4fe43766549ed1261113039bbe44bc4b429fdd32db2848213e1918587134d" dependencies = [ "encointer-primitives", - "frame-support 25.0.0", - "sp-api 23.0.0", - "sp-std 12.0.0", + "frame-support", + "parity-scale-codec", + "sp-api", + "sp-std", ] [[package]] name = "pallet-encointer-ceremonies" -version = "3.0.4" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3712bb0ba1f1645cf1744d56c2fcb237a1b82319709db7d383a2d219449a5383" +checksum = "c4638e64ecc2823182d42fb3e26f280c4f5c7c15a03e76de5a4471509268ef7e" dependencies = [ "encointer-ceremonies-assignment", "encointer-meetup-validation", "encointer-primitives", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "pallet-encointer-balances", "pallet-encointer-communities", "pallet-encointer-scheduler", - "pallet-timestamp 24.0.0", + "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-application-crypto 27.0.0", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-encointer-ceremonies-rpc-runtime-api" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af85c19a7b83a255348a95ee0b691810088320c36319eb4446eb527f0e854a04" +checksum = "9649454f58e1ce8019d33b733ef82098d8830d3e629d13a73e25013246e59ce2" dependencies = [ "encointer-primitives", - "frame-support 25.0.0", - "sp-api 23.0.0", - "sp-std 12.0.0", + "frame-support", + "parity-scale-codec", + "sp-api", + "sp-std", ] [[package]] name = "pallet-encointer-communities" -version = "3.0.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88164fe398f45a0af98c74115e27c2c19cbdb218da7a1ba2269c12e92574779c" +checksum = "f07f8f9108f2527999c88a935e3e8a4dff693dc41fe03ae537e0654f06d1e76b" dependencies = [ "encointer-primitives", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "pallet-encointer-balances", "pallet-encointer-scheduler", "parity-scale-codec", "scale-info", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-encointer-communities-rpc-runtime-api" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1808d7908167315f12204db923a35f4af851e7c53b73351ed7d1b9e53a8c948d" +checksum = "49b6fc07a3baa660dd2522b00c8ca9959fd56145852c84700c83472c0328c061" dependencies = [ "encointer-primitives", - "sp-api 23.0.0", - "sp-std 12.0.0", + "parity-scale-codec", + "sp-api", + "sp-std", ] [[package]] name = "pallet-encointer-faucet" -version = "3.0.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "749e2e516dd7d0c5901920c866f8ae0c6d76665df07e5acd5fbccc5938bb9193" +checksum = "12f315745473e6572629cf27cf41f29994b945116b516b2fb6503ab7bb784f05" dependencies = [ "approx", "encointer-primitives", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "pallet-encointer-communities", "pallet-encointer-reputation-commitments", - "pallet-treasury 24.0.0", + "pallet-treasury", "parity-scale-codec", "scale-info", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-encointer-reputation-commitments" -version = "3.0.2" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27da548ae6f6070797c3270160cc0c76d4ddc20575d63e5a615d6f28d99c7cb5" +checksum = "4f89a194a51ec7326ac10908ea4a8840270a9bc0c3a12ae80cea46995f49c73d" dependencies = [ "approx", "encointer-primitives", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "pallet-encointer-ceremonies", "pallet-encointer-communities", "pallet-encointer-scheduler", - "pallet-timestamp 24.0.0", + "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-encointer-scheduler" -version = "3.0.3" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90e9127e0ed2392545ea4178b82f25ac987cb1228e6d90c77875d559a7a1578" +checksum = "7d5804270f9ad33a67317bd52be71eca756d7307026ba399b096e1f3e330be4c" dependencies = [ "encointer-primitives", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "impl-trait-for-tuples", "log", - "pallet-timestamp 24.0.0", - "parity-scale-codec", - "scale-info", - "sp-runtime 28.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "pallet-fast-unstake" -version = "24.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05634a197738c999a3032393916182fedccce13cb063fc330ee9bf810cd53b49" -dependencies = [ - "docify", - "frame-benchmarking 25.0.0", - "frame-election-provider-support 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "log", + "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-staking 23.0.0", - "sp-std 12.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-fast-unstake" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9186636e923b4be260d4a9cfff2aabb2620c6d0c755396ab31b0c74f1883891b" +checksum = "cd6e0b51b82075b046792cdde2d4a2f6c9301f3deba44c26d30ab152060b9028" dependencies = [ "docify", - "frame-benchmarking 27.0.0", - "frame-election-provider-support 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-staking 25.0.0", - "sp-std 13.0.0", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-glutton" -version = "13.0.0" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26571660041ba596c43ee71992be20950e80d71f4199dfa8e57691a6757e20e9" +checksum = "8140a1a715bb76151ac58bb6617e7a506ec3a89f842c3f6904179cbf6940b987" dependencies = [ "blake2 0.10.6", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-grandpa" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8127d9f60e5b5e88014ee9423245503704fd188a972be2a02cb921a470db762" +checksum = "935e91fa8936381aff2b88d8a7dad38ac30a1c8d2310340d73ce1c07b5ae72ce" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-authorship 27.0.0", - "pallet-session 27.0.0", + "pallet-authorship", + "pallet-session", "parity-scale-codec", "scale-info", - "sp-application-crypto 29.0.0", - "sp-consensus-grandpa 12.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-staking 25.0.0", - "sp-std 13.0.0", + "sp-application-crypto", + "sp-consensus-grandpa", + "sp-core", + "sp-io", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-identity" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b094c99305f6b61b6aead5b8fbfa44dafa002696dd5c663336a7eb3b68950c46" +checksum = "f3259bb87d50529027fa40267c3662dc80c683f253f121f391c032b019c88fcb" dependencies = [ "enumflags2", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", "parity-scale-codec", "scale-info", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-im-online" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "273b6bd0c0f098b935714a59f9487e64382e87de49a7cf6d6dd8cdeb63be0aed" +checksum = "e4be3f0165158828e4e77fae106a93bc1f48cc751755bdb012edb3ac0ef1d246" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-authorship 27.0.0", + "pallet-authorship", "parity-scale-codec", "scale-info", - "sp-application-crypto 29.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-staking 25.0.0", - "sp-std 13.0.0", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-indices" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81e5eeda9acaed9968ebe2221f8f18fcee7103b7f1f739ef6c20f73e5e3bf447" +checksum = "4ead239524e40e55d172f024ff6795998068a2ba1c0950e74c4db7f347cfa91e" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-keyring 30.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-insecure-randomness-collective-flip" -version = "13.0.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df4d7fab2948940925d4c0076ec542b2c67b37a5332449f102241993d31a8b41" +checksum = "9e3812708354757694bf127a89ab043ce80b2016a3b4d1eda2f762fbc4da9904" dependencies = [ - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-support", + "frame-system", "parity-scale-codec", "safe-mix", "scale-info", - "sp-runtime 28.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "pallet-membership" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e1504034588eb733f8ce98b77757e9a7390662313aa133ef1e3b9fbb94359c7" -dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-membership" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d662c6cdf6c2ead71ba1d2dbf1c0fef0fa9edbfdcc05377c2db056fe00a9f1da" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-message-queue" version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0776bf51d03bd746159063fa1357234feb85114273d40ef3aa3efba65d091eb4" +checksum = "1bc2dfdff5a7e5b21355b34245312ba2ea687444d9003960e7b876e1df518dab" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-arithmetic 20.0.0", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-weights 24.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-message-queue" -version = "30.0.0" +version = "31.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8290ebbf3fafdd90f7db6a249101c3bcc6428e089476d6ac237e2339da97401" +checksum = "ab6302efb264a65fd175f3082b72004df125f646a3c68b72fd08e657a468c0d6" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "environmental", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-weights 26.0.0", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", ] [[package]] name = "pallet-mmr" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac6e31cef5ee5cc094a3ffbb7fc5a1424a5a4c877143541dbf51a29724d6d4cb" +checksum = "ba6565b91d1d585047648793feece7c2c70080b37e1f55ab3a4fb50b4c1bec86" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", + "sp-core", + "sp-io", "sp-mmr-primitives", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-multisig" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97de91a840d8fa4f2eb0dea5de7dd06221b39dd0955c3065ae4a10f63a0ba2c" +checksum = "14dbcdea9d3d7963aab57078a5bd6f3596186bfcf181d666db6ea2bfdc0184ec" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-nft-fractionalization" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19791a4d82d7d23a0bcf2ce93b9317915d1979c9be817171655ce6e992c40f3" +checksum = "a948a03e2f5d2202a4bb8f7d701a2f29f557c50582bf6f8ccd7824863092012f" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-assets 28.0.0", + "pallet-assets", "pallet-nfts", "parity-scale-codec", "scale-info", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-nfts" -version = "21.0.0" +version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86d848b63485ca0877e5a6e407cf67d54acb35591db455a6b3151fa105d0c7de" +checksum = "71368a2a22a266fac11104f41334fc82e2b94c3f26a70b13eca98cdecf2e106f" dependencies = [ "enumflags2", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-nfts-runtime-api" -version = "13.0.0" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0b15d938dd4d0d40f95721d9bc0f93e8bc2de01b91432cd8abce7f3348bf2d" +checksum = "e342996c6bcb1e6a3258b18b1aebf4d77d9c2dd011863393478329e7e8d67128" dependencies = [ "pallet-nfts", "parity-scale-codec", - "sp-api 25.0.0", - "sp-std 13.0.0", + "sp-api", + "sp-std", ] [[package]] name = "pallet-nis" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aeb66fc313fa20704203134b93f2df3b9470a56021a3a2e31a28668cc29293b" +checksum = "86c541b2785051ebe1ae378be4b086055fbb8b13ee18fd949dfcf68dbd1c3325" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-arithmetic", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-nomination-pools" -version = "24.0.2" +version = "25.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32950c1329132fbb7f0f70efddafbbe103fc15bcb9528e3a3406639935d1c6e4" +checksum = "d5989ca1100694371c9951118d58e84e93b60c1919006e9d4ad0f7537952c388" dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-support", + "frame-system", "log", - "pallet-balances 27.0.0", + "pallet-balances", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-staking 25.0.0", - "sp-std 13.0.0", - "sp-tracing 15.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", + "sp-tracing", ] [[package]] name = "pallet-nomination-pools-benchmarking" -version = "25.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb69a53b558f5382eba0bb875f03823ec105300a40738ae16b64eca748249a4c" +checksum = "d01847415cd33a92c65e8d13cb0041a32b2f2523c84d9d944287ae5c0d920c82" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-election-provider-support 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", "pallet-bags-list", "pallet-nomination-pools", - "pallet-staking 27.0.0", + "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 30.0.1", - "sp-runtime-interface 23.0.0", - "sp-staking 25.0.0", - "sp-std 13.0.0", + "sp-runtime", + "sp-runtime-interface", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-nomination-pools-runtime-api" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a586ad28735a59b0a74a5aeee43820911f2a384b8f5321f5a4b8f8a026f3173" +checksum = "a64b17d862b833ca07a375646ecc80e164e5618c3aed4e5631816aa7288bf9b1" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", - "sp-api 25.0.0", - "sp-std 13.0.0", + "sp-api", + "sp-std", ] [[package]] name = "pallet-offences" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77352f9a1afcde5d36395c9847e14c75d73c379e4f9ff7643f5d64741f20587" +checksum = "de7b17230f58ff6b1ec2a70b3c639c49f585841dacf63f30c78db6387a833e0b" dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-support", + "frame-system", "log", - "pallet-balances 27.0.0", + "pallet-balances", "parity-scale-codec", "scale-info", "serde", - "sp-runtime 30.0.1", - "sp-staking 25.0.0", - "sp-std 13.0.0", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-offences-benchmarking" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb14e278769dba2a6ebcced6fd565015f09f7f9366add0ff10156744e551c8d3" +checksum = "060483993358293d041e5173635082c68c7783a800c0874e8df87c324232f0d1" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-election-provider-support 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", "log", - "pallet-babe 27.0.0", - "pallet-balances 27.0.0", + "pallet-babe", + "pallet-balances", "pallet-grandpa", "pallet-im-online", "pallet-offences", - "pallet-session 27.0.0", - "pallet-staking 27.0.0", + "pallet-session", + "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 30.0.1", - "sp-staking 25.0.0", - "sp-std 13.0.0", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-preimage" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74e6ef7cdf7de30219789470d3c6d1606a10e34cad4891738033ae1a1fe92e30" +checksum = "ce688c68f117b1916a844579aa5a945d786059b119a1cc80ace370afd1e50da4" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-proxy" -version = "25.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbc0b550f5cbbad51f9daf795cc7046d40bbff256dae8d6072fd710ab40fd3a" +checksum = "d3162924576a70509136eb4d8513497fb640a8b3ea753883fe29bd454c511485" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "pallet-proxy" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f1e89e043a6059fc19ada02364da3f20570f18b5eefdb6b20332e495218acb1" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "parity-scale-codec", - "scale-info", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-ranked-collective" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f613ea43dcad3cb29f948e4889aace0a604495360cad32297a4b0c4591615dfb" +checksum = "86c6d11592a6ba9039bd3486dba15f0cb045889b2746f4619f5ec78188fdd151" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-recovery" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b5e90c670d6275b77ef12ecf794a799020815a03d5dfe1b98288772ff14b7f" +checksum = "b8649310b8f00e3b2983331cdb7173d1e66e5eeb3a3d21479e7a65386244f883" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-referenda" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c91a148d8fa3e11738ccc650fdfaf1f055b1283099b12b8dc430b39a7fb3988" +checksum = "6c6645c0c09ff8484c6c7ac1546d908202ed555b18169ea956955e4e2d77b210" dependencies = [ "assert_matches", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 22.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-arithmetic", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-salary" -version = "12.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86997dc4190bc440a8954c297ce03a14286cd57c1d778824d3686c7289b8b31c" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-scheduler" -version = "26.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3508a51d359c6640577feead9dc00667f38cec385baad77b636c61ff746ffe24" +checksum = "1d6ad8b06d101931f335ea32f7c0e91bd1241c7b74d856cccf0b4fad8ab7177c" dependencies = [ - "docify", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-weights 24.0.0", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-scheduler" -version = "28.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6261d6f18bb2ed22451a87aac91f40e6d9753249827235fbc2aa1ccfe576c594" +checksum = "bc26a27b77170c18261af7be04a6569e3d0d58788255b9f283ccd089aac37887" dependencies = [ "docify", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-weights 26.0.0", -] - -[[package]] -name = "pallet-session" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "768a6fb5333efc2bd2a3538c1d6ffa4178398660d4e3be89f2eb82d4e9088ae6" -dependencies = [ - "frame-support 25.0.0", - "frame-system 25.0.0", - "impl-trait-for-tuples", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-timestamp 24.0.0", "parity-scale-codec", "scale-info", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-session 24.0.0", - "sp-staking 23.0.0", - "sp-state-machine 0.32.0", - "sp-std 12.0.0", - "sp-trie 26.0.0", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", ] [[package]] name = "pallet-session" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d08a1fd9bcdead33c7d8b3a483241084575e19943c0f806194b96d731cf7a80b" +checksum = "e23ca2bfcffb5194de952050557bdd1fe9bce18b2bc81e8f8c01c8a3c3c3e5d8" dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-support", + "frame-system", "impl-trait-for-tuples", "log", - "pallet-timestamp 26.0.0", + "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-staking 25.0.0", - "sp-state-machine 0.34.0", - "sp-std 13.0.0", - "sp-trie 28.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-state-machine", + "sp-std", + "sp-trie", ] [[package]] name = "pallet-session-benchmarking" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c8a1fe52d8f2fc79e4784f8c96f3e3bed6da5d343bedaa4237c5641563f8cc" +checksum = "bc660786028d46e03fb0a419d6a15df3fa556db7ce74efebf5a35037b32b4bc4" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "pallet-session 27.0.0", - "pallet-staking 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-session", + "pallet-staking", "parity-scale-codec", - "rand 0.8.5", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-std 13.0.0", + "rand", + "sp-runtime", + "sp-session", + "sp-std", ] [[package]] name = "pallet-society" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dcf8c3ee3e104d3c069af9c261e3a84b57e74622ac98630f5925c1ad9ffaeb5" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "parity-scale-codec", - "rand_chacha 0.2.2", - "scale-info", - "sp-arithmetic 22.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-staking" -version = "25.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed335abd32d357dd9750dae7fb87b01dfd8fe69faadcb94a6e0e0a43057d923" +checksum = "33c19c1f5a410c0b03dc1e3245ffc0269e6c9085e6f6a64ee023f7515b6f8d9b" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-election-provider-support 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-authorship 25.0.0", - "pallet-session 25.0.0", "parity-scale-codec", "rand_chacha 0.2.2", "scale-info", - "serde", - "sp-application-crypto 27.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-staking 23.0.0", - "sp-std 12.0.0", + "sp-arithmetic", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-staking" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721324165298bdc5f3dc8838a0e94d7ca1e471a702185dfbbafff84d89945e4e" +checksum = "8883bbca2bd6ee41f81382418372ce44fd771ac53591ce9be4018ea43f8c5eda" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-election-provider-support 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", "log", - "pallet-authorship 27.0.0", - "pallet-session 27.0.0", + "pallet-authorship", + "pallet-session", "parity-scale-codec", "rand_chacha 0.2.2", "scale-info", "serde", - "sp-application-crypto 29.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-staking 25.0.0", - "sp-std 13.0.0", + "sp-application-crypto", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-staking-reward-curve" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8878e29f3d001ac1b1b714621f462e41a9d1fa8f385657f955e8a1ec0684d7" +checksum = "efca5a4a423427d2c83af5fe07ab648c16b91e3782c3cc23316fe0bd96b4c794" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.48", @@ -8356,562 +7836,370 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" -version = "16.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45b6f832653badb5f70bdfecc1ded64b02b8159b27f18515af03f8b80f1b023b" -dependencies = [ - "log", - "sp-arithmetic 20.0.0", -] - -[[package]] -name = "pallet-staking-reward-fn" -version = "18.0.0" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f5b0d52306a74510f730567ed9543b7e4eac9043fd519cdc94ba5b3850befa" +checksum = "e23336e4da87101633f95f9932946564c926ca7f87499654b38923b1579c605e" dependencies = [ "log", - "sp-arithmetic 22.0.0", + "sp-arithmetic", ] [[package]] name = "pallet-staking-runtime-api" -version = "13.0.0" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ce19dffced5c3455016a3f80f33f92aba903675d09c3c81a2919abc4cf78725" +checksum = "e27156b772eccb539cb1a1ea1b1b6e98d9c6589e18b913a30f67913fcf67fe7e" dependencies = [ "parity-scale-codec", - "sp-api 25.0.0", - "sp-staking 25.0.0", + "sp-api", + "sp-staking", ] [[package]] name = "pallet-state-trie-migration" -version = "28.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61bfbf58d5c787a4e25d1bb2ac29c9a86c31f9e82e129f624e5fd0e71bc8476e" +checksum = "2a48713905a318b0307e523fd3d3ca4b197ce74b2520203ded0d02e8a6c6bbd7" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-sudo" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1273597599b58a462454f8ce626b517183b7008a438dbbcc8989ea6980a10c6f" -dependencies = [ - "docify", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "parity-scale-codec", - "scale-info", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-timestamp" -version = "24.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b25ec8749cf3f481b5e5199be701bac0dea835851b83fc7c455192762711858d" +checksum = "053dae9119d2d828af80e8ac98f497dc27155d6b5d42264dab8fae40f2314c41" dependencies = [ "docify", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "log", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-inherents 23.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-storage 17.0.0", - "sp-timestamp 23.0.0", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-timestamp" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e72c2e35a574dff24f58ff8a1d19cd997858600a1cf608c3a28477fb9bfed3" +checksum = "688b89bdd377609b592bd094b304ebca33f4767fe72935465e2fd7db0e797968" dependencies = [ "docify", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-timestamp 25.0.0", -] - -[[package]] -name = "pallet-tips" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2943d26f89e3bf74c95634ca31a8f62e743dc4dc9fbb7323fd4799e5cf722c10" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-treasury 26.0.0", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-transaction-payment" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ef7ceaac786e41613731e3bc48284f1aa3ec260934abda2daed949de6e5ada" -dependencies = [ - "frame-support 25.0.0", - "frame-system 25.0.0", "parity-scale-codec", "scale-info", - "serde", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-std", + "sp-storage", + "sp-timestamp", ] [[package]] name = "pallet-transaction-payment" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fdf0cba2fe991bd14562b3e6504fa78eaf079e5b84ff6747edfe50049366aa1" +checksum = "18b4ca7a1af9b1f091900a354a96319c7614d7a32106ba86cb7f0b6f90239065" dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", "serde", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-transaction-payment-rpc-runtime-api" -version = "25.0.0" +name = "pallet-transaction-payment-rpc" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07d87fdc4028155367c6ea98143054a6c00b38bfd77ec08681e289e429e35505" +checksum = "ba1486d58f38892df779a7812f28ff962d0b0632b955ea3c348f605caa01ba6d" dependencies = [ - "pallet-transaction-payment 25.0.0", + "jsonrpsee", + "pallet-transaction-payment-rpc-runtime-api", "parity-scale-codec", - "sp-api 23.0.0", - "sp-runtime 28.0.0", - "sp-weights 24.0.0", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", + "sp-weights", ] [[package]] name = "pallet-transaction-payment-rpc-runtime-api" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12eb6403383c384bb922392292d20dad26d95f44292f08d4444ef4a16f892671" -dependencies = [ - "pallet-transaction-payment 27.0.0", - "parity-scale-codec", - "sp-api 25.0.0", - "sp-runtime 30.0.1", - "sp-weights 26.0.0", -] - -[[package]] -name = "pallet-treasury" -version = "24.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd462af11574485864023849e0622916b611dbc88111192fb39b1e6d7e666ba" +checksum = "acdfd7c882439b8198c99ece57b5bf785965545a6fa6d0bb7b56b264df1e437a" dependencies = [ - "docify", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "impl-trait-for-tuples", - "pallet-balances 25.0.0", + "pallet-transaction-payment", "parity-scale-codec", - "scale-info", - "serde", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-api", + "sp-runtime", + "sp-weights", ] [[package]] name = "pallet-treasury" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b173de5886d221ab2be524b29d2febb0f5f8f57a47bb0152a8a153a7ab573f1" +checksum = "a75cb7498228e1a150fa09ce64acafe7105ff39b75dae1c266ba58b7e3eb225e" dependencies = [ "docify", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "impl-trait-for-tuples", - "pallet-balances 27.0.0", + "pallet-balances", "parity-scale-codec", "scale-info", "serde", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-uniques" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04892f18f0efe31883af1f0998827a08c0b55eb65d8e3818c5a14965dc6ee27f" +checksum = "faf5e6bf708cc4d7efe8d66a8bb80da4875724edbcf1f624bd34b6937c0af452" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-utility" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a8a6941da32837e4297e0d8abe0a5c94f348a119cccbf27b0f99ee01246c0e" -dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "parity-scale-codec", - "scale-info", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-utility" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae212409d911bfd5c3cfe078afc71375431547cf0b24f222741c4dc6a6327683" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "parity-scale-codec", - "scale-info", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-vesting" -version = "25.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd29411ef24eb6a856adf1bc33b37ead4835a25dafb1c4c8c95b13fa5247748f" +checksum = "384c1d740c019410f6b40586cc387726c2e3c417c0e3e6f7e4774cd46bc6c1d0" dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "log", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-vesting" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9efa19c0258d21cda531b7e81532ce6fb28c10f99f406c051852ed51f28dcefd" +checksum = "55f3ac517a10c14beee86a737b9ea5d592af9ab21cc5354474bc5f7019210358" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-whitelist" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9943df0e695f0b1719e9d559ab08fbded03a443e270e48b11bee56f209a2d7" -dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "parity-scale-codec", - "scale-info", - "sp-api 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "pallet-xcm" -version = "4.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d5e5404d9dadb39390949aadc2c641c16ce4cb0f47ed7a7ff584ab914c2984" +checksum = "de259e3329422bf3eb10b7e966f4b1c5caadcb29cd2d45af3a000cb2d184e60d" dependencies = [ - "bounded-collections", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "log", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "serde", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "staging-xcm 4.0.0", - "staging-xcm-executor 4.0.2", + "sp-api", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-xcm" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c4eb9211a13bffe31ba0555c382b2e377213ccf7bfd800b115e222cb349142" +checksum = "cee3520e03ac679125e8dcaa00ce4afeeb106a9623e79b5acf970d72af7f5d02" dependencies = [ "bounded-collections", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "pallet-balances 27.0.0", + "pallet-balances", "parity-scale-codec", "scale-info", "serde", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", -] - -[[package]] -name = "pallet-xcm-benchmarks" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f50852380d3272accbf4532dc2e46cdc7f66f5452600bfd7d33fc208a5ff1e" -dependencies = [ - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "staging-xcm 4.0.0", - "staging-xcm-builder 4.0.1", - "staging-xcm-executor 4.0.2", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] name = "pallet-xcm-benchmarks" -version = "6.0.2" +version = "7.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d64081cd57aa8b037fa26e701a23049c1b4e9e6b2d15bd37a389b2cb63811f6d" +checksum = "da15171c2dc870ad636fcdb16d9aa37eb84cfe6001c3f1c77cf2c97446ebfbe5" dependencies = [ - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] name = "pallet-xcm-bridge-hub" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ac06adbe492bda1c840e3a775b69d619391fe1a631cebd76010dc8394fed75f" +checksum = "99e448ca8caf6006a0c4d018dfa4a14e1728be87f944c598c443d74fb45bd68f" dependencies = [ "bp-messages", "bp-runtime", "bp-xcm-bridge-hub", "bridge-runtime-common", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-support", + "frame-system", "log", "pallet-bridge-messages", "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", + "sp-core", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] name = "pallet-xcm-bridge-hub-router" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b36a67b5b0755e616fa0f5c0874ff5f83ba66eb0f7c4ec98166b95d6915c291" -dependencies = [ - "bp-xcm-bridge-hub-router 0.5.0", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", -] - -[[package]] -name = "parachains-common" -version = "4.0.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7ab598917585ae55b892dbfb6fa5073eb40454c47504a0d0db2634505538632" +checksum = "21f10cb76e759fbb672f132d72d9c4f75895ce3c9c9f50d68cd902bc88b043fc" dependencies = [ - "cumulus-primitives-core 0.4.0", - "cumulus-primitives-utility 0.4.1", - "frame-support 25.0.0", - "frame-system 25.0.0", + "bp-xcm-bridge-hub-router", + "frame-benchmarking", + "frame-support", + "frame-system", "log", - "num-traits", - "pallet-asset-tx-payment 25.0.0", - "pallet-assets 26.0.0", - "pallet-authorship 25.0.0", - "pallet-balances 25.0.0", - "pallet-collator-selection 6.0.0", "parity-scale-codec", - "polkadot-core-primitives 4.0.0", - "polkadot-primitives 4.0.0", - "rococo-runtime-constants 4.0.0", "scale-info", - "smallvec", - "sp-consensus-aura 0.29.0", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "staging-parachain-info 0.4.0", - "staging-xcm 4.0.0", - "staging-xcm-builder 4.0.1", - "substrate-wasm-builder 14.0.0", - "westend-runtime-constants 4.0.0", + "sp-core", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", ] [[package]] name = "parachains-common" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95c5d3cd2e1516fad507855309237b6a6f8fe778819ce5583ce48970c524101a" +checksum = "ceadd4f51620023871ece5eeda64734acd17d84d49b45473d335e900a012fdde" dependencies = [ - "cumulus-primitives-core 0.6.0", - "cumulus-primitives-utility 0.6.2", - "frame-support 27.0.0", - "frame-system 27.0.0", + "cumulus-primitives-core", + "cumulus-primitives-utility", + "frame-support", + "frame-system", "log", "num-traits", - "pallet-asset-tx-payment 27.0.0", - "pallet-assets 28.0.0", - "pallet-authorship 27.0.0", - "pallet-balances 27.0.0", - "pallet-collator-selection 8.0.0", - "pallet-message-queue 30.0.0", - "parity-scale-codec", - "polkadot-core-primitives 6.0.0", - "polkadot-primitives 6.0.0", - "rococo-runtime-constants 6.0.0", + "pallet-asset-tx-payment", + "pallet-assets", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "pallet-message-queue", + "pallet-xcm", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-primitives", + "rococo-runtime-constants", "scale-info", "smallvec", - "sp-consensus-aura 0.31.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "staging-parachain-info 0.6.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "substrate-wasm-builder 16.0.0", - "westend-runtime-constants 6.0.0", + "sp-consensus-aura", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", + "westend-runtime-constants", ] [[package]] name = "parachains-runtimes-test-utils" -version = "6.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed49cba62c882e6261cc37d27f53ca84c9aa0605211b7ea2aafdfea888b63f23" -dependencies = [ - "cumulus-pallet-parachain-system 0.6.0", - "cumulus-pallet-xcmp-queue 0.6.0", - "cumulus-primitives-core 0.6.0", - "cumulus-primitives-parachain-inherent 0.6.0", - "cumulus-test-relay-sproof-builder 0.6.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "pallet-assets 28.0.0", - "pallet-balances 27.0.0", - "pallet-collator-selection 8.0.0", - "pallet-session 27.0.0", - "pallet-xcm 6.0.0", - "parachains-common 6.0.0", - "parity-scale-codec", - "polkadot-parachain-primitives 5.0.0", - "sp-consensus-aura 0.31.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-tracing 15.0.0", - "staging-parachain-info 0.6.0", - "staging-xcm 6.0.0", - "staging-xcm-executor 6.0.2", - "substrate-wasm-builder 16.0.0", +version = "7.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef11e21280cf0825bdb5563f242a06dc78fb3765d2b9d5f6210fc15442abfe4a" +dependencies = [ + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-test-relay-sproof-builder", + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-collator-selection", + "pallet-session", + "pallet-xcm", + "parachains-common", + "parity-scale-codec", + "polkadot-parachain-primitives", + "sp-consensus-aura", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-tracing", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-executor", + "substrate-wasm-builder", ] [[package]] @@ -8929,7 +8217,7 @@ dependencies = [ "lz4", "memmap2", "parking_lot 0.12.1", - "rand 0.8.5", + "rand", "siphasher", "snap", "winapi", @@ -8956,7 +8244,7 @@ version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 2.0.0", "proc-macro2", "quote", "syn 1.0.109", @@ -9078,15 +8366,6 @@ dependencies = [ "crypto-mac 0.11.0", ] -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", -] - [[package]] name = "peeking_take_while" version = "0.1.2" @@ -9102,66 +8381,84 @@ dependencies = [ "base64 0.13.1", ] +[[package]] +name = "penpal-emulated-chain" +version = "0.0.0" +dependencies = [ + "cumulus-primitives-core", + "emulated-integration-tests-common", + "frame-support", + "kusama-emulated-chain", + "parachains-common", + "penpal-runtime", + "polkadot-emulated-chain", + "serde_json", + "sp-core", + "sp-runtime", +] + [[package]] name = "penpal-runtime" -version = "0.13.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "848508f492e7a04f8a884416c1ba4588d6f13641f98afd9761ff453ed9c4ff98" +checksum = "73556f5783be7b2045e55625ae72da8c9ca255bbd9c14184c8c18b76ef6f81e2" dependencies = [ - "cumulus-pallet-aura-ext 0.6.0", - "cumulus-pallet-dmp-queue 0.6.0", - "cumulus-pallet-parachain-system 0.6.0", + "assets-common", + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", "cumulus-pallet-session-benchmarking", - "cumulus-pallet-xcm 0.6.0", - "cumulus-pallet-xcmp-queue 0.6.0", - "cumulus-primitives-core 0.6.0", - "cumulus-primitives-utility 0.6.2", - "frame-benchmarking 27.0.0", - "frame-executive 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "frame-system-benchmarking 27.0.0", - "frame-system-rpc-runtime-api 25.0.0", - "frame-try-runtime 0.33.0", - "log", - "pallet-asset-tx-payment 27.0.0", - "pallet-assets 28.0.0", - "pallet-aura 26.0.0", - "pallet-authorship 27.0.0", - "pallet-balances 27.0.0", - "pallet-collator-selection 8.0.0", - "pallet-message-queue 30.0.0", - "pallet-session 27.0.0", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-utility", + "frame-benchmarking", + "frame-executive", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", + "log", + "pallet-asset-tx-payment", + "pallet-assets", + "pallet-aura", + "pallet-authorship", + "pallet-balances", + "pallet-collator-selection", + "pallet-message-queue", + "pallet-session", "pallet-sudo", - "pallet-timestamp 26.0.0", - "pallet-transaction-payment 27.0.0", - "pallet-transaction-payment-rpc-runtime-api 27.0.0", - "pallet-xcm 6.0.0", - "parachains-common 6.0.0", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-xcm", + "parachains-common", "parity-scale-codec", - "polkadot-parachain-primitives 5.0.0", - "polkadot-primitives 6.0.0", - "polkadot-runtime-common 6.0.0", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-runtime-common", "scale-info", "smallvec", - "sp-api 25.0.0", - "sp-block-builder 25.0.0", - "sp-consensus-aura 0.31.0", - "sp-core 27.0.0", - "sp-genesis-builder 0.6.0", - "sp-inherents 25.0.0", - "sp-offchain 25.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-transaction-pool 25.0.0", - "sp-version 28.0.0", - "staging-parachain-info 0.6.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", - "substrate-wasm-builder 16.0.0", + "snowbridge-rococo-common", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-storage", + "sp-transaction-pool", + "sp-version", + "staging-parachain-info", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", ] [[package]] @@ -9170,6 +8467,51 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pest" +version = "2.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c0dcc30b6a27553f9cc242972b67f75b60eb0db71f0b5462f38b058c41546" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e1288dbd7786462961e69bfd4df7848c1e37e8b74303dbdab82c3a9cdd2809" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1381c29a877c6d34b8c176e734f35d7f7f5b3adaefe940cb4d1bb7af94678e2e" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "pest_meta" +version = "2.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0934d6907f148c22a3acbda520c7eed243ad7487a30f51f6ce52b58b7077a8a" +dependencies = [ + "once_cell", + "pest", + "sha2 0.10.8", +] + [[package]] name = "petgraph" version = "0.6.4" @@ -9241,395 +8583,832 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14e6ab3f592e6fb464fc9712d8d6e6912de6473954635fd76a589d832cffcbb0" [[package]] -name = "polkadot-core-primitives" -version = "4.0.0" +name = "polkadot-approval-distribution" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08d1d6ca24e1b13f8069e015cfab794344212dd7436aadd61de8086a82664ef" +checksum = "98fd276eccca3ada04cb274f4b8c51f669087d8b334c775f1231a9194d5260d0" dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", -] - -[[package]] + "bitvec", + "futures", + "futures-timer", + "itertools 0.10.5", + "polkadot-node-jaeger", + "polkadot-node-metrics", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "rand", + "tracing-gum", +] + +[[package]] +name = "polkadot-availability-bitfield-distribution" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51c43e54e0cc47dfb4f7c3917a774ccc796524087515b212d9fe109bde71846e" +dependencies = [ + "always-assert", + "futures", + "futures-timer", + "polkadot-node-network-protocol", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "rand", + "tracing-gum", +] + +[[package]] +name = "polkadot-availability-distribution" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121ded25722b8505335b05a77f1def84278802ed3f4774c7fe6ab7c961affe06" +dependencies = [ + "derive_more", + "fatality", + "futures", + "parity-scale-codec", + "polkadot-erasure-coding", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "rand", + "schnellru", + "sp-core", + "sp-keystore", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-availability-recovery" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3902495dbba25e7526168c8f88b26cc0dbb96cfe10813238a650c67b34bf9f31" +dependencies = [ + "async-trait", + "fatality", + "futures", + "parity-scale-codec", + "polkadot-erasure-coding", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "rand", + "sc-network", + "schnellru", + "thiserror", + "tokio", + "tracing-gum", +] + +[[package]] +name = "polkadot-collator-protocol" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a70007b246c3679ee43f11123bda6d715f659f7b6d4134d0fcbe8980e049386b" +dependencies = [ + "bitvec", + "fatality", + "futures", + "futures-timer", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sp-core", + "sp-keystore", + "sp-runtime", + "thiserror", + "tokio-util", + "tracing-gum", +] + +[[package]] name = "polkadot-core-primitives" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a185e7c80e3a42c681f02afe39c0d6a3f0eb5eef0b740afd592b3234aa462b1f" +checksum = "bda2b0f0c580c38f12445a4af10e0a23acf48381b2a95653e0be48ba787e10e5" dependencies = [ "parity-scale-codec", "scale-info", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] -name = "polkadot-node-jaeger" -version = "4.0.0" +name = "polkadot-dispute-distribution" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cfe6d4769181dce55b1b8fc53f0bd85bb4aa20473702fbce95a94abafa19379" +checksum = "84a9b173e02d1f600a422269b3b5a1db203d39f436f7db7d7e41ef6dda6f42e0" dependencies = [ - "lazy_static", - "log", - "mick-jaeger", + "derive_more", + "fatality", + "futures", + "futures-timer", + "indexmap 1.9.3", "parity-scale-codec", - "parking_lot 0.12.1", - "polkadot-node-primitives 4.0.0", - "polkadot-primitives 4.0.0", - "sc-network 0.31.0", - "sp-core 25.0.0", + "polkadot-erasure-coding", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sc-network", + "schnellru", + "sp-application-crypto", + "sp-keystore", "thiserror", - "tokio", + "tracing-gum", ] [[package]] -name = "polkadot-node-jaeger" -version = "6.0.0" +name = "polkadot-emulated-chain" +version = "1.0.0" +dependencies = [ + "emulated-integration-tests-common", + "pallet-im-online", + "pallet-staking", + "parachains-common", + "polkadot-primitives", + "polkadot-runtime", + "polkadot-runtime-constants", + "sc-consensus-grandpa", + "serde_json", + "sp-authority-discovery", + "sp-consensus-babe", + "sp-consensus-beefy", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "polkadot-erasure-coding" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08be78960db8b91245b08813ad8261a3f9ae15d3dba194ff88b65a3971a16141" +checksum = "ff8347b3528fe94e47ec1b818b06bf821010a5f180d0ac5c89138da0d382debc" dependencies = [ - "lazy_static", - "log", - "mick-jaeger", + "parity-scale-codec", + "polkadot-node-primitives", + "polkadot-primitives", + "reed-solomon-novelpoly", + "sp-core", + "sp-trie", + "thiserror", +] + +[[package]] +name = "polkadot-gossip-support" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4de739371a4b5f036848de5c7185dfee88587016d2bb32af07f38fb909b80d8" +dependencies = [ + "futures", + "futures-timer", + "polkadot-node-network-protocol", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "rand", + "rand_chacha 0.3.1", + "sc-network", + "sc-network-common", + "sp-application-crypto", + "sp-core", + "sp-keystore", + "tracing-gum", +] + +[[package]] +name = "polkadot-network-bridge" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4598c9d00dbc017c0f01e82a7c0740805cc500c3b8946ad0b7945ab4d68dd7ee" +dependencies = [ + "always-assert", + "async-trait", + "bytes", + "fatality", + "futures", "parity-scale-codec", "parking_lot 0.12.1", - "polkadot-node-primitives 6.0.0", - "polkadot-primitives 6.0.0", - "sc-network 0.33.0", - "sp-core 27.0.0", + "polkadot-node-metrics", + "polkadot-node-network-protocol", + "polkadot-node-subsystem", + "polkadot-overseer", + "polkadot-primitives", + "sc-network", + "sp-consensus", "thiserror", - "tokio", + "tracing-gum", ] [[package]] -name = "polkadot-node-metrics" -version = "4.0.0" +name = "polkadot-node-collation-generation" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51a586fc3ef87c685588a650c18882b4cf069d8adc0d7d9bd2670749cb4e82b" +checksum = "ba987629ab789f529426d6187dbafaa8209f5ee479c645184e4c1e33a59e2135" dependencies = [ - "bs58 0.5.0", + "futures", + "parity-scale-codec", + "polkadot-erasure-coding", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sp-core", + "sp-maybe-compressed-blob", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-approval-voting" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5910fa99def47accbb4505bef91f74614f62347bc0c53c11296d5ce70d8e255" +dependencies = [ + "bitvec", + "derive_more", "futures", "futures-timer", - "log", + "itertools 0.10.5", + "kvdb", + "merlin 3.0.0", + "parity-scale-codec", + "polkadot-node-jaeger", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-primitives", + "rand", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "sc-keystore", + "schnellru", + "schnorrkel 0.11.4", + "sp-application-crypto", + "sp-consensus", + "sp-consensus-slots", + "sp-runtime", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-av-store" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1583533dc82a719607323432c013e01c2a8c971eb7e7703ff5eadd762f4e3" +dependencies = [ + "bitvec", + "futures", + "futures-timer", + "kvdb", "parity-scale-codec", - "polkadot-primitives 4.0.0", - "prioritized-metered-channel", - "sc-cli 0.33.0", - "sc-service 0.32.0", - "sc-tracing 25.0.0", - "substrate-prometheus-endpoint", - "tracing-gum 4.0.0", + "polkadot-erasure-coding", + "polkadot-node-jaeger", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-primitives", + "sp-consensus", + "thiserror", + "tracing-gum", ] [[package]] -name = "polkadot-node-metrics" -version = "6.0.0" +name = "polkadot-node-core-backing" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3aac00c8be626db8de37699d3a66f109ad5399ee03122a670b12eb6cf21359" +checksum = "d7b5468fa618ccbeb4611b073d2c28b9440b51f4012e69c117e43192f9de8b17" +dependencies = [ + "bitvec", + "fatality", + "futures", + "polkadot-erasure-coding", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "polkadot-statement-table", + "sp-keystore", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-bitfield-signing" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4975e2ecc81d34605748781e9449a7b7ff956c385b46496005257a1a7dd56f0d" dependencies = [ - "bs58 0.5.0", + "futures", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sp-keystore", + "thiserror", + "tracing-gum", + "wasm-timer", +] + +[[package]] +name = "polkadot-node-core-candidate-validation" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcfd720b86c1ddf6616cf083a2cb273147687521c1d13a7f3c991b1d5ae03444" +dependencies = [ + "async-trait", "futures", "futures-timer", - "log", "parity-scale-codec", - "polkadot-primitives 6.0.0", - "prioritized-metered-channel", - "sc-cli 0.35.0", - "sc-service 0.34.0", - "sc-tracing 27.0.0", - "substrate-prometheus-endpoint", - "tracing-gum 6.0.0", + "polkadot-node-core-pvf", + "polkadot-node-metrics", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-parachain-primitives", + "polkadot-primitives", + "sp-maybe-compressed-blob", + "tracing-gum", ] [[package]] -name = "polkadot-node-network-protocol" -version = "4.0.0" +name = "polkadot-node-core-chain-api" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6de513655bf71400299cda1ccaebfa612fd3965e7ce5a9120b4ff37bfc80931" +checksum = "4a9f00bd39f433a2e8281524529853a3be54970e799a451e2c14fc5b75cf226f" +dependencies = [ + "futures", + "polkadot-node-metrics", + "polkadot-node-subsystem", + "polkadot-node-subsystem-types", + "sc-client-api", + "sc-consensus-babe", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-chain-selection" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea28475a96dfb6419432314d8021780e5c5b0f50a5525fd332e8b2a947a2deb5" +dependencies = [ + "futures", + "futures-timer", + "kvdb", + "parity-scale-codec", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-dispute-coordinator" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad9cfb3e775dc4c611a79e294549fe4b244052ddaacf14133380e793c25a99f" +dependencies = [ + "fatality", + "futures", + "kvdb", + "parity-scale-codec", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sc-keystore", + "schnellru", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-parachains-inherent" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2535ef374a218b1e9d05b98a903edbdddf4eea47f9e137fcc09c8e1bc199dd" dependencies = [ - "async-channel", "async-trait", + "futures", + "futures-timer", + "polkadot-node-subsystem", + "polkadot-overseer", + "polkadot-primitives", + "sp-blockchain", + "sp-inherents", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-prospective-parachains" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a8876cc0aa627190f1d41c01061a7acee9621703501d9a60118d35e81579f9" +dependencies = [ "bitvec", - "derive_more", "fatality", "futures", - "hex", "parity-scale-codec", - "polkadot-node-jaeger 4.0.0", - "polkadot-node-primitives 4.0.0", - "polkadot-primitives 4.0.0", - "rand 0.8.5", - "sc-authority-discovery 0.31.0", - "sc-network 0.31.0", - "strum", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", "thiserror", - "tracing-gum 4.0.0", + "tracing-gum", ] [[package]] -name = "polkadot-node-network-protocol" -version = "6.0.0" +name = "polkadot-node-core-provisioner" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c53384d262771317827b8839d9b2eff81a9e3d66c815211dcf8312d20ab72c9" +checksum = "25c88b17b93bf410a72bfb4543b1ae01bb0d33fd6cba9af1f0e74c4ef2b906ad" dependencies = [ - "async-channel", - "async-trait", "bitvec", - "derive_more", "fatality", "futures", - "hex", + "futures-timer", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-pvf" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c80f2810b2eb843f3282b11e7ce1624866b6dd1ee6a95541b5882b5df3f36f25" +dependencies = [ + "always-assert", + "array-bytes 6.2.2", + "blake3", + "cfg-if", + "futures", + "futures-timer", + "is_executable", + "libc", "parity-scale-codec", - "polkadot-node-jaeger 6.0.0", - "polkadot-node-primitives 6.0.0", - "polkadot-primitives 6.0.0", - "rand 0.8.5", - "sc-authority-discovery 0.33.0", - "sc-network 0.33.0", - "strum", + "pin-project", + "polkadot-core-primitives", + "polkadot-node-core-pvf-common", + "polkadot-node-metrics", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-parachain-primitives", + "polkadot-primitives", + "rand", + "slotmap", + "sp-core", + "sp-maybe-compressed-blob", + "sp-wasm-interface", + "tempfile", "thiserror", - "tracing-gum 6.0.0", + "tokio", + "tracing-gum", ] [[package]] -name = "polkadot-node-primitives" -version = "4.0.0" +name = "polkadot-node-core-pvf-checker" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e82ee5edac871310bd1ce16a035ad2fc901d6ddd69ea0bbabc7f0a70a02770a" +checksum = "14d8ddb21cb3ad1868967b116fbf289610880cb95313b2798762cdd8653d36b7" dependencies = [ - "bounded-vec", "futures", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-primitives", + "sp-keystore", + "thiserror", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-pvf-common" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80bbf311b112a8552e89e5be55b0305d86328ba04528e47d3203cd27751405bc" +dependencies = [ + "cfg-if", + "cpu-time", + "futures", + "landlock", + "libc", "parity-scale-codec", - "polkadot-parachain-primitives 3.0.0", - "polkadot-primitives 4.0.0", - "schnorrkel", - "serde", - "sp-application-crypto 27.0.0", - "sp-consensus-babe 0.29.0", - "sp-core 25.0.0", - "sp-keystore 0.31.0", - "sp-maybe-compressed-blob 9.0.0", - "sp-runtime 28.0.0", + "polkadot-parachain-primitives", + "polkadot-primitives", + "sc-executor", + "sc-executor-common", + "sc-executor-wasmtime", + "seccompiler", + "sp-core", + "sp-externalities", + "sp-io", + "sp-tracing", "thiserror", - "zstd 0.12.4", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-core-runtime-api" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17345f76b7ebcf2f1e1be5411a6420971ef60d69070f115e459b2f017f91bcb5" +dependencies = [ + "futures", + "polkadot-node-metrics", + "polkadot-node-subsystem", + "polkadot-node-subsystem-types", + "polkadot-primitives", + "schnellru", + "sp-consensus-babe", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-jaeger" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b099624af4597bac5d1617a3cab057785ee47e657de7ad078957bfa397d82c4" +dependencies = [ + "lazy_static", + "log", + "mick-jaeger", + "parity-scale-codec", + "parking_lot 0.12.1", + "polkadot-node-primitives", + "polkadot-primitives", + "sc-network", + "sp-core", + "thiserror", + "tokio", +] + +[[package]] +name = "polkadot-node-metrics" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b5b00a9646875f22ab45e61ede04f623a3fbbc03bae52263b3d558c964bc32" +dependencies = [ + "bs58 0.5.0", + "futures", + "futures-timer", + "log", + "parity-scale-codec", + "polkadot-primitives", + "prioritized-metered-channel 0.5.1", + "sc-cli", + "sc-service", + "sc-tracing", + "substrate-prometheus-endpoint", + "tracing-gum", +] + +[[package]] +name = "polkadot-node-network-protocol" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e420ba9220abaa468a393ff2834b7c2b4d7d87b6d903d9046dfd682c97d35d4c" +dependencies = [ + "async-channel", + "async-trait", + "bitvec", + "derive_more", + "fatality", + "futures", + "hex", + "parity-scale-codec", + "polkadot-node-jaeger", + "polkadot-node-primitives", + "polkadot-primitives", + "rand", + "sc-authority-discovery", + "sc-network", + "strum 0.24.1", + "thiserror", + "tracing-gum", ] [[package]] name = "polkadot-node-primitives" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90d056deb074d6a97be279fac580210ee847a1d09d9115ad094f83a86c2b6a91" +checksum = "366d18f1498426975c610246063149ad84788eb1e924cab6ee44a4d8958ecf61" dependencies = [ "bitvec", "bounded-vec", "futures", "parity-scale-codec", - "polkadot-parachain-primitives 5.0.0", - "polkadot-primitives 6.0.0", - "schnorrkel", + "polkadot-parachain-primitives", + "polkadot-primitives", + "schnorrkel 0.11.4", "serde", - "sp-application-crypto 29.0.0", - "sp-consensus-babe 0.31.0", - "sp-core 27.0.0", - "sp-keystore 0.33.0", - "sp-maybe-compressed-blob 10.0.0", - "sp-runtime 30.0.1", + "sp-application-crypto", + "sp-consensus-babe", + "sp-core", + "sp-keystore", + "sp-maybe-compressed-blob", + "sp-runtime", "thiserror", "zstd 0.12.4", ] [[package]] -name = "polkadot-node-subsystem-types" -version = "4.0.0" +name = "polkadot-node-subsystem" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1013b3bac6e9b76bbd71433c3eba36b5c0fa9306bfc473ec02e3a104e156d2" +checksum = "831cf07bf6588d7d8ab872f8f214b4b24b2c4243faf8028534f8a11a3f03c466" dependencies = [ - "async-trait", - "derive_more", - "futures", - "orchestra", - "polkadot-node-jaeger 4.0.0", - "polkadot-node-network-protocol 4.0.0", - "polkadot-node-primitives 4.0.0", - "polkadot-primitives 4.0.0", - "polkadot-statement-table 4.0.0", - "sc-client-api 25.0.0", - "sc-network 0.31.0", - "sc-transaction-pool-api 25.0.0", - "smallvec", - "sp-api 23.0.0", - "sp-authority-discovery 23.0.0", - "sp-consensus-babe 0.29.0", - "substrate-prometheus-endpoint", - "thiserror", + "polkadot-node-jaeger", + "polkadot-node-subsystem-types", + "polkadot-overseer", ] [[package]] name = "polkadot-node-subsystem-types" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f64090deea91a0cefce3f378fa6a1e901b48852f3ed18ab622271f241fefe1d" +checksum = "bd132afdfcdf2e30f7924c9561bbc1208b0838ab9c2275bf0ef32525f63b8bd0" dependencies = [ "async-trait", "bitvec", "derive_more", "futures", "orchestra", - "polkadot-node-jaeger 6.0.0", - "polkadot-node-network-protocol 6.0.0", - "polkadot-node-primitives 6.0.0", - "polkadot-primitives 6.0.0", - "polkadot-statement-table 6.0.0", - "sc-client-api 27.0.0", - "sc-network 0.33.0", - "sc-transaction-pool-api 27.0.0", + "polkadot-node-jaeger", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-primitives", + "polkadot-statement-table", + "sc-client-api", + "sc-network", + "sc-transaction-pool-api", "smallvec", - "sp-api 25.0.0", - "sp-authority-discovery 25.0.0", - "sp-blockchain 27.0.0", - "sp-consensus-babe 0.31.0", - "sp-runtime 30.0.1", + "sp-api", + "sp-authority-discovery", + "sp-blockchain", + "sp-consensus-babe", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", ] [[package]] -name = "polkadot-overseer" -version = "4.0.0" +name = "polkadot-node-subsystem-util" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2f547e981cbd72357ba30952193844d30de5063e9d304c117c9b941f12b5f84" +checksum = "d32c2f2027689777bd61681d769ed5ec726144905c4e3cb16c5f8a4edb55250a" dependencies = [ "async-trait", + "derive_more", + "fatality", "futures", - "futures-timer", - "orchestra", + "futures-channel", + "itertools 0.10.5", + "kvdb", + "parity-db", + "parity-scale-codec", "parking_lot 0.12.1", - "polkadot-node-metrics 4.0.0", - "polkadot-node-network-protocol 4.0.0", - "polkadot-node-primitives 4.0.0", - "polkadot-node-subsystem-types 4.0.0", - "polkadot-primitives 4.0.0", - "sc-client-api 25.0.0", - "sp-api 23.0.0", - "sp-core 25.0.0", - "tikv-jemalloc-ctl", - "tracing-gum 4.0.0", + "pin-project", + "polkadot-node-jaeger", + "polkadot-node-metrics", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-types", + "polkadot-overseer", + "polkadot-primitives", + "prioritized-metered-channel 0.5.1", + "rand", + "sc-client-api", + "schnellru", + "sp-application-crypto", + "sp-core", + "sp-keystore", + "thiserror", + "tracing-gum", ] [[package]] name = "polkadot-overseer" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830258b62d41bdf9cee96bd8377be0697639d766f527af6d8bf507f5ee2db59c" +checksum = "9aa0b71f50f0be1959bcb10a46105ca66b9c6868d549385a247750e5b7a45c77" dependencies = [ "async-trait", "futures", "futures-timer", "orchestra", "parking_lot 0.12.1", - "polkadot-node-metrics 6.0.0", - "polkadot-node-network-protocol 6.0.0", - "polkadot-node-primitives 6.0.0", - "polkadot-node-subsystem-types 6.0.0", - "polkadot-primitives 6.0.0", - "sc-client-api 27.0.0", - "sp-api 25.0.0", - "sp-core 27.0.0", + "polkadot-node-metrics", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem-types", + "polkadot-primitives", + "sc-client-api", + "sp-api", + "sp-core", "tikv-jemalloc-ctl", - "tracing-gum 6.0.0", + "tracing-gum", ] [[package]] name = "polkadot-parachain-primitives" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42265630c0c48e25d7ee5a9f4bdcafd003be65c0a44deeb6541620ca169fa519" -dependencies = [ - "bounded-collections", - "derive_more", - "frame-support 25.0.0", - "parity-scale-codec", - "polkadot-core-primitives 4.0.0", - "scale-info", - "serde", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "polkadot-parachain-primitives" -version = "5.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b0b8521215ec97799c75a7531c2ac0627fa2b8916fde2bdc6c79bf05b93645" +checksum = "9b37c55955147479e7b2f3c2e5385db4846ac3e3b997cd4a4ad52344524b5447" dependencies = [ "bounded-collections", "derive_more", "parity-scale-codec", - "polkadot-core-primitives 6.0.0", + "polkadot-core-primitives", "scale-info", "serde", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-weights 26.0.0", + "sp-core", + "sp-runtime", + "sp-std", + "sp-weights", ] [[package]] name = "polkadot-primitives" -version = "4.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4508ff6b035edc08c54bb61238500179963f6f1eb8266dce6a5625509124bc" +checksum = "8aefd230a654f5b2aee18ebbd9c081835def0e1898ee6c018501dd77c18f5929" dependencies = [ "bitvec", "hex-literal", "parity-scale-codec", - "polkadot-core-primitives 4.0.0", - "polkadot-parachain-primitives 3.0.0", + "polkadot-core-primitives", + "polkadot-parachain-primitives", "scale-info", "serde", - "sp-api 23.0.0", - "sp-application-crypto 27.0.0", - "sp-arithmetic 20.0.0", - "sp-authority-discovery 23.0.0", - "sp-consensus-slots 0.29.0", - "sp-core 25.0.0", - "sp-inherents 23.0.0", - "sp-io 27.0.0", - "sp-keystore 0.31.0", - "sp-runtime 28.0.0", - "sp-staking 23.0.0", - "sp-std 12.0.0", + "sp-api", + "sp-application-crypto", + "sp-arithmetic", + "sp-authority-discovery", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] -name = "polkadot-primitives" -version = "6.0.0" +name = "polkadot-rpc" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6b60b3e37d83b42f483b2ec9a2a195d83dc7fbfaa57ba1ca9142eec6bf276f" +checksum = "382eada9005c73375778e1dca58116e0660431cf90989fe0dde54ebe1f621a1e" dependencies = [ - "bitvec", - "hex-literal", - "parity-scale-codec", - "polkadot-core-primitives 6.0.0", - "polkadot-parachain-primitives 5.0.0", - "scale-info", - "serde", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-arithmetic 22.0.0", - "sp-authority-discovery 25.0.0", - "sp-consensus-slots 0.31.0", - "sp-core 27.0.0", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-keystore 0.33.0", - "sp-runtime 30.0.1", - "sp-staking 25.0.0", - "sp-std 13.0.0", + "jsonrpsee", + "mmr-rpc", + "pallet-transaction-payment-rpc", + "polkadot-primitives", + "sc-chain-spec", + "sc-client-api", + "sc-consensus-babe", + "sc-consensus-babe-rpc", + "sc-consensus-beefy", + "sc-consensus-beefy-rpc", + "sc-consensus-epochs", + "sc-consensus-grandpa", + "sc-consensus-grandpa-rpc", + "sc-rpc", + "sc-rpc-spec-v2", + "sc-sync-state-rpc", + "sc-transaction-pool-api", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-keystore", + "sp-runtime", + "substrate-frame-rpc-system", + "substrate-state-trie-migration-rpc", ] [[package]] @@ -9637,41 +9416,35 @@ name = "polkadot-runtime" version = "1.0.0" dependencies = [ "binary-merkle-tree", - "bitvec", - "frame-benchmarking 27.0.0", - "frame-election-provider-support 27.0.0", - "frame-executive 27.0.0", + "frame-benchmarking", + "frame-election-provider-support", + "frame-executive", "frame-remote-externalities", - "frame-support 27.0.0", - "frame-system 27.0.0", - "frame-system-benchmarking 27.0.0", - "frame-system-rpc-runtime-api 25.0.0", - "frame-try-runtime 0.33.0", - "hex-literal", - "log", - "pallet-asset-rate 6.0.0", - "pallet-authority-discovery 27.0.0", - "pallet-authorship 27.0.0", - "pallet-babe 27.0.0", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", + "log", + "pallet-asset-rate", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", "pallet-bags-list", - "pallet-balances 27.0.0", + "pallet-balances", "pallet-beefy", "pallet-beefy-mmr", "pallet-bounties", "pallet-child-bounties", - "pallet-collective 27.0.0", "pallet-conviction-voting", - "pallet-democracy", - "pallet-election-provider-multi-phase 26.0.0", - "pallet-election-provider-support-benchmarking 26.0.0", - "pallet-elections-phragmen", - "pallet-fast-unstake 26.0.0", + "pallet-election-provider-multi-phase", + "pallet-election-provider-support-benchmarking", + "pallet-fast-unstake", "pallet-grandpa", "pallet-identity", "pallet-im-online", "pallet-indices", - "pallet-membership 27.0.0", - "pallet-message-queue 30.0.0", + "pallet-message-queue", "pallet-mmr", "pallet-multisig", "pallet-nomination-pools", @@ -9680,170 +9453,114 @@ dependencies = [ "pallet-offences", "pallet-offences-benchmarking", "pallet-preimage", - "pallet-proxy 27.0.0", + "pallet-proxy", "pallet-referenda", - "pallet-scheduler 28.0.0", - "pallet-session 27.0.0", + "pallet-scheduler", + "pallet-session", "pallet-session-benchmarking", - "pallet-staking 27.0.0", + "pallet-staking", "pallet-staking-reward-curve", - "pallet-staking-reward-fn 18.0.0", + "pallet-staking-reward-fn", "pallet-staking-runtime-api", - "pallet-timestamp 26.0.0", - "pallet-tips", - "pallet-transaction-payment 27.0.0", - "pallet-transaction-payment-rpc-runtime-api 27.0.0", - "pallet-treasury 26.0.0", - "pallet-utility 27.0.0", - "pallet-vesting 27.0.0", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-treasury", + "pallet-utility", + "pallet-vesting", "pallet-whitelist", - "pallet-xcm 6.0.0", - "pallet-xcm-benchmarks 6.0.2", + "pallet-xcm", + "pallet-xcm-benchmarks", "parity-scale-codec", - "polkadot-primitives 6.0.0", - "polkadot-runtime-common 6.0.0", + "polkadot-primitives", + "polkadot-runtime-common", "polkadot-runtime-constants", - "polkadot-runtime-parachains 6.0.0", - "rustc-hex", + "polkadot-runtime-parachains", "scale-info", "separator", - "serde", - "serde_derive", "serde_json", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-arithmetic 22.0.0", - "sp-authority-discovery 25.0.0", - "sp-block-builder 25.0.0", - "sp-consensus-babe 0.31.0", + "sp-api", + "sp-application-crypto", + "sp-arithmetic", + "sp-authority-discovery", + "sp-block-builder", + "sp-consensus-babe", "sp-consensus-beefy", - "sp-core 27.0.0", - "sp-debug-derive 13.0.0", - "sp-genesis-builder 0.6.0", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-keyring 30.0.0", - "sp-mmr-primitives", - "sp-npos-elections 25.0.0", - "sp-offchain 25.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-staking 25.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-tracing 15.0.0", - "sp-transaction-pool 25.0.0", - "sp-trie 28.0.0", - "sp-version 28.0.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", - "static_assertions", - "substrate-wasm-builder 16.0.0", + "sp-core", + "sp-debug-derive", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-npos-elections", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", + "sp-storage", + "sp-tracing", + "sp-transaction-pool", + "sp-trie", + "sp-version", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", "tiny-keccak", "tokio", ] [[package]] name = "polkadot-runtime-common" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a788f8ed8b33262c33f72d78e3416c5991e40d333178ae43000a92181ee44bca" -dependencies = [ - "bitvec", - "frame-benchmarking 25.0.0", - "frame-election-provider-support 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "impl-trait-for-tuples", - "libsecp256k1", - "log", - "pallet-asset-rate 4.0.0", - "pallet-authorship 25.0.0", - "pallet-babe 25.0.0", - "pallet-balances 25.0.0", - "pallet-election-provider-multi-phase 24.0.0", - "pallet-fast-unstake 24.0.0", - "pallet-session 25.0.0", - "pallet-staking 25.0.0", - "pallet-staking-reward-fn 16.0.0", - "pallet-timestamp 24.0.0", - "pallet-transaction-payment 25.0.0", - "pallet-treasury 24.0.0", - "pallet-vesting 25.0.0", - "pallet-xcm-benchmarks 4.0.1", - "parity-scale-codec", - "polkadot-primitives 4.0.0", - "polkadot-runtime-parachains 4.0.0", - "rustc-hex", - "scale-info", - "serde", - "serde_derive", - "slot-range-helper 4.0.0", - "sp-api 23.0.0", - "sp-core 25.0.0", - "sp-inherents 23.0.0", - "sp-io 27.0.0", - "sp-npos-elections 23.0.0", - "sp-runtime 28.0.0", - "sp-session 24.0.0", - "sp-staking 23.0.0", - "sp-std 12.0.0", - "staging-xcm 4.0.0", - "staging-xcm-builder 4.0.1", - "staging-xcm-executor 4.0.2", - "static_assertions", -] - -[[package]] -name = "polkadot-runtime-common" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96287e584d1f6a25a9b435d1334287d13da294d85d339ededc7715ce6d5be686" +checksum = "4641a850b7415a42e56bd262aba243ed77a9280cb2b825a427c425bdc8961d70" dependencies = [ "bitvec", - "frame-benchmarking 27.0.0", - "frame-election-provider-support 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", "impl-trait-for-tuples", "libsecp256k1", "log", - "pallet-asset-rate 6.0.0", - "pallet-authorship 27.0.0", - "pallet-babe 27.0.0", - "pallet-balances 27.0.0", - "pallet-election-provider-multi-phase 26.0.0", - "pallet-fast-unstake 26.0.0", + "pallet-asset-rate", + "pallet-authorship", + "pallet-babe", + "pallet-balances", + "pallet-broker", + "pallet-election-provider-multi-phase", + "pallet-fast-unstake", "pallet-identity", - "pallet-session 27.0.0", - "pallet-staking 27.0.0", - "pallet-staking-reward-fn 18.0.0", - "pallet-timestamp 26.0.0", - "pallet-transaction-payment 27.0.0", - "pallet-treasury 26.0.0", - "pallet-vesting 27.0.0", - "pallet-xcm-benchmarks 6.0.2", - "parity-scale-codec", - "polkadot-primitives 6.0.0", - "polkadot-runtime-parachains 6.0.0", + "pallet-session", + "pallet-staking", + "pallet-staking-reward-fn", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-treasury", + "pallet-vesting", + "pallet-xcm-benchmarks", + "parity-scale-codec", + "polkadot-primitives", + "polkadot-runtime-parachains", "rustc-hex", "scale-info", "serde", "serde_derive", - "slot-range-helper 6.0.0", - "sp-api 25.0.0", - "sp-core 27.0.0", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-npos-elections 25.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-staking 25.0.0", - "sp-std 13.0.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", + "slot-range-helper", + "sp-api", + "sp-core", + "sp-inherents", + "sp-io", + "sp-npos-elections", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", "static_assertions", ] @@ -9851,173 +9568,254 @@ dependencies = [ name = "polkadot-runtime-constants" version = "1.0.0" dependencies = [ - "frame-support 27.0.0", - "polkadot-primitives 6.0.0", - "polkadot-runtime-common 6.0.0", + "frame-support", + "polkadot-primitives", + "polkadot-runtime-common", "smallvec", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-weights 26.0.0", - "staging-xcm 6.0.0", -] - -[[package]] -name = "polkadot-runtime-metrics" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe45b01d9d621174c9c0eef0871aeead5986393838206fe58df3ae414bcb8d2" -dependencies = [ - "bs58 0.5.0", - "frame-benchmarking 25.0.0", - "parity-scale-codec", - "polkadot-primitives 4.0.0", - "sp-std 12.0.0", - "sp-tracing 14.0.0", + "sp-core", + "sp-runtime", + "sp-weights", + "staging-xcm-builder", ] [[package]] name = "polkadot-runtime-metrics" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416d2a4a0c3792669984484d5fe831f20dea9ab734b00befbb0250f992144be6" +checksum = "4ac3c6ee03f38556274b26049c51c5c7095abfd4ebfd11cd492918a4344f2851" dependencies = [ "bs58 0.5.0", - "frame-benchmarking 27.0.0", + "frame-benchmarking", "parity-scale-codec", - "polkadot-primitives 6.0.0", - "sp-std 13.0.0", - "sp-tracing 15.0.0", + "polkadot-primitives", + "sp-std", + "sp-tracing", ] [[package]] name = "polkadot-runtime-parachains" -version = "4.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936dbae8a7a88dba07da726d779126716e05364d8475ced1c313f32755050a02" +checksum = "6d253ef2952097398d98ed12729e47f9328bcd1baa92c3acc1524a4baca7d1ac" dependencies = [ "bitflags 1.3.2", "bitvec", "derive_more", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "frame-system 25.0.0", + "frame-benchmarking", + "frame-support", + "frame-system", "impl-trait-for-tuples", "log", - "pallet-authority-discovery 25.0.0", - "pallet-authorship 25.0.0", - "pallet-babe 25.0.0", - "pallet-balances 25.0.0", - "pallet-message-queue 28.0.0", - "pallet-session 25.0.0", - "pallet-staking 25.0.0", - "pallet-timestamp 24.0.0", - "pallet-vesting 25.0.0", - "parity-scale-codec", - "polkadot-core-primitives 4.0.0", - "polkadot-parachain-primitives 3.0.0", - "polkadot-primitives 4.0.0", - "polkadot-runtime-metrics 4.0.0", - "rand 0.8.5", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-balances", + "pallet-broker", + "pallet-message-queue", + "pallet-session", + "pallet-staking", + "pallet-timestamp", + "pallet-vesting", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-runtime-metrics", + "rand", "rand_chacha 0.3.1", "rustc-hex", "scale-info", "serde", - "sp-api 23.0.0", - "sp-application-crypto 27.0.0", - "sp-core 25.0.0", - "sp-inherents 23.0.0", - "sp-io 27.0.0", - "sp-keystore 0.31.0", - "sp-runtime 28.0.0", - "sp-session 24.0.0", - "sp-staking 23.0.0", - "sp-std 12.0.0", - "staging-xcm 4.0.0", - "staging-xcm-executor 4.0.2", + "sp-api", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", + "sp-tracing", + "staging-xcm", + "staging-xcm-executor", "static_assertions", ] [[package]] -name = "polkadot-runtime-parachains" -version = "6.0.0" +name = "polkadot-service" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c00498f856712916e54ef1c214fa8fa6cab193497b0ab99f2a79eff6525596" +checksum = "d75bf984471c2608905176b62726b3552bbfdc3e04ebdc7fe75e5179ff215588" dependencies = [ - "bitflags 1.3.2", - "bitvec", - "derive_more", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "impl-trait-for-tuples", + "async-trait", + "frame-benchmarking", + "frame-benchmarking-cli", + "frame-support", + "frame-system", + "frame-system-rpc-runtime-api", + "futures", + "hex-literal", + "is_executable", + "kvdb", + "kvdb-rocksdb", "log", - "pallet-authority-discovery 27.0.0", - "pallet-authorship 27.0.0", - "pallet-babe 27.0.0", - "pallet-balances 27.0.0", - "pallet-message-queue 30.0.0", - "pallet-session 27.0.0", - "pallet-staking 27.0.0", - "pallet-timestamp 26.0.0", - "pallet-vesting 27.0.0", + "mmr-gadget", + "pallet-babe", + "pallet-im-online", + "pallet-staking", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "parity-db", "parity-scale-codec", - "polkadot-core-primitives 6.0.0", - "polkadot-parachain-primitives 5.0.0", - "polkadot-primitives 6.0.0", - "polkadot-runtime-metrics 6.0.0", - "rand 0.8.5", - "rand_chacha 0.3.1", - "rustc-hex", - "scale-info", + "parking_lot 0.12.1", + "polkadot-approval-distribution", + "polkadot-availability-bitfield-distribution", + "polkadot-availability-distribution", + "polkadot-availability-recovery", + "polkadot-collator-protocol", + "polkadot-core-primitives", + "polkadot-dispute-distribution", + "polkadot-gossip-support", + "polkadot-network-bridge", + "polkadot-node-collation-generation", + "polkadot-node-core-approval-voting", + "polkadot-node-core-av-store", + "polkadot-node-core-backing", + "polkadot-node-core-bitfield-signing", + "polkadot-node-core-candidate-validation", + "polkadot-node-core-chain-api", + "polkadot-node-core-chain-selection", + "polkadot-node-core-dispute-coordinator", + "polkadot-node-core-parachains-inherent", + "polkadot-node-core-prospective-parachains", + "polkadot-node-core-provisioner", + "polkadot-node-core-pvf", + "polkadot-node-core-pvf-checker", + "polkadot-node-core-runtime-api", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-types", + "polkadot-node-subsystem-util", + "polkadot-overseer", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-rpc", + "polkadot-runtime-parachains", + "polkadot-statement-distribution", + "sc-authority-discovery", + "sc-basic-authorship", + "sc-block-builder", + "sc-chain-spec", + "sc-client-api", + "sc-client-db", + "sc-consensus", + "sc-consensus-babe", + "sc-consensus-beefy", + "sc-consensus-grandpa", + "sc-consensus-slots", + "sc-executor", + "sc-keystore", + "sc-network", + "sc-network-common", + "sc-network-sync", + "sc-offchain", + "sc-service", + "sc-sync-state-rpc", + "sc-sysinfo", + "sc-telemetry", + "sc-transaction-pool", + "sc-transaction-pool-api", + "schnellru", "serde", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-core 27.0.0", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-keystore 0.33.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-staking 25.0.0", - "sp-std 13.0.0", - "sp-tracing 15.0.0", - "staging-xcm 6.0.0", - "staging-xcm-executor 6.0.2", - "static_assertions", + "serde_json", + "sp-api", + "sp-authority-discovery", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-consensus-beefy", + "sp-consensus-grandpa", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-keystore", + "sp-mmr-primitives", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-state-machine", + "sp-storage", + "sp-timestamp", + "sp-transaction-pool", + "sp-version", + "sp-weights", + "substrate-prometheus-endpoint", + "thiserror", + "tracing-gum", ] [[package]] -name = "polkadot-statement-table" -version = "4.0.0" +name = "polkadot-statement-distribution" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22b2a11cb8871f7e30a8f5e455c92d19a186065644ee00f9acda550ff89dacce" +checksum = "4b82b48ff9204ea663ccccde78aefa8a524958aadff5c84a4f1fd773c291057d" dependencies = [ + "arrayvec 0.7.4", + "bitvec", + "fatality", + "futures", + "futures-timer", + "indexmap 1.9.3", "parity-scale-codec", - "polkadot-primitives 4.0.0", - "sp-core 25.0.0", + "polkadot-node-network-protocol", + "polkadot-node-primitives", + "polkadot-node-subsystem", + "polkadot-node-subsystem-util", + "polkadot-primitives", + "sp-keystore", + "sp-staking", + "thiserror", + "tracing-gum", ] [[package]] name = "polkadot-statement-table" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e90105dd6e7a739ba7a91d26156daa143b99c058dd4df101664ea77ced14faf" +checksum = "478dea03265eb2465010dae149616e4f28fe858e103671b1a96dc19e9e388c8f" dependencies = [ "parity-scale-codec", - "polkadot-primitives 6.0.0", - "sp-core 27.0.0", + "polkadot-primitives", + "sp-core", +] + +[[package]] +name = "polkadot-system-emulated-network" +version = "0.1.0" +dependencies = [ + "asset-hub-polkadot-emulated-chain", + "bridge-hub-polkadot-emulated-chain", + "collectives-polkadot-emulated-chain", + "emulated-integration-tests-common", + "penpal-emulated-chain", + "polkadot-emulated-chain", ] [[package]] name = "polling" -version = "3.3.1" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e" +checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" dependencies = [ "cfg-if", "concurrent-queue", "pin-project-lite 0.2.13", - "rustix 0.38.28", + "rustix 0.38.31", "tracing", "windows-sys 0.52.0", ] @@ -10105,9 +9903,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ "proc-macro2", "syn 2.0.48", @@ -10144,6 +9942,22 @@ dependencies = [ "tracing", ] +[[package]] +name = "prioritized-metered-channel" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a172e6cc603231f2cf004232eabcecccc0da53ba576ab286ef7baa0cfc7927ad" +dependencies = [ + "coarsetime", + "crossbeam-queue", + "derive_more", + "futures", + "futures-timer", + "nanorand", + "thiserror", + "tracing", +] + [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -10156,14 +9970,22 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" dependencies = [ - "toml_datetime", "toml_edit 0.20.2", ] +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.0", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -10354,7 +10176,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94b0b33c13a79f669c85defaf4c275dc86a0c0372807d0ca3d78e0bb87274863" dependencies = [ "bytes", - "rand 0.8.5", + "rand", "ring 0.16.20", "rustc-hash", "rustls 0.20.9", @@ -10380,19 +10202,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - [[package]] name = "rand" version = "0.8.5" @@ -10449,16 +10258,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" dependencies = [ "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", + "rand", ] [[package]] @@ -10527,13 +10327,26 @@ dependencies = [ ] [[package]] -name = "redox_users" -version = "0.4.4" +name = "redox_users" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +dependencies = [ + "getrandom 0.2.12", + "libredox", + "thiserror", +] + +[[package]] +name = "reed-solomon-novelpoly" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "58130877ca403ab42c864fbac74bb319a0746c07a634a92a5cfc7f54af272582" dependencies = [ - "getrandom 0.2.12", - "libredox", + "derive_more", + "fs-err", + "itertools 0.11.0", + "static_init", "thiserror", ] @@ -10693,34 +10506,19 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "272eaa4f1b4b5357d89d1f8f504cb5ee81a105bf7e5c295f053c6e521f2a199b" -dependencies = [ - "frame-support 25.0.0", - "polkadot-primitives 4.0.0", - "polkadot-runtime-common 4.0.0", - "smallvec", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-weights 24.0.0", - "staging-xcm 4.0.0", -] - -[[package]] -name = "rococo-runtime-constants" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96315fe3c89019f13bf11c438bafd4bb96b510945cea5342267c4498633b4387" +checksum = "3b5b507493a19b5061eb2860c394847261216c7ea7f8f62ba2cb02e55c27d611" dependencies = [ - "frame-support 27.0.0", - "polkadot-primitives 6.0.0", - "polkadot-runtime-common 6.0.0", + "frame-support", + "polkadot-primitives", + "polkadot-runtime-common", "smallvec", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-weights 26.0.0", - "staging-xcm 6.0.0", + "sp-core", + "sp-runtime", + "sp-weights", + "staging-xcm", + "staging-xcm-builder", ] [[package]] @@ -10820,9 +10618,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" dependencies = [ "bitflags 2.4.1", "errno", @@ -10938,33 +10736,21 @@ dependencies = [ [[package]] name = "sc-allocator" -version = "20.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b4c5976a9cff7fcf24c946276a62ea7837862b6f3bf9f8011f08faf4f08474" -dependencies = [ - "log", - "sp-core 25.0.0", - "sp-wasm-interface 18.0.0", - "thiserror", -] - -[[package]] -name = "sc-allocator" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79ad8791d398db62202f541849b3260ad5c9cf20a1982e3f4ad92f9a629ade76" +checksum = "43b05714bc70605d5f8983612d1643d875cd4782ef53a8720907a0eb75070cba" dependencies = [ "log", - "sp-core 27.0.0", - "sp-wasm-interface 19.0.0", + "sp-core", + "sp-wasm-interface", "thiserror", ] [[package]] name = "sc-authority-discovery" -version = "0.31.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb7e0e8a4ea5304b65d49c0085a458ed2e43394f95457689875d3e0c6e118dee" +checksum = "a1c23040352415cdcc22203d3b18e56f3516e51865f106f8bbf7efa95b411a59" dependencies = [ "async-trait", "futures", @@ -10972,110 +10758,68 @@ dependencies = [ "ip_network", "libp2p", "log", - "multihash 0.17.0", + "multihash 0.18.1", + "multihash-codetable", "parity-scale-codec", "prost", "prost-build", - "rand 0.8.5", - "sc-client-api 25.0.0", - "sc-network 0.31.0", - "sp-api 23.0.0", - "sp-authority-discovery 23.0.0", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", - "sp-keystore 0.31.0", - "sp-runtime 28.0.0", + "rand", + "sc-client-api", + "sc-network", + "sp-api", + "sp-authority-discovery", + "sp-blockchain", + "sp-core", + "sp-keystore", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", ] [[package]] -name = "sc-authority-discovery" -version = "0.33.0" +name = "sc-basic-authorship" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e563c043124ee28a6723ac320a1aba80283932e8ba34faa7ef427331961780" +checksum = "c016e38155386e23649a4a995ea67c55a1fe25a54c7cc7509954d454ee75eb3b" dependencies = [ - "async-trait", "futures", "futures-timer", - "ip_network", - "libp2p", "log", - "multihash 0.18.1", - "multihash-codetable", "parity-scale-codec", - "prost", - "prost-build", - "rand 0.8.5", - "sc-client-api 27.0.0", - "sc-network 0.33.0", - "sp-api 25.0.0", - "sp-authority-discovery 25.0.0", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-keystore 0.33.0", - "sp-runtime 30.0.1", + "sc-block-builder", + "sc-proposer-metrics", + "sc-telemetry", + "sc-transaction-pool-api", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-inherents", + "sp-runtime", "substrate-prometheus-endpoint", - "thiserror", -] - -[[package]] -name = "sc-block-builder" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d3999b9b758c09a6c1155e481b683ee87712f071cc5a0679f9ee4906a14a404" -dependencies = [ - "parity-scale-codec", - "sc-client-api 25.0.0", - "sp-api 23.0.0", - "sp-block-builder 23.0.0", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", - "sp-inherents 23.0.0", - "sp-runtime 28.0.0", ] [[package]] name = "sc-block-builder" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b900efcf276c61da505e20ac275b2bae8f03b8ceba20dc7e276edec12ca49355" +checksum = "656b85de8aad8dd758f2e5f250f300e4711f294f238c9299064fbd624cb263f7" dependencies = [ "parity-scale-codec", - "sp-api 25.0.0", - "sp-block-builder 25.0.0", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-inherents 25.0.0", - "sp-runtime 30.0.1", - "sp-trie 28.0.0", -] - -[[package]] -name = "sc-chain-spec" -version = "24.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7e711ea9870d3fb8e2a3ea5b601a9e20c63d0d2f457f40146407721e246a77" -dependencies = [ - "memmap2", - "sc-chain-spec-derive", - "sc-client-api 25.0.0", - "sc-executor 0.29.0", - "sc-network 0.31.0", - "sc-telemetry 12.0.0", - "serde", - "serde_json", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-state-machine 0.32.0", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-trie", ] [[package]] name = "sc-chain-spec" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31471216bdcef2195151d1e3324ec6fd09a6d87b306a15fae4590c0675f0d4c1" +checksum = "f7f6a6926973e084fe9b23ffee9784cd41d84ea0627c605891542661bd9ff958" dependencies = [ "array-bytes 6.2.2", "docify", @@ -11083,27 +10827,27 @@ dependencies = [ "memmap2", "parity-scale-codec", "sc-chain-spec-derive", - "sc-client-api 27.0.0", - "sc-executor 0.31.0", - "sc-network 0.33.0", - "sc-telemetry 14.0.0", + "sc-client-api", + "sc-executor", + "sc-network", + "sc-telemetry", "serde", "serde_json", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-genesis-builder 0.6.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", + "sp-blockchain", + "sp-core", + "sp-genesis-builder", + "sp-io", + "sp-runtime", + "sp-state-machine", ] [[package]] name = "sc-chain-spec-derive" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f25158f791eb48715da9322375598b541cadd1f193674e8a4d77c79ffa3d95d" +checksum = "f2e80fbdaea194762d4b4b0eec389037c25ad102676203b42d684774ae3019b8" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.48", @@ -11111,148 +10855,79 @@ dependencies = [ [[package]] name = "sc-cli" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22c61058223f80c1f961b03f7737529609a3283eef91129e971a1966101c18ea" -dependencies = [ - "array-bytes 6.2.2", - "chrono", - "clap", - "fdlimit 0.2.1", - "futures", - "libp2p-identity", - "log", - "names", - "parity-scale-codec", - "rand 0.8.5", - "regex", - "rpassword", - "sc-client-api 25.0.0", - "sc-client-db 0.32.0", - "sc-keystore 22.0.0", - "sc-mixnet 0.1.0", - "sc-network 0.31.0", - "sc-service 0.32.0", - "sc-telemetry 12.0.0", - "sc-tracing 25.0.0", - "sc-utils 11.0.0", - "serde", - "serde_json", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", - "sp-keyring 28.0.0", - "sp-keystore 0.31.0", - "sp-panic-handler", - "sp-runtime 28.0.0", - "sp-version 26.0.0", - "thiserror", - "tiny-bip39", - "tokio", -] - -[[package]] -name = "sc-cli" -version = "0.35.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e59c23e005876d2eca1e90ae2deaf85b4c78861f21b9fc3caf6535ca19f6ad9" +checksum = "9819b656041094ca4e97402be145c2bcf3f47d00d854708b25ecd3211eafcd62" dependencies = [ "array-bytes 6.2.2", "bip39", "chrono", "clap", - "fdlimit 0.3.0", + "fdlimit", "futures", "itertools 0.10.5", "libp2p-identity", "log", "names", "parity-scale-codec", - "rand 0.8.5", + "rand", "regex", "rpassword", - "sc-client-api 27.0.0", - "sc-client-db 0.34.0", - "sc-keystore 24.0.0", - "sc-mixnet 0.3.0", - "sc-network 0.33.0", - "sc-service 0.34.0", - "sc-telemetry 14.0.0", - "sc-tracing 27.0.0", - "sc-utils 13.0.0", + "sc-client-api", + "sc-client-db", + "sc-keystore", + "sc-mixnet", + "sc-network", + "sc-service", + "sc-telemetry", + "sc-tracing", + "sc-utils", "serde", "serde_json", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-keyring 30.0.0", - "sp-keystore 0.33.0", + "sp-blockchain", + "sp-core", + "sp-keyring", + "sp-keystore", "sp-panic-handler", - "sp-runtime 30.0.1", - "sp-version 28.0.0", + "sp-runtime", + "sp-version", "thiserror", "tokio", ] [[package]] name = "sc-client-api" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d32101f415f4d7ddbe8b5de1c1387a78d6dce070e26407ec605fe9f3fc9e23" -dependencies = [ - "fnv", - "futures", - "log", - "parity-scale-codec", - "parking_lot 0.12.1", - "sc-executor 0.29.0", - "sc-transaction-pool-api 25.0.0", - "sc-utils 11.0.0", - "sp-api 23.0.0", - "sp-blockchain 25.0.0", - "sp-consensus 0.29.0", - "sp-core 25.0.0", - "sp-database", - "sp-externalities 0.23.0", - "sp-runtime 28.0.0", - "sp-state-machine 0.32.0", - "sp-statement-store 7.0.0", - "sp-storage 17.0.0", - "sp-trie 26.0.0", - "substrate-prometheus-endpoint", -] - -[[package]] -name = "sc-client-api" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9eb785ab5be9a6cacc3cebf137539d66cd9fb05d5472d4aa4aa83f65004c799" +checksum = "af05565a0f6467ebe0b430f3a44524fecee9e4aff621647ea5eab8833f775b6f" dependencies = [ "fnv", "futures", "log", "parity-scale-codec", "parking_lot 0.12.1", - "sc-executor 0.31.0", - "sc-transaction-pool-api 27.0.0", - "sc-utils 13.0.0", - "sp-api 25.0.0", - "sp-blockchain 27.0.0", - "sp-consensus 0.31.0", - "sp-core 27.0.0", + "sc-executor", + "sc-transaction-pool-api", + "sc-utils", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", "sp-database", - "sp-externalities 0.24.0", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", - "sp-statement-store 9.0.0", - "sp-storage 18.0.0", - "sp-trie 28.0.0", + "sp-externalities", + "sp-runtime", + "sp-state-machine", + "sp-statement-store", + "sp-storage", + "sp-trie", "substrate-prometheus-endpoint", ] [[package]] name = "sc-client-db" -version = "0.32.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4ced79f609a44782874d856cf39d256838957195ef34f4fb8ced90bf4b725d0" +checksum = "6db9fbd18eb275120fdf2e9558a5006a69022405abb9c260c91d218ddb05db39" dependencies = [ "hash-db", "kvdb", @@ -11263,102 +10938,178 @@ dependencies = [ "parity-db", "parity-scale-codec", "parking_lot 0.12.1", - "sc-client-api 25.0.0", - "sc-state-db 0.27.0", + "sc-client-api", + "sc-state-db", "schnellru", - "sp-arithmetic 20.0.0", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", + "sp-arithmetic", + "sp-blockchain", + "sp-core", "sp-database", - "sp-runtime 28.0.0", - "sp-state-machine 0.32.0", - "sp-trie 26.0.0", + "sp-runtime", + "sp-state-machine", + "sp-trie", ] [[package]] -name = "sc-client-db" +name = "sc-consensus" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0409758bb01f2e975b01c7cb2203aa27746e9796a483b18c57123e6e78fae5" +dependencies = [ + "async-trait", + "futures", + "futures-timer", + "libp2p-identity", + "log", + "mockall", + "parking_lot 0.12.1", + "sc-client-api", + "sc-utils", + "serde", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-runtime", + "sp-state-machine", + "substrate-prometheus-endpoint", + "thiserror", +] + +[[package]] +name = "sc-consensus-babe" version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2ca0a8a26eeb09988245f44c78552e0dc5b2f3945d1495ee711bbbf71bc2d2a" +checksum = "0a7d698d9d2bde7e0b80e7ada57ede9255a6382da79d2ad9a4e9e70805c40e74" dependencies = [ - "hash-db", - "kvdb", - "kvdb-memorydb", - "kvdb-rocksdb", - "linked-hash-map", + "async-trait", + "fork-tree", + "futures", "log", - "parity-db", + "num-bigint", + "num-rational", + "num-traits", "parity-scale-codec", "parking_lot 0.12.1", - "sc-client-api 27.0.0", - "sc-state-db 0.29.0", - "schnellru", - "sp-arithmetic 22.0.0", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-database", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", - "sp-trie 28.0.0", + "sc-client-api", + "sc-consensus", + "sc-consensus-epochs", + "sc-consensus-slots", + "sc-telemetry", + "sc-transaction-pool-api", + "sp-api", + "sp-application-crypto", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-keystore", + "sp-runtime", + "substrate-prometheus-endpoint", + "thiserror", ] [[package]] -name = "sc-consensus" -version = "0.30.0" +name = "sc-consensus-babe-rpc" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f55379d0ce6f87026f896f03bce33862b57f77a46fbb4fb7e974182d20d458" +dependencies = [ + "futures", + "jsonrpsee", + "sc-consensus-babe", + "sc-consensus-epochs", + "sc-rpc-api", + "serde", + "sp-api", + "sp-application-crypto", + "sp-blockchain", + "sp-consensus", + "sp-consensus-babe", + "sp-core", + "sp-keystore", + "sp-runtime", + "thiserror", +] + +[[package]] +name = "sc-consensus-beefy" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e4100cc8fb3876708e1ec5a7c63af3baa75febd5051beb9ddd1e4835fdfc27" +checksum = "3664a3cddc718187e058f67d9075ef9078c8f8347c0408304ead8565d4ba8164" dependencies = [ + "array-bytes 6.2.2", + "async-channel", "async-trait", + "fnv", "futures", - "futures-timer", - "libp2p-identity", "log", - "mockall", + "parity-scale-codec", "parking_lot 0.12.1", - "sc-client-api 25.0.0", - "sc-utils 11.0.0", - "serde", - "sp-api 23.0.0", - "sp-blockchain 25.0.0", - "sp-consensus 0.29.0", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-state-machine 0.32.0", + "sc-client-api", + "sc-consensus", + "sc-network", + "sc-network-gossip", + "sc-network-sync", + "sc-utils", + "sp-api", + "sp-application-crypto", + "sp-arithmetic", + "sp-blockchain", + "sp-consensus", + "sp-consensus-beefy", + "sp-core", + "sp-keystore", + "sp-mmr-primitives", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", + "tokio", + "wasm-timer", ] [[package]] -name = "sc-consensus" -version = "0.32.0" +name = "sc-consensus-beefy-rpc" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe8204108702ac2f35ed3a541e00aae4656c7591cad6fff33bcc6e7774fc9607" +checksum = "9b4e3602efe1e206032164772c24365642e3dab807c5f8db0af166f6ef63af3e" dependencies = [ - "async-trait", "futures", - "futures-timer", - "libp2p-identity", + "jsonrpsee", "log", - "mockall", + "parity-scale-codec", "parking_lot 0.12.1", - "sc-client-api 27.0.0", - "sc-utils 13.0.0", + "sc-consensus-beefy", + "sc-rpc", "serde", - "sp-api 25.0.0", - "sp-blockchain 27.0.0", - "sp-consensus 0.31.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", - "substrate-prometheus-endpoint", + "sp-consensus-beefy", + "sp-core", + "sp-runtime", "thiserror", ] +[[package]] +name = "sc-consensus-epochs" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d0befddf2ca16d5f222968fceeab8625532f2d49303fafd17ae2e5d0e939da6" +dependencies = [ + "fork-tree", + "parity-scale-codec", + "sc-client-api", + "sc-consensus", + "sp-blockchain", + "sp-runtime", +] + [[package]] name = "sc-consensus-grandpa" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923ca35a57239e8d25f458d8edd075e1c051d64e388963b497fd5d8ab005f2c7" +checksum = "a824457a3384e7bc19d7ee587dffa5b646deb81a2351be0dd075c2110a3d677a" dependencies = [ "ahash 0.8.8", "array-bytes 6.2.2", @@ -11371,128 +11122,118 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot 0.12.1", - "rand 0.8.5", - "sc-block-builder 0.32.0", - "sc-chain-spec 26.0.0", - "sc-client-api 27.0.0", - "sc-consensus 0.32.0", - "sc-network 0.33.0", - "sc-network-common 0.32.0", + "rand", + "sc-block-builder", + "sc-chain-spec", + "sc-client-api", + "sc-consensus", + "sc-network", + "sc-network-common", "sc-network-gossip", - "sc-network-sync 0.32.0", - "sc-telemetry 14.0.0", - "sc-transaction-pool-api 27.0.0", - "sc-utils 13.0.0", + "sc-network-sync", + "sc-telemetry", + "sc-transaction-pool-api", + "sc-utils", "serde_json", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-arithmetic 22.0.0", - "sp-blockchain 27.0.0", - "sp-consensus 0.31.0", - "sp-consensus-grandpa 12.0.0", - "sp-core 27.0.0", - "sp-keystore 0.33.0", - "sp-runtime 30.0.1", + "sp-api", + "sp-application-crypto", + "sp-arithmetic", + "sp-blockchain", + "sp-consensus", + "sp-consensus-grandpa", + "sp-core", + "sp-keystore", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", ] [[package]] -name = "sc-executor" -version = "0.29.0" +name = "sc-consensus-grandpa-rpc" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225f2ad733bc7234a6638d5203624194824b2f78ab631bc911223f536a66b9c8" +checksum = "694328880bf11fce67f5e066d7884dbdf1f2a41c42a7dfce9b0a6bc6b90448a1" dependencies = [ + "finality-grandpa", + "futures", + "jsonrpsee", + "log", "parity-scale-codec", - "parking_lot 0.12.1", - "sc-executor-common 0.26.0", - "sc-executor-wasmtime 0.26.0", - "schnellru", - "sp-api 23.0.0", - "sp-core 25.0.0", - "sp-externalities 0.23.0", - "sp-io 27.0.0", - "sp-panic-handler", - "sp-runtime-interface 21.0.0", - "sp-trie 26.0.0", - "sp-version 26.0.0", - "sp-wasm-interface 18.0.0", - "tracing", + "sc-client-api", + "sc-consensus-grandpa", + "sc-rpc", + "serde", + "sp-blockchain", + "sp-core", + "sp-runtime", + "thiserror", ] [[package]] -name = "sc-executor" -version = "0.31.0" +name = "sc-consensus-slots" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eea713755b62067b9c223cef0525b6a88336ca6658fe0ed38340d8cad4963af5" +checksum = "6649665fcf91d89c16bfb08e9326baf6547e5fe719d6438197434e5b642d716b" dependencies = [ + "async-trait", + "futures", + "futures-timer", + "log", "parity-scale-codec", - "parking_lot 0.12.1", - "sc-executor-common 0.28.0", - "sc-executor-wasmtime 0.28.0", - "schnellru", - "sp-api 25.0.0", - "sp-core 27.0.0", - "sp-externalities 0.24.0", - "sp-io 29.0.0", - "sp-panic-handler", - "sp-runtime-interface 23.0.0", - "sp-trie 28.0.0", - "sp-version 28.0.0", - "sp-wasm-interface 19.0.0", - "tracing", + "sc-client-api", + "sc-consensus", + "sc-telemetry", + "sp-arithmetic", + "sp-blockchain", + "sp-consensus", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-state-machine", ] [[package]] -name = "sc-executor-common" -version = "0.26.0" +name = "sc-executor" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "169c1cfe81ba0e0d44ab4ada1600e30b6a9de588c792db73e32a854a6e3e1a87" +checksum = "3129f8af1f8aa5b05829ffec942feff61163054a536704ba48fdcc2276f6042a" dependencies = [ - "sc-allocator 20.0.0", - "sp-maybe-compressed-blob 9.0.0", - "sp-wasm-interface 18.0.0", - "thiserror", - "wasm-instrument", + "parity-scale-codec", + "parking_lot 0.12.1", + "sc-executor-common", + "sc-executor-wasmtime", + "schnellru", + "sp-api", + "sp-core", + "sp-externalities", + "sp-io", + "sp-panic-handler", + "sp-runtime-interface", + "sp-trie", + "sp-version", + "sp-wasm-interface", + "tracing", ] [[package]] name = "sc-executor-common" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40d0fdbc88edc041b64891c7162e02f062baa699212395db0615bd9bdcda0dd7" +checksum = "0285a4a14c0d2c1d04380ff83cddd79181ded510c605d36804cb9c6eb3bbf2ae" dependencies = [ - "sc-allocator 22.0.0", - "sp-maybe-compressed-blob 10.0.0", - "sp-wasm-interface 19.0.0", + "sc-allocator", + "sp-maybe-compressed-blob", + "sp-wasm-interface", "thiserror", "wasm-instrument", ] [[package]] name = "sc-executor-wasmtime" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9167d733e928c528273be63b905ec750cfda85d740453071463da69f7d633bc" -dependencies = [ - "anyhow", - "cfg-if", - "libc", - "log", - "parking_lot 0.12.1", - "rustix 0.36.17", - "sc-allocator 20.0.0", - "sc-executor-common 0.26.0", - "sp-runtime-interface 21.0.0", - "sp-wasm-interface 18.0.0", - "wasmtime", -] - -[[package]] -name = "sc-executor-wasmtime" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13a935fc2a7e8e7a7fb4fe7bc15d5be9b52a101f921867703c81a7d02a821f86" +checksum = "5c2ba6ea0e68400caf4847fbcfca6123952b05a817e06f024e9cbafa665ac9d8" dependencies = [ "anyhow", "cfg-if", @@ -11500,112 +11241,51 @@ dependencies = [ "log", "parking_lot 0.12.1", "rustix 0.36.17", - "sc-allocator 22.0.0", - "sc-executor-common 0.28.0", - "sp-runtime-interface 23.0.0", - "sp-wasm-interface 19.0.0", + "sc-allocator", + "sc-executor-common", + "sp-runtime-interface", + "sp-wasm-interface", "wasmtime", ] [[package]] name = "sc-informant" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7189a0b95fe5d79895a107c6c057bc9351cd9c867552200815199cde25bcdb9d" -dependencies = [ - "ansi_term", - "futures", - "futures-timer", - "log", - "sc-client-api 25.0.0", - "sc-network 0.31.0", - "sc-network-common 0.30.0", - "sp-blockchain 25.0.0", - "sp-runtime 28.0.0", -] - -[[package]] -name = "sc-informant" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd39dfdb19ade5fd05d0646adc4cbadc3c89fbe270dcc7d33b7d496366cd784" +checksum = "7e07d2dde727c30974767aed4cddd241447c0a800b702662b529dd2e32a10db1" dependencies = [ "ansi_term", "futures", "futures-timer", "log", - "sc-client-api 27.0.0", - "sc-network 0.33.0", - "sc-network-common 0.32.0", - "sc-network-sync 0.32.0", - "sp-blockchain 27.0.0", - "sp-runtime 30.0.1", + "sc-client-api", + "sc-network", + "sc-network-common", + "sc-network-sync", + "sp-blockchain", + "sp-runtime", ] [[package]] name = "sc-keystore" -version = "22.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abecdf9778fccc254c0b5e227ea8b90fd59247044a30ad293a068b180427d244" -dependencies = [ - "array-bytes 6.2.2", - "parking_lot 0.12.1", - "serde_json", - "sp-application-crypto 27.0.0", - "sp-core 25.0.0", - "sp-keystore 0.31.0", - "thiserror", -] - -[[package]] -name = "sc-keystore" -version = "24.0.0" +version = "25.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5efa306595e3491e73d9b8291c2e3a6c8ea06fe05d1bacd29365fcbd2e9430ad" +checksum = "93acb7f7c6e5e4be067e78b782a35d1a6d34dafcd955975a1aec05cab9dbf8fe" dependencies = [ "array-bytes 6.2.2", "parking_lot 0.12.1", "serde_json", - "sp-application-crypto 29.0.0", - "sp-core 27.0.0", - "sp-keystore 0.33.0", - "thiserror", -] - -[[package]] -name = "sc-mixnet" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53ea71ec60601c18d6adcaf7a62698fc2e886c16dc8fdf8d61b3b76244dea38" -dependencies = [ - "array-bytes 4.2.0", - "arrayvec 0.7.4", - "blake2 0.10.6", - "futures", - "futures-timer", - "libp2p-identity", - "log", - "mixnet", - "multiaddr", - "parity-scale-codec", - "parking_lot 0.12.1", - "sc-client-api 25.0.0", - "sc-network 0.31.0", - "sc-transaction-pool-api 25.0.0", - "sp-api 23.0.0", - "sp-consensus 0.29.0", - "sp-core 25.0.0", - "sp-keystore 0.31.0", - "sp-mixnet 0.1.0", - "sp-runtime 28.0.0", + "sp-application-crypto", + "sp-core", + "sp-keystore", "thiserror", ] [[package]] name = "sc-mixnet" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df018e1c19855361b958d205cf075b8093f394a67cd337eb4413989d8766abe4" +checksum = "4cac7d7145c712c4a8b184b3979fe1a154c200ebb1b9f11f1e4e39db97a389f8" dependencies = [ "array-bytes 4.2.0", "arrayvec 0.7.4", @@ -11619,65 +11299,23 @@ dependencies = [ "multiaddr", "parity-scale-codec", "parking_lot 0.12.1", - "sc-client-api 27.0.0", - "sc-network 0.33.0", - "sc-transaction-pool-api 27.0.0", - "sp-api 25.0.0", - "sp-consensus 0.31.0", - "sp-core 27.0.0", - "sp-keystore 0.33.0", - "sp-mixnet 0.3.0", - "sp-runtime 30.0.1", - "thiserror", -] - -[[package]] -name = "sc-network" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01f519592a971199c486d412dbf38ba54096857080bf4b9d29c9ffabcfee3745" -dependencies = [ - "array-bytes 6.2.2", - "async-channel", - "async-trait", - "asynchronous-codec", - "bytes", - "either", - "fnv", - "futures", - "futures-timer", - "ip_network", - "libp2p", - "linked_hash_set", - "log", - "mockall", - "parity-scale-codec", - "parking_lot 0.12.1", - "partial_sort", - "pin-project", - "rand 0.8.5", - "sc-client-api 25.0.0", - "sc-network-common 0.30.0", - "sc-utils 11.0.0", - "serde", - "serde_json", - "smallvec", - "sp-arithmetic 20.0.0", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "substrate-prometheus-endpoint", + "sc-client-api", + "sc-network", + "sc-transaction-pool-api", + "sp-api", + "sp-consensus", + "sp-core", + "sp-keystore", + "sp-mixnet", + "sp-runtime", "thiserror", - "unsigned-varint", - "wasm-timer", - "zeroize", ] [[package]] name = "sc-network" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abc4093ac710df0daa0dde6ea3613ecf391695e321923c9bb270eebd5c070bf2" +checksum = "7f2f49eccabc1de61ff976a184f5380a230f07baa5cb075a31c8ec9459fcd076" dependencies = [ "array-bytes 6.2.2", "async-channel", @@ -11697,17 +11335,17 @@ dependencies = [ "parking_lot 0.12.1", "partial_sort", "pin-project", - "rand 0.8.5", - "sc-client-api 27.0.0", - "sc-network-common 0.32.0", - "sc-utils 13.0.0", + "rand", + "sc-client-api", + "sc-network-common", + "sc-utils", "serde", "serde_json", "smallvec", - "sp-arithmetic 22.0.0", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", + "sp-arithmetic", + "sp-blockchain", + "sp-core", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", "tokio", @@ -11719,30 +11357,9 @@ dependencies = [ [[package]] name = "sc-network-bitswap" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fe63a55e03d8bc796ff1e94e7fb62a62acfd7a80a47865a97b55c13371c3e05" -dependencies = [ - "async-channel", - "cid", - "futures", - "libp2p-identity", - "log", - "prost", - "prost-build", - "sc-client-api 25.0.0", - "sc-network 0.31.0", - "sp-blockchain 25.0.0", - "sp-runtime 28.0.0", - "thiserror", - "unsigned-varint", -] - -[[package]] -name = "sc-network-bitswap" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae68646fa90d2b93bd02be2e16eb46673e6cc863c83ebe04be54a10cf0c7cb6" +checksum = "2779d97eff742c1ebcce812bfd154a7273c2c2eb02e11fad76cf7eb583365834" dependencies = [ "async-channel", "cid", @@ -11751,37 +11368,19 @@ dependencies = [ "log", "prost", "prost-build", - "sc-client-api 27.0.0", - "sc-network 0.33.0", - "sp-blockchain 27.0.0", - "sp-runtime 30.0.1", + "sc-client-api", + "sc-network", + "sp-blockchain", + "sp-runtime", "thiserror", "unsigned-varint", ] [[package]] name = "sc-network-common" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d236686d15275e4aa49ca929a06fb6fac28aa70e35ee185b981036c149f9e9d" -dependencies = [ - "async-trait", - "bitflags 1.3.2", - "futures", - "libp2p-identity", - "parity-scale-codec", - "prost-build", - "sc-consensus 0.30.0", - "sp-consensus 0.29.0", - "sp-consensus-grandpa 10.0.0", - "sp-runtime 28.0.0", -] - -[[package]] -name = "sc-network-common" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d62375edb2146c538166886ae09662b62b7205085826f276da49a11be278d905" +checksum = "9b798acc12d5b3120b2d5e8a078fcec39d6732089261136ac31c993235ade917" dependencies = [ "async-trait", "bitflags 1.3.2", @@ -11789,59 +11388,37 @@ dependencies = [ "libp2p-identity", "parity-scale-codec", "prost-build", - "sc-consensus 0.32.0", - "sp-consensus 0.31.0", - "sp-consensus-grandpa 12.0.0", - "sp-runtime 30.0.1", + "sc-consensus", + "sp-consensus", + "sp-consensus-grandpa", + "sp-runtime", ] [[package]] name = "sc-network-gossip" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc9f9e0267f58062280f7249eea969a0c9f479c9ad08049ffb39a6f88e515a34" +checksum = "cd92792f3a04fcb1f21018c9f8a5d6d438d705a2548ffcdc7730280c667b8386" dependencies = [ "ahash 0.8.8", "futures", "futures-timer", "libp2p", "log", - "sc-network 0.33.0", - "sc-network-common 0.32.0", - "sc-network-sync 0.32.0", + "sc-network", + "sc-network-common", + "sc-network-sync", "schnellru", - "sp-runtime 30.0.1", + "sp-runtime", "substrate-prometheus-endpoint", "tracing", ] [[package]] name = "sc-network-light" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac888fd720ef8bb2ff7d2b7f7b2e54d17bb85a417cf1e1b6f0f64f7e644936d" -dependencies = [ - "array-bytes 6.2.2", - "async-channel", - "futures", - "libp2p-identity", - "log", - "parity-scale-codec", - "prost", - "prost-build", - "sc-client-api 25.0.0", - "sc-network 0.31.0", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "thiserror", -] - -[[package]] -name = "sc-network-light" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a97885f6b4b2b5b01c47061c0e8cca10bd20599e6fd48f28044792077e82a7" +checksum = "34e7a126492850dbbd5cf0b77ec3ad350422c2822d165941ddbe618a76af0153" dependencies = [ "array-bytes 6.2.2", "async-channel", @@ -11851,55 +11428,19 @@ dependencies = [ "parity-scale-codec", "prost", "prost-build", - "sc-client-api 27.0.0", - "sc-network 0.33.0", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "thiserror", -] - -[[package]] -name = "sc-network-sync" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10c697aa8f52cf194b9f00113a7d0d3ce5d1456bedd6169a9caae10737f02907" -dependencies = [ - "array-bytes 6.2.2", - "async-channel", - "async-trait", - "fork-tree", - "futures", - "futures-timer", - "libp2p", - "log", - "mockall", - "parity-scale-codec", - "prost", - "prost-build", - "sc-client-api 25.0.0", - "sc-consensus 0.30.0", - "sc-network 0.31.0", - "sc-network-common 0.30.0", - "sc-utils 11.0.0", - "schnellru", - "smallvec", - "sp-arithmetic 20.0.0", - "sp-blockchain 25.0.0", - "sp-consensus 0.29.0", - "sp-consensus-grandpa 10.0.0", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "substrate-prometheus-endpoint", + "sc-client-api", + "sc-network", + "sp-blockchain", + "sp-core", + "sp-runtime", "thiserror", - "tokio-stream", ] [[package]] name = "sc-network-sync" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7645483f69449667520359d6518320a2a938d7ef9f03037486b489cc597896" +checksum = "c4c92fd35c49f748abf0bf420e1e99aa76b0f48ab43c183ea5dacef951116d7e" dependencies = [ "array-bytes 6.2.2", "async-channel", @@ -11913,19 +11454,19 @@ dependencies = [ "parity-scale-codec", "prost", "prost-build", - "sc-client-api 27.0.0", - "sc-consensus 0.32.0", - "sc-network 0.33.0", - "sc-network-common 0.32.0", - "sc-utils 13.0.0", + "sc-client-api", + "sc-consensus", + "sc-network", + "sc-network-common", + "sc-utils", "schnellru", "smallvec", - "sp-arithmetic 22.0.0", - "sp-blockchain 27.0.0", - "sp-consensus 0.31.0", - "sp-consensus-grandpa 12.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", + "sp-arithmetic", + "sp-blockchain", + "sp-consensus", + "sp-consensus-grandpa", + "sp-core", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", "tokio", @@ -11934,156 +11475,128 @@ dependencies = [ [[package]] name = "sc-network-transactions" -version = "0.30.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7c9bfc7b58ce229d1512158b8f13dc849ec24857d1c29a41a867fb8afb5c09" +checksum = "99a1af3b9e158fa91df0cd92916b3ee5d8b8a14a2b61eb5dd9e36e045808f644" dependencies = [ "array-bytes 6.2.2", "futures", "libp2p", "log", "parity-scale-codec", - "sc-network 0.31.0", - "sc-network-common 0.30.0", - "sc-utils 11.0.0", - "sp-consensus 0.29.0", - "sp-runtime 28.0.0", + "sc-network", + "sc-network-common", + "sc-network-sync", + "sc-utils", + "sp-consensus", + "sp-runtime", "substrate-prometheus-endpoint", ] [[package]] -name = "sc-network-transactions" -version = "0.32.0" +name = "sc-offchain" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b9a513f519b781ec238a7f33b4f71ca6333c9d3f175ca7b7850fb8ab266869" +checksum = "cd5408dbdc3fe345813e983bd2b7ecf8f20e996141fa39a36336f511ab1859bb" dependencies = [ "array-bytes 6.2.2", + "bytes", + "fnv", "futures", + "futures-timer", + "hyper", + "hyper-rustls", "libp2p", "log", + "num_cpus", + "once_cell", "parity-scale-codec", - "sc-network 0.33.0", - "sc-network-common 0.32.0", - "sc-network-sync 0.32.0", - "sc-utils 13.0.0", - "sp-consensus 0.31.0", - "sp-runtime 30.0.1", - "substrate-prometheus-endpoint", + "parking_lot 0.12.1", + "rand", + "sc-client-api", + "sc-network", + "sc-network-common", + "sc-transaction-pool-api", + "sc-utils", + "sp-api", + "sp-core", + "sp-externalities", + "sp-keystore", + "sp-offchain", + "sp-runtime", + "threadpool", + "tracing", ] [[package]] -name = "sc-rpc" -version = "26.0.0" +name = "sc-proposer-metrics" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb277280b6b3519e4a2e693b75d4ca516ebb4a928162e6a1791b217b2be60c9f" +checksum = "fb8dadb2ae5a316e4d08cad6aacd5de1dec792f3bd94e3960795ff7ffd07211c" dependencies = [ - "futures", - "jsonrpsee", "log", - "parity-scale-codec", - "parking_lot 0.12.1", - "sc-block-builder 0.30.0", - "sc-chain-spec 24.0.0", - "sc-client-api 25.0.0", - "sc-mixnet 0.1.0", - "sc-rpc-api 0.30.0", - "sc-tracing 25.0.0", - "sc-transaction-pool-api 25.0.0", - "sc-utils 11.0.0", - "serde_json", - "sp-api 23.0.0", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", - "sp-keystore 0.31.0", - "sp-offchain 23.0.0", - "sp-rpc 23.0.0", - "sp-runtime 28.0.0", - "sp-session 24.0.0", - "sp-statement-store 7.0.0", - "sp-version 26.0.0", - "tokio", + "substrate-prometheus-endpoint", ] [[package]] name = "sc-rpc" -version = "28.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a1251123e0fad557607750da1b000c062ee193fad86369e6a90ab2e6e0b4e13" +checksum = "4ac0d83b9117c9c004e58331a593a28044eaf6414e5b3c605d1571b4a6981966" dependencies = [ "futures", "jsonrpsee", "log", "parity-scale-codec", "parking_lot 0.12.1", - "sc-block-builder 0.32.0", - "sc-chain-spec 26.0.0", - "sc-client-api 27.0.0", - "sc-mixnet 0.3.0", - "sc-rpc-api 0.32.0", - "sc-tracing 27.0.0", - "sc-transaction-pool-api 27.0.0", - "sc-utils 13.0.0", + "sc-block-builder", + "sc-chain-spec", + "sc-client-api", + "sc-mixnet", + "sc-rpc-api", + "sc-tracing", + "sc-transaction-pool-api", + "sc-utils", "serde_json", - "sp-api 25.0.0", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-keystore 0.33.0", - "sp-offchain 25.0.0", - "sp-rpc 25.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-statement-store 9.0.0", - "sp-version 28.0.0", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-keystore", + "sp-offchain", + "sp-rpc", + "sp-runtime", + "sp-session", + "sp-statement-store", + "sp-version", "tokio", ] [[package]] name = "sc-rpc-api" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def499ac717db8442fe18543e52330d5f105027b666df73c0b38e81e9105078b" -dependencies = [ - "jsonrpsee", - "parity-scale-codec", - "sc-chain-spec 24.0.0", - "sc-mixnet 0.1.0", - "sc-transaction-pool-api 25.0.0", - "scale-info", - "serde", - "serde_json", - "sp-core 25.0.0", - "sp-rpc 23.0.0", - "sp-runtime 28.0.0", - "sp-version 26.0.0", - "thiserror", -] - -[[package]] -name = "sc-rpc-api" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ceef96e1df9b6f2db3d5ff8703dd79ce96bf0aa6d53b17fb1ee774a73e88ba" +checksum = "630e81a436f32487452ae1a57ad0ba31f320ddf864bb7faefd7490fe16b3e139" dependencies = [ "jsonrpsee", "parity-scale-codec", - "sc-chain-spec 26.0.0", - "sc-mixnet 0.3.0", - "sc-transaction-pool-api 27.0.0", + "sc-chain-spec", + "sc-mixnet", + "sc-transaction-pool-api", "scale-info", "serde", "serde_json", - "sp-core 27.0.0", - "sp-rpc 25.0.0", - "sp-runtime 30.0.1", - "sp-version 28.0.0", + "sp-core", + "sp-rpc", + "sp-runtime", + "sp-version", "thiserror", ] [[package]] name = "sc-rpc-server" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8083e1b026dcf397f8c1122b3fba6cc744c6962996df6a30e0fb75223f7637" +checksum = "2b623908525a2f22aafa079080aa7fbce8b58ca8de53b9f31e3cc8547e0ad8b2" dependencies = [ "http", "jsonrpsee", @@ -12097,38 +11610,9 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "198ea9287111b4060ce1d70dce99804b99d1a92b5fb23a79d94bf0cb460ca3ce" -dependencies = [ - "array-bytes 6.2.2", - "futures", - "futures-util", - "hex", - "jsonrpsee", - "log", - "parity-scale-codec", - "parking_lot 0.12.1", - "sc-chain-spec 24.0.0", - "sc-client-api 25.0.0", - "sc-transaction-pool-api 25.0.0", - "sc-utils 11.0.0", - "serde", - "sp-api 23.0.0", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-version 26.0.0", - "thiserror", - "tokio", - "tokio-stream", -] - -[[package]] -name = "sc-rpc-spec-v2" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9112cc7f746672f8080bafcb34c970e36db765f852f449b1e1640d44fe5fdc7d" +checksum = "a54150c808fa10364b73faedd97aff0977a911a521d1caa8bad2bdc7943ad579" dependencies = [ "array-bytes 6.2.2", "futures", @@ -12138,17 +11622,17 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot 0.12.1", - "sc-chain-spec 26.0.0", - "sc-client-api 27.0.0", - "sc-transaction-pool-api 27.0.0", - "sc-utils 13.0.0", - "serde", - "sp-api 25.0.0", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-rpc 25.0.0", - "sp-runtime 30.0.1", - "sp-version 28.0.0", + "sc-chain-spec", + "sc-client-api", + "sc-transaction-pool-api", + "sc-utils", + "serde", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", + "sp-version", "thiserror", "tokio", "tokio-stream", @@ -12156,74 +11640,9 @@ dependencies = [ [[package]] name = "sc-service" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3623ae5bd7b089da9796a3f1edd974c94f34dd4b4b527146662ef409ae9cd38c" -dependencies = [ - "async-trait", - "directories", - "exit-future", - "futures", - "futures-timer", - "jsonrpsee", - "log", - "parity-scale-codec", - "parking_lot 0.12.1", - "pin-project", - "rand 0.8.5", - "sc-block-builder 0.30.0", - "sc-chain-spec 24.0.0", - "sc-client-api 25.0.0", - "sc-client-db 0.32.0", - "sc-consensus 0.30.0", - "sc-executor 0.29.0", - "sc-informant 0.30.0", - "sc-keystore 22.0.0", - "sc-network 0.31.0", - "sc-network-bitswap 0.30.0", - "sc-network-common 0.30.0", - "sc-network-light 0.30.0", - "sc-network-sync 0.30.0", - "sc-network-transactions 0.30.0", - "sc-rpc 26.0.0", - "sc-rpc-server", - "sc-rpc-spec-v2 0.31.0", - "sc-sysinfo 24.0.0", - "sc-telemetry 12.0.0", - "sc-tracing 25.0.0", - "sc-transaction-pool 25.0.0", - "sc-transaction-pool-api 25.0.0", - "sc-utils 11.0.0", - "serde", - "serde_json", - "sp-api 23.0.0", - "sp-blockchain 25.0.0", - "sp-consensus 0.29.0", - "sp-core 25.0.0", - "sp-externalities 0.23.0", - "sp-keystore 0.31.0", - "sp-runtime 28.0.0", - "sp-session 24.0.0", - "sp-state-machine 0.32.0", - "sp-storage 17.0.0", - "sp-transaction-pool 23.0.0", - "sp-transaction-storage-proof 23.0.0", - "sp-trie 26.0.0", - "sp-version 26.0.0", - "static_init", - "substrate-prometheus-endpoint", - "tempfile", - "thiserror", - "tokio", - "tracing", - "tracing-futures", -] - -[[package]] -name = "sc-service" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e21ba254620ee66bec56f2e7e93f4ed2a492da50009a09e524bfd21a5fdcb30" +checksum = "703bd8b1fc0a137185bfa0b654e04283a58a1d8a2751380e7a0eca919961f150" dependencies = [ "async-trait", "directories", @@ -12235,144 +11654,112 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", "pin-project", - "rand 0.8.5", - "sc-chain-spec 26.0.0", - "sc-client-api 27.0.0", - "sc-client-db 0.34.0", - "sc-consensus 0.32.0", - "sc-executor 0.31.0", - "sc-informant 0.32.0", - "sc-keystore 24.0.0", - "sc-network 0.33.0", - "sc-network-bitswap 0.32.0", - "sc-network-common 0.32.0", - "sc-network-light 0.32.0", - "sc-network-sync 0.32.0", - "sc-network-transactions 0.32.0", - "sc-rpc 28.0.0", + "rand", + "sc-chain-spec", + "sc-client-api", + "sc-client-db", + "sc-consensus", + "sc-executor", + "sc-informant", + "sc-keystore", + "sc-network", + "sc-network-bitswap", + "sc-network-common", + "sc-network-light", + "sc-network-sync", + "sc-network-transactions", + "sc-rpc", "sc-rpc-server", - "sc-rpc-spec-v2 0.33.0", - "sc-sysinfo 26.0.0", - "sc-telemetry 14.0.0", - "sc-tracing 27.0.0", - "sc-transaction-pool 27.0.0", - "sc-transaction-pool-api 27.0.0", - "sc-utils 13.0.0", + "sc-rpc-spec-v2", + "sc-sysinfo", + "sc-telemetry", + "sc-tracing", + "sc-transaction-pool", + "sc-transaction-pool-api", + "sc-utils", "serde", "serde_json", - "sp-api 25.0.0", - "sp-blockchain 27.0.0", - "sp-consensus 0.31.0", - "sp-core 27.0.0", - "sp-externalities 0.24.0", - "sp-keystore 0.33.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-state-machine 0.34.0", - "sp-storage 18.0.0", - "sp-transaction-pool 25.0.0", - "sp-transaction-storage-proof 25.0.0", - "sp-trie 28.0.0", - "sp-version 28.0.0", + "sp-api", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-externalities", + "sp-keystore", + "sp-runtime", + "sp-session", + "sp-state-machine", + "sp-storage", + "sp-transaction-pool", + "sp-transaction-storage-proof", + "sp-trie", + "sp-version", "static_init", "substrate-prometheus-endpoint", - "tempfile", - "thiserror", - "tokio", - "tracing", - "tracing-futures", -] - -[[package]] -name = "sc-state-db" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3635fe572adfe796886e18910c8b94f7ce67f9ae3e2c161176e122ddf0baa7e4" -dependencies = [ - "log", - "parity-scale-codec", - "parking_lot 0.12.1", - "sp-core 25.0.0", + "tempfile", + "thiserror", + "tokio", + "tracing", + "tracing-futures", ] [[package]] name = "sc-state-db" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20aeec62d91b8e8f0f7497bd147d427332a76c9b054e50973c3d289685808ee" +checksum = "fac20128b09ac6305aaf482a72c918b35400f3955d7032971df499b0661a5e76" dependencies = [ "log", "parity-scale-codec", "parking_lot 0.12.1", - "sp-core 27.0.0", + "sp-core", ] [[package]] -name = "sc-sysinfo" -version = "24.0.0" +name = "sc-sync-state-rpc" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60967710b85e650652832df73915b64c315f7b437e53c4635bd26106d6d05c21" +checksum = "cb310dce9d2474a74152605dc0ca0f81a46f61ba4e7a39752f1203121f47c0c6" dependencies = [ - "futures", - "libc", - "log", - "rand 0.8.5", - "rand_pcg", - "regex", - "sc-telemetry 12.0.0", + "jsonrpsee", + "parity-scale-codec", + "sc-chain-spec", + "sc-client-api", + "sc-consensus-babe", + "sc-consensus-epochs", + "sc-consensus-grandpa", "serde", "serde_json", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-std 12.0.0", + "sp-blockchain", + "sp-runtime", + "thiserror", ] [[package]] name = "sc-sysinfo" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a028b0b37acaa1394b6abc8344dbb4a9c26c3631b26db0e277b1c1772c73a867" +checksum = "bfc9a5da78281735c6ff3b8d0287e95dcf32fc001415ac20cb2844c0ab4e6d05" dependencies = [ "derive_more", "futures", "libc", "log", - "rand 0.8.5", + "rand", "rand_pcg", "regex", - "sc-telemetry 14.0.0", - "serde", - "serde_json", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-std 13.0.0", -] - -[[package]] -name = "sc-telemetry" -version = "12.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28e214e4d46cac02321bc3dc6fd72f019ac10819d1ac8f24f6935a4ae74ef273" -dependencies = [ - "chrono", - "futures", - "libp2p", - "log", - "parking_lot 0.12.1", - "pin-project", - "rand 0.8.5", - "sc-utils 11.0.0", + "sc-telemetry", "serde", "serde_json", - "thiserror", - "wasm-timer", + "sp-core", + "sp-io", + "sp-std", ] [[package]] name = "sc-telemetry" -version = "14.0.0" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5a1c7282f7f56b4caaed8ebb9d723cee92ebbdd0585e6e0e8e57a9fdcc590d" +checksum = "96841bdc22e1ad5931e6cb7557b06ef33aeda7f5eef3864653359840f9fd025a" dependencies = [ "chrono", "futures", @@ -12380,8 +11767,8 @@ dependencies = [ "log", "parking_lot 0.12.1", "pin-project", - "rand 0.8.5", - "sc-utils 13.0.0", + "rand", + "sc-utils", "serde", "serde_json", "thiserror", @@ -12390,43 +11777,13 @@ dependencies = [ [[package]] name = "sc-tracing" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bcd745ea216ba0c0a344cff2c41b12e27846d5fca4b28f56ff77e1d3ff3634" -dependencies = [ - "ansi_term", - "atty", - "chrono", - "lazy_static", - "libc", - "log", - "parking_lot 0.12.1", - "regex", - "rustc-hash", - "sc-client-api 25.0.0", - "sc-tracing-proc-macro", - "serde", - "sp-api 23.0.0", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", - "sp-rpc 23.0.0", - "sp-runtime 28.0.0", - "sp-tracing 14.0.0", - "thiserror", - "tracing", - "tracing-log", - "tracing-subscriber", -] - -[[package]] -name = "sc-tracing" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44a512ed582251b8605cfa0245787f60434e241666298bd4dd5f206d6c0814d0" +checksum = "90864e5e042d1238bcb082b0fa73ce58b7eb4897127783dae1dd66eee59cdaef" dependencies = [ "ansi_term", - "atty", "chrono", + "is-terminal", "lazy_static", "libc", "log", @@ -12434,15 +11791,15 @@ dependencies = [ "parking_lot 0.12.1", "regex", "rustc-hash", - "sc-client-api 27.0.0", + "sc-client-api", "sc-tracing-proc-macro", "serde", - "sp-api 25.0.0", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-rpc 25.0.0", - "sp-runtime 30.0.1", - "sp-tracing 15.0.0", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", + "sp-tracing", "thiserror", "tracing", "tracing-log", @@ -12451,11 +11808,11 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c4ae9e4f957d7274ac6b59d667b66262caf6482dbb1b63f1c370528626b1272" +checksum = "151cdf86d79abf22cf2a240a7ca95041c908dbd96c2ae9a818073042aa210964" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.48", @@ -12463,36 +11820,9 @@ dependencies = [ [[package]] name = "sc-transaction-pool" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f6db45a057a619670e07deefb4e69aab83386f076363db424907da2b2e82590" -dependencies = [ - "async-trait", - "futures", - "futures-timer", - "linked-hash-map", - "log", - "parity-scale-codec", - "parking_lot 0.12.1", - "sc-client-api 25.0.0", - "sc-transaction-pool-api 25.0.0", - "sc-utils 11.0.0", - "serde", - "sp-api 23.0.0", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-tracing 14.0.0", - "sp-transaction-pool 23.0.0", - "substrate-prometheus-endpoint", - "thiserror", -] - -[[package]] -name = "sc-transaction-pool" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28627585ac5e3d8095067f5052d4b98fb5d2d61d819e8f27a7057750a03984f" +checksum = "f7985fab634814ee28fe3ecd2131fa2cb4c8eee88a7e60f1cd59dc0afa826fe2" dependencies = [ "async-trait", "futures", @@ -12501,75 +11831,42 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot 0.12.1", - "sc-client-api 27.0.0", - "sc-transaction-pool-api 27.0.0", - "sc-utils 13.0.0", - "serde", - "sp-api 25.0.0", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-tracing 15.0.0", - "sp-transaction-pool 25.0.0", + "sc-client-api", + "sc-transaction-pool-api", + "sc-utils", + "serde", + "sp-api", + "sp-blockchain", + "sp-core", + "sp-runtime", + "sp-tracing", + "sp-transaction-pool", "substrate-prometheus-endpoint", "thiserror", ] [[package]] name = "sc-transaction-pool-api" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1491607f296bb8cce09a5eb3a03320c60ad52bb8120127b26f69c32bcaccd8f2" -dependencies = [ - "async-trait", - "futures", - "log", - "parity-scale-codec", - "serde", - "sp-blockchain 25.0.0", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "thiserror", -] - -[[package]] -name = "sc-transaction-pool-api" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b8e2122ec55f2e7d14fcfad524e278e4ba7dc5f398f32e32e17c31ee519c72" +checksum = "3402336f81a52fd6b1fd5a16fa3f4279032de1e113fe4a973865bf0b0e28679c" dependencies = [ "async-trait", "futures", "log", "parity-scale-codec", "serde", - "sp-blockchain 27.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", + "sp-blockchain", + "sp-core", + "sp-runtime", "thiserror", ] [[package]] name = "sc-utils" -version = "11.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a4769c82dde62b9243dcc166be52e0c5d2d61cf2599923271118d9c8b997b1" -dependencies = [ - "async-channel", - "futures", - "futures-timer", - "lazy_static", - "log", - "parking_lot 0.12.1", - "prometheus", - "sp-arithmetic 20.0.0", -] - -[[package]] -name = "sc-utils" -version = "13.0.0" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6921990b07ea392b5cea4fae2153bac23cea983c09e5a6716bcae59340e9150d" +checksum = "0c4d5d1f106d670dd0c56fe540e8b0916aaeff6960bb39440ed8f3c80b52f8d4" dependencies = [ "async-channel", "futures", @@ -12578,7 +11875,7 @@ dependencies = [ "log", "parking_lot 0.12.1", "prometheus", - "sp-arithmetic 22.0.0", + "sp-arithmetic", ] [[package]] @@ -12636,15 +11933,32 @@ dependencies = [ "arrayref", "arrayvec 0.5.2", "curve25519-dalek 2.1.3", - "getrandom 0.1.16", - "merlin", - "rand 0.7.3", + "merlin 2.0.1", "rand_core 0.5.1", "sha2 0.8.2", "subtle 2.5.0", "zeroize", ] +[[package]] +name = "schnorrkel" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" +dependencies = [ + "aead", + "arrayref", + "arrayvec 0.7.4", + "curve25519-dalek 4.1.2", + "getrandom_or_panic", + "merlin 3.0.0", + "rand_core 0.6.4", + "serde_bytes", + "sha2 0.10.8", + "subtle 2.5.0", + "zeroize", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -12682,12 +11996,12 @@ dependencies = [ ] [[package]] -name = "secp256k1" -version = "0.24.3" +name = "seccompiler" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" +checksum = "345a3e4dddf721a478089d4697b83c6c0a8f5bf16086f6c13397e4534eb6e2e5" dependencies = [ - "secp256k1-sys 0.6.1", + "libc", ] [[package]] @@ -12696,16 +12010,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27" dependencies = [ - "secp256k1-sys 0.9.2", -] - -[[package]] -name = "secp256k1-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" -dependencies = [ - "cc", + "secp256k1-sys", ] [[package]] @@ -12797,6 +12102,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde_bytes" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +dependencies = [ + "serde", +] + [[package]] name = "serde_derive" version = "1.0.195" @@ -12909,9 +12223,9 @@ dependencies = [ [[package]] name = "shlex" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" @@ -12974,28 +12288,24 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "slot-range-helper" -version = "4.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e902c6b7e8f86718aee7989d6c8ea851d9772cb54a3389f2d729d8df41167ec" +checksum = "5d9bb569dc58f1e139c20f532a2ad13d54795060c0000c2c49dc812b17684197" dependencies = [ "enumn", "parity-scale-codec", "paste", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-runtime", + "sp-std", ] [[package]] -name = "slot-range-helper" -version = "6.0.0" +name = "slotmap" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4976dad61a607ef0b19e0cf9afb94846be96e1ac817e664dc71f67de3d7704a2" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" dependencies = [ - "enumn", - "parity-scale-codec", - "paste", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "version_check", ] [[package]] @@ -13027,6 +12337,17 @@ dependencies = [ "subtle 2.5.0", ] +[[package]] +name = "snowbridge-rococo-common" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dc8ddfb7bec2140079a788c312010f793d75fde1f996128517b0c14270296a4" +dependencies = [ + "frame-support", + "log", + "staging-xcm", +] + [[package]] name = "socket2" version = "0.4.10" @@ -13060,79 +12381,42 @@ dependencies = [ "http", "httparse", "log", - "rand 0.8.5", + "rand", "sha-1", ] [[package]] name = "sp-api" -version = "23.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f582f92ce47c86e4ffffe81fdd5120fea7c850dc0800653a7fa203bcc1532335" -dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "scale-info", - "sp-api-proc-macro 12.0.0", - "sp-core 25.0.0", - "sp-externalities 0.23.0", - "sp-metadata-ir 0.4.0", - "sp-runtime 28.0.0", - "sp-state-machine 0.32.0", - "sp-std 12.0.0", - "sp-trie 26.0.0", - "sp-version 26.0.0", - "thiserror", -] - -[[package]] -name = "sp-api" -version = "25.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7f4202d58db32c71adb23be744f7b0c93a8063ad9b17b9b4f81d3fc4633ae6" +checksum = "6dea138c6dbf282ab57756492f0232ea0a08575ca9cbe2b7b1ead49000f238a7" dependencies = [ "hash-db", "log", "parity-scale-codec", "scale-info", - "sp-api-proc-macro 14.0.0", - "sp-core 27.0.0", - "sp-externalities 0.24.0", - "sp-metadata-ir 0.5.0", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", - "sp-std 13.0.0", - "sp-trie 28.0.0", - "sp-version 28.0.0", + "sp-api-proc-macro", + "sp-core", + "sp-externalities", + "sp-metadata-ir", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", + "sp-version", "thiserror", ] [[package]] name = "sp-api-proc-macro" -version = "12.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a896941b2d27365a6f937ebce11e36d55132dc32104f6a48b4cd765b55efd252" -dependencies = [ - "Inflector", - "blake2 0.10.6", - "expander 2.0.0", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 2.0.48", -] - -[[package]] -name = "sp-api-proc-macro" -version = "14.0.0" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f19a8b3ebe748e59c5a679bb7510251b9c96873c0f4dc7669030c8254598716" +checksum = "0694be2891593450916d6b53a274d234bccbc86bcbada36ba23fc356989070c7" dependencies = [ "Inflector", "blake2 0.10.6", "expander 2.0.0", - "proc-macro-crate 2.0.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.48", @@ -13140,396 +12424,189 @@ dependencies = [ [[package]] name = "sp-application-crypto" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a93da025616ab59639f8e378df579c5aaa2c8b9999f328a0239156a57c991b53" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "sp-application-crypto" -version = "29.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd703034c3f4f34fa4965e0d4d773f50d0f56256b1759b36016b3b1baba147d8" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-std 13.0.0", -] - -[[package]] -name = "sp-arithmetic" -version = "20.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f80b5c16afb61dde1037a469d570adcc686440036429e50abe2301ba9d61aad5" +checksum = "7e4fe7a9b7fa9da76272b201e2fb3c7900d97d32a46b66af9a04dad457f73c71" dependencies = [ - "integer-sqrt", - "num-traits", "parity-scale-codec", "scale-info", "serde", - "sp-std 12.0.0", - "static_assertions", + "sp-core", + "sp-io", + "sp-std", ] [[package]] name = "sp-arithmetic" -version = "22.0.0" +version = "23.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dec3290d64ec9994457abe974f82fe7260c9cc32e920e4cf20611346ca7464" +checksum = "f42721f072b421f292a072e8f52a3b3c0fbc27428f0c9fe24067bc47046bad63" dependencies = [ "integer-sqrt", "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-std 13.0.0", - "static_assertions", -] - -[[package]] -name = "sp-authority-discovery" -version = "23.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e204d85bad6f02a5ae8fbba83c365e20459e979fd69db5575ba4b3ea1025ab3c" -dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-api 23.0.0", - "sp-application-crypto 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "sp-authority-discovery" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d626bc6b32b0defc2b7bdb5899c8f4ca86e9646e0cba80d09e9c263fd74fe39" -dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "sp-block-builder" -version = "23.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cd16df3d1cdad862d3e764f10f7675876b011e032907423fdfa377ae2ec8575" -dependencies = [ - "sp-api 23.0.0", - "sp-inherents 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "parity-scale-codec", + "scale-info", + "serde", + "sp-std", + "static_assertions", ] [[package]] -name = "sp-block-builder" -version = "25.0.0" +name = "sp-authority-discovery" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64475dafccb351ea025f06f40b205aae8de16563347622d513a0a7767090ca4d" +checksum = "22a740c05e9096eb17e93b5ab6aa5fe8ce0c9b4243777826d92133b3dd682e14" dependencies = [ - "sp-api 25.0.0", - "sp-inherents 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto", + "sp-runtime", + "sp-std", ] [[package]] -name = "sp-blockchain" -version = "25.0.0" +name = "sp-block-builder" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4932b97cde61874f395bab9b02443e3bd2046943abb280b63f83da9d0b623ea7" +checksum = "e6d2aa0943101367b955f5806c3ecea2e23df7c90059708107470dbfb9d3d7ab" dependencies = [ - "futures", - "log", - "parity-scale-codec", - "parking_lot 0.12.1", - "schnellru", - "sp-api 23.0.0", - "sp-consensus 0.29.0", - "sp-database", - "sp-runtime 28.0.0", - "sp-state-machine 0.32.0", - "thiserror", + "sp-api", + "sp-inherents", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-blockchain" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97252dce922ebb4239e52173d9d67957892da74196372e52d05f44ff68f887a2" +checksum = "f9adee5ddcf0682d0302ed640a285b9f922d933a205b63c7819a74d6092b6f78" dependencies = [ "futures", "log", "parity-scale-codec", "parking_lot 0.12.1", "schnellru", - "sp-api 25.0.0", - "sp-consensus 0.31.0", + "sp-api", + "sp-consensus", "sp-database", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", - "thiserror", -] - -[[package]] -name = "sp-consensus" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c5d7170fb7cfb18024ef7eeb40d272d22b9c3587d85cde2d091e8463b397f06" -dependencies = [ - "async-trait", - "futures", - "log", - "sp-core 25.0.0", - "sp-inherents 23.0.0", - "sp-runtime 28.0.0", - "sp-state-machine 0.32.0", + "sp-runtime", + "sp-state-machine", "thiserror", ] [[package]] name = "sp-consensus" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae7acf47fab76b2929ca26f679f1b94e66c03ae1f68637878fe6f18bc4dd160" +checksum = "cfcac16e85f78db9c99c9424659bb25790be079a0b758a3674ee8e1e7ef635b0" dependencies = [ "async-trait", "futures", "log", - "sp-core 27.0.0", - "sp-inherents 25.0.0", - "sp-runtime 30.0.1", - "sp-state-machine 0.34.0", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-state-machine", "thiserror", ] [[package]] name = "sp-consensus-aura" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643a7c486a645f398d219d1fbcc8a416cad5018164a212fefde5c2ef00a182e4" -dependencies = [ - "async-trait", - "parity-scale-codec", - "scale-info", - "sp-api 23.0.0", - "sp-application-crypto 27.0.0", - "sp-consensus-slots 0.29.0", - "sp-inherents 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-timestamp 23.0.0", -] - -[[package]] -name = "sp-consensus-aura" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237ffe23611f0f1e152b09e513090227752652eab2f10965825865102a86bfcc" -dependencies = [ - "async-trait", - "parity-scale-codec", - "scale-info", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-consensus-slots 0.31.0", - "sp-inherents 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-timestamp 25.0.0", -] - -[[package]] -name = "sp-consensus-babe" -version = "0.29.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "268f9b2e36d4e136c09ad87876cdcfd7ff734cb5917f333fefebff248f95a24f" +checksum = "3ab8e878a116b0885eaefd068235657737cb72fdce60a8c080dfd092f7d645cc" dependencies = [ "async-trait", "parity-scale-codec", "scale-info", - "serde", - "sp-api 23.0.0", - "sp-application-crypto 27.0.0", - "sp-consensus-slots 0.29.0", - "sp-core 25.0.0", - "sp-inherents 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-timestamp 23.0.0", + "sp-api", + "sp-application-crypto", + "sp-consensus-slots", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-timestamp", ] [[package]] name = "sp-consensus-babe" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d248658f288676d2c814bcf79577a5bd0b9f386bfae5c4860bfed6ca71ab973b" +checksum = "ebfedfdea5b22fb3625cd664e72503dcbd1087373181d5be0d092b3e7b4c61f5" dependencies = [ "async-trait", "parity-scale-codec", "scale-info", "serde", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-consensus-slots 0.31.0", - "sp-core 27.0.0", - "sp-inherents 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-timestamp 25.0.0", + "sp-api", + "sp-application-crypto", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-timestamp", ] [[package]] name = "sp-consensus-beefy" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9b2a4f6aac1f224dd3c4cdb2637c3c1a1c518a5af816fd87b4978c5a61a4cf" +checksum = "e09a424196a673f0e6b5fe79e4ab97da416491cfecab7bc835fa595134ac1b5c" dependencies = [ "lazy_static", "parity-scale-codec", "scale-info", "serde", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-io", "sp-mmr-primitives", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "strum", -] - -[[package]] -name = "sp-consensus-grandpa" -version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28bbee685900110419913f281ce0f29457fbc17418f00d15f0212c8043aba167" -dependencies = [ - "finality-grandpa", - "log", - "parity-scale-codec", - "scale-info", - "serde", - "sp-api 23.0.0", - "sp-application-crypto 27.0.0", - "sp-core 25.0.0", - "sp-keystore 0.31.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-runtime", + "sp-std", + "strum 0.24.1", ] [[package]] name = "sp-consensus-grandpa" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c01ae3526e29cc2c54daa6c55cb84911d89642f49cc6b2e49a6103f611c05a8" +checksum = "2a906b20409a5a69b1d9580848f502af20cf2c51a1ae028ba208375eb11f332b" dependencies = [ "finality-grandpa", "log", "parity-scale-codec", "scale-info", "serde", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-core 27.0.0", - "sp-keystore 0.33.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "sp-consensus-slots" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "895b0c176d4eead833ddee5251d3cccbaeb0191ca3f33f84b11d347bebc6e21f" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-std 12.0.0", - "sp-timestamp 23.0.0", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-keystore", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-consensus-slots" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4627b5d9a9991438c42944fb704315092d6c07967469aafa135328be2f9f412" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-std 13.0.0", - "sp-timestamp 25.0.0", -] - -[[package]] -name = "sp-core" -version = "25.0.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9ebb090ead698a6df04347c86a31ba91a387edb8a58534ec70c4f977d1e1e87" +checksum = "fdc5c1620d81196391daa15e78ea20cc11c59f08c509381c276d5d6a3d4d36af" dependencies = [ - "array-bytes 6.2.2", - "bitflags 1.3.2", - "blake2 0.10.6", - "bounded-collections", - "bs58 0.5.0", - "dyn-clonable", - "ed25519-zebra", - "futures", - "hash-db", - "hash256-std-hasher", - "impl-serde", - "lazy_static", - "libsecp256k1", - "log", - "merlin", "parity-scale-codec", - "parking_lot 0.12.1", - "paste", - "primitive-types", - "rand 0.8.5", - "regex", "scale-info", - "schnorrkel", - "secp256k1 0.24.3", - "secrecy", "serde", - "sp-core-hashing 13.0.0", - "sp-debug-derive 12.0.0", - "sp-externalities 0.23.0", - "sp-runtime-interface 21.0.0", - "sp-std 12.0.0", - "sp-storage 17.0.0", - "ss58-registry", - "substrate-bip39", - "thiserror", - "tiny-bip39", - "tracing", - "w3f-bls", - "zeroize", + "sp-std", + "sp-timestamp", ] [[package]] name = "sp-core" -version = "27.0.0" +version = "28.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d92c65ecfdb86fa1c4809b06a2a83d6f3bdb1ef4fe4c5a4f6df19229030d5283" +checksum = "f230cb12575455070da0fc174815958423a0b9a641d5e304a9457113c7cb4007" dependencies = [ "array-bytes 6.2.2", "bip39", @@ -13546,23 +12623,23 @@ dependencies = [ "itertools 0.10.5", "libsecp256k1", "log", - "merlin", + "merlin 3.0.0", "parity-scale-codec", "parking_lot 0.12.1", "paste", "primitive-types", - "rand 0.8.5", + "rand", "scale-info", - "schnorrkel", - "secp256k1 0.28.1", + "schnorrkel 0.11.4", + "secp256k1", "secrecy", "serde", - "sp-core-hashing 14.0.0", - "sp-debug-derive 13.0.0", - "sp-externalities 0.24.0", - "sp-runtime-interface 23.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", + "sp-core-hashing", + "sp-debug-derive", + "sp-externalities", + "sp-runtime-interface", + "sp-std", + "sp-storage", "ss58-registry", "substrate-bip39", "thiserror", @@ -13573,23 +12650,9 @@ dependencies = [ [[package]] name = "sp-core-hashing" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb8524f01591ee58b46cd83c9dbc0fcffd2fd730dabec4f59326cd58a00f17e2" -dependencies = [ - "blake2b_simd", - "byteorder", - "digest 0.10.7", - "sha2 0.10.8", - "sha3", - "twox-hash", -] - -[[package]] -name = "sp-core-hashing" -version = "14.0.0" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1936171e56a51272757760cc50883d2a8c37c650b3602a0aeed05b0c4fffc5f1" +checksum = "1e0f4990add7b2cefdeca883c0efa99bb4d912cb2196120e1500c0cc099553b0" dependencies = [ "blake2b_simd", "byteorder", @@ -13601,31 +12664,20 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ce3e6931303769197da81facefa86159fa1085dcd96ecb7e7407b5b93582a0" -dependencies = [ - "quote", - "sp-core-hashing 13.0.0", - "syn 2.0.48", -] - -[[package]] -name = "sp-core-hashing-proc-macro" -version = "14.0.0" +version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8497dc98fc204ba9c09abb99840d64964de1925fbd9ff74cc01aa18492c19bd8" +checksum = "7527f8dda7667c41009b2cd0efaddcb81709b9741bd5ee6d17b11bad835cc698" dependencies = [ "quote", - "sp-core-hashing 14.0.0", + "sp-core-hashing", "syn 2.0.48", ] [[package]] name = "sp-database" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c6e8c710d6a71512af6f42d9dba9c3d1f6ad793846480babf459bbde3d60a94" +checksum = "722cbecdbf5b94578137dbd07feb51e95f7de221be0c1ff4dcfe0bb4cd986929" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -13633,20 +12685,9 @@ dependencies = [ [[package]] name = "sp-debug-derive" -version = "12.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50535e1a5708d3ba5c1195b59ebefac61cc8679c2c24716b87a86e8b7ed2e4a1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", -] - -[[package]] -name = "sp-debug-derive" -version = "13.0.0" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fd2c660c3e940df93f4920b183cc103443d66503f68189fa7e4b3f09996a18" +checksum = "48d09fa0a5f7299fb81ee25ae3853d26200f7a348148aed6de76be905c007dbe" dependencies = [ "proc-macro2", "quote", @@ -13655,112 +12696,48 @@ dependencies = [ [[package]] name = "sp-externalities" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884d05160bc89d0943d1c9fb8006c3d44b80f37f8af607aeff8d4d9cc82e279a" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-std 12.0.0", - "sp-storage 17.0.0", -] - -[[package]] -name = "sp-externalities" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac0a1df458d0bba69bc011a3b0197049396272e497b207ad161289e7518b74bf" +checksum = "63867ec85950ced90d4ab1bba902a47db1b1efdf2829f653945669b2bb470a9c" dependencies = [ "environmental", "parity-scale-codec", - "sp-std 13.0.0", - "sp-storage 18.0.0", -] - -[[package]] -name = "sp-genesis-builder" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0cb71d40ad47e40bdcce5ae5531c7d7ba579cd495a0e0413642fb063fa66f84" -dependencies = [ - "serde_json", - "sp-api 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-std", + "sp-storage", ] [[package]] name = "sp-genesis-builder" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8152be87c61e6d74f491d05b67086408462ab0593b2340311a91a2d3d246f03" +checksum = "dfdc79df83221ec5a279cbbd08fd6f8be164b9b081c8e84593ce2c2ebd5d66c0" dependencies = [ "serde_json", - "sp-api 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "sp-inherents" -version = "23.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604229aa145be0cff853b47ffed8bc2c62eb08ec6974d6307b9a559c378e6dc5" -dependencies = [ - "async-trait", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "thiserror", + "sp-api", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-inherents" -version = "25.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7089c364b99df5ce82c1cedcaba56f574ff06e403d9f8640bee33f87750566a2" +checksum = "9a3caf2d1288549d7e6c32b453f2d4855d498bb88600101011e35653e022a6f2" dependencies = [ "async-trait", "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-runtime", + "sp-std", "thiserror", ] [[package]] name = "sp-io" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ced350da15e8ba3a106206840acc42a6d3eb0d7e8bf7aa43ab00eac0bdf956f" -dependencies = [ - "bytes", - "ed25519-dalek", - "libsecp256k1", - "log", - "parity-scale-codec", - "rustversion", - "secp256k1 0.24.3", - "sp-core 25.0.0", - "sp-externalities 0.23.0", - "sp-keystore 0.31.0", - "sp-runtime-interface 21.0.0", - "sp-state-machine 0.32.0", - "sp-std 12.0.0", - "sp-tracing 14.0.0", - "sp-trie 26.0.0", - "tracing", - "tracing-core", -] - -[[package]] -name = "sp-io" -version = "29.0.0" +version = "30.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c600c911757504c43f8c354edd1b0d327a1c2abfe947e490a6b62d8f1543d96" +checksum = "c55f26d89feedaf0faf81688b6e1e1e81329cd8b4c6a4fd6c5b97ed9dd068b8a" dependencies = [ "bytes", "ed25519-dalek", @@ -13768,215 +12745,128 @@ dependencies = [ "log", "parity-scale-codec", "rustversion", - "secp256k1 0.28.1", - "sp-core 27.0.0", - "sp-externalities 0.24.0", - "sp-keystore 0.33.0", - "sp-runtime-interface 23.0.0", - "sp-state-machine 0.34.0", - "sp-std 13.0.0", - "sp-tracing 15.0.0", - "sp-trie 28.0.0", + "secp256k1", + "sp-core", + "sp-externalities", + "sp-keystore", + "sp-runtime-interface", + "sp-state-machine", + "sp-std", + "sp-tracing", + "sp-trie", "tracing", - "tracing-core", -] - -[[package]] -name = "sp-keyring" -version = "28.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655ec0b35cb9cb9029fb323aa676b07d58deb872cecc7566e50278409a00ee95" -dependencies = [ - "lazy_static", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "strum", -] - -[[package]] -name = "sp-keyring" -version = "30.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245dfdf093568086ba7e3099319998a37d5ccf6b9faab45f170c766fc1122c37" -dependencies = [ - "lazy_static", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "strum", -] - -[[package]] -name = "sp-keystore" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8ec5ebbba70bee83d79c3fe5e49f12df0a4bb6029858ddf9a15eea7539a592" -dependencies = [ - "parity-scale-codec", - "parking_lot 0.12.1", - "sp-core 25.0.0", - "sp-externalities 0.23.0", - "thiserror", -] - -[[package]] -name = "sp-keystore" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b955546b815ace30f63542efda71ce4e010444596cd8316f7ef49a26fb971709" -dependencies = [ - "parity-scale-codec", - "parking_lot 0.12.1", - "sp-core 27.0.0", - "sp-externalities 0.24.0", - "thiserror", -] - -[[package]] -name = "sp-maybe-compressed-blob" -version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8846768f036429227e49f6ab523fbee4bc6edfee278a361bf27999590fe020d4" -dependencies = [ - "thiserror", - "zstd 0.12.4", + "tracing-core", ] [[package]] -name = "sp-maybe-compressed-blob" -version = "10.0.0" +name = "sp-keyring" +version = "31.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0950218edb5c5fb4867e28814d7b13c13a3c80ea37f356dc410437105a07cff8" +checksum = "98165ce7c625a8cdb88d39c6bbd56fe8b32ada64ed0894032beba99795f557da" dependencies = [ - "thiserror", - "zstd 0.12.4", + "sp-core", + "sp-runtime", + "strum 0.24.1", ] [[package]] -name = "sp-metadata-ir" -version = "0.4.0" +name = "sp-keystore" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca9ff0e522a74725ac92f009d38deeb12e880f5296afbd78a6c6b970b773278" +checksum = "96806a28a62ed9ddecd0b28857b1344d029390f7c5c42a2ff9199cbf5638635c" dependencies = [ - "frame-metadata", "parity-scale-codec", - "scale-info", - "sp-std 12.0.0", + "parking_lot 0.12.1", + "sp-core", + "sp-externalities", + "thiserror", ] [[package]] -name = "sp-metadata-ir" -version = "0.5.0" +name = "sp-maybe-compressed-blob" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97cacf4a5b315d8709b5a29ad8e736c0ad5b719e70d02aca0c29c7e3dca4a6e2" +checksum = "f0c768c11afbe698a090386876911da4236af199cd38a5866748df4d8628aeff" dependencies = [ - "frame-metadata", - "parity-scale-codec", - "scale-info", - "sp-std 13.0.0", + "thiserror", + "zstd 0.12.4", ] [[package]] -name = "sp-mixnet" -version = "0.1.0" +name = "sp-metadata-ir" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf61f28ca97aab6c21a3c6e0ed496e60d505e5de1f43fd4ba748c9afaa4fc85" +checksum = "fa0b5e87e56c1bb26d9524d48dd127121d630f895bd5914a34f0b017489f7c1d" dependencies = [ + "frame-metadata", "parity-scale-codec", "scale-info", - "sp-api 23.0.0", - "sp-application-crypto 27.0.0", - "sp-std 12.0.0", + "sp-std", ] [[package]] name = "sp-mixnet" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bd1dca687e8b360ea48c6e7351c175c8c2ca4d7f0cc0ec88274ef8519c507f" +checksum = "85ed83d2f899484bde61c72cbae6edfb25708d43e6b19934e206f3c706df67df" dependencies = [ "parity-scale-codec", "scale-info", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-std 13.0.0", + "sp-api", + "sp-application-crypto", + "sp-std", ] [[package]] name = "sp-mmr-primitives" -version = "25.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b6fad7c530c463057d68d465aff08e5fff068c3c6827ff64fbd1ee34d3f2a5" +checksum = "b7526a73d518c03fa2447588b1544019a194a4f113cf34d2610d3b5925c80c86" dependencies = [ "ckb-merkle-mountain-range", "log", "parity-scale-codec", "scale-info", "serde", - "sp-api 25.0.0", - "sp-core 27.0.0", - "sp-debug-derive 13.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-api", + "sp-core", + "sp-debug-derive", + "sp-runtime", + "sp-std", "thiserror", ] [[package]] name = "sp-npos-elections" -version = "23.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee3536d7fd990c30864ca545d7bdbee02dc66a92ac2a7a66ab4e21521992a7b" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-arithmetic 20.0.0", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "sp-npos-elections" -version = "25.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d56d158aed198ec52dc04ee64e6be8dd1bb42e6837c80aa5aa8c058479afa8" +checksum = "fa8efff28b504b4b928288976e5f72c00c7ece9d2348a7ca2496c77849dd4c8f" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "sp-offchain" -version = "23.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9310227f043ed99877b0449a683025a7461431a00995dcd6ef423a273d0fd85d" -dependencies = [ - "sp-api 23.0.0", - "sp-core 25.0.0", - "sp-runtime 28.0.0", + "sp-arithmetic", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-offchain" -version = "25.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5016e6a6cb55aa55f290abe5c5f5efc35defa9eeb996a21667d18ae256c45d5c" +checksum = "fb45b3e397dc9c7b81cb2d8d641d0bcb1f525b60e83835783413ba73b3f61ac9" dependencies = [ - "sp-api 25.0.0", - "sp-core 27.0.0", - "sp-runtime 30.0.1", + "sp-api", + "sp-core", + "sp-runtime", ] [[package]] name = "sp-panic-handler" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b00e40857ed3e0187f145b037c733545c5633859f1bd1d1b09deb52805fa696a" +checksum = "d8f5a17a0a11de029a8b811cb6e8b32ce7e02183cc04a3e965c383246798c416" dependencies = [ "backtrace", "lazy_static", @@ -13985,54 +12875,20 @@ dependencies = [ [[package]] name = "sp-rpc" -version = "23.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51867fea921f54bbaa2bf505f373559b5f3b80e8d7f38ecb9677f0d3795a3e6a" -dependencies = [ - "rustc-hash", - "serde", - "sp-core 25.0.0", -] - -[[package]] -name = "sp-rpc" -version = "25.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3921819bed23ddf4ad6bf402b596a6950255b91f9b58fee88b454dd988d938d6" +checksum = "8a55f2c7660b579627d22932ecfe2e5f001a7671d2fa77667387517c7f80e6fb" dependencies = [ "rustc-hash", "serde", - "sp-core 27.0.0", -] - -[[package]] -name = "sp-runtime" -version = "28.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9c40ff7303e62219b55635e5245d963358cb77d6916250991ebcb82c0be2c6" -dependencies = [ - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "paste", - "rand 0.8.5", - "scale-info", - "serde", - "sp-application-crypto 27.0.0", - "sp-arithmetic 20.0.0", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-std 12.0.0", - "sp-weights 24.0.0", + "sp-core", ] [[package]] name = "sp-runtime" -version = "30.0.1" +version = "31.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4bb0ddcc4e26cc6c770b49149e1a07ad6b34ab22d3da94330994b7145a025f" +checksum = "a3bb49a4475d390198dfd3d41bef4564ab569fbaf1b5e38ae69b35fc01199d91" dependencies = [ "docify", "either", @@ -14041,78 +12897,46 @@ dependencies = [ "log", "parity-scale-codec", "paste", - "rand 0.8.5", + "rand", "scale-info", "serde", "simple-mermaid", - "sp-application-crypto 29.0.0", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-std 13.0.0", - "sp-weights 26.0.0", -] - -[[package]] -name = "sp-runtime-interface" -version = "21.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f365332922a8cfa98ab00c6d08b1b0f24e159e730dd554e720d950ff3371b1f" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "primitive-types", - "sp-externalities 0.23.0", - "sp-runtime-interface-proc-macro 15.0.0", - "sp-std 12.0.0", - "sp-storage 17.0.0", - "sp-tracing 14.0.0", - "sp-wasm-interface 18.0.0", - "static_assertions", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-std", + "sp-weights", ] [[package]] name = "sp-runtime-interface" -version = "23.0.0" +version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0093f419cb2ef80c8ecb583ac54e05d1105710eb84add7f9483c8ea882cbaff" +checksum = "f66b66d8cec3d785fa6289336c1d9cbd4305d5d84f7134378c4d79ed7983e6fb" dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", "primitive-types", - "sp-externalities 0.24.0", - "sp-runtime-interface-proc-macro 16.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-tracing 15.0.0", - "sp-wasm-interface 19.0.0", + "sp-externalities", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", "static_assertions", ] [[package]] name = "sp-runtime-interface-proc-macro" -version = "15.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2afcbd1bd18d323371111b66b7ac2870bdc1c86c3d7b0dae67b112ca52b4d8" -dependencies = [ - "Inflector", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 2.0.48", -] - -[[package]] -name = "sp-runtime-interface-proc-macro" -version = "16.0.0" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ebdb4aff8286f5095871b2f950037d690edb0fed0590af5f6735352533a53b6" +checksum = "cfaf6e85b2ec12a4b99cd6d8d57d083e30c94b7f1b0d8f93547121495aae6f0c" dependencies = [ "Inflector", "expander 2.0.0", - "proc-macro-crate 2.0.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.48", @@ -14120,105 +12944,52 @@ dependencies = [ [[package]] name = "sp-session" -version = "24.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248dd8f49aa96b56bf0a7d513691ddb4194f9359fdb93e94397eabdef1036085" -dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-api 23.0.0", - "sp-core 25.0.0", - "sp-keystore 0.31.0", - "sp-runtime 28.0.0", - "sp-staking 23.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "sp-session" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cdec3cb1c7f0900cfaec5de83f00841d99f2c2fbd32d44931601b43ba6d5bfa" -dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-api 25.0.0", - "sp-core 27.0.0", - "sp-keystore 0.33.0", - "sp-runtime 30.0.1", - "sp-staking 25.0.0", - "sp-std 13.0.0", -] - -[[package]] -name = "sp-staking" -version = "23.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee0feed0137234598bd1f76d0b468c585ea16619ea9ed1acbba82dd24ac79788" +checksum = "8048981db53d4f5171e6003f5e11fbfc27a8c196b0827619907a4214746a623b" dependencies = [ - "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "serde", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", + "sp-api", + "sp-core", + "sp-keystore", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "sp-staking" -version = "25.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15411bbc26ca6d9b14d44698ef19243c8875fa7cc3260621ba28b3241c477c" +checksum = "c0e68be3fff84dd8ee552f9d13dd2e9eab3663e0bddfc6c6c88de02aaca1e311" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", "serde", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "sp-state-machine" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96e087fa4430befd2047b61d912c9d6fa4eaed408c4b58b46c6e9acd7965f2d3" -dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "parking_lot 0.12.1", - "rand 0.8.5", - "smallvec", - "sp-core 25.0.0", - "sp-externalities 0.23.0", - "sp-panic-handler", - "sp-std 12.0.0", - "sp-trie 26.0.0", - "thiserror", - "tracing", - "trie-db", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-state-machine" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f5027dceaa62f3c18f40593ee6a898df69c70e84e01450a17293511c4f3c46c" +checksum = "718c779ad1d6fcc0be64c7ce030b33fa44b5c8914b3a1319ef63bb5f27fb98df" dependencies = [ "hash-db", "log", "parity-scale-codec", "parking_lot 0.12.1", - "rand 0.8.5", + "rand", "smallvec", - "sp-core 27.0.0", - "sp-externalities 0.24.0", + "sp-core", + "sp-externalities", "sp-panic-handler", - "sp-std 13.0.0", - "sp-trie 28.0.0", + "sp-std", + "sp-trie", "thiserror", "tracing", "trie-db", @@ -14226,143 +12997,71 @@ dependencies = [ [[package]] name = "sp-statement-store" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8654bcd37602b1811414050d34d14f543873bd4e64e50d210a0116b660c600" -dependencies = [ - "aes-gcm", - "curve25519-dalek 4.1.2", - "ed25519-dalek", - "hkdf", - "parity-scale-codec", - "rand 0.8.5", - "scale-info", - "sha2 0.10.8", - "sp-api 23.0.0", - "sp-application-crypto 27.0.0", - "sp-core 25.0.0", - "sp-externalities 0.23.0", - "sp-runtime 28.0.0", - "sp-runtime-interface 21.0.0", - "sp-std 12.0.0", - "thiserror", - "x25519-dalek 2.0.0", -] - -[[package]] -name = "sp-statement-store" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66ce852bff3c772be9646cc3491ee7dc8db47a3fb860659b5258c585a730013" +checksum = "fee6d4ceb2513f180e6e017fd6d6f3c9a1a122dcedee5fc8e4254d8a7ecf793d" dependencies = [ "aes-gcm", "curve25519-dalek 4.1.2", "ed25519-dalek", "hkdf", "parity-scale-codec", - "rand 0.8.5", + "rand", "scale-info", "sha2 0.10.8", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-core 27.0.0", - "sp-externalities 0.24.0", - "sp-runtime 30.0.1", - "sp-runtime-interface 23.0.0", - "sp-std 13.0.0", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-externalities", + "sp-runtime", + "sp-runtime-interface", + "sp-std", "thiserror", "x25519-dalek 2.0.0", ] [[package]] name = "sp-std" -version = "12.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c78c5a66682568cc7b153603c5d01a2cc8f5c221c7b1e921517a0eef18ae05" - -[[package]] -name = "sp-std" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71323a3b5f189085d11123ce397b3cdfaec4437071243b51f68a38a4833fbaa7" - -[[package]] -name = "sp-storage" -version = "17.0.0" +version = "14.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016f20812cc51bd479cc88d048c35d44cd3adde4accdb159d49d6050f2953595" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive 12.0.0", - "sp-std 12.0.0", -] +checksum = "12f8ee986414b0a9ad741776762f4083cd3a5128449b982a3919c4df36874834" [[package]] name = "sp-storage" -version = "18.0.0" +version = "19.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5300c9012180259489a97167f4c45cf3362446e5f0d0c66b6e9342968be8f22" +checksum = "1fb92d7b24033a8a856d6e20dd980b653cbd7af7ec471cc988b1b7c1d2e3a32b" dependencies = [ "impl-serde", "parity-scale-codec", "ref-cast", "serde", - "sp-debug-derive 13.0.0", - "sp-std 13.0.0", -] - -[[package]] -name = "sp-timestamp" -version = "23.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004a7f453240db80b2967c0e1c6411836efc7daa7afae98fd16202caa51460e0" -dependencies = [ - "async-trait", - "parity-scale-codec", - "sp-inherents 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "thiserror", + "sp-debug-derive", + "sp-std", ] [[package]] name = "sp-timestamp" -version = "25.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c6c12bc3bce3f785984843ea997e7f3da9c43ee392bf8c6f9ab183976c0cbf" +checksum = "347eaddd5b07856ccec69ac3300e72e392a5efc3aea5fb4b7230888a0b447b9e" dependencies = [ "async-trait", "parity-scale-codec", - "sp-inherents 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-inherents", + "sp-runtime", + "sp-std", "thiserror", ] [[package]] name = "sp-tracing" -version = "14.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d727cb5265641ffbb7d4e42c18b63e29f6cfdbd240aae3bcf093c3d6eb29a19" -dependencies = [ - "parity-scale-codec", - "sp-std 12.0.0", - "tracing", - "tracing-core", - "tracing-subscriber", -] - -[[package]] -name = "sp-tracing" -version = "15.0.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b63d14c3214b8b5fe35b67bd61124b5f080cc9d1312b227e0c6cc2a198461e" +checksum = "0351810b9d074df71c4514c5228ed05c250607cba131c1c9d1526760ab69c05c" dependencies = [ "parity-scale-codec", - "sp-std 13.0.0", + "sp-std", "tracing", "tracing-core", "tracing-subscriber", @@ -14370,101 +13069,49 @@ dependencies = [ [[package]] name = "sp-transaction-pool" -version = "23.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7cd2afe89c474339d15d06e73639171ebe4d280be6904d9349072103da21427" -dependencies = [ - "sp-api 23.0.0", - "sp-runtime 28.0.0", -] - -[[package]] -name = "sp-transaction-pool" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3927edc3371ad785725b3e50edf6769097ba64b193fc4779ec6e047f0d106dd0" -dependencies = [ - "sp-api 25.0.0", - "sp-runtime 30.0.1", -] - -[[package]] -name = "sp-transaction-storage-proof" -version = "23.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39ae7c4954431b8479f7b2b6b82f0551cc360a1ee59b6a5276eef86a1099eaed" +checksum = "97c4052e69eacdb7a411e050c56a838f460b8a879071125451e9bb2d4814df34" dependencies = [ - "async-trait", - "parity-scale-codec", - "scale-info", - "sp-core 25.0.0", - "sp-inherents 23.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-trie 26.0.0", + "sp-api", + "sp-runtime", ] [[package]] name = "sp-transaction-storage-proof" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c58c860d7e2e7dc267fa0d8bcf451816d9a0e387c4fcefafb15412aa7fd97fa" -dependencies = [ - "async-trait", - "parity-scale-codec", - "scale-info", - "sp-core 27.0.0", - "sp-inherents 25.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-trie 28.0.0", -] - -[[package]] -name = "sp-trie" version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e359b358263cc322c3f678c272a3a519621d9853dcfa1374dfcbdb5f54c6f85" -dependencies = [ - "ahash 0.8.8", - "hash-db", - "hashbrown 0.13.2", - "lazy_static", - "memory-db", - "nohash-hasher", - "parity-scale-codec", - "parking_lot 0.12.1", - "rand 0.8.5", - "scale-info", - "schnellru", - "sp-core 25.0.0", - "sp-std 12.0.0", - "thiserror", - "tracing", - "trie-db", - "trie-root", +checksum = "0b2a2c693bc7ca363c9d2cd412276582aef10c794399aaffbd1fe2351099a1a5" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-trie", ] [[package]] name = "sp-trie" -version = "28.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cbc3ad723c9addc4b7aafbe8bfabf638c39be3c911e11f58e924e17554003ac" +checksum = "2e4d24d84a0beb44a71dcac1b41980e1edf7fb722c7f3046710136a283cd479b" dependencies = [ "ahash 0.8.8", "hash-db", - "hashbrown 0.13.2", "lazy_static", "memory-db", "nohash-hasher", "parity-scale-codec", "parking_lot 0.12.1", - "rand 0.8.5", + "rand", "scale-info", "schnellru", - "sp-core 27.0.0", - "sp-externalities 0.24.0", - "sp-std 13.0.0", + "sp-core", + "sp-externalities", + "sp-std", "thiserror", "tracing", "trie-db", @@ -14473,45 +13120,27 @@ dependencies = [ [[package]] name = "sp-version" -version = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e93da332eba3cb59a65f128da5edd5c70e1475692b45470104e7465b1278471" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "parity-wasm", - "scale-info", - "serde", - "sp-core-hashing-proc-macro 13.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-version-proc-macro", - "thiserror", -] - -[[package]] -name = "sp-version" -version = "28.0.0" +version = "29.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f18671744ee3af2a325daa257cc7aba2c464b36cca165d61bec72ed1ddcbb51" +checksum = "afd1b053394347e22f541696bca4a9ac3ec848b50d1b86f5018d2b771f39f11a" dependencies = [ "impl-serde", "parity-scale-codec", "parity-wasm", "scale-info", "serde", - "sp-core-hashing-proc-macro 14.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", + "sp-core-hashing-proc-macro", + "sp-runtime", + "sp-std", "sp-version-proc-macro", "thiserror", ] [[package]] name = "sp-version-proc-macro" -version = "12.0.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49535d8c7184dab46d15639c68374a30cbb1534e392fa09a1ebb059a993ad436" +checksum = "e9bc3fed32d6dacbbbfb28dd1fe0224affbb737cb6cbfca1d9149351c2b69a7d" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -14521,62 +13150,32 @@ dependencies = [ [[package]] name = "sp-wasm-interface" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d85813d46a22484cdf5e5afddbbe85442dd1b4d84d67a8c7792f92f9f93607" -dependencies = [ - "anyhow", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "sp-std 12.0.0", - "wasmtime", -] - -[[package]] -name = "sp-wasm-interface" -version = "19.0.0" +version = "20.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4ef2e859d3cde7294c3bf691f8f64244a6a9bb67e53c65729b129318757070e" +checksum = "9ef97172c42eb4c6c26506f325f48463e9bc29b2034a587f1b9e48c751229bee" dependencies = [ "anyhow", "impl-trait-for-tuples", "log", "parity-scale-codec", - "sp-std 13.0.0", + "sp-std", "wasmtime", ] [[package]] name = "sp-weights" -version = "24.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "751676c1263e7f3600af16bad26a7978a816bc532676fe05eafa23b862c05b9e" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "smallvec", - "sp-arithmetic 20.0.0", - "sp-core 25.0.0", - "sp-debug-derive 12.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "sp-weights" -version = "26.0.0" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8813a9942a3b900d5ce109875b91ff8ae7eb5849545ebb6464c22aa21e42622e" +checksum = "9e874bdf9dd3fd3242f5b7867a4eaedd545b02f29041a46d222a9d9d5caaaa5c" dependencies = [ "bounded-collections", "parity-scale-codec", "scale-info", "serde", "smallvec", - "sp-arithmetic 22.0.0", - "sp-debug-derive 13.0.0", - "sp-std 13.0.0", + "sp-arithmetic", + "sp-debug-derive", + "sp-std", ] [[package]] @@ -14599,7 +13198,7 @@ checksum = "a0ef947f358b9c238923f764c72a4a9d42f2d637c46e059dbd319d6e7cfb4f82" dependencies = [ "lazy_static", "maplit", - "strum", + "strum 0.24.1", ] [[package]] @@ -14638,42 +13237,37 @@ name = "staging-kusama-runtime" version = "1.0.0" dependencies = [ "binary-merkle-tree", - "bitvec", - "frame-benchmarking 27.0.0", - "frame-election-provider-support 27.0.0", - "frame-executive 27.0.0", + "frame-benchmarking", + "frame-election-provider-support", + "frame-executive", "frame-remote-externalities", - "frame-support 27.0.0", - "frame-system 27.0.0", - "frame-system-benchmarking 27.0.0", - "frame-system-rpc-runtime-api 25.0.0", - "frame-try-runtime 0.33.0", + "frame-support", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", "hex-literal", "kusama-runtime-constants", "log", - "pallet-asset-rate 6.0.0", - "pallet-authority-discovery 27.0.0", - "pallet-authorship 27.0.0", - "pallet-babe 27.0.0", + "pallet-asset-rate", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", "pallet-bags-list", - "pallet-balances 27.0.0", + "pallet-balances", "pallet-beefy", "pallet-beefy-mmr", "pallet-bounties", "pallet-child-bounties", - "pallet-collective 27.0.0", "pallet-conviction-voting", - "pallet-democracy", - "pallet-election-provider-multi-phase 26.0.0", - "pallet-election-provider-support-benchmarking 26.0.0", - "pallet-elections-phragmen", - "pallet-fast-unstake 26.0.0", + "pallet-election-provider-multi-phase", + "pallet-election-provider-support-benchmarking", + "pallet-fast-unstake", "pallet-grandpa", "pallet-identity", "pallet-im-online", "pallet-indices", - "pallet-membership 27.0.0", - "pallet-message-queue 30.0.0", + "pallet-message-queue", "pallet-mmr", "pallet-multisig", "pallet-nis", @@ -14683,125 +13277,86 @@ dependencies = [ "pallet-offences", "pallet-offences-benchmarking", "pallet-preimage", - "pallet-proxy 27.0.0", + "pallet-proxy", "pallet-ranked-collective", "pallet-recovery", "pallet-referenda", - "pallet-scheduler 28.0.0", - "pallet-session 27.0.0", + "pallet-scheduler", + "pallet-session", "pallet-session-benchmarking", "pallet-society", - "pallet-staking 27.0.0", + "pallet-staking", "pallet-staking-runtime-api", "pallet-state-trie-migration", - "pallet-timestamp 26.0.0", - "pallet-tips", - "pallet-transaction-payment 27.0.0", - "pallet-transaction-payment-rpc-runtime-api 27.0.0", - "pallet-treasury 26.0.0", - "pallet-utility 27.0.0", - "pallet-vesting 27.0.0", + "pallet-timestamp", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-treasury", + "pallet-utility", + "pallet-vesting", "pallet-whitelist", - "pallet-xcm 6.0.0", - "pallet-xcm-benchmarks 6.0.2", + "pallet-xcm", + "pallet-xcm-benchmarks", "parity-scale-codec", - "polkadot-primitives 6.0.0", - "polkadot-runtime-common 6.0.0", - "polkadot-runtime-parachains 6.0.0", - "rustc-hex", + "polkadot-primitives", + "polkadot-runtime-common", + "polkadot-runtime-parachains", "scale-info", "separator", - "serde", - "serde_derive", "serde_json", - "sp-api 25.0.0", - "sp-application-crypto 29.0.0", - "sp-arithmetic 22.0.0", - "sp-authority-discovery 25.0.0", - "sp-block-builder 25.0.0", - "sp-consensus-babe 0.31.0", + "sp-api", + "sp-arithmetic", + "sp-authority-discovery", + "sp-block-builder", + "sp-consensus-babe", "sp-consensus-beefy", - "sp-core 27.0.0", - "sp-debug-derive 13.0.0", - "sp-genesis-builder 0.6.0", - "sp-inherents 25.0.0", - "sp-io 29.0.0", - "sp-keyring 30.0.0", - "sp-mmr-primitives", - "sp-npos-elections 25.0.0", - "sp-offchain 25.0.0", - "sp-runtime 30.0.1", - "sp-session 26.0.0", - "sp-staking 25.0.0", - "sp-std 13.0.0", - "sp-storage 18.0.0", - "sp-tracing 15.0.0", - "sp-transaction-pool 25.0.0", - "sp-trie 28.0.0", - "sp-version 28.0.0", - "staging-xcm 6.0.0", - "staging-xcm-builder 6.0.2", - "staging-xcm-executor 6.0.2", - "static_assertions", - "substrate-wasm-builder 16.0.0", + "sp-core", + "sp-debug-derive", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-keyring", + "sp-npos-elections", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", + "sp-storage", + "sp-tracing", + "sp-transaction-pool", + "sp-trie", + "sp-version", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "substrate-wasm-builder", "tiny-keccak", "tokio", ] [[package]] name = "staging-parachain-info" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1bcf863664ca5708d92894fc30d2c6606c7dbb7d7cfcf43b9ae69d5b83f4fb" -dependencies = [ - "cumulus-primitives-core 0.4.0", - "frame-support 25.0.0", - "frame-system 25.0.0", - "parity-scale-codec", - "scale-info", - "sp-runtime 28.0.0", - "sp-std 12.0.0", -] - -[[package]] -name = "staging-parachain-info" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fd981bfbcb9a942de6cf79555d510fcec0d1b255b74303daf0182ab69a495f" -dependencies = [ - "cumulus-primitives-core 0.6.0", - "frame-support 27.0.0", - "frame-system 27.0.0", - "parity-scale-codec", - "scale-info", - "sp-runtime 30.0.1", - "sp-std 13.0.0", -] - -[[package]] -name = "staging-xcm" -version = "4.0.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abd0c2e401a1e264379131c27676bc65c9631aaa508044bc04d8ce60a7d8524" +checksum = "ad554ffd27fbcafd82e234d7e7188e458e51bfe2b3b5000dd236dce762e3e95f" dependencies = [ - "bounded-collections", - "derivative", - "environmental", - "impl-trait-for-tuples", - "log", + "cumulus-primitives-core", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "serde", - "sp-weights 24.0.0", - "xcm-procedural 4.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "staging-xcm" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "407cc6e4b9cd1b62df9270d921d94ed375e697d65a782975d5e5a5f85bbeafb5" +checksum = "0df18af00766d22926916bb443f14742c65cc6b2f0fe997b8f26da0d0f9ee9ca" dependencies = [ + "array-bytes 6.2.2", "bounded-collections", "derivative", "environmental", @@ -14810,97 +13365,53 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-weights 26.0.0", - "xcm-procedural 6.0.0", -] - -[[package]] -name = "staging-xcm-builder" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8628fd8878df3978a34da0ef75722b118f4bc40bb47fb3c687cc0899f7ede43c" -dependencies = [ - "frame-support 25.0.0", - "frame-system 25.0.0", - "impl-trait-for-tuples", - "log", - "pallet-transaction-payment 25.0.0", - "parity-scale-codec", - "polkadot-parachain-primitives 3.0.0", - "scale-info", - "sp-arithmetic 20.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-weights 24.0.0", - "staging-xcm 4.0.0", - "staging-xcm-executor 4.0.2", + "sp-weights", + "xcm-procedural", ] [[package]] name = "staging-xcm-builder" -version = "6.0.2" +version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1c24e7dab7298f4a3fd346a900745af2b34691ed95eec641e25ad13679c0456" +checksum = "3ba4f214fe99d79ffcc266f431abbb32d3596788327b925d469c7bb6a3c84d3c" dependencies = [ - "frame-support 27.0.0", - "frame-system 27.0.0", + "frame-support", + "frame-system", "impl-trait-for-tuples", "log", - "pallet-transaction-payment 27.0.0", + "pallet-transaction-payment", "parity-scale-codec", - "polkadot-parachain-primitives 5.0.0", + "polkadot-parachain-primitives", "scale-info", - "sp-arithmetic 22.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-weights 26.0.0", - "staging-xcm 6.0.0", - "staging-xcm-executor 6.0.2", + "sp-arithmetic", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", + "staging-xcm", + "staging-xcm-executor", ] [[package]] name = "staging-xcm-executor" -version = "4.0.2" +version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49bc3b2b8429aacca1897c72b786e7c21d36170a919e9333fe533868d32d2774" +checksum = "5f1dea1e33eefee513c197c24255670951a2c515a6ce2c7049fe86385400074f" dependencies = [ "environmental", - "frame-benchmarking 25.0.0", - "frame-support 25.0.0", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "sp-arithmetic 20.0.0", - "sp-core 25.0.0", - "sp-io 27.0.0", - "sp-runtime 28.0.0", - "sp-std 12.0.0", - "sp-weights 24.0.0", - "staging-xcm 4.0.0", -] - -[[package]] -name = "staging-xcm-executor" -version = "6.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e329638f105e28b500e31062834e1011be8a81326a8499fe2f1557e924dbe54" -dependencies = [ - "environmental", - "frame-benchmarking 27.0.0", - "frame-support 27.0.0", + "frame-benchmarking", + "frame-support", "impl-trait-for-tuples", "log", "parity-scale-codec", "scale-info", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-weights 26.0.0", - "staging-xcm 6.0.0", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", + "staging-xcm", ] [[package]] @@ -14962,9 +13473,15 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" dependencies = [ - "strum_macros", + "strum_macros 0.24.3", ] +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" + [[package]] name = "strum_macros" version = "0.24.3" @@ -14978,6 +13495,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.48", +] + [[package]] name = "substrate-bip39" version = "0.4.5" @@ -14985,8 +13515,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e620c7098893ba667438b47169c00aacdd9e7c10e042250ce2b60b087ec97328" dependencies = [ "hmac 0.11.0", - "pbkdf2 0.8.0", - "schnorrkel", + "pbkdf2", + "schnorrkel 0.9.1", "sha2 0.9.9", "zeroize", ] @@ -15003,6 +13533,26 @@ dependencies = [ "substrate-typenum", ] +[[package]] +name = "substrate-frame-rpc-system" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcee7812a1e1cec85e3095c5d1c1627ceb084c0c81e66c2f9df7cb7b3a5938f3" +dependencies = [ + "frame-system-rpc-runtime-api", + "futures", + "jsonrpsee", + "log", + "parity-scale-codec", + "sc-rpc-api", + "sc-transaction-pool-api", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-core", + "sp-runtime", +] + [[package]] name = "substrate-geohash" version = "0.13.0" @@ -15016,9 +13566,9 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ededbe617291db8a47d6e5155486ff1e5425f0bbf5dcb7f752730466a62bd293" +checksum = "0d8fe06b03b8a291c09507c42f92a2c2c10dd3d62975d02c7f64a92d87bfe09b" dependencies = [ "hyper", "log", @@ -15029,62 +13579,61 @@ dependencies = [ [[package]] name = "substrate-rpc-client" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fa0743d9665e00acaed5800e605ee7c977eafbb2dfa86cbceda2708fe8d6ac3" +checksum = "9076480cc6f480429b081bf93607d32183bdac4d6f0d2969d5e08de08bea1701" dependencies = [ "async-trait", "jsonrpsee", "log", - "sc-rpc-api 0.32.0", + "sc-rpc-api", "serde", - "sp-runtime 30.0.1", + "sp-runtime", ] [[package]] -name = "substrate-typenum" -version = "1.16.0" +name = "substrate-state-trie-migration-rpc" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f0091e93c2c75b233ae39424c52cb8a662c0811fb68add149e20e5d7e8a788" +checksum = "c92c25dcb3e4aee5559c2bd9b4d105786220cad116719d7ebb39e4f359865d44" dependencies = [ + "jsonrpsee", "parity-scale-codec", - "scale-info", + "sc-client-api", + "sc-rpc-api", + "serde", + "sp-core", + "sp-runtime", + "sp-state-machine", + "sp-trie", + "trie-db", ] [[package]] -name = "substrate-wasm-builder" -version = "14.0.0" +name = "substrate-typenum" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12ab1707dbbd129622b771a9b80b25f0ebf1c04854b907bc44b51ec96fb4005b" +checksum = "f0f0091e93c2c75b233ae39424c52cb8a662c0811fb68add149e20e5d7e8a788" dependencies = [ - "ansi_term", - "build-helper", - "cargo_metadata", - "filetime", - "parity-wasm", - "sp-maybe-compressed-blob 9.0.0", - "strum", - "tempfile", - "toml 0.7.8", - "walkdir", - "wasm-opt", + "parity-scale-codec", + "scale-info", ] [[package]] name = "substrate-wasm-builder" -version = "16.0.0" +version = "17.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8166be0b5e24dc91209ec92869bfa6e0fbe07e64ebc7e92242121c04a83e2d" +checksum = "ac08d23ff4da66fe6cb0300f249be010d78e5abeafef0390cae39736a374e6cd" dependencies = [ "ansi_term", "build-helper", "cargo_metadata", "filetime", "parity-wasm", - "sp-maybe-compressed-blob 10.0.0", - "strum", + "sp-maybe-compressed-blob", + "strum 0.24.1", "tempfile", - "toml 0.7.8", + "toml 0.8.2", "walkdir", "wasm-opt", ] @@ -15160,14 +13709,14 @@ dependencies = [ name = "system-parachains-constants" version = "1.0.0" dependencies = [ - "frame-support 27.0.0", + "frame-support", "kusama-runtime-constants", - "parachains-common 6.0.0", - "polkadot-core-primitives 6.0.0", - "polkadot-primitives 6.0.0", + "parachains-common", + "polkadot-core-primitives", + "polkadot-primitives", "polkadot-runtime-constants", "smallvec", - "sp-runtime 30.0.1", + "sp-runtime", ] [[package]] @@ -15191,7 +13740,7 @@ dependencies = [ "cfg-if", "fastrand", "redox_syscall 0.4.1", - "rustix 0.38.28", + "rustix 0.38.31", "windows-sys 0.48.0", ] @@ -15210,7 +13759,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.38.28", + "rustix 0.38.31", "windows-sys 0.48.0", ] @@ -15240,6 +13789,12 @@ dependencies = [ "syn 2.0.48", ] +[[package]] +name = "thousands" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" + [[package]] name = "thread_local" version = "1.1.7" @@ -15322,25 +13877,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "tiny-bip39" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" -dependencies = [ - "anyhow", - "hmac 0.12.1", - "once_cell", - "pbkdf2 0.11.0", - "rand 0.8.5", - "rustc-hash", - "sha2 0.10.8", - "thiserror", - "unicode-normalization", - "wasm-bindgen", - "zeroize", -] - [[package]] name = "tiny-keccak" version = "2.0.2" @@ -15402,7 +13938,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" dependencies = [ "pin-project", - "rand 0.8.5", + "rand", "tokio", ] @@ -15452,18 +13988,6 @@ dependencies = [ "serde", ] -[[package]] -name = "toml" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.19.15", -] - [[package]] name = "toml" version = "0.8.2" @@ -15478,9 +14002,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] @@ -15492,8 +14016,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap 2.1.0", - "serde", - "serde_spanned", "toml_datetime", "winnow", ] @@ -15511,6 +14033,17 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_edit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +dependencies = [ + "indexmap 2.1.0", + "toml_datetime", + "winnow", +] + [[package]] name = "tower" version = "0.4.13" @@ -15597,37 +14130,24 @@ dependencies = [ [[package]] name = "tracing-gum" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32c0555bd635d9adbf8dec0bf45f7c2aef7541121d648ba37f5f792a211077b6" -dependencies = [ - "coarsetime", - "polkadot-node-jaeger 4.0.0", - "polkadot-primitives 4.0.0", - "tracing", - "tracing-gum-proc-macro", -] - -[[package]] -name = "tracing-gum" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11fe5d66dd9124c5b7a7f891b411ed7b98d06645fd61ca8b4895c2ad7fabd876" +checksum = "5f134d9dda0e872989ddf57b90ca73bcad27f1fba2cc19cfada7b76549c590b0" dependencies = [ "coarsetime", - "polkadot-primitives 6.0.0", + "polkadot-primitives", "tracing", "tracing-gum-proc-macro", ] [[package]] name = "tracing-gum-proc-macro" -version = "4.0.0" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35756d8c1a227ec525853a1080bf890d03d939deb2bc50d4d43c96516c795d0d" +checksum = "0f074568687ffdfd0adb6005aa8d1d96840197f2c159f80471285f08694cf0ce" dependencies = [ "expander 2.0.0", - "proc-macro-crate 1.3.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.48", @@ -15715,7 +14235,7 @@ dependencies = [ "idna 0.2.3", "ipnet", "lazy_static", - "rand 0.8.5", + "rand", "smallvec", "socket2 0.4.10", "thiserror", @@ -15765,7 +14285,7 @@ checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if", "digest 0.10.7", - "rand 0.8.5", + "rand", "static_assertions", ] @@ -15775,6 +14295,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + [[package]] name = "uint" version = "0.9.5" @@ -15910,7 +14436,7 @@ dependencies = [ "arrayref", "constcat", "digest 0.10.7", - "rand 0.8.5", + "rand", "rand_chacha 0.3.1", "rand_core 0.6.4", "sha2 0.10.8", @@ -15950,6 +14476,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasix" +version = "0.12.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1fbb4ef9bbca0c1170e0b00dd28abc9e3b68669821600cad1caaed606583c6d" +dependencies = [ + "wasi 0.11.0+wasi-snapshot-preview1", +] + [[package]] name = "wasm-bindgen" version = "0.2.89" @@ -16033,8 +14568,8 @@ checksum = "fc942673e7684671f0c5708fc18993569d184265fd5223bb51fc8e5b9b6cfd52" dependencies = [ "anyhow", "libc", - "strum", - "strum_macros", + "strum 0.24.1", + "strum_macros 0.24.3", "tempfile", "thiserror", "wasm-opt-cxx-sys", @@ -16265,7 +14800,7 @@ dependencies = [ "memfd", "memoffset", "paste", - "rand 0.8.5", + "rand", "rustix 0.36.17", "wasmtime-asm-macros", "wasmtime-environ", @@ -16322,34 +14857,19 @@ checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "westend-runtime-constants" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "682c32c5f5e6d51c431bf66c33fc502c66e7b25488c0bd92f5ee020c329f2beb" -dependencies = [ - "frame-support 25.0.0", - "polkadot-primitives 4.0.0", - "polkadot-runtime-common 4.0.0", - "smallvec", - "sp-core 25.0.0", - "sp-runtime 28.0.0", - "sp-weights 24.0.0", - "staging-xcm 4.0.0", -] - -[[package]] -name = "westend-runtime-constants" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "116510890fa55b4c21f10691872dadd912be73ac444edd3df60c6237a65c5b4e" +checksum = "2c410b8a17b87e5228f9c27ba4a8020e7ece4a8afb0f452b989834623afe84a2" dependencies = [ - "frame-support 27.0.0", - "polkadot-primitives 6.0.0", - "polkadot-runtime-common 6.0.0", + "frame-support", + "polkadot-primitives", + "polkadot-runtime-common", "smallvec", - "sp-core 27.0.0", - "sp-runtime 30.0.1", - "sp-weights 26.0.0", - "staging-xcm 6.0.0", + "sp-core", + "sp-runtime", + "sp-weights", + "staging-xcm", + "staging-xcm-builder", ] [[package]] @@ -16361,7 +14881,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.28", + "rustix 0.38.31", ] [[package]] @@ -16699,55 +15219,43 @@ dependencies = [ [[package]] name = "xcm-emulator" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0347ee7c717126822e99192e15dee53ff439ad88ac3181af7b2d4aa52b5539c9" +checksum = "dfe27508d4304447fdb7419b769ed9fbeab56bcd41ecf9193e43a33fb8f5588a" dependencies = [ - "cumulus-pallet-parachain-system 0.6.0", - "cumulus-pallet-xcmp-queue 0.6.0", - "cumulus-primitives-core 0.6.0", - "cumulus-primitives-parachain-inherent 0.6.0", - "cumulus-test-relay-sproof-builder 0.6.0", - "frame-support 27.0.0", - "frame-system 27.0.0", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-test-relay-sproof-builder", + "frame-support", + "frame-system", "impl-trait-for-tuples", "lazy_static", "log", - "pallet-balances 27.0.0", - "pallet-message-queue 30.0.0", - "parachains-common 6.0.0", + "pallet-balances", + "pallet-message-queue", + "parachains-common", "parity-scale-codec", "paste", - "polkadot-parachain-primitives 5.0.0", - "polkadot-primitives 6.0.0", - "polkadot-runtime-parachains 6.0.0", - "sp-arithmetic 22.0.0", - "sp-core 27.0.0", - "sp-io 29.0.0", - "sp-runtime 30.0.1", - "sp-std 13.0.0", - "sp-tracing 15.0.0", - "staging-xcm 6.0.0", - "staging-xcm-executor 6.0.2", -] - -[[package]] -name = "xcm-procedural" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "401e2b62628da9246dececb06fe58118196557dd8deb9ce12d95cc4aaf56003f" -dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn 2.0.48", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-runtime-parachains", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-tracing", + "staging-xcm", + "staging-xcm-executor", ] [[package]] name = "xcm-procedural" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37861444391815dfe05f3ee1039d19e7c82db319976832e8233729bd355de223" +checksum = "7998facd751c42ec9b11a4cf71fcdb41fb147c5c8db8bcd1281fe84f8760d515" dependencies = [ "Inflector", "proc-macro2", @@ -16765,7 +15273,7 @@ dependencies = [ "log", "nohash-hasher", "parking_lot 0.12.1", - "rand 0.8.5", + "rand", "static_assertions", ] diff --git a/Cargo.toml b/Cargo.toml index 01efeb50b9..daf6373db0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,10 +26,22 @@ members = [ "system-parachains/constants", "system-parachains/encointer", "system-parachains/gluttons/glutton-kusama", - "integration-tests/emulated/assets/asset-hub-kusama", - "integration-tests/emulated/assets/asset-hub-polkadot", - "integration-tests/emulated/chains", - "integration-tests/emulated/common", + "integration-tests/emulated/chains/relays/kusama", + "integration-tests/emulated/chains/relays/polkadot", + "integration-tests/emulated/chains/parachains/assets/asset-hub-kusama", + "integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot", + "integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama", + "integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot", + "integration-tests/emulated/chains/parachains/collectives/collectives-polkadot", + "integration-tests/emulated/chains/parachains/testing/penpal", + "integration-tests/emulated/helpers", + "integration-tests/emulated/networks/kusama-system", + "integration-tests/emulated/networks/polkadot-system", + "integration-tests/emulated/networks/kusama-polkadot-system", + "integration-tests/emulated/tests/assets/asset-hub-kusama", + "integration-tests/emulated/tests/assets/asset-hub-polkadot", + "integration-tests/emulated/tests/bridges/bridge-hub-kusama", + "integration-tests/emulated/tests/bridges/bridge-hub-polkadot", ] [profile.release] diff --git a/chain-spec-generator/Cargo.toml b/chain-spec-generator/Cargo.toml index e719422444..bfb49761fa 100644 --- a/chain-spec-generator/Cargo.toml +++ b/chain-spec-generator/Cargo.toml @@ -7,8 +7,7 @@ repository.workspace = true license.workspace = true [dependencies] -clap = { version = "4.4.4", features = [ "derive" ] } -hex-literal = "0.4.1" +clap = { version = "4.4.18", features = [ "derive" ] } serde_json = "1.0.111" serde = { version = "1.0.195", features = ["derive"] } @@ -17,20 +16,20 @@ polkadot-runtime-constants = { path = "../relay/polkadot/constants" } kusama-runtime = { package = "staging-kusama-runtime", path = "../relay/kusama" } kusama-runtime-constants = { path = "../relay/kusama/constants" } -sc-chain-spec = "26.0.0" -polkadot-runtime-parachains = "6.0.0" -polkadot-primitives = "6.0.0" -sp-consensus-babe = "0.31.0" -sp-authority-discovery = "25.0.0" -sp-core = "27.0.0" -pallet-staking = "27.0.0" -sc-consensus-grandpa = "0.18.0" -pallet-im-online = "26.0.0" -sp-runtime = "30.0.1" -sp-consensus-beefy = "12.0.0" -xcm = { package = "staging-xcm", version = "6.0.0" } -parachains-common = { version = "6.0.0" } -cumulus-primitives-core = { version = "0.6.0" } +sc-chain-spec = "27.0.0" +polkadot-runtime-parachains = "7.0.0" +polkadot-primitives = "7.0.0" +sp-consensus-babe = "0.32.0" +sp-authority-discovery = "26.0.0" +sp-core = "28.0.0" +pallet-staking = "28.0.0" +sc-consensus-grandpa = "0.19.0" +pallet-im-online = "27.0.0" +sp-runtime = "31.0.1" +sp-consensus-beefy = "13.0.0" +xcm = { package = "staging-xcm", version = "7.0.0" } +parachains-common = { version = "7.0.0" } +cumulus-primitives-core = { version = "0.7.0" } asset-hub-polkadot-runtime = { path = "../system-parachains/asset-hubs/asset-hub-polkadot" } asset-hub-kusama-runtime = { path = "../system-parachains/asset-hubs/asset-hub-kusama" } @@ -40,9 +39,6 @@ bridge-hub-kusama-runtime = { path = "../system-parachains/bridge-hubs/bridge-hu encointer-kusama-runtime = { path = "../system-parachains/encointer" } glutton-kusama-runtime = { path = "../system-parachains/gluttons/glutton-kusama" } -# encointer is not migrated to the latest release, so we use compatible deps, when needed -sp-core-encointer-compatible = { package = "sp-core", version = "25.0.0" } - [features] fast-runtime = [ "kusama-runtime/fast-runtime", diff --git a/chain-spec-generator/src/system_parachains_specs.rs b/chain-spec-generator/src/system_parachains_specs.rs index fe3659b5ba..e02a581bb3 100644 --- a/chain-spec-generator/src/system_parachains_specs.rs +++ b/chain-spec-generator/src/system_parachains_specs.rs @@ -518,16 +518,6 @@ pub fn glutton_kusama_local_testnet_config() -> Result, Strin // EncointerKusama fn encointer_kusama_genesis(endowed_accounts: Vec, id: u32) -> serde_json::Value { - // The Encointer may not be migrated to the latest release, so we use compatible dependencies. - fn get_from_seed( - seed: &str, - ) -> ::Public { - use sp_core_encointer_compatible::Pair; - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() - } - serde_json::json!({ "balances": asset_hub_kusama_runtime::BalancesConfig { balances: endowed_accounts @@ -543,9 +533,7 @@ fn encointer_kusama_genesis(endowed_accounts: Vec, id: u32) -> serde_ "polkadotXcm": { "safeXcmVersion": Some(SAFE_XCM_VERSION), }, - "aura": encointer_kusama_runtime::AuraConfig { - authorities: vec![get_from_seed::("Alice").into()], - }, + "aura": encointer_kusama_runtime::aura_config_for_chain_spec(&["Alice"]), }) } diff --git a/integration-tests/emulated/assets/asset-hub-kusama/Cargo.toml b/integration-tests/emulated/assets/asset-hub-kusama/Cargo.toml deleted file mode 100644 index 45cce3d4a5..0000000000 --- a/integration-tests/emulated/assets/asset-hub-kusama/Cargo.toml +++ /dev/null @@ -1,37 +0,0 @@ -[package] -name = "asset-hub-kusama-integration-tests" -version = "1.0.0" -authors.workspace = true -edition.workspace = true -license = "Apache-2.0" -description = "Asset Hub Kusama runtime integration tests with xcm-emulator" -publish = false - -[dependencies] -codec = { package = "parity-scale-codec", version = "3.6.9" } -assert_matches = "1.5.0" - -# Substrate -sp-runtime = { version = "30.0.1" } -frame-support = { version = "27.0.0" } -pallet-assets = { version = "28.0.0" } -pallet-balances = { version = "27.0.0" } -pallet-asset-conversion = { version = "9.0.0" } -pallet-message-queue = { version = "30.0.0" } - -# Polkadot -xcm = { package = "staging-xcm", version = "6.0.0" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "6.0.0" } -pallet-xcm = { version = "6.0.0" } - -# Cumulus -parachains-common = { version = "6.0.0" } -xcm-emulator = { version = "0.4.0" } -asset-test-utils = { version = "6.0.1" } - -# Local -emulated-chains = { path = "../../chains" } -integration-tests-common = { path = "../../common" } -asset-hub-kusama-runtime = { path = "../../../../system-parachains/asset-hubs/asset-hub-kusama" } -kusama-runtime = { package = "staging-kusama-runtime", path = "../../../../relay/kusama" } -system-parachains-constants = { path = "../../../../system-parachains/constants" } diff --git a/integration-tests/emulated/assets/asset-hub-kusama/src/lib.rs b/integration-tests/emulated/assets/asset-hub-kusama/src/lib.rs deleted file mode 100644 index c0d8309201..0000000000 --- a/integration-tests/emulated/assets/asset-hub-kusama/src/lib.rs +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Disable tests when `runtime-benchmarks` is enabled, because of `type MessageProcessor = -// pallet_message_queue::mock_helpers::NoopMessageProcessor`. -#![cfg(not(feature = "runtime-benchmarks"))] - -pub use asset_test_utils::xcm_helpers; -pub use codec::Encode; -pub use emulated_chains::{ - asset_hub_kusama::ED as ASSET_HUB_KUSAMA_ED, kusama::ED as KUSAMA_ED, - AssetHubKusamaPara as AssetHubKusama, AssetHubKusamaParaPallet as AssetHubKusamaPallet, - AssetHubKusamaParaReceiver as AssetHubKusamaReceiver, - AssetHubKusamaParaSender as AssetHubKusamaSender, BridgeHubKusamaPara as BridgeHubKusama, - BridgeHubKusamaParaReceiver as BridgeHubKusamaReceiver, KusamaRelay as Kusama, - KusamaRelayPallet as KusamaPallet, KusamaRelayReceiver as KusamaReceiver, - KusamaRelaySender as KusamaSender, PenpalKusamaAPara as PenpalKusamaA, - PenpalKusamaAParaPallet as PenpalKusamaAPallet, - PenpalKusamaAParaReceiver as PenpalKusamaAReceiver, - PenpalKusamaAParaSender as PenpalKusamaASender, PenpalKusamaBPara as PenpalKusamaB, - PenpalKusamaBParaPallet as PenpalKusamaBPallet, PenpalLocalTeleportableToAssetHub, - PenpalXcmConfig, -}; -pub use frame_support::{ - assert_err, assert_ok, - pallet_prelude::Weight, - sp_runtime::{AccountId32, DispatchError, DispatchResult}, - traits::fungibles::Inspect, -}; -pub use integration_tests_common::{ - test_parachain_is_trusted_teleporter, - xcm_helpers::{non_fee_asset, xcm_transact_paid_execution, xcm_transact_unpaid_execution}, - PROOF_SIZE_THRESHOLD, REF_TIME_THRESHOLD, XCM_V3, -}; -pub use parachains_common::{AccountId, Balance}; -pub use xcm::{ - prelude::{AccountId32 as AccountId32Junction, *}, - v3::{Error, NetworkId::Kusama as KusamaId}, -}; -pub use xcm_emulator::{ - assert_expected_events, bx, helpers::weight_within_threshold, Chain, Parachain as Para, - RelayChain as Relay, Test, TestArgs, TestContext, TestExt, -}; - -pub const ASSET_ID: u32 = 1; -pub const ASSET_MIN_BALANCE: u128 = 1000; -// `Assets` pallet index -pub const ASSETS_PALLET_ID: u8 = 50; - -pub type RelayToSystemParaTest = Test; -pub type RelayToParaTest = Test; -pub type SystemParaToRelayTest = Test; -pub type SystemParaToParaTest = Test; -pub type ParaToSystemParaTest = Test; - -/// Returns a `TestArgs` instance to be used for the Relay Chain across integration tests -pub fn relay_test_args( - dest: MultiLocation, - beneficiary_id: AccountId32, - amount: Balance, -) -> TestArgs { - TestArgs { - dest, - beneficiary: AccountId32Junction { network: None, id: beneficiary_id.into() }.into(), - amount, - assets: (Here, amount).into(), - asset_id: None, - fee_asset_item: 0, - weight_limit: WeightLimit::Unlimited, - } -} - -/// Returns a `TestArgs` instance to be used by parachains across integration tests -pub fn para_test_args( - dest: MultiLocation, - beneficiary_id: AccountId32, - amount: Balance, - assets: MultiAssets, - asset_id: Option, - fee_asset_item: u32, -) -> TestArgs { - TestArgs { - dest, - beneficiary: AccountId32Junction { network: None, id: beneficiary_id.into() }.into(), - amount, - assets, - asset_id, - fee_asset_item, - weight_limit: WeightLimit::Unlimited, - } -} - -#[cfg(test)] -#[cfg(not(feature = "runtime-benchmarks"))] -mod tests; diff --git a/integration-tests/emulated/assets/asset-hub-polkadot/Cargo.toml b/integration-tests/emulated/assets/asset-hub-polkadot/Cargo.toml deleted file mode 100644 index e96817ef65..0000000000 --- a/integration-tests/emulated/assets/asset-hub-polkadot/Cargo.toml +++ /dev/null @@ -1,35 +0,0 @@ -[package] -name = "asset-hub-polkadot-integration-tests" -version = "1.0.0" -authors.workspace = true -edition.workspace = true -license = "Apache-2.0" -description = "Asset Hub Polkadot runtime integration tests with xcm-emulator" -publish = false - -[dependencies] -codec = { package = "parity-scale-codec", version = "3.6.9" } - -# Substrate -sp-runtime = { version = "30.0.1" } -frame-support = { version = "27.0.0" } -pallet-assets = { version = "28.0.0" } -pallet-balances = { version = "27.0.0" } -pallet-message-queue = { version = "30.0.0" } - -# Polkadot -xcm = { package = "staging-xcm", version = "6.0.0" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "6.0.0" } -pallet-xcm = { version = "6.0.0" } - -# Cumulus -parachains-common = { version = "6.0.0" } -xcm-emulator = { version = "0.4.0" } -asset-test-utils = { version = "6.0.1" } - -# Local -emulated-chains = { path = "../../chains" } -integration-tests-common = { path = "../../common" } -asset-hub-polkadot-runtime = { path = "../../../../system-parachains/asset-hubs/asset-hub-polkadot" } -polkadot-runtime = { path = "../../../../relay/polkadot" } -system-parachains-constants = { path = "../../../../system-parachains/constants" } \ No newline at end of file diff --git a/integration-tests/emulated/assets/asset-hub-polkadot/src/lib.rs b/integration-tests/emulated/assets/asset-hub-polkadot/src/lib.rs deleted file mode 100644 index f006fc54b3..0000000000 --- a/integration-tests/emulated/assets/asset-hub-polkadot/src/lib.rs +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Disable tests when `runtime-benchmarks` is enabled, because of `type MessageProcessor = -// pallet_message_queue::mock_helpers::NoopMessageProcessor`. -#![cfg(not(feature = "runtime-benchmarks"))] - -pub use asset_test_utils::xcm_helpers; -pub use codec::Encode; -pub use emulated_chains::{ - asset_hub_polkadot::ED as ASSET_HUB_POLKADOT_ED, polkadot::ED as POLKADOT_ED, - AssetHubPolkadotPara as AssetHubPolkadot, AssetHubPolkadotParaPallet as AssetHubPolkadotPallet, - AssetHubPolkadotParaReceiver as AssetHubPolkadotReceiver, - AssetHubPolkadotParaSender as AssetHubPolkadotSender, - BridgeHubPolkadotPara as BridgeHubPolkadot, - BridgeHubPolkadotParaReceiver as BridgeHubPolkadotReceiver, PenpalLocalTeleportableToAssetHub, - PenpalPolkadotAPara as PenpalPolkadotA, PenpalPolkadotAParaPallet as PenpalPolkadotAPallet, - PenpalPolkadotAParaReceiver as PenpalPolkadotAReceiver, - PenpalPolkadotAParaSender as PenpalPolkadotASender, PenpalPolkadotBPara as PenpalPolkadotB, - PenpalPolkadotBParaPallet as PenpalPolkadotBPallet, PenpalXcmConfig, PolkadotRelay as Polkadot, - PolkadotRelayPallet as PolkadotPallet, PolkadotRelayReceiver as PolkadotReceiver, - PolkadotRelaySender as PolkadotSender, -}; -pub use frame_support::{ - assert_err, assert_ok, - pallet_prelude::Weight, - sp_runtime::{AccountId32, DispatchError, DispatchResult}, - traits::fungibles::Inspect, -}; -pub use integration_tests_common::{ - test_parachain_is_trusted_teleporter, - xcm_helpers::{non_fee_asset, xcm_transact_paid_execution, xcm_transact_unpaid_execution}, - PROOF_SIZE_THRESHOLD, REF_TIME_THRESHOLD, XCM_V3, -}; -pub use parachains_common::{AccountId, Balance}; -pub use xcm::{ - prelude::{AccountId32 as AccountId32Junction, *}, - v3::{Error, NetworkId::Polkadot as PolkadotId}, -}; -pub use xcm_emulator::{ - assert_expected_events, bx, helpers::weight_within_threshold, Chain, Parachain as Para, - RelayChain as Relay, Test, TestArgs, TestContext, TestExt, -}; - -pub const ASSET_ID: u32 = 1; -pub const ASSET_MIN_BALANCE: u128 = 1000; -// `Assets` pallet index -pub const ASSETS_PALLET_ID: u8 = 50; - -pub type RelayToSystemParaTest = Test; -pub type RelayToParaTest = Test; -pub type SystemParaToRelayTest = Test; -pub type SystemParaToParaTest = Test; -pub type ParaToSystemParaTest = Test; - -/// Returns a `TestArgs` instance to be used for the Relay Chain across integration tests -pub fn relay_test_args( - dest: MultiLocation, - beneficiary_id: AccountId32, - amount: Balance, -) -> TestArgs { - TestArgs { - dest, - beneficiary: AccountId32Junction { network: None, id: beneficiary_id.into() }.into(), - amount, - assets: (Here, amount).into(), - asset_id: None, - fee_asset_item: 0, - weight_limit: WeightLimit::Unlimited, - } -} - -/// Returns a `TestArgs` instance to be used by parachains across integration tests -pub fn para_test_args( - dest: MultiLocation, - beneficiary_id: AccountId32, - amount: Balance, - assets: MultiAssets, - asset_id: Option, - fee_asset_item: u32, -) -> TestArgs { - TestArgs { - dest, - beneficiary: AccountId32Junction { network: None, id: beneficiary_id.into() }.into(), - amount, - assets, - asset_id, - fee_asset_item, - weight_limit: WeightLimit::Unlimited, - } -} - -#[cfg(test)] -#[cfg(not(feature = "runtime-benchmarks"))] -mod tests; diff --git a/integration-tests/emulated/chains/Cargo.toml b/integration-tests/emulated/chains/Cargo.toml deleted file mode 100644 index 96dee2b31d..0000000000 --- a/integration-tests/emulated/chains/Cargo.toml +++ /dev/null @@ -1,43 +0,0 @@ -[package] -name = "emulated-chains" -version = "1.0.0" -authors.workspace = true -edition.workspace = true -license = "Apache-2.0" -description = "Definitions of the fellows emulated relay+para runtimes" - -[dependencies] - -# Substrate -grandpa-primitives = { package = "sp-consensus-grandpa", version = "12.0.0" } -sp-authority-discovery = { version = "25.0.0" } -sp-runtime = { version = "30.0.1" } -frame-support = { version = "27.0.0" } -sp-core = { version = "27.0.0" } -sp-consensus-babe = { version = "0.31.0" } -pallet-im-online = { version = "26.0.0" } -pallet-staking = { version = "27.0.0" } -beefy-primitives = { package = "sp-consensus-beefy", version = "12.0.0" } - -# Polkadot -polkadot-primitives = { version = "6.0.0" } -polkadot-runtime-parachains = { version = "6.0.0" } -polkadot-parachain-primitives = { version = "5.0.0" } - -# Cumulus -parachains-common = { version = "6.0.0" } -xcm-emulator = { version = "0.4.0" } -penpal-runtime = { version = "0.13.2" } - -# Local runtimes -kusama-runtime = { package = "staging-kusama-runtime", path = "../../../relay/kusama" } -kusama-runtime-constants = { path = "../../../relay/kusama/constants" } -polkadot-runtime = { path = "../../../relay/polkadot" } -polkadot-runtime-constants = { path = "../../../relay/polkadot/constants" } -asset-hub-polkadot-runtime = { path = "../../../system-parachains/asset-hubs/asset-hub-polkadot" } -asset-hub-kusama-runtime = { path = "../../../system-parachains/asset-hubs/asset-hub-kusama" } -collectives-polkadot-runtime = { path = "../../../system-parachains/collectives/collectives-polkadot" } -bridge-hub-polkadot-runtime = { path = "../../../system-parachains/bridge-hubs/bridge-hub-polkadot" } -bridge-hub-kusama-runtime = { path = "../../../system-parachains/bridge-hubs/bridge-hub-kusama" } -# TODO: replace with `emulated-integration-tests-common@X.Y.Z` from `polkadot-sdk` -integration-tests-common = { path = "../common" } diff --git a/integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/Cargo.toml b/integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/Cargo.toml new file mode 100644 index 0000000000..0b4f070c48 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "asset-hub-kusama-emulated-chain" +version = "0.0.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Asset Hub Kusama emulated chain used for integration tests" +publish = false + +[dependencies] +serde_json = "1.0.111" + +# Substrate +sp-core = { version = "28.0.0" } +sp-runtime = { version = "31.0.1" } +frame-support = { version = "28.0.0" } + +# Cumulus +parachains-common = { version = "7.0.0" } +cumulus-primitives-core = { version = "0.7.0" } +emulated-integration-tests-common = { version = "3.0.0" } + +# Runtimes +asset-hub-kusama-runtime = { path = "../../../../../../system-parachains/asset-hubs/asset-hub-kusama" } +kusama-emulated-chain = { path = "../../../relays/kusama" } +system-parachains-constants = { path = "../../../../../../system-parachains/constants" } diff --git a/integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/src/genesis.rs b/integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/src/genesis.rs new file mode 100644 index 0000000000..d49faa57f5 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/src/genesis.rs @@ -0,0 +1,71 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Substrate +use sp_core::storage::Storage; + +// Cumulus +use emulated_integration_tests_common::{ + accounts, build_genesis_storage, collators, SAFE_XCM_VERSION, +}; +use parachains_common::Balance; + +pub const PARA_ID: u32 = 1000; +pub const ED: Balance = + system_parachains_constants::kusama::currency::SYSTEM_PARA_EXISTENTIAL_DEPOSIT; + +pub fn genesis() -> Storage { + let genesis_config = asset_hub_kusama_runtime::RuntimeGenesisConfig { + system: asset_hub_kusama_runtime::SystemConfig::default(), + balances: asset_hub_kusama_runtime::BalancesConfig { + balances: accounts::init_balances() + .iter() + .cloned() + .map(|k| (k, ED * 4096 * 4096)) + .collect(), + }, + parachain_info: asset_hub_kusama_runtime::ParachainInfoConfig { + parachain_id: PARA_ID.into(), + ..Default::default() + }, + collator_selection: asset_hub_kusama_runtime::CollatorSelectionConfig { + invulnerables: collators::invulnerables().iter().cloned().map(|(acc, _)| acc).collect(), + candidacy_bond: ED * 16, + ..Default::default() + }, + session: asset_hub_kusama_runtime::SessionConfig { + keys: collators::invulnerables() + .into_iter() + .map(|(acc, aura)| { + ( + acc.clone(), // account id + acc, // validator id + asset_hub_kusama_runtime::SessionKeys { aura }, // session keys + ) + }) + .collect(), + }, + polkadot_xcm: asset_hub_kusama_runtime::PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + ..Default::default() + }, + ..Default::default() + }; + + build_genesis_storage( + &genesis_config, + asset_hub_kusama_runtime::WASM_BINARY.expect("WASM binary was not built, please build it!"), + ) +} diff --git a/integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/src/lib.rs b/integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/src/lib.rs new file mode 100644 index 0000000000..775e575e7e --- /dev/null +++ b/integration-tests/emulated/chains/parachains/assets/asset-hub-kusama/src/lib.rs @@ -0,0 +1,59 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub mod genesis; + +// Substrate +use frame_support::traits::OnInitialize; + +// Cumulus +use emulated_integration_tests_common::{ + impl_accounts_helpers_for_parachain, impl_assert_events_helpers_for_parachain, + impl_assets_helpers_for_parachain, impl_foreign_assets_helpers_for_parachain, + impl_xcm_helpers_for_parachain, impls::Parachain, xcm_emulator::decl_test_parachains, +}; +use kusama_emulated_chain::Kusama; + +// AssetHubKusama Parachain declaration +decl_test_parachains! { + pub struct AssetHubKusama { + genesis = genesis::genesis(), + on_init = { + asset_hub_kusama_runtime::AuraExt::on_initialize(1); + }, + runtime = asset_hub_kusama_runtime, + core = { + XcmpMessageHandler: asset_hub_kusama_runtime::XcmpQueue, + LocationToAccountId: asset_hub_kusama_runtime::xcm_config::LocationToAccountId, + ParachainInfo: asset_hub_kusama_runtime::ParachainInfo, + MessageOrigin: cumulus_primitives_core::AggregateMessageOrigin, + }, + pallets = { + PolkadotXcm: asset_hub_kusama_runtime::PolkadotXcm, + Assets: asset_hub_kusama_runtime::Assets, + ForeignAssets: asset_hub_kusama_runtime::ForeignAssets, + PoolAssets: asset_hub_kusama_runtime::PoolAssets, + AssetConversion: asset_hub_kusama_runtime::AssetConversion, + Balances: asset_hub_kusama_runtime::Balances, + } + }, +} + +// AssetHubKusama implementation +impl_accounts_helpers_for_parachain!(AssetHubKusama); +impl_assert_events_helpers_for_parachain!(AssetHubKusama); +impl_assets_helpers_for_parachain!(AssetHubKusama, Kusama); +impl_foreign_assets_helpers_for_parachain!(AssetHubKusama, Kusama); +impl_xcm_helpers_for_parachain!(AssetHubKusama); diff --git a/integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/Cargo.toml b/integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/Cargo.toml new file mode 100644 index 0000000000..ed81adc3b2 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "asset-hub-polkadot-emulated-chain" +version = "0.0.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Asset Hub Polkadot emulated chain used for integration tests" +publish = false + +[dependencies] +serde_json = "1.0.111" + +# Substrate +sp-core = { version = "28.0.0" } +sp-runtime = { version = "31.0.1" } +frame-support = { version = "28.0.0" } + +# Cumulus +parachains-common = { version = "7.0.0" } +cumulus-primitives-core = { version = "0.7.0" } +emulated-integration-tests-common = { version = "3.0.0" } + +# Runtimes +asset-hub-polkadot-runtime = { path = "../../../../../../system-parachains/asset-hubs/asset-hub-polkadot" } +polkadot-emulated-chain = { path = "../../../relays/polkadot" } +system-parachains-constants = { path = "../../../../../../system-parachains/constants" } diff --git a/integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/src/genesis.rs b/integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/src/genesis.rs new file mode 100644 index 0000000000..1385e66954 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/src/genesis.rs @@ -0,0 +1,68 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Substrate +use sp_core::storage::Storage; + +// Cumulus +use emulated_integration_tests_common::{ + accounts, build_genesis_storage, collators, SAFE_XCM_VERSION, +}; +use parachains_common::Balance; + +pub const PARA_ID: u32 = 1000; +pub const ED: Balance = + system_parachains_constants::polkadot::currency::SYSTEM_PARA_EXISTENTIAL_DEPOSIT; + +pub fn genesis() -> Storage { + let genesis_config = asset_hub_polkadot_runtime::RuntimeGenesisConfig { + system: asset_hub_polkadot_runtime::SystemConfig::default(), + balances: asset_hub_polkadot_runtime::BalancesConfig { + balances: accounts::init_balances().iter().cloned().map(|k| (k, ED * 4096)).collect(), + }, + parachain_info: asset_hub_polkadot_runtime::ParachainInfoConfig { + parachain_id: PARA_ID.into(), + ..Default::default() + }, + collator_selection: asset_hub_polkadot_runtime::CollatorSelectionConfig { + invulnerables: collators::invulnerables().iter().cloned().map(|(acc, _)| acc).collect(), + candidacy_bond: ED * 16, + ..Default::default() + }, + session: asset_hub_polkadot_runtime::SessionConfig { + keys: collators::invulnerables_asset_hub_polkadot() + .into_iter() + .map(|(acc, aura)| { + ( + acc.clone(), // account id + acc, // validator id + asset_hub_polkadot_runtime::SessionKeys { aura }, // session keys + ) + }) + .collect(), + }, + polkadot_xcm: asset_hub_polkadot_runtime::PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + ..Default::default() + }, + ..Default::default() + }; + + build_genesis_storage( + &genesis_config, + asset_hub_polkadot_runtime::WASM_BINARY + .expect("WASM binary was not built, please build it!"), + ) +} diff --git a/integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/src/lib.rs b/integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/src/lib.rs new file mode 100644 index 0000000000..b0f35b3a6c --- /dev/null +++ b/integration-tests/emulated/chains/parachains/assets/asset-hub-polkadot/src/lib.rs @@ -0,0 +1,57 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub mod genesis; + +// Substrate +use frame_support::traits::OnInitialize; + +// Cumulus +use emulated_integration_tests_common::{ + impl_accounts_helpers_for_parachain, impl_assert_events_helpers_for_parachain, + impl_assets_helpers_for_parachain, impl_foreign_assets_helpers_for_parachain, + impl_xcm_helpers_for_parachain, impls::Parachain, xcm_emulator::decl_test_parachains, +}; +use polkadot_emulated_chain::Polkadot; + +// AssetHubPolkadot Parachain declaration +decl_test_parachains! { + pub struct AssetHubPolkadot { + genesis = genesis::genesis(), + on_init = { + asset_hub_polkadot_runtime::AuraExt::on_initialize(1); + }, + runtime = asset_hub_polkadot_runtime, + core = { + XcmpMessageHandler: asset_hub_polkadot_runtime::XcmpQueue, + LocationToAccountId: asset_hub_polkadot_runtime::xcm_config::LocationToAccountId, + ParachainInfo: asset_hub_polkadot_runtime::ParachainInfo, + MessageOrigin: cumulus_primitives_core::AggregateMessageOrigin, + }, + pallets = { + PolkadotXcm: asset_hub_polkadot_runtime::PolkadotXcm, + Balances: asset_hub_polkadot_runtime::Balances, + Assets: asset_hub_polkadot_runtime::Assets, + ForeignAssets: asset_hub_polkadot_runtime::ForeignAssets, + } + }, +} + +// AssetHubPolkadot implementation +impl_accounts_helpers_for_parachain!(AssetHubPolkadot); +impl_assert_events_helpers_for_parachain!(AssetHubPolkadot); +impl_assets_helpers_for_parachain!(AssetHubPolkadot, Polkadot); +impl_foreign_assets_helpers_for_parachain!(AssetHubPolkadot, Polkadot); +impl_xcm_helpers_for_parachain!(AssetHubPolkadot); diff --git a/integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/Cargo.toml b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/Cargo.toml new file mode 100644 index 0000000000..09af5a3ef5 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "bridge-hub-kusama-emulated-chain" +version = "0.0.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Bridge Hub Kusama emulated chain used for integration tests" +publish = false + +[dependencies] +serde_json = "1.0.111" + +# Substrate +sp-core = { version = "28.0.0" } +sp-runtime = { version = "31.0.1" } +frame-support = { version = "28.0.0" } + +# Cumulus +parachains-common = { version = "7.0.0" } +cumulus-primitives-core = { version = "0.7.0" } +emulated-integration-tests-common = { version = "3.0.0" } + +# Runtimes +bridge-hub-kusama-runtime = { path = "../../../../../../system-parachains/bridge-hubs/bridge-hub-kusama" } +system-parachains-constants = { path = "../../../../../../system-parachains/constants" } diff --git a/integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/src/genesis.rs b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/src/genesis.rs new file mode 100644 index 0000000000..b9f217c38f --- /dev/null +++ b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/src/genesis.rs @@ -0,0 +1,77 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Substrate +use sp_core::{sr25519, storage::Storage}; + +// Cumulus +use emulated_integration_tests_common::{ + accounts, build_genesis_storage, collators, get_account_id_from_seed, SAFE_XCM_VERSION, +}; +use parachains_common::Balance; + +pub const ASSETHUB_PARA_ID: u32 = 1000; +pub const PARA_ID: u32 = 1002; +pub const ED: Balance = + system_parachains_constants::kusama::currency::SYSTEM_PARA_EXISTENTIAL_DEPOSIT; + +pub fn genesis() -> Storage { + let genesis_config = bridge_hub_kusama_runtime::RuntimeGenesisConfig { + system: bridge_hub_kusama_runtime::SystemConfig::default(), + balances: bridge_hub_kusama_runtime::BalancesConfig { + balances: accounts::init_balances().iter().cloned().map(|k| (k, ED * 4096)).collect(), + }, + parachain_info: bridge_hub_kusama_runtime::ParachainInfoConfig { + parachain_id: PARA_ID.into(), + ..Default::default() + }, + collator_selection: bridge_hub_kusama_runtime::CollatorSelectionConfig { + invulnerables: collators::invulnerables().iter().cloned().map(|(acc, _)| acc).collect(), + candidacy_bond: ED * 16, + ..Default::default() + }, + session: bridge_hub_kusama_runtime::SessionConfig { + keys: collators::invulnerables() + .into_iter() + .map(|(acc, aura)| { + ( + acc.clone(), // account id + acc, // validator id + bridge_hub_kusama_runtime::SessionKeys { aura }, // session keys + ) + }) + .collect(), + }, + polkadot_xcm: bridge_hub_kusama_runtime::PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + ..Default::default() + }, + bridge_polkadot_grandpa: bridge_hub_kusama_runtime::BridgePolkadotGrandpaConfig { + owner: Some(get_account_id_from_seed::(accounts::BOB)), + ..Default::default() + }, + bridge_polkadot_messages: bridge_hub_kusama_runtime::BridgePolkadotMessagesConfig { + owner: Some(get_account_id_from_seed::(accounts::BOB)), + ..Default::default() + }, + ..Default::default() + }; + + build_genesis_storage( + &genesis_config, + bridge_hub_kusama_runtime::WASM_BINARY + .expect("WASM binary was not built, please build it!"), + ) +} diff --git a/integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/src/lib.rs b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/src/lib.rs new file mode 100644 index 0000000000..1504f90852 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-kusama/src/lib.rs @@ -0,0 +1,51 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub mod genesis; + +// Substrate +use frame_support::traits::OnInitialize; + +// Cumulus +use emulated_integration_tests_common::{ + impl_accounts_helpers_for_parachain, impl_assert_events_helpers_for_parachain, + impl_xcm_helpers_for_parachain, impls::Parachain, xcm_emulator::decl_test_parachains, +}; + +// BridgeHubKusama Parachain declaration +decl_test_parachains! { + pub struct BridgeHubKusama { + genesis = genesis::genesis(), + on_init = { + bridge_hub_kusama_runtime::AuraExt::on_initialize(1); + }, + runtime = bridge_hub_kusama_runtime, + core = { + XcmpMessageHandler: bridge_hub_kusama_runtime::XcmpQueue, + LocationToAccountId: bridge_hub_kusama_runtime::xcm_config::LocationToAccountId, + ParachainInfo: bridge_hub_kusama_runtime::ParachainInfo, + MessageOrigin: cumulus_primitives_core::AggregateMessageOrigin, + }, + pallets = { + PolkadotXcm: bridge_hub_kusama_runtime::PolkadotXcm, + Balances: bridge_hub_kusama_runtime::Balances, + } + }, +} + +// BridgeHubKusama implementation +impl_accounts_helpers_for_parachain!(BridgeHubKusama); +impl_assert_events_helpers_for_parachain!(BridgeHubKusama); +impl_xcm_helpers_for_parachain!(BridgeHubKusama); diff --git a/integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/Cargo.toml b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/Cargo.toml new file mode 100644 index 0000000000..904d6688c7 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "bridge-hub-polkadot-emulated-chain" +version = "0.0.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Bridge Hub Polkadot emulated chain used for integration tests" +publish = false + +[dependencies] +serde_json = "1.0.111" + +# Substrate +sp-core = { version = "28.0.0" } +sp-runtime = { version = "31.0.1" } +frame-support = { version = "28.0.0" } + +# Cumulus +parachains-common = { version = "7.0.0" } +cumulus-primitives-core = { version = "0.7.0" } +emulated-integration-tests-common = { version = "3.0.0" } + +# Runtimes +bridge-hub-polkadot-runtime = { path = "../../../../../../system-parachains/bridge-hubs/bridge-hub-polkadot" } +system-parachains-constants = { path = "../../../../../../system-parachains/constants" } diff --git a/integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/src/genesis.rs b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/src/genesis.rs new file mode 100644 index 0000000000..30b28c27d2 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/src/genesis.rs @@ -0,0 +1,76 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Substrate +use sp_core::{sr25519, storage::Storage}; + +// Cumulus +use emulated_integration_tests_common::{ + accounts, build_genesis_storage, collators, get_account_id_from_seed, SAFE_XCM_VERSION, +}; +use parachains_common::Balance; + +pub const PARA_ID: u32 = 1002; +pub const ED: Balance = + system_parachains_constants::polkadot::currency::SYSTEM_PARA_EXISTENTIAL_DEPOSIT; + +pub fn genesis() -> Storage { + let genesis_config = bridge_hub_polkadot_runtime::RuntimeGenesisConfig { + system: bridge_hub_polkadot_runtime::SystemConfig::default(), + balances: bridge_hub_polkadot_runtime::BalancesConfig { + balances: accounts::init_balances().iter().cloned().map(|k| (k, ED * 4096)).collect(), + }, + parachain_info: bridge_hub_polkadot_runtime::ParachainInfoConfig { + parachain_id: PARA_ID.into(), + ..Default::default() + }, + collator_selection: bridge_hub_polkadot_runtime::CollatorSelectionConfig { + invulnerables: collators::invulnerables().iter().cloned().map(|(acc, _)| acc).collect(), + candidacy_bond: ED * 16, + ..Default::default() + }, + session: bridge_hub_polkadot_runtime::SessionConfig { + keys: collators::invulnerables() + .into_iter() + .map(|(acc, aura)| { + ( + acc.clone(), // account id + acc, // validator id + bridge_hub_polkadot_runtime::SessionKeys { aura }, // session keys + ) + }) + .collect(), + }, + polkadot_xcm: bridge_hub_polkadot_runtime::PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + ..Default::default() + }, + bridge_kusama_grandpa: bridge_hub_polkadot_runtime::BridgeKusamaGrandpaConfig { + owner: Some(get_account_id_from_seed::(accounts::BOB)), + ..Default::default() + }, + bridge_kusama_messages: bridge_hub_polkadot_runtime::BridgeKusamaMessagesConfig { + owner: Some(get_account_id_from_seed::(accounts::BOB)), + ..Default::default() + }, + ..Default::default() + }; + + build_genesis_storage( + &genesis_config, + bridge_hub_polkadot_runtime::WASM_BINARY + .expect("WASM binary was not built, please build it!"), + ) +} diff --git a/integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/src/lib.rs b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/src/lib.rs new file mode 100644 index 0000000000..c448eb7f98 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/bridges/bridge-hub-polkadot/src/lib.rs @@ -0,0 +1,51 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub mod genesis; + +// Substrate +use frame_support::traits::OnInitialize; + +// Cumulus +use emulated_integration_tests_common::{ + impl_accounts_helpers_for_parachain, impl_assert_events_helpers_for_parachain, + impl_xcm_helpers_for_parachain, impls::Parachain, xcm_emulator::decl_test_parachains, +}; + +// BridgeHubPolkadot Parachain declaration +decl_test_parachains! { + pub struct BridgeHubPolkadot { + genesis = genesis::genesis(), + on_init = { + bridge_hub_polkadot_runtime::AuraExt::on_initialize(1); + }, + runtime = bridge_hub_polkadot_runtime, + core = { + XcmpMessageHandler: bridge_hub_polkadot_runtime::XcmpQueue, + LocationToAccountId: bridge_hub_polkadot_runtime::xcm_config::LocationToAccountId, + ParachainInfo: bridge_hub_polkadot_runtime::ParachainInfo, + MessageOrigin: cumulus_primitives_core::AggregateMessageOrigin, + }, + pallets = { + PolkadotXcm: bridge_hub_polkadot_runtime::PolkadotXcm, + Balances: bridge_hub_polkadot_runtime::Balances, + } + }, +} + +// BridgeHubPolkadot implementation +impl_accounts_helpers_for_parachain!(BridgeHubPolkadot); +impl_assert_events_helpers_for_parachain!(BridgeHubPolkadot); +impl_xcm_helpers_for_parachain!(BridgeHubPolkadot); diff --git a/integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/Cargo.toml b/integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/Cargo.toml new file mode 100644 index 0000000000..e5111a89d6 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "collectives-polkadot-emulated-chain" +version = "0.0.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Collectives Polkadot emulated chain used for integration tests" +publish = false + +[dependencies] +serde_json = "1.0.111" + +# Substrate +sp-core = { version = "28.0.0" } +sp-runtime = { version = "31.0.1" } +frame-support = { version = "28.0.0" } + +# Cumulus +parachains-common = { version = "7.0.0" } +cumulus-primitives-core = { version = "0.7.0" } +emulated-integration-tests-common = { version = "3.0.0" } + +# Runtimes +collectives-polkadot-runtime = { path = "../../../../../../system-parachains/collectives/collectives-polkadot" } +system-parachains-constants = { path = "../../../../../../system-parachains/constants" } diff --git a/integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/src/genesis.rs b/integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/src/genesis.rs new file mode 100644 index 0000000000..c1e1fc03e0 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/src/genesis.rs @@ -0,0 +1,68 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Substrate +use sp_core::storage::Storage; + +// Cumulus +use emulated_integration_tests_common::{ + accounts, build_genesis_storage, collators, SAFE_XCM_VERSION, +}; +use parachains_common::Balance; + +pub const PARA_ID: u32 = 1001; +pub const ED: Balance = + system_parachains_constants::polkadot::currency::SYSTEM_PARA_EXISTENTIAL_DEPOSIT; + +pub fn genesis() -> Storage { + let genesis_config = collectives_polkadot_runtime::RuntimeGenesisConfig { + system: collectives_polkadot_runtime::SystemConfig::default(), + balances: collectives_polkadot_runtime::BalancesConfig { + balances: accounts::init_balances().iter().cloned().map(|k| (k, ED * 4096)).collect(), + }, + parachain_info: collectives_polkadot_runtime::ParachainInfoConfig { + parachain_id: PARA_ID.into(), + ..Default::default() + }, + collator_selection: collectives_polkadot_runtime::CollatorSelectionConfig { + invulnerables: collators::invulnerables().iter().cloned().map(|(acc, _)| acc).collect(), + candidacy_bond: ED * 16, + ..Default::default() + }, + session: collectives_polkadot_runtime::SessionConfig { + keys: collators::invulnerables() + .into_iter() + .map(|(acc, aura)| { + ( + acc.clone(), // account id + acc, // validator id + collectives_polkadot_runtime::SessionKeys { aura }, // session keys + ) + }) + .collect(), + }, + polkadot_xcm: collectives_polkadot_runtime::PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + ..Default::default() + }, + ..Default::default() + }; + + build_genesis_storage( + &genesis_config, + collectives_polkadot_runtime::WASM_BINARY + .expect("WASM binary was not built, please build it!"), + ) +} diff --git a/integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/src/lib.rs b/integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/src/lib.rs new file mode 100644 index 0000000000..d8ffbdcaf6 --- /dev/null +++ b/integration-tests/emulated/chains/parachains/collectives/collectives-polkadot/src/lib.rs @@ -0,0 +1,52 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub mod genesis; + +// Substrate +use frame_support::traits::OnInitialize; + +// Cumulus +use emulated_integration_tests_common::{ + impl_accounts_helpers_for_parachain, impl_assert_events_helpers_for_parachain, + impls::Parachain, xcm_emulator::decl_test_parachains, +}; + +// CollectivesPolkadot Parachain declaration +decl_test_parachains! { + pub struct CollectivesPolkadot { + genesis = genesis::genesis(), + on_init = { + collectives_polkadot_runtime::AuraExt::on_initialize(1); + }, + runtime = collectives_polkadot_runtime, + core = { + XcmpMessageHandler: collectives_polkadot_runtime::XcmpQueue, + LocationToAccountId: collectives_polkadot_runtime::xcm_config::LocationToAccountId, + ParachainInfo: collectives_polkadot_runtime::ParachainInfo, + MessageOrigin: cumulus_primitives_core::AggregateMessageOrigin, + }, + pallets = { + PolkadotXcm: collectives_polkadot_runtime::PolkadotXcm, + Balances: collectives_polkadot_runtime::Balances, + FellowshipTreasury: collectives_polkadot_runtime::FellowshipTreasury, + AssetRate: collectives_polkadot_runtime::AssetRate, + } + }, +} + +// CollectivesPolkadot implementation +impl_accounts_helpers_for_parachain!(CollectivesPolkadot); +impl_assert_events_helpers_for_parachain!(CollectivesPolkadot); diff --git a/integration-tests/emulated/chains/parachains/testing/penpal/Cargo.toml b/integration-tests/emulated/chains/parachains/testing/penpal/Cargo.toml new file mode 100644 index 0000000000..8e0b34ec9b --- /dev/null +++ b/integration-tests/emulated/chains/parachains/testing/penpal/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "penpal-emulated-chain" +version = "0.0.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Penpal emulated chain used for integration tests" +publish = false + +[dependencies] +serde_json = "1.0.111" + +# Substrate +sp-core = { version = "28.0.0" } +sp-runtime = { version = "31.0.1" } +frame-support = { version = "28.0.0" } + +# Cumulus +emulated-integration-tests-common = { version = "3.0.0" } +cumulus-primitives-core = { version = "0.7.0" } +parachains-common = { version = "7.0.0" } +penpal-runtime = { version = "0.14.0" } + +# Runtimes +kusama-emulated-chain = { path = "../../../relays/kusama" } +polkadot-emulated-chain = { path = "../../../relays/polkadot" } diff --git a/integration-tests/emulated/chains/parachains/testing/penpal/src/genesis.rs b/integration-tests/emulated/chains/parachains/testing/penpal/src/genesis.rs new file mode 100644 index 0000000000..9ab32a977d --- /dev/null +++ b/integration-tests/emulated/chains/parachains/testing/penpal/src/genesis.rs @@ -0,0 +1,71 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Substrate +use sp_core::{sr25519, storage::Storage}; + +// Cumulus +use emulated_integration_tests_common::{ + accounts, build_genesis_storage, collators, get_account_id_from_seed, SAFE_XCM_VERSION, +}; +use parachains_common::Balance; + +// Penpal +pub const PARA_ID_A: u32 = 2000; +pub const PARA_ID_B: u32 = 2001; +pub const ED: Balance = penpal_runtime::EXISTENTIAL_DEPOSIT; + +pub fn genesis(para_id: u32) -> Storage { + let genesis_config = penpal_runtime::RuntimeGenesisConfig { + system: penpal_runtime::SystemConfig::default(), + balances: penpal_runtime::BalancesConfig { + balances: accounts::init_balances().iter().cloned().map(|k| (k, ED * 4096)).collect(), + }, + parachain_info: penpal_runtime::ParachainInfoConfig { + parachain_id: para_id.into(), + ..Default::default() + }, + collator_selection: penpal_runtime::CollatorSelectionConfig { + invulnerables: collators::invulnerables().iter().cloned().map(|(acc, _)| acc).collect(), + candidacy_bond: ED * 16, + ..Default::default() + }, + session: penpal_runtime::SessionConfig { + keys: collators::invulnerables() + .into_iter() + .map(|(acc, aura)| { + ( + acc.clone(), // account id + acc, // validator id + penpal_runtime::SessionKeys { aura }, // session keys + ) + }) + .collect(), + }, + polkadot_xcm: penpal_runtime::PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + ..Default::default() + }, + sudo: penpal_runtime::SudoConfig { + key: Some(get_account_id_from_seed::("Alice")), + }, + ..Default::default() + }; + + build_genesis_storage( + &genesis_config, + penpal_runtime::WASM_BINARY.expect("WASM binary was not built, please build it!"), + ) +} diff --git a/integration-tests/emulated/chains/parachains/testing/penpal/src/lib.rs b/integration-tests/emulated/chains/parachains/testing/penpal/src/lib.rs new file mode 100644 index 0000000000..30d6e7bfad --- /dev/null +++ b/integration-tests/emulated/chains/parachains/testing/penpal/src/lib.rs @@ -0,0 +1,79 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +mod genesis; +pub use genesis::{genesis, ED, PARA_ID_A, PARA_ID_B}; +pub use penpal_runtime::xcm_config::{LocalTeleportableToAssetHub, XcmConfig}; + +// Substrate +use frame_support::traits::OnInitialize; + +// Cumulus +use emulated_integration_tests_common::{ + impl_accounts_helpers_for_parachain, impl_assert_events_helpers_for_parachain, + impl_assets_helpers_for_parachain, impls::Parachain, xcm_emulator::decl_test_parachains, +}; +use kusama_emulated_chain::Kusama; +use polkadot_emulated_chain::Polkadot; + +// Penpal Parachain declaration +decl_test_parachains! { + pub struct PenpalA { + genesis = genesis(PARA_ID_A), + on_init = { + penpal_runtime::AuraExt::on_initialize(1); + }, + runtime = penpal_runtime, + core = { + XcmpMessageHandler: penpal_runtime::XcmpQueue, + LocationToAccountId: penpal_runtime::xcm_config::LocationToAccountId, + ParachainInfo: penpal_runtime::ParachainInfo, + MessageOrigin: cumulus_primitives_core::AggregateMessageOrigin, + }, + pallets = { + PolkadotXcm: penpal_runtime::PolkadotXcm, + Assets: penpal_runtime::Assets, + ForeignAssets: penpal_runtime::ForeignAssets, + Balances: penpal_runtime::Balances, + } + }, + pub struct PenpalB { + genesis = genesis(PARA_ID_B), + on_init = { + penpal_runtime::AuraExt::on_initialize(1); + }, + runtime = penpal_runtime, + core = { + XcmpMessageHandler: penpal_runtime::XcmpQueue, + LocationToAccountId: penpal_runtime::xcm_config::LocationToAccountId, + ParachainInfo: penpal_runtime::ParachainInfo, + MessageOrigin: cumulus_primitives_core::AggregateMessageOrigin, + }, + pallets = { + PolkadotXcm: penpal_runtime::PolkadotXcm, + Assets: penpal_runtime::Assets, + ForeignAssets: penpal_runtime::ForeignAssets, + Balances: penpal_runtime::Balances, + } + }, +} + +// Penpal implementation +impl_accounts_helpers_for_parachain!(PenpalA); +impl_accounts_helpers_for_parachain!(PenpalB); +impl_assets_helpers_for_parachain!(PenpalA, Kusama); +impl_assets_helpers_for_parachain!(PenpalB, Polkadot); +impl_assert_events_helpers_for_parachain!(PenpalA); +impl_assert_events_helpers_for_parachain!(PenpalB); diff --git a/integration-tests/emulated/chains/relays/kusama/Cargo.toml b/integration-tests/emulated/chains/relays/kusama/Cargo.toml new file mode 100644 index 0000000000..79040a6c8a --- /dev/null +++ b/integration-tests/emulated/chains/relays/kusama/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "kusama-emulated-chain" +version = "1.0.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Kusama emulated chain used for integration tests" +publish = false + +[dependencies] +serde_json = "1.0.111" + +# Substrate +sp-core = { version = "28.0.0" } +sp-runtime = { version = "31.0.1" } +authority-discovery-primitives = { package = "sp-authority-discovery", version = "26.0.0" } +babe-primitives = { package = "sp-consensus-babe", version = "0.32.0" } +beefy-primitives = { package = "sp-consensus-beefy", version = "13.0.0" } +grandpa = { package = "sc-consensus-grandpa", version = "0.19.0" } +pallet-im-online = { version = "27.0.0" } + +# Polkadot +polkadot-primitives = { version = "7.0.0" } + +# Cumulus +parachains-common = { version = "7.0.0" } +emulated-integration-tests-common = { version = "3.0.0" } + +# Runtimes +kusama-runtime-constants = { path = "../../../../../relay/kusama/constants" } +kusama-runtime = { package = "staging-kusama-runtime", path = "../../../../../relay/kusama" } diff --git a/integration-tests/emulated/chains/relays/kusama/src/genesis.rs b/integration-tests/emulated/chains/relays/kusama/src/genesis.rs new file mode 100644 index 0000000000..ca1b016511 --- /dev/null +++ b/integration-tests/emulated/chains/relays/kusama/src/genesis.rs @@ -0,0 +1,127 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Substrate +use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; +use babe_primitives::AuthorityId as BabeId; +use beefy_primitives::ecdsa_crypto::AuthorityId as BeefyId; +use grandpa::AuthorityId as GrandpaId; +use pallet_im_online::sr25519::AuthorityId as ImOnlineId; +use sp_core::{sr25519, storage::Storage}; + +// Polkadot +use polkadot_primitives::{AssignmentId, ValidatorId}; + +// Cumulus +use emulated_integration_tests_common::{ + accounts, build_genesis_storage, get_account_id_from_seed, get_from_seed, get_host_config, +}; +use kusama_runtime_constants::currency::UNITS as KSM; +use parachains_common::Balance; + +pub const ED: Balance = kusama_runtime_constants::currency::EXISTENTIAL_DEPOSIT; +const ENDOWMENT: u128 = 1_000_000 * KSM; + +mod validators { + use super::*; + use parachains_common::AccountId; + + pub fn initial_authorities() -> Vec<( + AccountId, + AccountId, + BabeId, + GrandpaId, + ImOnlineId, + ValidatorId, + AssignmentId, + AuthorityDiscoveryId, + BeefyId, + )> { + let seed = "Alice"; + vec![( + get_account_id_from_seed::(&format!("{}//stash", seed)), + get_account_id_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + )] + } +} + +fn session_keys( + babe: BabeId, + grandpa: GrandpaId, + im_online: ImOnlineId, + para_validator: ValidatorId, + para_assignment: AssignmentId, + authority_discovery: AuthorityDiscoveryId, + beefy: BeefyId, +) -> kusama_runtime::SessionKeys { + kusama_runtime::SessionKeys { + grandpa, + babe, + im_online, + para_validator, + para_assignment, + authority_discovery, + beefy, + } +} + +pub fn genesis() -> Storage { + let genesis_config = kusama_runtime::RuntimeGenesisConfig { + system: kusama_runtime::SystemConfig::default(), + balances: kusama_runtime::BalancesConfig { + balances: accounts::init_balances().iter().map(|k| (k.clone(), ENDOWMENT)).collect(), + }, + session: kusama_runtime::SessionConfig { + keys: validators::initial_authorities() + .iter() + .map(|x| { + ( + x.0.clone(), + x.0.clone(), + session_keys( + x.2.clone(), + x.3.clone(), + x.4.clone(), + x.5.clone(), + x.6.clone(), + x.7.clone(), + x.8.clone(), + ), + ) + }) + .collect::>(), + }, + babe: kusama_runtime::BabeConfig { + authorities: Default::default(), + epoch_config: Some(kusama_runtime::BABE_GENESIS_EPOCH_CONFIG), + ..Default::default() + }, + configuration: kusama_runtime::ConfigurationConfig { config: get_host_config() }, + registrar: kusama_runtime::RegistrarConfig { + next_free_para_id: polkadot_primitives::LOWEST_PUBLIC_ID, + ..Default::default() + }, + ..Default::default() + }; + + build_genesis_storage(&genesis_config, kusama_runtime::WASM_BINARY.unwrap()) +} diff --git a/integration-tests/emulated/chains/relays/kusama/src/lib.rs b/integration-tests/emulated/chains/relays/kusama/src/lib.rs new file mode 100644 index 0000000000..58e82a51d0 --- /dev/null +++ b/integration-tests/emulated/chains/relays/kusama/src/lib.rs @@ -0,0 +1,49 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub mod genesis; + +// Cumulus +use emulated_integration_tests_common::{ + impl_accounts_helpers_for_relay_chain, impl_assert_events_helpers_for_relay_chain, + impl_hrmp_channels_helpers_for_relay_chain, impl_send_transact_helpers_for_relay_chain, + xcm_emulator::decl_test_relay_chains, +}; +use polkadot_primitives::runtime_api::runtime_decl_for_parachain_host::ParachainHostV9; + +// Kusama declaration +decl_test_relay_chains! { + #[api_version(10)] + pub struct Kusama { + genesis = genesis::genesis(), + on_init = (), + runtime = kusama_runtime, + core = { + SovereignAccountOf: kusama_runtime::xcm_config::SovereignAccountOf, + }, + pallets = { + XcmPallet: kusama_runtime::XcmPallet, + Balances: kusama_runtime::Balances, + Hrmp: kusama_runtime::Hrmp, + Identity: kusama_runtime::Identity, + } + }, +} + +// Kusama implementation +impl_accounts_helpers_for_relay_chain!(Kusama); +impl_assert_events_helpers_for_relay_chain!(Kusama); +impl_hrmp_channels_helpers_for_relay_chain!(Kusama); +impl_send_transact_helpers_for_relay_chain!(Kusama); diff --git a/integration-tests/emulated/chains/relays/polkadot/Cargo.toml b/integration-tests/emulated/chains/relays/polkadot/Cargo.toml new file mode 100644 index 0000000000..a161064a15 --- /dev/null +++ b/integration-tests/emulated/chains/relays/polkadot/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "polkadot-emulated-chain" +version = "1.0.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Polkadot emulated chain used for integration tests" +publish = false + +[dependencies] +serde_json = "1.0.111" + +# Substrate +sp-core = { version = "28.0.0" } +sp-runtime = { version = "31.0.1" } +authority-discovery-primitives = { package = "sp-authority-discovery", version = "26.0.0" } +babe-primitives = { package = "sp-consensus-babe", version = "0.32.0" } +beefy-primitives = { package = "sp-consensus-beefy", version = "13.0.0" } +grandpa = { package = "sc-consensus-grandpa", version = "0.19.0" } +pallet-im-online = { version = "27.0.0" } +pallet-staking = { version = "28.0.0" } + +# Polkadot +polkadot-primitives = { version = "7.0.0" } + +# Cumulus +parachains-common = { version = "7.0.0" } +emulated-integration-tests-common = { version = "3.0.0" } + +# Runtimes +polkadot-runtime-constants = { path = "../../../../../relay/polkadot/constants" } +polkadot-runtime = { path = "../../../../../relay/polkadot" } diff --git a/integration-tests/emulated/chains/relays/polkadot/src/genesis.rs b/integration-tests/emulated/chains/relays/polkadot/src/genesis.rs new file mode 100644 index 0000000000..6697aa2bad --- /dev/null +++ b/integration-tests/emulated/chains/relays/polkadot/src/genesis.rs @@ -0,0 +1,139 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Substrate +use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; +use babe_primitives::AuthorityId as BabeId; +use beefy_primitives::ecdsa_crypto::AuthorityId as BeefyId; +use grandpa::AuthorityId as GrandpaId; +use pallet_im_online::sr25519::AuthorityId as ImOnlineId; +use sp_core::{sr25519, storage::Storage}; +use sp_runtime::Perbill; + +// Polkadot +use polkadot_primitives::{AssignmentId, ValidatorId}; + +// Cumulus +use emulated_integration_tests_common::{ + accounts, build_genesis_storage, get_account_id_from_seed, get_from_seed, get_host_config, +}; +use parachains_common::Balance; +use polkadot_runtime_constants::currency::UNITS as DOT; + +pub const ED: Balance = polkadot_runtime_constants::currency::EXISTENTIAL_DEPOSIT; +const ENDOWMENT: u128 = 1_000_000 * DOT; +const STASH: u128 = 100 * DOT; + +mod validators { + use super::*; + use parachains_common::AccountId; + + pub fn initial_authorities() -> Vec<( + AccountId, + AccountId, + BabeId, + GrandpaId, + ImOnlineId, + ValidatorId, + AssignmentId, + AuthorityDiscoveryId, + BeefyId, + )> { + let seed = "Alice"; + vec![( + get_account_id_from_seed::(&format!("{}//stash", seed)), + get_account_id_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + get_from_seed::(seed), + )] + } +} + +fn session_keys( + babe: BabeId, + grandpa: GrandpaId, + im_online: ImOnlineId, + para_validator: ValidatorId, + para_assignment: AssignmentId, + authority_discovery: AuthorityDiscoveryId, + beefy: BeefyId, +) -> polkadot_runtime::SessionKeys { + polkadot_runtime::SessionKeys { + babe, + grandpa, + im_online, + para_validator, + para_assignment, + authority_discovery, + beefy, + } +} + +pub fn genesis() -> Storage { + let genesis_config = polkadot_runtime::RuntimeGenesisConfig { + system: polkadot_runtime::SystemConfig::default(), + balances: polkadot_runtime::BalancesConfig { + balances: accounts::init_balances().iter().cloned().map(|k| (k, ENDOWMENT)).collect(), + }, + session: polkadot_runtime::SessionConfig { + keys: validators::initial_authorities() + .iter() + .map(|x| { + ( + x.0.clone(), + x.0.clone(), + session_keys( + x.2.clone(), + x.3.clone(), + x.4.clone(), + x.5.clone(), + x.6.clone(), + x.7.clone(), + x.8.clone(), + ), + ) + }) + .collect::>(), + }, + staking: polkadot_runtime::StakingConfig { + validator_count: validators::initial_authorities().len() as u32, + minimum_validator_count: 1, + stakers: validators::initial_authorities() + .iter() + .map(|x| { + (x.0.clone(), x.1.clone(), STASH, polkadot_runtime::StakerStatus::Validator) + }) + .collect(), + invulnerables: validators::initial_authorities().iter().map(|x| x.0.clone()).collect(), + force_era: pallet_staking::Forcing::ForceNone, + slash_reward_fraction: Perbill::from_percent(10), + ..Default::default() + }, + babe: polkadot_runtime::BabeConfig { + authorities: Default::default(), + epoch_config: Some(polkadot_runtime::BABE_GENESIS_EPOCH_CONFIG), + ..Default::default() + }, + configuration: polkadot_runtime::ConfigurationConfig { config: get_host_config() }, + ..Default::default() + }; + + build_genesis_storage(&genesis_config, polkadot_runtime::WASM_BINARY.unwrap()) +} diff --git a/integration-tests/emulated/chains/relays/polkadot/src/lib.rs b/integration-tests/emulated/chains/relays/polkadot/src/lib.rs new file mode 100644 index 0000000000..9b32e0ac87 --- /dev/null +++ b/integration-tests/emulated/chains/relays/polkadot/src/lib.rs @@ -0,0 +1,51 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub mod genesis; + +// Cumulus +use emulated_integration_tests_common::{ + impl_accounts_helpers_for_relay_chain, impl_assert_events_helpers_for_relay_chain, + impl_hrmp_channels_helpers_for_relay_chain, impl_send_transact_helpers_for_relay_chain, + xcm_emulator::decl_test_relay_chains, +}; +use polkadot_primitives::runtime_api::runtime_decl_for_parachain_host::ParachainHostV5; + +// Polkadot declaration +decl_test_relay_chains! { + #[api_version(10)] + pub struct Polkadot { + genesis = genesis::genesis(), + on_init = (), + runtime = polkadot_runtime, + core = { + SovereignAccountOf: polkadot_runtime::xcm_config::SovereignAccountOf, + }, + pallets = { + XcmPallet: polkadot_runtime::XcmPallet, + Balances: polkadot_runtime::Balances, + Treasury: polkadot_runtime::Treasury, + AssetRate: polkadot_runtime::AssetRate, + Hrmp: polkadot_runtime::Hrmp, + Identity: polkadot_runtime::Identity, + } + }, +} + +// Polkadot implementation +impl_accounts_helpers_for_relay_chain!(Polkadot); +impl_assert_events_helpers_for_relay_chain!(Polkadot); +impl_hrmp_channels_helpers_for_relay_chain!(Polkadot); +impl_send_transact_helpers_for_relay_chain!(Polkadot); diff --git a/integration-tests/emulated/chains/src/genesis.rs b/integration-tests/emulated/chains/src/genesis.rs deleted file mode 100644 index 76b1692605..0000000000 --- a/integration-tests/emulated/chains/src/genesis.rs +++ /dev/null @@ -1,650 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -use integration_tests_common::{ - accounts, collators, get_account_id_from_seed, validators, SAFE_XCM_VERSION, -}; - -// Substrate -use beefy_primitives::ecdsa_crypto::AuthorityId as BeefyId; -use grandpa_primitives::AuthorityId as GrandpaId; -use pallet_im_online::sr25519::AuthorityId as ImOnlineId; -use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; -use sp_consensus_babe::AuthorityId as BabeId; -use sp_core::{sr25519, storage::Storage}; -use sp_runtime::{BuildStorage, Perbill}; - -// Cumulus -use parachains_common::{AccountId, Balance, BlockNumber}; -use polkadot_parachain_primitives::primitives::{HeadData, ValidationCode}; -use polkadot_primitives::{AssignmentId, ValidatorId}; -use polkadot_runtime_parachains::{ - configuration::HostConfiguration, - paras::{ParaGenesisArgs, ParaKind}, -}; -// Polkadot -pub mod polkadot { - use super::*; - pub const ED: Balance = polkadot_runtime_constants::currency::EXISTENTIAL_DEPOSIT; - const STASH: u128 = 100 * polkadot_runtime_constants::currency::UNITS; - - pub fn get_host_config() -> HostConfiguration { - HostConfiguration { - max_upward_queue_count: 10, - max_upward_queue_size: 51200, - max_upward_message_size: 51200, - max_upward_message_num_per_candidate: 10, - max_downward_message_size: 51200, - hrmp_sender_deposit: 100_000_000_000, - hrmp_recipient_deposit: 100_000_000_000, - hrmp_channel_max_capacity: 1000, - hrmp_channel_max_message_size: 102400, - hrmp_channel_max_total_size: 102400, - hrmp_max_parachain_outbound_channels: 30, - hrmp_max_parachain_inbound_channels: 30, - ..Default::default() - } - } - - fn session_keys( - babe: BabeId, - grandpa: GrandpaId, - im_online: ImOnlineId, - para_validator: ValidatorId, - para_assignment: AssignmentId, - authority_discovery: AuthorityDiscoveryId, - beefy: BeefyId, - ) -> polkadot_runtime::SessionKeys { - polkadot_runtime::SessionKeys { - babe, - grandpa, - im_online, - para_validator, - para_assignment, - authority_discovery, - beefy, - } - } - - pub fn genesis() -> Storage { - let genesis_config = polkadot_runtime::RuntimeGenesisConfig { - system: polkadot_runtime::SystemConfig::default(), - balances: polkadot_runtime::BalancesConfig { - balances: accounts::init_balances() - .iter() - .cloned() - .map(|k| (k, ED * 4096)) - .collect(), - }, - session: polkadot_runtime::SessionConfig { - keys: validators::initial_authorities() - .iter() - .map(|x| { - ( - x.0.clone(), - x.0.clone(), - polkadot::session_keys( - x.2.clone(), - x.3.clone(), - x.4.clone(), - x.5.clone(), - x.6.clone(), - x.7.clone(), - x.8.clone(), - ), - ) - }) - .collect::>(), - }, - staking: polkadot_runtime::StakingConfig { - validator_count: validators::initial_authorities().len() as u32, - minimum_validator_count: 1, - stakers: validators::initial_authorities() - .iter() - .map(|x| { - (x.0.clone(), x.1.clone(), STASH, polkadot_runtime::StakerStatus::Validator) - }) - .collect(), - invulnerables: validators::initial_authorities() - .iter() - .map(|x| x.0.clone()) - .collect(), - force_era: pallet_staking::Forcing::ForceNone, - slash_reward_fraction: Perbill::from_percent(10), - ..Default::default() - }, - babe: polkadot_runtime::BabeConfig { - authorities: Default::default(), - epoch_config: Some(polkadot_runtime::BABE_GENESIS_EPOCH_CONFIG), - ..Default::default() - }, - configuration: polkadot_runtime::ConfigurationConfig { config: get_host_config() }, - paras: polkadot_runtime::ParasConfig { - paras: vec![ - ( - asset_hub_polkadot::PARA_ID.into(), - ParaGenesisArgs { - genesis_head: HeadData::default(), - validation_code: ValidationCode( - asset_hub_polkadot_runtime::WASM_BINARY.unwrap().to_vec(), - ), - para_kind: ParaKind::Parachain, - }, - ), - ( - bridge_hub_polkadot::PARA_ID.into(), - ParaGenesisArgs { - genesis_head: HeadData::default(), - validation_code: ValidationCode( - bridge_hub_polkadot_runtime::WASM_BINARY.unwrap().to_vec(), - ), - para_kind: ParaKind::Parachain, - }, - ), - ( - penpal::PARA_ID_A.into(), - ParaGenesisArgs { - genesis_head: HeadData::default(), - validation_code: ValidationCode( - penpal_runtime::WASM_BINARY.unwrap().to_vec(), - ), - para_kind: ParaKind::Parachain, - }, - ), - ( - penpal::PARA_ID_B.into(), - ParaGenesisArgs { - genesis_head: HeadData::default(), - validation_code: ValidationCode( - penpal_runtime::WASM_BINARY.unwrap().to_vec(), - ), - para_kind: ParaKind::Parachain, - }, - ), - ], - ..Default::default() - }, - ..Default::default() - }; - - genesis_config.build_storage().unwrap() - } -} - -// Kusama -pub mod kusama { - use super::*; - pub const ED: Balance = kusama_runtime_constants::currency::EXISTENTIAL_DEPOSIT; - use kusama_runtime_constants::currency::UNITS as KSM; - const ENDOWMENT: u128 = 1_000_000 * KSM; - const STASH: u128 = 100 * KSM; - - pub fn get_host_config() -> HostConfiguration { - HostConfiguration { - max_upward_queue_count: 10, - max_upward_queue_size: 51200, - max_upward_message_size: 51200, - max_upward_message_num_per_candidate: 10, - max_downward_message_size: 51200, - hrmp_sender_deposit: 5_000_000_000_000, - hrmp_recipient_deposit: 5_000_000_000_000, - hrmp_channel_max_capacity: 1000, - hrmp_channel_max_message_size: 102400, - hrmp_channel_max_total_size: 102400, - hrmp_max_parachain_outbound_channels: 30, - hrmp_max_parachain_inbound_channels: 30, - ..Default::default() - } - } - - fn session_keys( - babe: BabeId, - grandpa: GrandpaId, - im_online: ImOnlineId, - para_validator: ValidatorId, - para_assignment: AssignmentId, - authority_discovery: AuthorityDiscoveryId, - beefy: BeefyId, - ) -> kusama_runtime::SessionKeys { - kusama_runtime::SessionKeys { - babe, - grandpa, - im_online, - para_validator, - para_assignment, - authority_discovery, - beefy, - } - } - - pub fn genesis() -> Storage { - let genesis_config = kusama_runtime::RuntimeGenesisConfig { - system: kusama_runtime::SystemConfig::default(), - balances: kusama_runtime::BalancesConfig { - balances: accounts::init_balances() - .iter() - .map(|k: &AccountId| (k.clone(), ENDOWMENT)) - .collect(), - }, - session: kusama_runtime::SessionConfig { - keys: validators::initial_authorities() - .iter() - .map(|x| { - ( - x.0.clone(), - x.0.clone(), - kusama::session_keys( - x.2.clone(), - x.3.clone(), - x.4.clone(), - x.5.clone(), - x.6.clone(), - x.7.clone(), - x.8.clone(), - ), - ) - }) - .collect::>(), - }, - staking: kusama_runtime::StakingConfig { - validator_count: validators::initial_authorities().len() as u32, - minimum_validator_count: 1, - stakers: validators::initial_authorities() - .iter() - .map(|x| { - (x.0.clone(), x.1.clone(), STASH, kusama_runtime::StakerStatus::Validator) - }) - .collect(), - invulnerables: validators::initial_authorities() - .iter() - .map(|x| x.0.clone()) - .collect(), - force_era: pallet_staking::Forcing::NotForcing, - slash_reward_fraction: Perbill::from_percent(10), - ..Default::default() - }, - babe: kusama_runtime::BabeConfig { - authorities: Default::default(), - epoch_config: Some(kusama_runtime::BABE_GENESIS_EPOCH_CONFIG), - ..Default::default() - }, - configuration: kusama_runtime::ConfigurationConfig { config: get_host_config() }, - paras: kusama_runtime::ParasConfig { - paras: vec![ - ( - asset_hub_kusama::PARA_ID.into(), - ParaGenesisArgs { - genesis_head: HeadData::default(), - validation_code: ValidationCode( - asset_hub_kusama_runtime::WASM_BINARY.unwrap().to_vec(), - ), - para_kind: ParaKind::Parachain, - }, - ), - ( - bridge_hub_kusama::PARA_ID.into(), - ParaGenesisArgs { - genesis_head: HeadData::default(), - validation_code: ValidationCode( - bridge_hub_kusama_runtime::WASM_BINARY.unwrap().to_vec(), - ), - para_kind: ParaKind::Parachain, - }, - ), - ( - penpal::PARA_ID_A.into(), - ParaGenesisArgs { - genesis_head: HeadData::default(), - validation_code: ValidationCode( - penpal_runtime::WASM_BINARY.unwrap().to_vec(), - ), - para_kind: ParaKind::Parachain, - }, - ), - ( - penpal::PARA_ID_B.into(), - ParaGenesisArgs { - genesis_head: HeadData::default(), - validation_code: ValidationCode( - penpal_runtime::WASM_BINARY.unwrap().to_vec(), - ), - para_kind: ParaKind::Parachain, - }, - ), - ], - ..Default::default() - }, - ..Default::default() - }; - - genesis_config.build_storage().unwrap() - } -} - -// Asset Hub Polkadot -pub mod asset_hub_polkadot { - use super::*; - pub const PARA_ID: u32 = 1000; - pub const ED: Balance = asset_hub_polkadot_runtime::ExistentialDeposit::get(); - - pub fn genesis() -> Storage { - let genesis_config = asset_hub_polkadot_runtime::RuntimeGenesisConfig { - system: asset_hub_polkadot_runtime::SystemConfig::default(), - balances: asset_hub_polkadot_runtime::BalancesConfig { - balances: accounts::init_balances() - .iter() - .cloned() - .map(|k| (k, ED * 4096 * 4096)) - .collect(), - }, - parachain_info: asset_hub_polkadot_runtime::ParachainInfoConfig { - parachain_id: PARA_ID.into(), - ..Default::default() - }, - collator_selection: asset_hub_polkadot_runtime::CollatorSelectionConfig { - invulnerables: collators::invulnerables_asset_hub_polkadot() - .iter() - .cloned() - .map(|(acc, _)| acc) - .collect(), - candidacy_bond: ED * 16, - ..Default::default() - }, - session: asset_hub_polkadot_runtime::SessionConfig { - keys: collators::invulnerables_asset_hub_polkadot() - .into_iter() - .map(|(acc, aura)| { - ( - acc.clone(), // account id - acc, // validator id - asset_hub_polkadot_runtime::SessionKeys { aura }, // session keys - ) - }) - .collect(), - }, - polkadot_xcm: asset_hub_polkadot_runtime::PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - ..Default::default() - }, - ..Default::default() - }; - - genesis_config.build_storage().unwrap() - } -} - -// Asset Hub Kusama -pub mod asset_hub_kusama { - use super::*; - pub const PARA_ID: u32 = 1000; - pub const ED: Balance = asset_hub_kusama_runtime::ExistentialDeposit::get(); - - pub fn genesis() -> Storage { - let genesis_config = asset_hub_kusama_runtime::RuntimeGenesisConfig { - system: asset_hub_kusama_runtime::SystemConfig::default(), - balances: asset_hub_kusama_runtime::BalancesConfig { - balances: accounts::init_balances() - .iter() - .cloned() - .map(|k| (k, ED * 4096 * 4096)) - .collect(), - }, - parachain_info: asset_hub_kusama_runtime::ParachainInfoConfig { - parachain_id: PARA_ID.into(), - ..Default::default() - }, - collator_selection: asset_hub_kusama_runtime::CollatorSelectionConfig { - invulnerables: collators::invulnerables() - .iter() - .cloned() - .map(|(acc, _)| acc) - .collect(), - candidacy_bond: ED * 16, - ..Default::default() - }, - session: asset_hub_kusama_runtime::SessionConfig { - keys: collators::invulnerables() - .into_iter() - .map(|(acc, aura)| { - ( - acc.clone(), // account id - acc, // validator id - asset_hub_kusama_runtime::SessionKeys { aura }, // session keys - ) - }) - .collect(), - }, - polkadot_xcm: asset_hub_kusama_runtime::PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - ..Default::default() - }, - ..Default::default() - }; - - genesis_config.build_storage().unwrap() - } -} - -// Bridge Hub Polkadot -pub mod bridge_hub_polkadot { - use super::*; - pub const PARA_ID: u32 = 1002; - pub const ED: Balance = bridge_hub_polkadot_runtime::ExistentialDeposit::get(); - - pub fn genesis() -> Storage { - let genesis_config = bridge_hub_polkadot_runtime::RuntimeGenesisConfig { - system: bridge_hub_polkadot_runtime::SystemConfig::default(), - balances: bridge_hub_polkadot_runtime::BalancesConfig { - balances: accounts::init_balances() - .iter() - .cloned() - .map(|k| (k, ED * 4096)) - .collect(), - }, - parachain_info: bridge_hub_polkadot_runtime::ParachainInfoConfig { - parachain_id: PARA_ID.into(), - ..Default::default() - }, - collator_selection: bridge_hub_polkadot_runtime::CollatorSelectionConfig { - invulnerables: collators::invulnerables() - .iter() - .cloned() - .map(|(acc, _)| acc) - .collect(), - candidacy_bond: ED * 16, - ..Default::default() - }, - session: bridge_hub_polkadot_runtime::SessionConfig { - keys: collators::invulnerables() - .into_iter() - .map(|(acc, aura)| { - ( - acc.clone(), // account id - acc, // validator id - bridge_hub_polkadot_runtime::SessionKeys { aura }, // session keys - ) - }) - .collect(), - }, - polkadot_xcm: bridge_hub_polkadot_runtime::PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - ..Default::default() - }, - ..Default::default() - }; - - genesis_config.build_storage().unwrap() - } -} - -// Bridge Hub Kusama -pub mod bridge_hub_kusama { - use super::*; - pub const PARA_ID: u32 = 1002; - pub const ED: Balance = bridge_hub_kusama_runtime::ExistentialDeposit::get(); - - pub fn genesis() -> Storage { - let genesis_config = bridge_hub_kusama_runtime::RuntimeGenesisConfig { - system: bridge_hub_kusama_runtime::SystemConfig::default(), - balances: bridge_hub_kusama_runtime::BalancesConfig { - balances: accounts::init_balances() - .iter() - .cloned() - .map(|k| (k, ED * 4096)) - .collect(), - }, - parachain_info: bridge_hub_kusama_runtime::ParachainInfoConfig { - parachain_id: PARA_ID.into(), - ..Default::default() - }, - collator_selection: bridge_hub_kusama_runtime::CollatorSelectionConfig { - invulnerables: collators::invulnerables() - .iter() - .cloned() - .map(|(acc, _)| acc) - .collect(), - candidacy_bond: ED * 16, - ..Default::default() - }, - session: bridge_hub_kusama_runtime::SessionConfig { - keys: collators::invulnerables() - .into_iter() - .map(|(acc, aura)| { - ( - acc.clone(), // account id - acc, // validator id - bridge_hub_kusama_runtime::SessionKeys { aura }, // session keys - ) - }) - .collect(), - }, - polkadot_xcm: bridge_hub_kusama_runtime::PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - ..Default::default() - }, - ..Default::default() - }; - - genesis_config.build_storage().unwrap() - } -} - -// Collectives -pub mod collectives { - use super::*; - pub const PARA_ID: u32 = 1001; - pub const ED: Balance = collectives_polkadot_runtime::ExistentialDeposit::get(); - - pub fn genesis() -> Storage { - let genesis_config = collectives_polkadot_runtime::RuntimeGenesisConfig { - system: collectives_polkadot_runtime::SystemConfig::default(), - balances: collectives_polkadot_runtime::BalancesConfig { - balances: accounts::init_balances() - .iter() - .cloned() - .map(|k| (k, ED * 4096)) - .collect(), - }, - parachain_info: collectives_polkadot_runtime::ParachainInfoConfig { - parachain_id: PARA_ID.into(), - ..Default::default() - }, - collator_selection: collectives_polkadot_runtime::CollatorSelectionConfig { - invulnerables: collators::invulnerables() - .iter() - .cloned() - .map(|(acc, _)| acc) - .collect(), - candidacy_bond: ED * 16, - ..Default::default() - }, - session: collectives_polkadot_runtime::SessionConfig { - keys: collators::invulnerables() - .into_iter() - .map(|(acc, aura)| { - ( - acc.clone(), // account id - acc, // validator id - collectives_polkadot_runtime::SessionKeys { aura }, // session keys - ) - }) - .collect(), - }, - polkadot_xcm: collectives_polkadot_runtime::PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - ..Default::default() - }, - ..Default::default() - }; - - genesis_config.build_storage().unwrap() - } -} - -// Penpal -pub mod penpal { - use super::*; - pub const PARA_ID_A: u32 = 2000; - pub const PARA_ID_B: u32 = 2001; - pub const ED: Balance = penpal_runtime::EXISTENTIAL_DEPOSIT; - - pub fn genesis(para_id: u32) -> Storage { - let genesis_config = penpal_runtime::RuntimeGenesisConfig { - system: penpal_runtime::SystemConfig::default(), - balances: penpal_runtime::BalancesConfig { - balances: accounts::init_balances() - .iter() - .cloned() - .map(|k| (k, ED * 4096 * 4096)) - .collect(), - }, - parachain_info: penpal_runtime::ParachainInfoConfig { - parachain_id: para_id.into(), - ..Default::default() - }, - collator_selection: penpal_runtime::CollatorSelectionConfig { - invulnerables: collators::invulnerables() - .iter() - .cloned() - .map(|(acc, _)| acc) - .collect(), - candidacy_bond: ED * 16, - ..Default::default() - }, - session: penpal_runtime::SessionConfig { - keys: collators::invulnerables() - .into_iter() - .map(|(acc, aura)| { - ( - acc.clone(), // account id - acc, // validator id - penpal_runtime::SessionKeys { aura }, // session keys - ) - }) - .collect(), - }, - polkadot_xcm: penpal_runtime::PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - ..Default::default() - }, - sudo: penpal_runtime::SudoConfig { - key: Some(get_account_id_from_seed::("Alice")), - }, - ..Default::default() - }; - - genesis_config.build_storage().unwrap() - } -} diff --git a/integration-tests/emulated/chains/src/lib.rs b/integration-tests/emulated/chains/src/lib.rs deleted file mode 100644 index d56d2b190e..0000000000 --- a/integration-tests/emulated/chains/src/lib.rs +++ /dev/null @@ -1,339 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -pub mod genesis; - -pub use genesis::{ - asset_hub_kusama, asset_hub_polkadot, bridge_hub_kusama, bridge_hub_polkadot, collectives, - kusama, penpal, polkadot, -}; - -use integration_tests_common::{ - accounts::{ALICE, BOB}, - impl_accounts_helpers_for_parachain, impl_accounts_helpers_for_relay_chain, - impl_assert_events_helpers_for_parachain, impl_assert_events_helpers_for_relay_chain, - impl_assets_helpers_for_parachain, impl_foreign_assets_helpers_for_parachain, - impl_hrmp_channels_helpers_for_relay_chain, impl_send_transact_helpers_for_relay_chain, - impls::Parachain, -}; - -// Substrate -use frame_support::traits::OnInitialize; - -// Cumulus -use xcm_emulator::{ - // decl_test_bridges, - decl_test_networks, - decl_test_parachains, - decl_test_relay_chains, - decl_test_sender_receiver_accounts_parameter_types, -}; - -decl_test_relay_chains! { - #[api_version(5)] - pub struct Polkadot { - genesis = polkadot::genesis(), - on_init = (), - runtime = polkadot_runtime, - core = { - SovereignAccountOf: polkadot_runtime::xcm_config::SovereignAccountOf, - }, - pallets = { - XcmPallet: polkadot_runtime::XcmPallet, - Balances: polkadot_runtime::Balances, - Hrmp: polkadot_runtime::Hrmp, - } - }, - #[api_version(9)] - pub struct Kusama { - genesis = kusama::genesis(), - on_init = (), - runtime = kusama_runtime, - core = { - SovereignAccountOf: kusama_runtime::xcm_config::SovereignAccountOf, - }, - pallets = { - XcmPallet: kusama_runtime::XcmPallet, - Balances: kusama_runtime::Balances, - Hrmp: kusama_runtime::Hrmp, - } - }, -} - -decl_test_parachains! { - // Polkadot Parachains - pub struct AssetHubPolkadot { - genesis = asset_hub_polkadot::genesis(), - on_init = { - asset_hub_polkadot_runtime::AuraExt::on_initialize(1); - }, - runtime = asset_hub_polkadot_runtime, - core = { - XcmpMessageHandler: asset_hub_polkadot_runtime::XcmpQueue, - LocationToAccountId: asset_hub_polkadot_runtime::xcm_config::LocationToAccountId, - ParachainInfo: asset_hub_polkadot_runtime::ParachainInfo, - }, - pallets = { - PolkadotXcm: asset_hub_polkadot_runtime::PolkadotXcm, - Assets: asset_hub_polkadot_runtime::Assets, - ForeignAssets: asset_hub_polkadot_runtime::ForeignAssets, - Balances: asset_hub_polkadot_runtime::Balances, - } - }, - pub struct Collectives { - genesis = collectives::genesis(), - on_init = { - collectives_polkadot_runtime::AuraExt::on_initialize(1); - }, - runtime = collectives_polkadot_runtime, - core = { - XcmpMessageHandler: collectives_polkadot_runtime::XcmpQueue, - LocationToAccountId: collectives_polkadot_runtime::xcm_config::LocationToAccountId, - ParachainInfo: collectives_polkadot_runtime::ParachainInfo, - }, - pallets = { - PolkadotXcm: collectives_polkadot_runtime::PolkadotXcm, - Balances: collectives_polkadot_runtime::Balances, - } - }, - pub struct BridgeHubPolkadot { - genesis = bridge_hub_polkadot::genesis(), - on_init = { - bridge_hub_polkadot_runtime::AuraExt::on_initialize(1); - }, - runtime = bridge_hub_polkadot_runtime, - core = { - XcmpMessageHandler: bridge_hub_polkadot_runtime::XcmpQueue, - LocationToAccountId: bridge_hub_polkadot_runtime::xcm_config::LocationToAccountId, - ParachainInfo: bridge_hub_polkadot_runtime::ParachainInfo, - }, - pallets = { - PolkadotXcm: bridge_hub_polkadot_runtime::PolkadotXcm, - } - }, - pub struct PenpalPolkadotA { - genesis = penpal::genesis(penpal::PARA_ID_A), - on_init = { - penpal_runtime::AuraExt::on_initialize(1); - }, - runtime = penpal_runtime, - core = { - XcmpMessageHandler: penpal_runtime::XcmpQueue, - LocationToAccountId: penpal_runtime::xcm_config::LocationToAccountId, - ParachainInfo: penpal_runtime::ParachainInfo, - }, - pallets = { - PolkadotXcm: penpal_runtime::PolkadotXcm, - Assets: penpal_runtime::Assets, - Balances: penpal_runtime::Balances, - } - }, - pub struct PenpalPolkadotB { - genesis = penpal::genesis(penpal::PARA_ID_B), - on_init = { - penpal_runtime::AuraExt::on_initialize(1); - }, - runtime = penpal_runtime, - core = { - XcmpMessageHandler: penpal_runtime::XcmpQueue, - LocationToAccountId: penpal_runtime::xcm_config::LocationToAccountId, - ParachainInfo: penpal_runtime::ParachainInfo, - }, - pallets = { - PolkadotXcm: penpal_runtime::PolkadotXcm, - Assets: penpal_runtime::Assets, - Balances: penpal_runtime::Balances, - } - }, - // Kusama Parachains - pub struct AssetHubKusama { - genesis = asset_hub_kusama::genesis(), - on_init = { - asset_hub_kusama_runtime::AuraExt::on_initialize(1); - }, - runtime = asset_hub_kusama_runtime, - core = { - XcmpMessageHandler: asset_hub_kusama_runtime::XcmpQueue, - LocationToAccountId: asset_hub_kusama_runtime::xcm_config::LocationToAccountId, - ParachainInfo: asset_hub_kusama_runtime::ParachainInfo, - }, - pallets = { - PolkadotXcm: asset_hub_kusama_runtime::PolkadotXcm, - Assets: asset_hub_kusama_runtime::Assets, - ForeignAssets: asset_hub_kusama_runtime::ForeignAssets, - PoolAssets: asset_hub_kusama_runtime::PoolAssets, - AssetConversion: asset_hub_kusama_runtime::AssetConversion, - Balances: asset_hub_kusama_runtime::Balances, - } - }, - pub struct BridgeHubKusama { - genesis = bridge_hub_kusama::genesis(), - on_init = { - bridge_hub_kusama_runtime::AuraExt::on_initialize(1); - }, - runtime = bridge_hub_kusama_runtime, - core = { - XcmpMessageHandler: bridge_hub_kusama_runtime::XcmpQueue, - LocationToAccountId: bridge_hub_kusama_runtime::xcm_config::LocationToAccountId, - ParachainInfo: bridge_hub_kusama_runtime::ParachainInfo, - }, - pallets = { - PolkadotXcm: bridge_hub_kusama_runtime::PolkadotXcm, - } - }, - pub struct PenpalKusamaA { - genesis = penpal::genesis(penpal::PARA_ID_A), - on_init = { - penpal_runtime::AuraExt::on_initialize(1); - }, - runtime = penpal_runtime, - core = { - XcmpMessageHandler: penpal_runtime::XcmpQueue, - LocationToAccountId: penpal_runtime::xcm_config::LocationToAccountId, - ParachainInfo: penpal_runtime::ParachainInfo, - }, - pallets = { - PolkadotXcm: penpal_runtime::PolkadotXcm, - Assets: penpal_runtime::Assets, - Balances: penpal_runtime::Balances, - } - }, - pub struct PenpalKusamaB { - genesis = penpal::genesis(penpal::PARA_ID_B), - on_init = { - penpal_runtime::AuraExt::on_initialize(1); - }, - runtime = penpal_runtime, - core = { - XcmpMessageHandler: penpal_runtime::XcmpQueue, - LocationToAccountId: penpal_runtime::xcm_config::LocationToAccountId, - ParachainInfo: penpal_runtime::ParachainInfo, - }, - pallets = { - PolkadotXcm: penpal_runtime::PolkadotXcm, - Assets: penpal_runtime::Assets, - Balances: penpal_runtime::Balances, - } - }, -} - -decl_test_networks! { - pub struct PolkadotMockNet { - relay_chain = Polkadot, - parachains = vec![ - AssetHubPolkadot, - Collectives, - BridgeHubPolkadot, - PenpalPolkadotA, - PenpalPolkadotB, - ], - // TODO: uncomment when https://github.com/polkadot-fellows/runtimes/pull/108 is merged - // bridge = PolkadotKusamaMockBridge - bridge = () - }, - pub struct KusamaMockNet { - relay_chain = Kusama, - parachains = vec![ - AssetHubKusama, - BridgeHubKusama, - PenpalKusamaA, - PenpalKusamaB, - ], - // TODO: uncomment when https://github.com/polkadot-fellows/runtimes/pull/108 is merged - // bridge = KusamaPolkadotMockBridge - bridge = () - }, -} - -// TODO: uncomment when https://github.com/polkadot-fellows/runtimes/pull/108 is merged -// decl_test_bridges! { -// pub struct PolkadotKusamaMockBridge { -// source = BridgeHubPolkadot, -// target = BridgeHubKusama, -// handler = PolkadotKusamaMessageHandler -// }, -// pub struct KusamaPolkadotMockBridge { -// source = BridgeHubKusama, -// target = BridgeHubPolkadot, -// handler = KusamaPolkadotMessageHandler -// } -// } - -// Polkadot implementation -impl_accounts_helpers_for_relay_chain!(Polkadot); -impl_assert_events_helpers_for_relay_chain!(Polkadot); -impl_hrmp_channels_helpers_for_relay_chain!(Polkadot); -impl_send_transact_helpers_for_relay_chain!(Polkadot); - -// Kusama implementation -impl_accounts_helpers_for_relay_chain!(Kusama); -impl_assert_events_helpers_for_relay_chain!(Kusama); -impl_hrmp_channels_helpers_for_relay_chain!(Kusama); -impl_send_transact_helpers_for_relay_chain!(Kusama); - -// AssetHubPolkadot implementation -impl_accounts_helpers_for_parachain!(AssetHubPolkadot); -impl_assets_helpers_for_parachain!(AssetHubPolkadot, Polkadot); -impl_assert_events_helpers_for_parachain!(AssetHubPolkadot); -impl_foreign_assets_helpers_for_parachain!(AssetHubPolkadot, Polkadot); - -// AssetHubKusama implementation -impl_accounts_helpers_for_parachain!(AssetHubKusama); -impl_assets_helpers_for_parachain!(AssetHubKusama, Kusama); -impl_assert_events_helpers_for_parachain!(AssetHubKusama); -impl_foreign_assets_helpers_for_parachain!(AssetHubKusama, Kusama); - -// PenpalPolkadot implementations -impl_accounts_helpers_for_parachain!(PenpalPolkadotA); -impl_accounts_helpers_for_parachain!(PenpalPolkadotB); -impl_assets_helpers_for_parachain!(PenpalPolkadotA, Polkadot); -impl_assets_helpers_for_parachain!(PenpalPolkadotB, Polkadot); -impl_assert_events_helpers_for_parachain!(PenpalPolkadotA); -impl_assert_events_helpers_for_parachain!(PenpalPolkadotB); - -// PenpalKusama implementations -impl_accounts_helpers_for_parachain!(PenpalKusamaA); -impl_accounts_helpers_for_parachain!(PenpalKusamaB); -impl_assets_helpers_for_parachain!(PenpalKusamaA, Kusama); -impl_assets_helpers_for_parachain!(PenpalKusamaB, Kusama); -impl_assert_events_helpers_for_parachain!(PenpalKusamaA); -impl_assert_events_helpers_for_parachain!(PenpalKusamaB); - -// Collectives implementation -impl_accounts_helpers_for_parachain!(Collectives); -impl_assert_events_helpers_for_parachain!(Collectives); - -decl_test_sender_receiver_accounts_parameter_types! { - // Relays - PolkadotRelay { sender: ALICE, receiver: BOB }, - KusamaRelay { sender: ALICE, receiver: BOB }, - // Asset Hubs - AssetHubPolkadotPara { sender: ALICE, receiver: BOB }, - AssetHubKusamaPara { sender: ALICE, receiver: BOB }, - // Collectives - CollectivesPara { sender: ALICE, receiver: BOB }, - // Bridged Hubs - BridgeHubPolkadotPara { sender: ALICE, receiver: BOB }, - BridgeHubKusamaPara { sender: ALICE, receiver: BOB }, - // Penpals - PenpalPolkadotAPara { sender: ALICE, receiver: BOB }, - PenpalPolkadotBPara { sender: ALICE, receiver: BOB }, - PenpalKusamaAPara { sender: ALICE, receiver: BOB }, - PenpalKusamaBPara { sender: ALICE, receiver: BOB } -} - -pub type PenpalLocalTeleportableToAssetHub = - penpal_runtime::xcm_config::LocalTeleportableToAssetHub; -pub type PenpalXcmConfig = penpal_runtime::xcm_config::XcmConfig; diff --git a/integration-tests/emulated/common/Cargo.toml b/integration-tests/emulated/common/Cargo.toml deleted file mode 100644 index 92154b7f10..0000000000 --- a/integration-tests/emulated/common/Cargo.toml +++ /dev/null @@ -1,44 +0,0 @@ -[package] -name = "integration-tests-common" -version = "1.0.0" -authors.workspace = true -edition.workspace = true -license = "Apache-2.0" -description = "Common resources for integration testing with xcm-emulator" - -[dependencies] -codec = { package = "parity-scale-codec", version = "3.6.9" } -paste = "1.0.14" - -# Substrate -grandpa-primitives = { package = "sp-consensus-grandpa", version = "12.0.0" } -sp-authority-discovery = { version = "25.0.0" } -sp-runtime = { version = "30.0.1" } -frame-support = { version = "27.0.0" } -sp-core = { version = "27.0.0" } -sp-consensus-babe = { version = "0.31.0" } -pallet-assets = { version = "28.0.0" } -pallet-balances = { version = "27.0.0" } -pallet-message-queue = { version = "30.0.0" } -pallet-im-online = { version = "26.0.0" } -beefy-primitives = { package = "sp-consensus-beefy", version = "12.0.0" } - -# Polkadot -polkadot-primitives = { version = "6.0.0" } -polkadot-runtime-parachains = { version = "6.0.0" } -xcm = { package = "staging-xcm", version = "6.0.0" } -pallet-xcm = { version = "6.0.0" } - -# Cumulus -parachains-common = { version = "6.0.0" } -cumulus-primitives-core = { version = "0.6.0" } -xcm-emulator = { version = "0.4.0" } -cumulus-pallet-xcmp-queue = { version = "0.6.0" } -cumulus-pallet-parachain-system = { features = ["parameterized-consensus-hook",] , version = "0.6.0" } -asset-test-utils = { version = "6.0.1" } -cumulus-pallet-dmp-queue = { version = "0.6.0" } - -# Bridges -bp-messages = { version = "0.6.0" } -pallet-bridge-messages = { version = "0.6.0" } -bridge-runtime-common = { version = "0.6.0" } diff --git a/integration-tests/emulated/common/src/impls.rs b/integration-tests/emulated/common/src/impls.rs deleted file mode 100644 index 076e8d7e7a..0000000000 --- a/integration-tests/emulated/common/src/impls.rs +++ /dev/null @@ -1,786 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -pub use codec::{Decode, Encode}; -pub use paste; - -pub use crate::{ - xcm_helpers::xcm_transact_unpaid_execution, PROOF_SIZE_THRESHOLD, REF_TIME_THRESHOLD, -}; - -// Substrate -pub use frame_support::{ - assert_ok, - sp_runtime::AccountId32, - traits::fungibles::Inspect, - weights::{Weight, WeightMeter}, -}; -pub use pallet_assets; -pub use pallet_message_queue; -use sp_core::Get; - -// Cumulus -use bp_messages::{ - target_chain::{DispatchMessage, DispatchMessageData, MessageDispatch}, - LaneId, MessageKey, OutboundLaneData, -}; -use bridge_runtime_common::messages_xcm_extension::XcmBlobMessageDispatchResult; -pub use cumulus_pallet_dmp_queue; -pub use cumulus_pallet_parachain_system; -pub use cumulus_pallet_xcmp_queue; -pub use cumulus_primitives_core::{ - relay_chain::HrmpChannelId, DmpMessageHandler, ParaId, XcmpMessageHandler, -}; -use pallet_bridge_messages::{Config, Instance1, OutboundLanes, Pallet}; -pub use parachains_common::{AccountId, Balance}; -pub use xcm_emulator::{ - assert_expected_events, bx, helpers::weight_within_threshold, BridgeMessage, - BridgeMessageDispatchError, BridgeMessageHandler, Chain, Network, Parachain, RelayChain, - TestExt, -}; - -// Polkadot -pub use pallet_xcm; -pub use polkadot_runtime_parachains::{ - dmp, hrmp, - inclusion::{AggregateMessageOrigin, UmpQueueId}, -}; -pub use xcm::{ - prelude::{Junction, Junctions, MultiLocation, NetworkId, OriginKind, Outcome, VersionedXcm}, - v3::Error, - DoubleEncoded, -}; - -pub struct BridgeHubMessageHandler { - _marker: std::marker::PhantomData<(S, T, I)>, -} - -struct LaneIdWrapper(LaneId); - -impl From for u32 { - fn from(lane_id: LaneIdWrapper) -> u32 { - u32::from_be_bytes(lane_id.0 .0) - } -} - -impl From for LaneIdWrapper { - fn from(id: u32) -> LaneIdWrapper { - LaneIdWrapper(LaneId(id.to_be_bytes())) - } -} - -// TODO: uncomment when https://github.com/polkadot-fellows/runtimes/pull/108 is merged -// type BridgeHubPolkadotRuntime = ::Runtime; -// type BridgeHubKusamaRuntime = ::Runtime; - -// TODO: uncomment when https://github.com/polkadot-fellows/runtimes/pull/108 is merged -// pub type PolkadotKusamaMessageHandler -// = BridgeHubMessageHandler; -// pub type KusamaPolkadotMessageHandler -// = BridgeHubMessageHandler; - -impl BridgeMessageHandler for BridgeHubMessageHandler -where - S: Config, - T: Config, - I: 'static, - >::InboundPayload: From>, - >::MessageDispatch: - MessageDispatch, -{ - fn get_source_outbound_messages() -> Vec { - // get the source active outbound lanes - let active_lanes = S::ActiveOutboundLanes::get(); - - let mut messages: Vec = Default::default(); - - // collect messages from `OutboundMessages` for each active outbound lane in the source - for lane in active_lanes { - let latest_generated_nonce = - OutboundLanes::::get(lane).latest_generated_nonce; - let latest_received_nonce = - OutboundLanes::::get(lane).latest_received_nonce; - - (latest_received_nonce + 1..=latest_generated_nonce).for_each(|nonce| { - let encoded_payload: Vec = - Pallet::::outbound_message_data(*lane, nonce) - .expect("Bridge message does not exist") - .into(); - let payload = Vec::::decode(&mut &encoded_payload[..]) - .expect("Decodign XCM message failed"); - let id: u32 = LaneIdWrapper(*lane).into(); - let message = BridgeMessage { id, nonce, payload }; - - messages.push(message); - }); - } - messages - } - - fn dispatch_target_inbound_message( - message: BridgeMessage, - ) -> Result<(), BridgeMessageDispatchError> { - type TargetMessageDispatch = >::MessageDispatch; - type InboundPayload = >::InboundPayload; - - let lane_id = LaneIdWrapper::from(message.id).0; - let nonce = message.nonce; - let payload = Ok(From::from(message.payload)); - - // Directly dispatch outbound messages assuming everything is correct - // and bypassing the `Relayers` and `InboundLane` logic - let dispatch_result = TargetMessageDispatch::::dispatch(DispatchMessage { - key: MessageKey { lane_id, nonce }, - data: DispatchMessageData::> { payload }, - }); - - let result = match dispatch_result.dispatch_level_result { - XcmBlobMessageDispatchResult::Dispatched => Ok(()), - XcmBlobMessageDispatchResult::InvalidPayload => Err(BridgeMessageDispatchError( - Box::new(XcmBlobMessageDispatchResult::InvalidPayload), - )), - XcmBlobMessageDispatchResult::NotDispatched(e) => Err(BridgeMessageDispatchError( - Box::new(XcmBlobMessageDispatchResult::NotDispatched(e)), - )), - }; - result - } - - fn notify_source_message_delivery(lane_id: u32) { - let data = OutboundLanes::::get(LaneIdWrapper::from(lane_id).0); - let new_data = OutboundLaneData { - oldest_unpruned_nonce: data.oldest_unpruned_nonce + 1, - latest_received_nonce: data.latest_received_nonce + 1, - ..data - }; - - OutboundLanes::::insert(LaneIdWrapper::from(lane_id).0, new_data); - } -} - -#[macro_export] -macro_rules! impl_accounts_helpers_for_relay_chain { - ( $chain:ident ) => { - $crate::impls::paste::paste! { - impl $chain { - /// Fund a set of accounts with a balance - pub fn fund_accounts(accounts: Vec<($crate::impls::AccountId, $crate::impls::Balance)>) { - ::execute_with(|| { - for account in accounts { - $crate::impls::assert_ok!(]>::Balances::force_set_balance( - ::RuntimeOrigin::root(), - account.0.into(), - account.1, - )); - } - }); - } - /// Fund a sovereign account based on its Parachain Id - pub fn fund_para_sovereign(amount: $crate::impls::Balance, para_id: $crate::impls::ParaId) -> $crate::impls::AccountId32 { - let sovereign_account = ::sovereign_account_id_of_child_para(para_id); - Self::fund_accounts(vec![(sovereign_account.clone(), amount)]); - sovereign_account - } - } - } - }; -} - -#[macro_export] -macro_rules! impl_assert_events_helpers_for_relay_chain { - ( $chain:ident ) => { - $crate::impls::paste::paste! { - type [<$chain RuntimeEvent>] = <$chain as $crate::impls::Chain>::RuntimeEvent; - - impl $chain { - /// Asserts a dispatchable is completely executed and XCM sent - pub fn assert_xcm_pallet_attempted_complete(expected_weight: Option<$crate::impls::Weight>) { - $crate::impls::assert_expected_events!( - Self, - vec![ - [<$chain RuntimeEvent>]::::XcmPallet( - $crate::impls::pallet_xcm::Event::Attempted { outcome: $crate::impls::Outcome::Complete(weight) } - ) => { - weight: $crate::impls::weight_within_threshold( - ($crate::impls::REF_TIME_THRESHOLD, $crate::impls::PROOF_SIZE_THRESHOLD), - expected_weight.unwrap_or(*weight), - *weight - ), - }, - ] - ); - } - - /// Asserts a dispatchable is incompletely executed and XCM sent - pub fn assert_xcm_pallet_attempted_incomplete( - expected_weight: Option<$crate::impls::Weight>, - expected_error: Option<$crate::impls::Error>, - ) { - $crate::impls::assert_expected_events!( - Self, - vec![ - // Dispatchable is properly executed and XCM message sent - [<$chain RuntimeEvent>]::::XcmPallet( - $crate::impls::pallet_xcm::Event::Attempted { outcome: $crate::impls::Outcome::Incomplete(weight, error) } - ) => { - weight: $crate::impls::weight_within_threshold( - ($crate::impls::REF_TIME_THRESHOLD, $crate::impls::PROOF_SIZE_THRESHOLD), - expected_weight.unwrap_or(*weight), - *weight - ), - error: *error == expected_error.unwrap_or(*error), - }, - ] - ); - } - - /// Asserts a XCM message is sent - pub fn assert_xcm_pallet_sent() { - $crate::impls::assert_expected_events!( - Self, - vec![ - [<$chain RuntimeEvent>]::::XcmPallet($crate::impls::pallet_xcm::Event::Sent { .. }) => {}, - ] - ); - } - - /// Asserts a XCM from System Parachain is succesfully received and proccessed - pub fn assert_ump_queue_processed( - expected_success: bool, - expected_id: Option<$crate::impls::ParaId>, - expected_weight: Option<$crate::impls::Weight>, - ) { - $crate::impls::assert_expected_events!( - Self, - vec![ - // XCM is succesfully received and proccessed - [<$chain RuntimeEvent>]::::MessageQueue($crate::impls::pallet_message_queue::Event::Processed { - origin: $crate::impls::AggregateMessageOrigin::Ump($crate::impls::UmpQueueId::Para(id)), - weight_used, - success, - .. - }) => { - id: *id == expected_id.unwrap_or(*id), - weight_used: $crate::impls::weight_within_threshold( - ($crate::impls::REF_TIME_THRESHOLD, $crate::impls::PROOF_SIZE_THRESHOLD), - expected_weight.unwrap_or(*weight_used), - *weight_used - ), - success: *success == expected_success, - }, - ] - ); - } - } - } - }; -} - -#[macro_export] -macro_rules! impl_hrmp_channels_helpers_for_relay_chain { - ( $chain:ident ) => { - $crate::impls::paste::paste! { - impl $chain { - /// Init open channel request with another Parachain - pub fn init_open_channel_call( - recipient_para_id: $crate::impls::ParaId, - max_capacity: u32, - max_message_size: u32, - ) -> $crate::impls::DoubleEncoded<()> { - use $crate::impls::Encode; - - ::RuntimeCall::Hrmp($crate::impls::hrmp::Call::< - ::Runtime, - >::hrmp_init_open_channel { - recipient: recipient_para_id, - proposed_max_capacity: max_capacity, - proposed_max_message_size: max_message_size, - }) - .encode() - .into() - } - /// Recipient Parachain accept the open request from another Parachain - pub fn accept_open_channel_call(sender_para_id: $crate::impls::ParaId) -> $crate::impls::DoubleEncoded<()> { - use $crate::impls::Encode; - - ::RuntimeCall::Hrmp($crate::impls::hrmp::Call::< - ::Runtime, - >::hrmp_accept_open_channel { - sender: sender_para_id, - }) - .encode() - .into() - } - - /// A root origin force to open a channel between two Parachains - pub fn force_process_hrmp_open(sender: $crate::impls::ParaId, recipient: $crate::impls::ParaId) { - use $crate::impls::Chain; - - ::execute_with(|| { - let relay_root_origin = ::RuntimeOrigin::root(); - - // Force process HRMP open channel requests without waiting for the next session - $crate::impls::assert_ok!(]>::Hrmp::force_process_hrmp_open( - relay_root_origin, - 0 - )); - - let channel_id = $crate::impls::HrmpChannelId { sender, recipient }; - - let hrmp_channel_exist = $crate::impls::hrmp::HrmpChannels::< - ::Runtime, - >::contains_key(&channel_id); - - // Check the HRMP channel has been successfully registrered - assert!(hrmp_channel_exist) - }); - } - } - } - }; -} - -#[macro_export] -macro_rules! impl_send_transact_helpers_for_relay_chain { - ( $chain:ident ) => { - $crate::impls::paste::paste! { - impl $chain { - /// A root origin (as governance) sends `xcm::Transact` with `UnpaidExecution` and encoded `call` to child parachain. - pub fn send_unpaid_transact_to_parachain_as_root( - recipient: $crate::impls::ParaId, - call: $crate::impls::DoubleEncoded<()> - ) { - use $crate::impls::{bx, Chain, RelayChain}; - - ::execute_with(|| { - let root_origin = ::RuntimeOrigin::root(); - let destination: $crate::impls::MultiLocation = ::child_location_of(recipient); - let xcm = $crate::impls::xcm_transact_unpaid_execution(call, $crate::impls::OriginKind::Superuser); - - // Send XCM `Transact` - $crate::impls::assert_ok!(]>::XcmPallet::send( - root_origin, - bx!(destination.into()), - bx!(xcm), - )); - Self::assert_xcm_pallet_sent(); - }); - } - } - } - }; -} - -#[macro_export] -macro_rules! impl_accounts_helpers_for_parachain { - ( $chain:ident ) => { - $crate::impls::paste::paste! { - impl $chain { - /// Fund a set of accounts with a balance - pub fn fund_accounts(accounts: Vec<($crate::impls::AccountId, $crate::impls::Balance)>) { - ::execute_with(|| { - for account in accounts { - $crate::impls::assert_ok!(]>::Balances::force_set_balance( - ::RuntimeOrigin::root(), - account.0.into(), - account.1, - )); - } - }); - } - - /// Return local sovereign account of `para_id` on other `network_id` - pub fn sovereign_account_of_parachain_on_other_global_consensus( - network_id: $crate::impls::NetworkId, - para_id: $crate::impls::ParaId, - ) -> $crate::impls::AccountId { - let remote_location = $crate::impls::MultiLocation { - parents: 2, - interior: $crate::impls::Junctions::X2( - $crate::impls::Junction::GlobalConsensus(network_id), - $crate::impls::Junction::Parachain(para_id.into()), - ), - }; - ::execute_with(|| { - Self::sovereign_account_id_of(remote_location) - }) - } - } - } - }; -} - -#[macro_export] -macro_rules! impl_assert_events_helpers_for_parachain { - ( $chain:ident ) => { - $crate::impls::paste::paste! { - type [<$chain RuntimeEvent>] = <$chain as $crate::impls::Chain>::RuntimeEvent; - - impl $chain { - /// Asserts a dispatchable is completely executed and XCM sent - pub fn assert_xcm_pallet_attempted_complete(expected_weight: Option<$crate::impls::Weight>) { - $crate::impls::assert_expected_events!( - Self, - vec![ - [<$chain RuntimeEvent>]::::PolkadotXcm( - $crate::impls::pallet_xcm::Event::Attempted { outcome: $crate::impls::Outcome::Complete(weight) } - ) => { - weight: $crate::impls::weight_within_threshold( - ($crate::impls::REF_TIME_THRESHOLD, $crate::impls::PROOF_SIZE_THRESHOLD), - expected_weight.unwrap_or(*weight), - *weight - ), - }, - ] - ); - } - - /// Asserts a dispatchable is incompletely executed and XCM sent - pub fn assert_xcm_pallet_attempted_incomplete( - expected_weight: Option<$crate::impls::Weight>, - expected_error: Option<$crate::impls::Error>, - ) { - $crate::impls::assert_expected_events!( - Self, - vec![ - // Dispatchable is properly executed and XCM message sent - [<$chain RuntimeEvent>]::::PolkadotXcm( - $crate::impls::pallet_xcm::Event::Attempted { outcome: $crate::impls::Outcome::Incomplete(weight, error) } - ) => { - weight: $crate::impls::weight_within_threshold( - ($crate::impls::REF_TIME_THRESHOLD, $crate::impls::PROOF_SIZE_THRESHOLD), - expected_weight.unwrap_or(*weight), - *weight - ), - error: *error == expected_error.unwrap_or(*error), - }, - ] - ); - } - - /// Asserts a dispatchable throws and error when trying to be sent - pub fn assert_xcm_pallet_attempted_error(expected_error: Option<$crate::impls::Error>) { - $crate::impls::assert_expected_events!( - Self, - vec![ - // Execution fails in the origin with `Barrier` - [<$chain RuntimeEvent>]::::PolkadotXcm( - $crate::impls::pallet_xcm::Event::Attempted { outcome: $crate::impls::Outcome::Error(error) } - ) => { - error: *error == expected_error.unwrap_or(*error), - }, - ] - ); - } - - /// Asserts a XCM message is sent - pub fn assert_xcm_pallet_sent() { - $crate::impls::assert_expected_events!( - Self, - vec![ - [<$chain RuntimeEvent>]::::PolkadotXcm($crate::impls::pallet_xcm::Event::Sent { .. }) => {}, - ] - ); - } - - /// Asserts a XCM message is sent to Relay Chain - pub fn assert_parachain_system_ump_sent() { - $crate::impls::assert_expected_events!( - Self, - vec![ - [<$chain RuntimeEvent>]::::ParachainSystem( - $crate::impls::cumulus_pallet_parachain_system::Event::UpwardMessageSent { .. } - ) => {}, - ] - ); - } - - /// Asserts a XCM from Relay Chain is completely executed - pub fn assert_dmp_queue_complete(expected_weight: Option<$crate::impls::Weight>) { - $crate::impls::assert_expected_events!( - Self, - vec![ - [<$chain RuntimeEvent>]::::MessageQueue($crate::impls::pallet_message_queue::Event::Processed { - success: true, weight_used: weight, .. - }) => { - weight: $crate::impls::weight_within_threshold( - ($crate::impls::REF_TIME_THRESHOLD, $crate::impls::PROOF_SIZE_THRESHOLD), - expected_weight.unwrap_or(*weight), - *weight - ), - }, - ] - ); - } - - /// Asserts a XCM from Relay Chain is incompletely executed - pub fn assert_dmp_queue_incomplete( - expected_weight: Option<$crate::impls::Weight>, - expected_error: Option<$crate::impls::Error>, - ) { - $crate::impls::assert_expected_events!( - Self, - vec![ - [<$chain RuntimeEvent>]::::MessageQueue($crate::impls::pallet_message_queue::Event::Processed { - success: false, weight_used: weight, .. - }) => { - weight: $crate::impls::weight_within_threshold( - ($crate::impls::REF_TIME_THRESHOLD, $crate::impls::PROOF_SIZE_THRESHOLD), - expected_weight.unwrap_or(*weight), - *weight - ), - }, - ] - ); - } - - /// Asserts a XCM from another Parachain is completely executed - pub fn assert_xcmp_queue_success(expected_weight: Option<$crate::impls::Weight>) { - $crate::impls::assert_expected_events!( - Self, - vec![ - [<$chain RuntimeEvent>]::::MessageQueue($crate::impls::pallet_message_queue::Event::Processed { success: true, weight_used: weight, .. } - - ) => { - weight: $crate::impls::weight_within_threshold( - ($crate::impls::REF_TIME_THRESHOLD, $crate::impls::PROOF_SIZE_THRESHOLD), - expected_weight.unwrap_or(*weight), - *weight - ), - }, - ] - ); - } - } - } - }; -} - -#[macro_export] -macro_rules! impl_assets_helpers_for_parachain { - ( $chain:ident, $relay_chain:ident ) => { - $crate::impls::paste::paste! { - impl $chain { - /// Returns the encoded call for `force_create` from the assets pallet - pub fn force_create_asset_call( - asset_id: u32, - owner: $crate::impls::AccountId, - is_sufficient: bool, - min_balance: $crate::impls::Balance, - ) -> $crate::impls::DoubleEncoded<()> { - use $crate::impls::{Chain, Encode}; - - ::RuntimeCall::Assets($crate::impls::pallet_assets::Call::< - ::Runtime, - $crate::impls::pallet_assets::Instance1, - >::force_create { - id: asset_id.into(), - owner: owner.into(), - is_sufficient, - min_balance, - }) - .encode() - .into() - } - - /// Returns a `VersionedXcm` for `force_create` from the assets pallet - pub fn force_create_asset_xcm( - origin_kind: $crate::impls::OriginKind, - asset_id: u32, - owner: $crate::impls::AccountId, - is_sufficient: bool, - min_balance: $crate::impls::Balance, - ) -> $crate::impls::VersionedXcm<()> { - let call = Self::force_create_asset_call(asset_id, owner, is_sufficient, min_balance); - $crate::impls::xcm_transact_unpaid_execution(call, origin_kind) - } - - /// Mint assets making use of the assets pallet - pub fn mint_asset( - signed_origin: ::RuntimeOrigin, - id: u32, - beneficiary: $crate::impls::AccountId, - amount_to_mint: u128, - ) { - ::execute_with(|| { - $crate::impls::assert_ok!(]>::Assets::mint( - signed_origin, - id.into(), - beneficiary.clone().into(), - amount_to_mint - )); - - type RuntimeEvent = <$chain as $crate::impls::Chain>::RuntimeEvent; - - $crate::impls::assert_expected_events!( - Self, - vec![ - RuntimeEvent::::Assets( - $crate::impls::pallet_assets::Event::Issued { asset_id, owner, amount } - ) => { - asset_id: *asset_id == id, - owner: *owner == beneficiary.clone().into(), - amount: *amount == amount_to_mint, - }, - ] - ); - }); - } - - /// Force create and mint assets making use of the assets pallet - pub fn force_create_and_mint_asset( - id: u32, - min_balance: u128, - is_sufficient: bool, - asset_owner: $crate::impls::AccountId, - dmp_weight_threshold: Option<$crate::impls::Weight>, - amount_to_mint: u128, - ) { - use $crate::impls::Chain; - - // Force create asset - Self::force_create_asset_from_relay_as_root( - id, - min_balance, - is_sufficient, - asset_owner.clone(), - dmp_weight_threshold - ); - - // Mint asset for System Parachain's sender - let signed_origin = ::RuntimeOrigin::signed(asset_owner.clone()); - Self::mint_asset(signed_origin, id, asset_owner, amount_to_mint); - } - - /// Relay Chain sends `Transact` instruction with `force_create_asset` to Parachain with `Assets` instance of `pallet_assets` . - pub fn force_create_asset_from_relay_as_root( - id: u32, - min_balance: u128, - is_sufficient: bool, - asset_owner: $crate::impls::AccountId, - dmp_weight_threshold: Option<$crate::impls::Weight>, - ) { - use $crate::impls::{Parachain, Inspect, TestExt}; - - <$relay_chain>::send_unpaid_transact_to_parachain_as_root( - Self::para_id(), - Self::force_create_asset_call(id, asset_owner.clone(), is_sufficient, min_balance), - ); - - // Receive XCM message in Assets Parachain - Self::execute_with(|| { - type RuntimeEvent = <$chain as $crate::impls::Chain>::RuntimeEvent; - - Self::assert_dmp_queue_complete(dmp_weight_threshold); - - $crate::impls::assert_expected_events!( - Self, - vec![ - RuntimeEvent::::Assets($crate::impls::pallet_assets::Event::ForceCreated { asset_id, owner }) => { - asset_id: *asset_id == id, - owner: *owner == asset_owner, - }, - ] - ); - - assert!(]>::Assets::asset_exists(id.into())); - }); - } - } - } - }; -} - -#[macro_export] -macro_rules! impl_foreign_assets_helpers_for_parachain { - ( $chain:ident, $relay_chain:ident ) => { - $crate::impls::paste::paste! { - impl $chain { - /// Create foreign assets using sudo `ForeignAssets::force_create()` - pub fn force_create_foreign_asset( - id: $crate::impls::MultiLocation, - owner: $crate::impls::AccountId, - is_sufficient: bool, - min_balance: u128, - prefund_accounts: Vec<($crate::impls::AccountId, u128)>, - ) { - use $crate::impls::Inspect; - let sudo_origin = <$chain as $crate::impls::Chain>::RuntimeOrigin::root(); - ::execute_with(|| { - $crate::impls::assert_ok!( - ]>::ForeignAssets::force_create( - sudo_origin, - id, - owner.clone().into(), - is_sufficient, - min_balance, - ) - ); - assert!(]>::ForeignAssets::asset_exists(id)); - type RuntimeEvent = <$chain as $crate::impls::Chain>::RuntimeEvent; - $crate::impls::assert_expected_events!( - Self, - vec![ - RuntimeEvent::::ForeignAssets( - $crate::impls::pallet_assets::Event::ForceCreated { - asset_id, - .. - } - ) => { asset_id: *asset_id == id, }, - ] - ); - }); - for (beneficiary, amount) in prefund_accounts.into_iter() { - let signed_origin = - <$chain as $crate::impls::Chain>::RuntimeOrigin::signed(owner.clone()); - Self::mint_foreign_asset(signed_origin, id, beneficiary, amount); - } - } - - /// Mint assets making use of the ForeignAssets pallet-assets instance - pub fn mint_foreign_asset( - signed_origin: ::RuntimeOrigin, - id: $crate::impls::MultiLocation, - beneficiary: $crate::impls::AccountId, - amount_to_mint: u128, - ) { - ::execute_with(|| { - $crate::impls::assert_ok!(]>::ForeignAssets::mint( - signed_origin, - id.into(), - beneficiary.clone().into(), - amount_to_mint - )); - - type RuntimeEvent = <$chain as $crate::impls::Chain>::RuntimeEvent; - - $crate::impls::assert_expected_events!( - Self, - vec![ - RuntimeEvent::::ForeignAssets( - $crate::impls::pallet_assets::Event::Issued { asset_id, owner, amount } - ) => { - asset_id: *asset_id == id, - owner: *owner == beneficiary.clone().into(), - amount: *amount == amount_to_mint, - }, - ] - ); - }); - } - } - } - }; -} diff --git a/integration-tests/emulated/common/src/lib.rs b/integration-tests/emulated/common/src/lib.rs deleted file mode 100644 index 8058f88b58..0000000000 --- a/integration-tests/emulated/common/src/lib.rs +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -pub mod impls; -pub mod macros; -pub mod xcm_helpers; - -// Substrate -use beefy_primitives::ecdsa_crypto::AuthorityId as BeefyId; -use grandpa_primitives::AuthorityId as GrandpaId; -use pallet_im_online::sr25519::AuthorityId as ImOnlineId; -use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; -use sp_consensus_babe::AuthorityId as BabeId; -use sp_core::{sr25519, Pair, Public}; -use sp_runtime::{ - traits::{IdentifyAccount, Verify}, - MultiSignature, -}; - -// Cumulus -use parachains_common::{AccountId, AssetHubPolkadotAuraId, AuraId}; -use polkadot_primitives::{AssignmentId, ValidatorId}; - -/// The default XCM version to set in genesis config. -pub const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; - -pub const XCM_V2: u32 = 3; -pub const XCM_V3: u32 = 2; -pub const REF_TIME_THRESHOLD: u64 = 33; -pub const PROOF_SIZE_THRESHOLD: u64 = 33; - -type AccountPublic = ::Signer; - -/// Helper function to generate a crypto pair from seed -fn get_from_seed(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - -/// Helper function to generate an account ID from seed. -pub fn get_account_id_from_seed(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_from_seed::(seed)).into_account() -} - -pub mod accounts { - use super::*; - pub const ALICE: &str = "Alice"; - pub const BOB: &str = "Bob"; - pub const CHARLIE: &str = "Charlie"; - pub const DAVE: &str = "Dave"; - pub const EVE: &str = "Eve"; - pub const FERDIE: &str = "Ferdei"; - pub const ALICE_STASH: &str = "Alice//stash"; - pub const BOB_STASH: &str = "Bob//stash"; - pub const CHARLIE_STASH: &str = "Charlie//stash"; - pub const DAVE_STASH: &str = "Dave//stash"; - pub const EVE_STASH: &str = "Eve//stash"; - pub const FERDIE_STASH: &str = "Ferdie//stash"; - pub const FERDIE_BEEFY: &str = "Ferdie//stash"; - - pub fn init_balances() -> Vec { - vec![ - get_account_id_from_seed::(ALICE), - get_account_id_from_seed::(BOB), - get_account_id_from_seed::(CHARLIE), - get_account_id_from_seed::(DAVE), - get_account_id_from_seed::(EVE), - get_account_id_from_seed::(FERDIE), - get_account_id_from_seed::(ALICE_STASH), - get_account_id_from_seed::(BOB_STASH), - get_account_id_from_seed::(CHARLIE_STASH), - get_account_id_from_seed::(DAVE_STASH), - get_account_id_from_seed::(EVE_STASH), - get_account_id_from_seed::(FERDIE_STASH), - ] - } -} - -pub mod collators { - use super::*; - - pub fn invulnerables_asset_hub_polkadot() -> Vec<(AccountId, AssetHubPolkadotAuraId)> { - vec![ - ( - get_account_id_from_seed::("Alice"), - get_from_seed::("Alice"), - ), - ( - get_account_id_from_seed::("Bob"), - get_from_seed::("Bob"), - ), - ] - } - - pub fn invulnerables() -> Vec<(AccountId, AuraId)> { - vec![ - ( - get_account_id_from_seed::("Alice"), - get_from_seed::("Alice"), - ), - (get_account_id_from_seed::("Bob"), get_from_seed::("Bob")), - ] - } -} - -pub mod validators { - use super::*; - - pub fn initial_authorities() -> Vec<( - AccountId, - AccountId, - BabeId, - GrandpaId, - ImOnlineId, - ValidatorId, - AssignmentId, - AuthorityDiscoveryId, - BeefyId, - )> { - let seed = "Alice"; - vec![( - get_account_id_from_seed::(&format!("{}//stash", seed)), - get_account_id_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - get_from_seed::(seed), - )] - } -} diff --git a/integration-tests/emulated/common/src/macros.rs b/integration-tests/emulated/common/src/macros.rs deleted file mode 100644 index 8718f1e83a..0000000000 --- a/integration-tests/emulated/common/src/macros.rs +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -pub use paste; - -// Substrate -pub use pallet_balances; -pub use pallet_message_queue; -pub use pallet_xcm; - -// Polkadot -pub use xcm::prelude::{AccountId32, WeightLimit}; - -// Cumulus -pub use asset_test_utils; -pub use cumulus_pallet_xcmp_queue; -pub use xcm_emulator::Chain; - -#[macro_export] -macro_rules! test_parachain_is_trusted_teleporter { - ( $sender_para:ty, $sender_xcm_config:ty, vec![$( $receiver_para:ty ),+], ($assets:expr, $amount:expr) ) => { - $crate::macros::paste::paste! { - // init Origin variables - let sender = [<$sender_para Sender>]::get(); - let mut para_sender_balance_before = - <$sender_para as $crate::macros::Chain>::account_data_of(sender.clone()).free; - let origin = <$sender_para as $crate::macros::Chain>::RuntimeOrigin::signed(sender.clone()); - let fee_asset_item = 0; - let weight_limit = $crate::macros::WeightLimit::Unlimited; - - $( - { - // init Destination variables - let receiver = [<$receiver_para Receiver>]::get(); - let para_receiver_balance_before = - <$receiver_para as $crate::macros::Chain>::account_data_of(receiver.clone()).free; - let para_destination = - <$sender_para>::sibling_location_of(<$receiver_para>::para_id()); - let beneficiary: MultiLocation = - $crate::macros::AccountId32 { network: None, id: receiver.clone().into() }.into(); - - // Send XCM message from Origin Parachain - // We are only testing the limited teleport version, which should be ok since success will - // depend only on a proper `XcmConfig` at destination. - <$sender_para>::execute_with(|| { - assert_ok!(<$sender_para as [<$sender_para Pallet>]>::PolkadotXcm::limited_teleport_assets( - origin.clone(), - bx!(para_destination.into()), - bx!(beneficiary.into()), - bx!($assets.clone().into()), - fee_asset_item, - weight_limit.clone(), - )); - - type RuntimeEvent = <$sender_para as $crate::macros::Chain>::RuntimeEvent; - - assert_expected_events!( - $sender_para, - vec![ - RuntimeEvent::PolkadotXcm( - $crate::macros::pallet_xcm::Event::Attempted { outcome: Outcome::Complete { .. } } - ) => {}, - RuntimeEvent::XcmpQueue( - $crate::macros::cumulus_pallet_xcmp_queue::Event::XcmpMessageSent { .. } - ) => {}, - RuntimeEvent::Balances( - $crate::macros::pallet_balances::Event::Withdraw { who: sender, amount } - ) => {}, - ] - ); - }); - - // Receive XCM message in Destination Parachain - <$receiver_para>::execute_with(|| { - type RuntimeEvent = <$receiver_para as $crate::macros::Chain>::RuntimeEvent; - - assert_expected_events!( - $receiver_para, - vec![ - RuntimeEvent::Balances( - $crate::macros::pallet_balances::Event::Deposit { who: receiver, .. } - ) => {}, - RuntimeEvent::MessageQueue( - $crate::macros::pallet_message_queue::Event::Processed { success: true, .. } - ) => {}, - ] - ); - }); - - // Check if balances are updated accordingly in Origin and Destination Parachains - let para_sender_balance_after = - <$sender_para as $crate::macros::Chain>::account_data_of(sender.clone()).free; - let para_receiver_balance_after = - <$receiver_para as $crate::macros::Chain>::account_data_of(receiver.clone()).free; - let delivery_fees = <$sender_para>::execute_with(|| { - $crate::macros::asset_test_utils::xcm_helpers::transfer_assets_delivery_fees::< - <$sender_xcm_config as xcm_executor::Config>::XcmSender, - >($assets.clone(), fee_asset_item, weight_limit.clone(), beneficiary, para_destination) - }); - - assert_eq!(para_sender_balance_before - $amount - delivery_fees, para_sender_balance_after); - assert!(para_receiver_balance_after > para_receiver_balance_before); - - // Update sender balance - para_sender_balance_before = <$sender_para as $crate::macros::Chain>::account_data_of(sender.clone()).free; - } - )+ - } - }; -} - -#[macro_export] -macro_rules! include_penpal_create_foreign_asset_on_asset_hub { - ( $penpal:ident, $asset_hub:ident, $relay_ed:expr, $weight_to_fee:expr) => { - $crate::impls::paste::paste! { - pub fn penpal_create_foreign_asset_on_asset_hub( - asset_id_on_penpal: u32, - foreign_asset_at_asset_hub: MultiLocation, - ah_as_seen_by_penpal: MultiLocation, - is_sufficient: bool, - asset_owner: AccountId, - prefund_amount: u128, - ) { - use frame_support::weights::WeightToFee; - let ah_check_account = $asset_hub::execute_with(|| { - <$asset_hub as [<$asset_hub Pallet>]>::PolkadotXcm::check_account() - }); - let penpal_check_account = - $penpal::execute_with(|| <$penpal as [<$penpal Pallet>]>::PolkadotXcm::check_account()); - let penpal_as_seen_by_ah = $asset_hub::sibling_location_of($penpal::para_id()); - - // prefund SA of Penpal on AssetHub with enough native tokens to pay for creating - // new foreign asset, also prefund CheckingAccount with ED, because teleported asset - // itself might not be sufficient and CheckingAccount cannot be created otherwise - let sov_penpal_on_ah = $asset_hub::sovereign_account_id_of(penpal_as_seen_by_ah); - $asset_hub::fund_accounts(vec![ - (sov_penpal_on_ah.clone().into(), $relay_ed * 100_000_000_000), - (ah_check_account.clone().into(), $relay_ed * 1000), - ]); - - // prefund SA of AssetHub on Penpal with native asset - let sov_ah_on_penpal = $penpal::sovereign_account_id_of(ah_as_seen_by_penpal); - $penpal::fund_accounts(vec![ - (sov_ah_on_penpal.into(), $relay_ed * 1_000_000_000), - (penpal_check_account.clone().into(), $relay_ed * 1000), - ]); - - // Force create asset on $penpal and prefund [<$penpal Sender>] - $penpal::force_create_and_mint_asset( - asset_id_on_penpal, - ASSET_MIN_BALANCE, - is_sufficient, - asset_owner, - None, - prefund_amount, - ); - - let require_weight_at_most = Weight::from_parts(1_100_000_000_000, 30_000); - // `OriginKind::Xcm` required by ForeignCreators pallet-assets origin filter - let origin_kind = OriginKind::Xcm; - let call_create_foreign_assets = - <$asset_hub as Chain>::RuntimeCall::ForeignAssets(pallet_assets::Call::< - <$asset_hub as Chain>::Runtime, - pallet_assets::Instance2, - >::create { - id: foreign_asset_at_asset_hub, - min_balance: ASSET_MIN_BALANCE, - admin: sov_penpal_on_ah.into(), - }) - .encode(); - let buy_execution_fee_amount = $weight_to_fee::weight_to_fee( - &Weight::from_parts(10_100_000_000_000, 300_000), - ); - let buy_execution_fee = MultiAsset { - id: Concrete(MultiLocation { parents: 1, interior: Here }), - fun: Fungible(buy_execution_fee_amount), - }; - let xcm = VersionedXcm::from(Xcm(vec![ - WithdrawAsset { 0: vec![buy_execution_fee.clone()].into() }, - BuyExecution { fees: buy_execution_fee.clone(), weight_limit: Unlimited }, - Transact { require_weight_at_most, origin_kind, call: call_create_foreign_assets.into() }, - ExpectTransactStatus(MaybeErrorCode::Success), - RefundSurplus, - DepositAsset { assets: All.into(), beneficiary: penpal_as_seen_by_ah }, - ])); - // Send XCM message from penpal => asset_hub - let sudo_penpal_origin = <$penpal as Chain>::RuntimeOrigin::root(); - $penpal::execute_with(|| { - assert_ok!(<$penpal as [<$penpal Pallet>]>::PolkadotXcm::send( - sudo_penpal_origin.clone(), - bx!(ah_as_seen_by_penpal.into()), - bx!(xcm), - )); - type RuntimeEvent = <$penpal as Chain>::RuntimeEvent; - assert_expected_events!( - $penpal, - vec![ - RuntimeEvent::PolkadotXcm(pallet_xcm::Event::Sent { .. }) => {}, - ] - ); - }); - $asset_hub::execute_with(|| { - type ForeignAssets = <$asset_hub as [<$asset_hub Pallet>]>::ForeignAssets; - assert!(ForeignAssets::asset_exists(foreign_asset_at_asset_hub)); - }); - } - } - }; -} diff --git a/integration-tests/emulated/common/src/xcm_helpers.rs b/integration-tests/emulated/common/src/xcm_helpers.rs deleted file mode 100644 index c40f51a440..0000000000 --- a/integration-tests/emulated/common/src/xcm_helpers.rs +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright Parity Technologies (UK) Ltd. -// This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . - -use parachains_common::AccountId; -use xcm::{prelude::*, DoubleEncoded}; - -/// Helper method to build a XCM with a `Transact` instruction and paying for its execution -pub fn xcm_transact_paid_execution( - call: DoubleEncoded<()>, - origin_kind: OriginKind, - native_asset: MultiAsset, - beneficiary: AccountId, -) -> VersionedXcm<()> { - let weight_limit = WeightLimit::Unlimited; - let require_weight_at_most = Weight::from_parts(1000000000, 200000); - let native_assets: MultiAssets = native_asset.clone().into(); - - VersionedXcm::from(Xcm(vec![ - WithdrawAsset(native_assets), - BuyExecution { fees: native_asset, weight_limit }, - Transact { require_weight_at_most, origin_kind, call }, - RefundSurplus, - DepositAsset { - assets: All.into(), - beneficiary: MultiLocation { - parents: 0, - interior: X1(AccountId32 { network: None, id: beneficiary.into() }), - }, - }, - ])) -} - -/// Helper method to build a XCM with a `Transact` instruction without paying for its execution -pub fn xcm_transact_unpaid_execution( - call: DoubleEncoded<()>, - origin_kind: OriginKind, -) -> VersionedXcm<()> { - let weight_limit = WeightLimit::Unlimited; - let require_weight_at_most = Weight::from_parts(1000000000, 200000); - let check_origin = None; - - VersionedXcm::from(Xcm(vec![ - UnpaidExecution { weight_limit, check_origin }, - Transact { require_weight_at_most, origin_kind, call }, - ])) -} -/// Helper method to get the non-fee asset used in multiple assets transfer -pub fn non_fee_asset(assets: &MultiAssets, fee_idx: usize) -> Option<(MultiLocation, u128)> { - let asset = assets.inner().into_iter().enumerate().find(|a| a.0 != fee_idx)?.1.clone(); - let asset_id = match asset.id { - Concrete(id) => id, - _ => return None, - }; - let asset_amount = match asset.fun { - Fungible(amount) => amount, - _ => return None, - }; - Some((asset_id, asset_amount)) -} diff --git a/integration-tests/emulated/helpers/Cargo.toml b/integration-tests/emulated/helpers/Cargo.toml new file mode 100644 index 0000000000..8c30a59c32 --- /dev/null +++ b/integration-tests/emulated/helpers/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "integration-tests-helpers" +version = "0.0.1" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Emulated integration tests helpers" +publish = false + +[dependencies] +paste = "1.0.14" + +# Substrate +pallet-balances = { version = "28.0.0" } +pallet-message-queue = { version = "31.0.0" } + +# Polkadot +xcm = { package = "staging-xcm", version = "7.0.0" } +pallet-xcm = { version = "7.0.0" } + +# Cumulus +xcm-emulator = { version = "0.5.0" } +cumulus-pallet-xcmp-queue = { version = "0.7.0" } +asset-test-utils = { version = "7.0.1" } diff --git a/integration-tests/emulated/helpers/src/lib.rs b/integration-tests/emulated/helpers/src/lib.rs new file mode 100644 index 0000000000..ba85425eba --- /dev/null +++ b/integration-tests/emulated/helpers/src/lib.rs @@ -0,0 +1,124 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub use paste; + +// Substrate +pub use pallet_balances; +pub use pallet_message_queue; + +// Polkadot +pub use pallet_xcm; +pub use xcm::prelude::{AccountId32, WeightLimit}; + +// Cumulus +pub use asset_test_utils; +pub use cumulus_pallet_xcmp_queue; +pub use xcm_emulator::Chain; + +/// TODO: when bumping to polkadot-sdk v1.8.0, +/// remove this crate altogether and get the macros from `emulated-integration-tests-common`. +#[macro_export] +macro_rules! test_parachain_is_trusted_teleporter { + ( $sender_para:ty, $sender_xcm_config:ty, vec![$( $receiver_para:ty ),+], ($assets:expr, $amount:expr) ) => { + $crate::paste::paste! { + // init Origin variables + let sender = [<$sender_para Sender>]::get(); + let mut para_sender_balance_before = + <$sender_para as $crate::Chain>::account_data_of(sender.clone()).free; + let origin = <$sender_para as $crate::Chain>::RuntimeOrigin::signed(sender.clone()); + let fee_asset_item = 0; + let weight_limit = $crate::WeightLimit::Unlimited; + + $( + { + // init Destination variables + let receiver = [<$receiver_para Receiver>]::get(); + let para_receiver_balance_before = + <$receiver_para as $crate::Chain>::account_data_of(receiver.clone()).free; + let para_destination = + <$sender_para>::sibling_location_of(<$receiver_para>::para_id()); + let beneficiary: MultiLocation = + $crate::AccountId32 { network: None, id: receiver.clone().into() }.into(); + + // Send XCM message from Origin Parachain + // We are only testing the limited teleport version, which should be ok since success will + // depend only on a proper `XcmConfig` at destination. + <$sender_para>::execute_with(|| { + assert_ok!(<$sender_para as [<$sender_para Pallet>]>::PolkadotXcm::limited_teleport_assets( + origin.clone(), + bx!(para_destination.clone().into()), + bx!(beneficiary.clone().into()), + bx!($assets.clone().into()), + fee_asset_item, + weight_limit.clone(), + )); + + type RuntimeEvent = <$sender_para as $crate::Chain>::RuntimeEvent; + + assert_expected_events!( + $sender_para, + vec![ + RuntimeEvent::PolkadotXcm( + $crate::pallet_xcm::Event::Attempted { outcome: Outcome::Complete { .. } } + ) => {}, + RuntimeEvent::XcmpQueue( + $crate::cumulus_pallet_xcmp_queue::Event::XcmpMessageSent { .. } + ) => {}, + RuntimeEvent::Balances( + $crate::pallet_balances::Event::Burned { who: sender, amount } + ) => {}, + ] + ); + }); + + // Receive XCM message in Destination Parachain + <$receiver_para>::execute_with(|| { + type RuntimeEvent = <$receiver_para as $crate::Chain>::RuntimeEvent; + + assert_expected_events!( + $receiver_para, + vec![ + RuntimeEvent::Balances( + $crate::pallet_balances::Event::Minted { who: receiver, .. } + ) => {}, + RuntimeEvent::MessageQueue( + $crate::pallet_message_queue::Event::Processed { success: true, .. } + ) => {}, + ] + ); + }); + + // Check if balances are updated accordingly in Origin and Destination Parachains + let para_sender_balance_after = + <$sender_para as $crate::Chain>::account_data_of(sender.clone()).free; + let para_receiver_balance_after = + <$receiver_para as $crate::Chain>::account_data_of(receiver.clone()).free; + let delivery_fees = <$sender_para>::execute_with(|| { + $crate::asset_test_utils::xcm_helpers::transfer_assets_delivery_fees::< + <$sender_xcm_config as xcm_executor::Config>::XcmSender, + >($assets.clone(), fee_asset_item, weight_limit.clone(), beneficiary, para_destination) + }); + + assert_eq!(para_sender_balance_before - $amount - delivery_fees, para_sender_balance_after); + assert!(para_receiver_balance_after > para_receiver_balance_before); + + // Update sender balance + para_sender_balance_before = <$sender_para as $crate::Chain>::account_data_of(sender.clone()).free; + } + )+ + } + }; +} diff --git a/integration-tests/emulated/networks/kusama-polkadot-system/Cargo.toml b/integration-tests/emulated/networks/kusama-polkadot-system/Cargo.toml new file mode 100644 index 0000000000..004ba93c2b --- /dev/null +++ b/integration-tests/emulated/networks/kusama-polkadot-system/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "kusama-polkadot-system-emulated-network" +version = "0.1.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Kusama<>Polkadot emulated bridged network" +publish = false + +[dependencies] + +# Cumulus +emulated-integration-tests-common = { version = "3.0.0" } + +# Runtimes +asset-hub-kusama-emulated-chain = { path = "../../chains/parachains/assets/asset-hub-kusama" } +asset-hub-polkadot-emulated-chain = { path = "../../chains/parachains/assets/asset-hub-polkadot" } +bridge-hub-kusama-emulated-chain = { path = "../../chains/parachains/bridges/bridge-hub-kusama" } +bridge-hub-polkadot-emulated-chain = { path = "../../chains/parachains/bridges/bridge-hub-polkadot" } +kusama-emulated-chain = { path = "../../chains/relays/kusama" } +penpal-emulated-chain = { path = "../../chains/parachains/testing/penpal" } +polkadot-emulated-chain = { path = "../../chains/relays/polkadot" } diff --git a/integration-tests/emulated/networks/kusama-polkadot-system/src/lib.rs b/integration-tests/emulated/networks/kusama-polkadot-system/src/lib.rs new file mode 100644 index 0000000000..dbdb453718 --- /dev/null +++ b/integration-tests/emulated/networks/kusama-polkadot-system/src/lib.rs @@ -0,0 +1,100 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub use asset_hub_kusama_emulated_chain; +pub use asset_hub_polkadot_emulated_chain; +pub use bridge_hub_kusama_emulated_chain; +pub use bridge_hub_polkadot_emulated_chain; +pub use kusama_emulated_chain; +pub use penpal_emulated_chain; +pub use polkadot_emulated_chain; + +use asset_hub_kusama_emulated_chain::AssetHubKusama; +use asset_hub_polkadot_emulated_chain::AssetHubPolkadot; +use bridge_hub_kusama_emulated_chain::BridgeHubKusama; +use bridge_hub_polkadot_emulated_chain::BridgeHubPolkadot; +use kusama_emulated_chain::Kusama; +use penpal_emulated_chain::PenpalA; +use polkadot_emulated_chain::Polkadot; + +// Cumulus +use emulated_integration_tests_common::{ + accounts::{ALICE, BOB}, + impls::{BridgeHubMessageHandler, BridgeMessagesInstance1}, + xcm_emulator::{ + decl_test_bridges, decl_test_networks, decl_test_sender_receiver_accounts_parameter_types, + Chain, + }, +}; + +decl_test_networks! { + pub struct KusamaMockNet { + relay_chain = Kusama, + parachains = vec![ + AssetHubKusama, + BridgeHubKusama, + PenpalA, + ], + bridge = KusamaPolkadotMockBridge + + }, + pub struct PolkadotMockNet { + relay_chain = Polkadot, + parachains = vec![ + AssetHubPolkadot, + BridgeHubPolkadot, + ], + bridge = PolkadotKusamaMockBridge + }, +} + +decl_test_bridges! { + pub struct KusamaPolkadotMockBridge { + source = BridgeHubKusamaPara, + target = BridgeHubPolkadotPara, + handler = KusamaPolkadotMessageHandler + }, + pub struct PolkadotKusamaMockBridge { + source = BridgeHubPolkadotPara, + target = BridgeHubKusamaPara, + handler = PolkadotKusamaMessageHandler + } +} + +type BridgeHubKusamaRuntime = ::Runtime; +type BridgeHubPolkadotRuntime = ::Runtime; + +pub type KusamaPolkadotMessageHandler = BridgeHubMessageHandler< + BridgeHubKusamaRuntime, + BridgeMessagesInstance1, + BridgeHubPolkadotRuntime, + BridgeMessagesInstance1, +>; +pub type PolkadotKusamaMessageHandler = BridgeHubMessageHandler< + BridgeHubPolkadotRuntime, + BridgeMessagesInstance1, + BridgeHubKusamaRuntime, + BridgeMessagesInstance1, +>; + +decl_test_sender_receiver_accounts_parameter_types! { + KusamaRelay { sender: ALICE, receiver: BOB }, + AssetHubKusamaPara { sender: ALICE, receiver: BOB }, + BridgeHubKusamaPara { sender: ALICE, receiver: BOB }, + PolkadotRelay { sender: ALICE, receiver: BOB }, + AssetHubPolkadotPara { sender: ALICE, receiver: BOB }, + BridgeHubPolkadotPara { sender: ALICE, receiver: BOB }, + PenpalAPara { sender: ALICE, receiver: BOB } +} diff --git a/integration-tests/emulated/networks/kusama-system/Cargo.toml b/integration-tests/emulated/networks/kusama-system/Cargo.toml new file mode 100644 index 0000000000..e575d21a5d --- /dev/null +++ b/integration-tests/emulated/networks/kusama-system/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "kusama-system-emulated-network" +version = "0.1.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Kusama System emulated network" +publish = false + +[dependencies] + +# Cumulus +emulated-integration-tests-common = { version = "3.0.0" } + +# Runtimes +asset-hub-kusama-emulated-chain = { path = "../../chains/parachains/assets/asset-hub-kusama" } +bridge-hub-kusama-emulated-chain = { path = "../../chains/parachains/bridges/bridge-hub-kusama" } +kusama-emulated-chain = { path = "../../chains/relays/kusama" } +penpal-emulated-chain = { path = "../../chains/parachains/testing/penpal" } diff --git a/integration-tests/emulated/networks/kusama-system/src/lib.rs b/integration-tests/emulated/networks/kusama-system/src/lib.rs new file mode 100644 index 0000000000..b6a3cdc3e5 --- /dev/null +++ b/integration-tests/emulated/networks/kusama-system/src/lib.rs @@ -0,0 +1,51 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub use asset_hub_kusama_emulated_chain; +pub use bridge_hub_kusama_emulated_chain; +pub use kusama_emulated_chain; +pub use penpal_emulated_chain; + +use asset_hub_kusama_emulated_chain::AssetHubKusama; +use bridge_hub_kusama_emulated_chain::BridgeHubKusama; +use kusama_emulated_chain::Kusama; +use penpal_emulated_chain::{PenpalA, PenpalB}; + +// Cumulus +use emulated_integration_tests_common::{ + accounts::{ALICE, BOB}, + xcm_emulator::{decl_test_networks, decl_test_sender_receiver_accounts_parameter_types}, +}; + +decl_test_networks! { + pub struct KusamaMockNet { + relay_chain = Kusama, + parachains = vec![ + AssetHubKusama, + BridgeHubKusama, + PenpalA, + PenpalB, + ], + bridge = () + }, +} + +decl_test_sender_receiver_accounts_parameter_types! { + KusamaRelay { sender: ALICE, receiver: BOB }, + AssetHubKusamaPara { sender: ALICE, receiver: BOB }, + BridgeHubKusamaPara { sender: ALICE, receiver: BOB }, + PenpalAPara { sender: ALICE, receiver: BOB }, + PenpalBPara { sender: ALICE, receiver: BOB } +} diff --git a/integration-tests/emulated/networks/polkadot-system/Cargo.toml b/integration-tests/emulated/networks/polkadot-system/Cargo.toml new file mode 100644 index 0000000000..ddc400b973 --- /dev/null +++ b/integration-tests/emulated/networks/polkadot-system/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "polkadot-system-emulated-network" +version = "0.1.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Polkadot System emulated network" +publish = false + +[dependencies] + +# Cumulus +emulated-integration-tests-common = { version = "3.0.0" } + +# Runtimes +asset-hub-polkadot-emulated-chain = { path = "../../chains/parachains/assets/asset-hub-polkadot" } +bridge-hub-polkadot-emulated-chain = { path = "../../chains/parachains/bridges/bridge-hub-polkadot" } +collectives-polkadot-emulated-chain = { path = "../../chains/parachains/collectives/collectives-polkadot" } +penpal-emulated-chain = { path = "../../chains/parachains/testing/penpal" } +polkadot-emulated-chain = { path = "../../chains/relays/polkadot" } diff --git a/integration-tests/emulated/networks/polkadot-system/src/lib.rs b/integration-tests/emulated/networks/polkadot-system/src/lib.rs new file mode 100644 index 0000000000..bed1b549e2 --- /dev/null +++ b/integration-tests/emulated/networks/polkadot-system/src/lib.rs @@ -0,0 +1,55 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub use asset_hub_polkadot_emulated_chain; +pub use bridge_hub_polkadot_emulated_chain; +pub use collectives_polkadot_emulated_chain; +pub use penpal_emulated_chain; +pub use polkadot_emulated_chain; + +use asset_hub_polkadot_emulated_chain::AssetHubPolkadot; +use bridge_hub_polkadot_emulated_chain::BridgeHubPolkadot; +use collectives_polkadot_emulated_chain::CollectivesPolkadot; +use penpal_emulated_chain::{PenpalA, PenpalB}; +use polkadot_emulated_chain::Polkadot; + +// Cumulus +use emulated_integration_tests_common::{ + accounts::{ALICE, BOB}, + xcm_emulator::{decl_test_networks, decl_test_sender_receiver_accounts_parameter_types}, +}; + +decl_test_networks! { + pub struct PolkadotMockNet { + relay_chain = Polkadot, + parachains = vec![ + AssetHubPolkadot, + BridgeHubPolkadot, + CollectivesPolkadot, + PenpalA, + PenpalB, + ], + bridge = () + }, +} + +decl_test_sender_receiver_accounts_parameter_types! { + PolkadotRelay { sender: ALICE, receiver: BOB }, + AssetHubPolkadotPara { sender: ALICE, receiver: BOB }, + BridgeHubPolkadotPara { sender: ALICE, receiver: BOB }, + CollectivesPolkadotPara { sender: ALICE, receiver: BOB }, + PenpalAPara { sender: ALICE, receiver: BOB }, + PenpalBPara { sender: ALICE, receiver: BOB } +} diff --git a/integration-tests/emulated/tests/assets/asset-hub-kusama/Cargo.toml b/integration-tests/emulated/tests/assets/asset-hub-kusama/Cargo.toml new file mode 100644 index 0000000000..72d1866a33 --- /dev/null +++ b/integration-tests/emulated/tests/assets/asset-hub-kusama/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "asset-hub-kusama-integration-tests" +version = "0.1.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Asset Hub Kusama runtime integration tests with xcm-emulator" +publish = false + +[dependencies] +codec = { package = "parity-scale-codec", version = "3.4.0" } +assert_matches = "1.5.0" + +# Substrate +sp-runtime = { version = "31.0.1" } +frame-support = { version = "28.0.0" } +pallet-balances = { version = "28.0.0" } +pallet-assets = { version = "29.0.0" } +pallet-asset-conversion = { version = "10.0.0" } +pallet-message-queue = { version = "31.0.0" } + +# Polkadot +xcm = { package = "staging-xcm", version = "7.0.0" } +pallet-xcm = { version = "7.0.0" } +xcm-executor = { package = "staging-xcm-executor", version = "7.0.3" } + +# Cumulus +asset-test-utils = { version = "7.0.1" } +emulated-integration-tests-common = { version = "3.0.0" } +parachains-common = { version = "7.0.0" } + +# Local +asset-hub-kusama-runtime = { path = "../../../../../system-parachains/asset-hubs/asset-hub-kusama" } +integration-tests-helpers = { path = "../../../helpers" } +kusama-runtime = { package = "staging-kusama-runtime", path = "../../../../../relay/kusama" } +kusama-system-emulated-network = { path = "../../../networks/kusama-system" } +system-parachains-constants = { path = "../../../../../system-parachains/constants" } diff --git a/integration-tests/emulated/tests/assets/asset-hub-kusama/src/lib.rs b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/lib.rs new file mode 100644 index 0000000000..b028b4bd53 --- /dev/null +++ b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/lib.rs @@ -0,0 +1,70 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub use codec::Encode; + +// Substrate +pub use frame_support::{ + assert_err, assert_ok, + pallet_prelude::Weight, + sp_runtime::{AccountId32, DispatchError, DispatchResult}, + traits::fungibles::Inspect, +}; + +// Polkadot +pub use xcm::{ + prelude::{AccountId32 as AccountId32Junction, *}, + v3::{Error, NetworkId::Kusama as KusamaId}, +}; + +// Cumulus +pub use asset_test_utils::xcm_helpers; +pub use emulated_integration_tests_common::{ + xcm_emulator::{ + assert_expected_events, bx, helpers::weight_within_threshold, Chain, Parachain as Para, + RelayChain as Relay, Test, TestArgs, TestContext, TestExt, + }, + xcm_helpers::{xcm_transact_paid_execution, xcm_transact_unpaid_execution}, + PROOF_SIZE_THRESHOLD, REF_TIME_THRESHOLD, XCM_V3, +}; +pub use integration_tests_helpers::test_parachain_is_trusted_teleporter; +pub use kusama_system_emulated_network::{ + asset_hub_kusama_emulated_chain::{ + genesis::ED as ASSET_HUB_KUSAMA_ED, AssetHubKusamaParaPallet as AssetHubKusamaPallet, + }, + kusama_emulated_chain::{genesis::ED as KUSAMA_ED, KusamaRelayPallet as KusamaPallet}, + penpal_emulated_chain::PenpalAParaPallet as PenpalAPallet, + AssetHubKusamaPara as AssetHubKusama, AssetHubKusamaParaReceiver as AssetHubKusamaReceiver, + AssetHubKusamaParaSender as AssetHubKusamaSender, BridgeHubKusamaPara as BridgeHubKusama, + BridgeHubKusamaParaReceiver as BridgeHubKusamaReceiver, KusamaRelay as Kusama, + KusamaRelayReceiver as KusamaReceiver, KusamaRelaySender as KusamaSender, + PenpalAPara as PenpalA, PenpalAParaReceiver as PenpalAReceiver, + PenpalAParaSender as PenpalASender, +}; +pub use parachains_common::{AccountId, Balance}; + +pub const ASSET_ID: u32 = 1; +pub const ASSET_MIN_BALANCE: u128 = 1000; +// `Assets` pallet index +pub const ASSETS_PALLET_ID: u8 = 50; + +pub type RelayToSystemParaTest = Test; +pub type RelayToParaTest = Test; +pub type SystemParaToRelayTest = Test; +pub type SystemParaToParaTest = Test; +pub type ParaToSystemParaTest = Test; + +#[cfg(test)] +mod tests; diff --git a/integration-tests/emulated/assets/asset-hub-kusama/src/tests/mod.rs b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/mod.rs similarity index 89% rename from integration-tests/emulated/assets/asset-hub-kusama/src/tests/mod.rs rename to integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/mod.rs index c51ed79e71..4b7498c1c6 100644 --- a/integration-tests/emulated/assets/asset-hub-kusama/src/tests/mod.rs +++ b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/mod.rs @@ -20,8 +20,8 @@ mod swap; mod teleport; use crate::*; -integration_tests_common::include_penpal_create_foreign_asset_on_asset_hub!( - PenpalKusamaA, +emulated_integration_tests_common::include_penpal_create_foreign_asset_on_asset_hub!( + PenpalA, AssetHubKusama, KUSAMA_ED, system_parachains_constants::kusama::fee::WeightToFee diff --git a/integration-tests/emulated/assets/asset-hub-kusama/src/tests/reserve_transfer.rs b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/reserve_transfer.rs similarity index 82% rename from integration-tests/emulated/assets/asset-hub-kusama/src/tests/reserve_transfer.rs rename to integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/reserve_transfer.rs index 8dabfba5b5..3e2b92c20e 100644 --- a/integration-tests/emulated/assets/asset-hub-kusama/src/tests/reserve_transfer.rs +++ b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/reserve_transfer.rs @@ -16,6 +16,7 @@ use crate::*; use asset_hub_kusama_runtime::xcm_config::XcmConfig as AssetHubKusamaXcmConfig; use kusama_runtime::xcm_config::XcmConfig as KusamaXcmConfig; +use kusama_system_emulated_network::penpal_emulated_chain::XcmConfig as PenpalKusamaXcmConfig; fn relay_to_para_sender_assertions(t: RelayToParaTest) { type RuntimeEvent = ::RuntimeEvent; @@ -61,9 +62,9 @@ fn system_para_to_para_sender_assertions(t: SystemParaToParaTest) { } fn para_receiver_assertions(_: Test) { - type RuntimeEvent = ::RuntimeEvent; + type RuntimeEvent = ::RuntimeEvent; assert_expected_events!( - PenpalKusamaA, + PenpalA, vec![ RuntimeEvent::Balances(pallet_balances::Event::Deposit { .. }) => {}, RuntimeEvent::MessageQueue( @@ -74,13 +75,10 @@ fn para_receiver_assertions(_: Test) { } fn para_to_system_para_sender_assertions(t: ParaToSystemParaTest) { - type RuntimeEvent = ::RuntimeEvent; - PenpalKusamaA::assert_xcm_pallet_attempted_complete(Some(Weight::from_parts( - 864_610_000, - 8_799, - ))); + type RuntimeEvent = ::RuntimeEvent; + PenpalA::assert_xcm_pallet_attempted_complete(Some(Weight::from_parts(864_610_000, 8_799))); assert_expected_events!( - PenpalKusamaA, + PenpalA, vec![ // Amount to reserve transfer is transferred to Parachain's Sovereign account RuntimeEvent::Balances( @@ -95,20 +93,20 @@ fn para_to_system_para_sender_assertions(t: ParaToSystemParaTest) { fn para_to_system_para_receiver_assertions(t: ParaToSystemParaTest) { type RuntimeEvent = ::RuntimeEvent; - let sov_penpal_on_ahr = AssetHubKusama::sovereign_account_id_of( - AssetHubKusama::sibling_location_of(PenpalKusamaA::para_id()), + let sov_penpal_on_ahk = AssetHubKusama::sovereign_account_id_of( + AssetHubKusama::sibling_location_of(PenpalA::para_id()), ); assert_expected_events!( AssetHubKusama, vec![ // Amount to reserve transfer is withdrawn from Parachain's Sovereign account RuntimeEvent::Balances( - pallet_balances::Event::Withdraw { who, amount } + pallet_balances::Event::Burned { who, amount } ) => { - who: *who == sov_penpal_on_ahr.clone().into(), + who: *who == sov_penpal_on_ahk.clone().into(), amount: *amount == t.args.amount, }, - RuntimeEvent::Balances(pallet_balances::Event::Deposit { .. }) => {}, + RuntimeEvent::Balances(pallet_balances::Event::Minted { .. }) => {}, RuntimeEvent::MessageQueue( pallet_message_queue::Event::Processed { success: true, .. } ) => {}, @@ -141,9 +139,9 @@ fn system_para_to_para_assets_sender_assertions(t: SystemParaToParaTest) { } fn system_para_to_para_assets_receiver_assertions(_: Test) { - type RuntimeEvent = ::RuntimeEvent; + type RuntimeEvent = ::RuntimeEvent; assert_expected_events!( - PenpalKusamaA, + PenpalA, vec![ RuntimeEvent::Balances(pallet_balances::Event::Deposit { .. }) => {}, RuntimeEvent::Assets(pallet_assets::Event::Issued { .. }) => {}, @@ -177,7 +175,7 @@ fn system_para_to_para_reserve_transfer_assets(t: SystemParaToParaTest) -> Dispa } fn para_to_system_para_reserve_transfer_assets(t: ParaToSystemParaTest) -> DispatchResult { - ::PolkadotXcm::limited_reserve_transfer_assets( + ::PolkadotXcm::limited_reserve_transfer_assets( t.signed_origin, bx!(t.args.dest.into()), bx!(t.args.beneficiary.into()), @@ -260,14 +258,14 @@ fn reserve_transfer_native_asset_from_system_para_to_relay_fails() { #[test] fn reserve_transfer_native_asset_from_relay_to_para() { // Init values for Relay - let destination = Kusama::child_location_of(PenpalKusamaA::para_id()); - let beneficiary_id = PenpalKusamaAReceiver::get(); + let destination = Kusama::child_location_of(PenpalA::para_id()); + let beneficiary_id = PenpalAReceiver::get(); let amount_to_send: Balance = KUSAMA_ED * 1000; let test_args = TestContext { sender: KusamaSender::get(), - receiver: PenpalKusamaAReceiver::get(), - args: relay_test_args(destination, beneficiary_id, amount_to_send), + receiver: PenpalAReceiver::get(), + args: TestArgs::new_relay(destination, beneficiary_id, amount_to_send), }; let mut test = RelayToParaTest::new(test_args); @@ -276,7 +274,7 @@ fn reserve_transfer_native_asset_from_relay_to_para() { let receiver_balance_before = test.receiver.balance; test.set_assertion::(relay_to_para_sender_assertions); - test.set_assertion::(para_receiver_assertions); + test.set_assertion::(para_receiver_assertions); test.set_dispatchable::(relay_to_para_reserve_transfer_assets); test.assert(); @@ -303,15 +301,15 @@ fn reserve_transfer_native_asset_from_relay_to_para() { #[test] fn reserve_transfer_native_asset_from_system_para_to_para() { // Init values for System Parachain - let destination = AssetHubKusama::sibling_location_of(PenpalKusamaA::para_id()); - let beneficiary_id = PenpalKusamaAReceiver::get(); + let destination = AssetHubKusama::sibling_location_of(PenpalA::para_id()); + let beneficiary_id = PenpalAReceiver::get(); let amount_to_send: Balance = ASSET_HUB_KUSAMA_ED * 1000; let assets = (Parent, amount_to_send).into(); let test_args = TestContext { sender: AssetHubKusamaSender::get(), - receiver: PenpalKusamaAReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + receiver: PenpalAReceiver::get(), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = SystemParaToParaTest::new(test_args); @@ -320,7 +318,7 @@ fn reserve_transfer_native_asset_from_system_para_to_para() { let receiver_balance_before = test.receiver.balance; test.set_assertion::(system_para_to_para_sender_assertions); - test.set_assertion::(para_receiver_assertions); + test.set_assertion::(para_receiver_assertions); test.set_dispatchable::(system_para_to_para_reserve_transfer_assets); test.assert(); @@ -347,15 +345,15 @@ fn reserve_transfer_native_asset_from_system_para_to_para() { #[test] fn reserve_transfer_native_asset_from_para_to_system_para() { // Init values for Penpal Parachain - let destination = PenpalKusamaA::sibling_location_of(AssetHubKusama::para_id()); + let destination = PenpalA::sibling_location_of(AssetHubKusama::para_id()); let beneficiary_id = AssetHubKusamaReceiver::get(); let amount_to_send: Balance = ASSET_HUB_KUSAMA_ED * 1000; let assets = (Parent, amount_to_send).into(); let test_args = TestContext { - sender: PenpalKusamaASender::get(), + sender: PenpalASender::get(), receiver: AssetHubKusamaReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = ParaToSystemParaTest::new(test_args); @@ -363,24 +361,23 @@ fn reserve_transfer_native_asset_from_para_to_system_para() { let sender_balance_before = test.sender.balance; let receiver_balance_before = test.receiver.balance; - let penpal_location_as_seen_by_ahr = - AssetHubKusama::sibling_location_of(PenpalKusamaA::para_id()); - let sov_penpal_on_ahr = AssetHubKusama::sovereign_account_id_of(penpal_location_as_seen_by_ahr); + let penpal_location_as_seen_by_ahk = AssetHubKusama::sibling_location_of(PenpalA::para_id()); + let sov_penpal_on_ahk = AssetHubKusama::sovereign_account_id_of(penpal_location_as_seen_by_ahk); - // fund the Penpal's SA on AHR with the native tokens held in reserve - AssetHubKusama::fund_accounts(vec![(sov_penpal_on_ahr.into(), amount_to_send * 2)]); + // fund the Penpal's SA on AHK with the native tokens held in reserve + AssetHubKusama::fund_accounts(vec![(sov_penpal_on_ahk.into(), amount_to_send * 2)]); - test.set_assertion::(para_to_system_para_sender_assertions); + test.set_assertion::(para_to_system_para_sender_assertions); test.set_assertion::(para_to_system_para_receiver_assertions); - test.set_dispatchable::(para_to_system_para_reserve_transfer_assets); + test.set_dispatchable::(para_to_system_para_reserve_transfer_assets); test.assert(); let sender_balance_after = test.sender.balance; let receiver_balance_after = test.receiver.balance; - let delivery_fees = PenpalKusamaA::execute_with(|| { + let delivery_fees = PenpalA::execute_with(|| { xcm_helpers::transfer_assets_delivery_fees::< - ::XcmSender, + ::XcmSender, >(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest) }); @@ -398,7 +395,7 @@ fn reserve_transfer_native_asset_from_para_to_system_para() { /// work #[test] fn reserve_transfer_assets_from_system_para_to_para() { - // Force create asset on AssetHubKusama and PenpalKusamaA from Relay Chain + // Force create asset on AssetHubKusama and PenpalA from Relay Chain AssetHubKusama::force_create_and_mint_asset( ASSET_ID, ASSET_MIN_BALANCE, @@ -407,18 +404,18 @@ fn reserve_transfer_assets_from_system_para_to_para() { Some(Weight::from_parts(1_019_445_000, 200_000)), ASSET_MIN_BALANCE * 1_000_000, ); - PenpalKusamaA::force_create_and_mint_asset( + PenpalA::force_create_and_mint_asset( ASSET_ID, ASSET_MIN_BALANCE, false, - PenpalKusamaASender::get(), + PenpalASender::get(), None, 0, ); // Init values for System Parachain - let destination = AssetHubKusama::sibling_location_of(PenpalKusamaA::para_id()); - let beneficiary_id = PenpalKusamaAReceiver::get(); + let destination = AssetHubKusama::sibling_location_of(PenpalA::para_id()); + let beneficiary_id = PenpalAReceiver::get(); let fee_amount_to_send = ASSET_HUB_KUSAMA_ED * 1000; let asset_amount_to_send = ASSET_MIN_BALANCE * 1000; let assets: MultiAssets = vec![ @@ -435,8 +432,8 @@ fn reserve_transfer_assets_from_system_para_to_para() { let para_test_args = TestContext { sender: AssetHubKusamaSender::get(), - receiver: PenpalKusamaAReceiver::get(), - args: para_test_args( + receiver: PenpalAReceiver::get(), + args: TestArgs::new_para( destination, beneficiary_id, asset_amount_to_send, @@ -448,10 +445,10 @@ fn reserve_transfer_assets_from_system_para_to_para() { let mut test = SystemParaToParaTest::new(para_test_args); - // Create SA-of-Penpal-on-AHR with ED. - let penpal_location = AssetHubKusama::sibling_location_of(PenpalKusamaA::para_id()); - let sov_penpal_on_ahr = AssetHubKusama::sovereign_account_id_of(penpal_location); - AssetHubKusama::fund_accounts(vec![(sov_penpal_on_ahr.into(), KUSAMA_ED)]); + // Create SA-of-Penpal-on-AHK with ED. + let penpal_location = AssetHubKusama::sibling_location_of(PenpalA::para_id()); + let sov_penpal_on_ahk = AssetHubKusama::sovereign_account_id_of(penpal_location); + AssetHubKusama::fund_accounts(vec![(sov_penpal_on_ahk.into(), KUSAMA_ED)]); let sender_balance_before = test.sender.balance; let receiver_balance_before = test.receiver.balance; @@ -460,13 +457,13 @@ fn reserve_transfer_assets_from_system_para_to_para() { type Assets = ::Assets; >::balance(ASSET_ID, &AssetHubKusamaSender::get()) }); - let receiver_assets_before = PenpalKusamaA::execute_with(|| { - type Assets = ::Assets; - >::balance(ASSET_ID, &PenpalKusamaAReceiver::get()) + let receiver_assets_before = PenpalA::execute_with(|| { + type Assets = ::Assets; + >::balance(ASSET_ID, &PenpalAReceiver::get()) }); test.set_assertion::(system_para_to_para_assets_sender_assertions); - test.set_assertion::(system_para_to_para_assets_receiver_assertions); + test.set_assertion::(system_para_to_para_assets_receiver_assertions); test.set_dispatchable::(system_para_to_para_reserve_transfer_assets); test.assert(); @@ -486,9 +483,9 @@ fn reserve_transfer_assets_from_system_para_to_para() { type Assets = ::Assets; >::balance(ASSET_ID, &AssetHubKusamaSender::get()) }); - let receiver_assets_after = PenpalKusamaA::execute_with(|| { - type Assets = ::Assets; - >::balance(ASSET_ID, &PenpalKusamaAReceiver::get()) + let receiver_assets_after = PenpalA::execute_with(|| { + type Assets = ::Assets; + >::balance(ASSET_ID, &PenpalAReceiver::get()) }); // Sender's balance is reduced by exact amount diff --git a/integration-tests/emulated/assets/asset-hub-kusama/src/tests/send.rs b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/send.rs similarity index 88% rename from integration-tests/emulated/assets/asset-hub-kusama/src/tests/send.rs rename to integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/send.rs index 1b9a79f8c2..6dfa40d261 100644 --- a/integration-tests/emulated/assets/asset-hub-kusama/src/tests/send.rs +++ b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/send.rs @@ -33,7 +33,7 @@ fn send_transact_as_superuser_from_relay_to_system_para_works() { #[test] fn send_xcm_from_para_to_system_para_paying_fee_with_assets_works() { let para_sovereign_account = AssetHubKusama::sovereign_account_id_of( - AssetHubKusama::sibling_location_of(PenpalKusamaA::para_id()), + AssetHubKusama::sibling_location_of(PenpalA::para_id()), ); // Force create and mint assets for Parachain's sovereign account @@ -60,9 +60,8 @@ fn send_xcm_from_para_to_system_para_paying_fee_with_assets_works() { let native_asset = (X2(PalletInstance(ASSETS_PALLET_ID), GeneralIndex(ASSET_ID.into())), fee_amount).into(); - let root_origin = ::RuntimeOrigin::root(); - let system_para_destination = - PenpalKusamaA::sibling_location_of(AssetHubKusama::para_id()).into(); + let root_origin = ::RuntimeOrigin::root(); + let system_para_destination = PenpalA::sibling_location_of(AssetHubKusama::para_id()).into(); let xcm = xcm_transact_paid_execution( call, origin_kind, @@ -70,14 +69,14 @@ fn send_xcm_from_para_to_system_para_paying_fee_with_assets_works() { para_sovereign_account.clone(), ); - PenpalKusamaA::execute_with(|| { - assert_ok!(::PolkadotXcm::send( + PenpalA::execute_with(|| { + assert_ok!(::PolkadotXcm::send( root_origin, bx!(system_para_destination), bx!(xcm), )); - PenpalKusamaA::assert_xcm_pallet_sent(); + PenpalA::assert_xcm_pallet_sent(); }); AssetHubKusama::execute_with(|| { diff --git a/integration-tests/emulated/assets/asset-hub-kusama/src/tests/set_xcm_versions.rs b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/set_xcm_versions.rs similarity index 100% rename from integration-tests/emulated/assets/asset-hub-kusama/src/tests/set_xcm_versions.rs rename to integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/set_xcm_versions.rs diff --git a/integration-tests/emulated/assets/asset-hub-kusama/src/tests/swap.rs b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/swap.rs similarity index 81% rename from integration-tests/emulated/assets/asset-hub-kusama/src/tests/swap.rs rename to integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/swap.rs index 02aa5259a2..d9f885e5f6 100644 --- a/integration-tests/emulated/assets/asset-hub-kusama/src/tests/swap.rs +++ b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/swap.rs @@ -14,16 +14,17 @@ // limitations under the License. use crate::*; -use frame_support::BoundedVec; +use kusama_system_emulated_network::penpal_emulated_chain::LocalTeleportableToAssetHub as PenpalLocalTeleportableToAssetHub; use sp_runtime::ModuleError; +use system_parachains_constants::kusama::currency::SYSTEM_PARA_EXISTENTIAL_DEPOSIT; #[test] fn swap_locally_on_chain_using_local_assets() { - let asset_native = Box::new(asset_hub_kusama_runtime::xcm_config::KsmLocation::get()); - let asset_one = Box::new(MultiLocation { + let asset_native = asset_hub_kusama_runtime::xcm_config::KsmLocation::get(); + let asset_one = MultiLocation { parents: 0, interior: X2(PalletInstance(ASSETS_PALLET_ID), GeneralIndex(ASSET_ID.into())), - }); + }; AssetHubKusama::execute_with(|| { type RuntimeEvent = ::RuntimeEvent; @@ -45,8 +46,8 @@ fn swap_locally_on_chain_using_local_assets() { assert_ok!(::AssetConversion::create_pool( ::RuntimeOrigin::signed(AssetHubKusamaSender::get()), - asset_native.clone(), - asset_one.clone(), + Box::new(asset_native), + Box::new(asset_one), )); assert_expected_events!( @@ -58,8 +59,8 @@ fn swap_locally_on_chain_using_local_assets() { assert_ok!(::AssetConversion::add_liquidity( ::RuntimeOrigin::signed(AssetHubKusamaSender::get()), - asset_native.clone(), - asset_one.clone(), + Box::new(asset_native), + Box::new(asset_one), 1_000_000_000_000, 2_000_000_000_000, 0, @@ -74,7 +75,7 @@ fn swap_locally_on_chain_using_local_assets() { ] ); - let path = BoundedVec::<_, _>::truncate_from(vec![asset_native.clone(), asset_one.clone()]); + let path = vec![Box::new(asset_native), Box::new(asset_one)]; assert_ok!( ::AssetConversion::swap_exact_tokens_for_tokens( @@ -99,9 +100,10 @@ fn swap_locally_on_chain_using_local_assets() { assert_ok!(::AssetConversion::remove_liquidity( ::RuntimeOrigin::signed(AssetHubKusamaSender::get()), - asset_native, - asset_one, - 1414213562273 - ASSET_HUB_KUSAMA_ED * 2, // all but the 2 EDs can't be retrieved. + Box::new(asset_native), + Box::new(asset_one), + 1414213562273 - SYSTEM_PARA_EXISTENTIAL_DEPOSIT * 2, /* all but the 2 EDs can't be + * retrieved. */ 0, 0, AssetHubKusamaSender::get().into(), @@ -111,16 +113,16 @@ fn swap_locally_on_chain_using_local_assets() { #[test] fn swap_locally_on_chain_using_foreign_assets() { - let asset_native = Box::new(asset_hub_kusama_runtime::xcm_config::KsmLocation::get()); - let ah_as_seen_by_penpal = PenpalKusamaA::sibling_location_of(AssetHubKusama::para_id()); + let asset_native = asset_hub_kusama_runtime::xcm_config::KsmLocation::get(); + let ah_as_seen_by_penpal = PenpalA::sibling_location_of(AssetHubKusama::para_id()); let asset_location_on_penpal = PenpalLocalTeleportableToAssetHub::get(); let asset_id_on_penpal = match asset_location_on_penpal.last() { Some(GeneralIndex(id)) => *id as u32, _ => unreachable!(), }; - let asset_owner_on_penpal = PenpalKusamaASender::get(); + let asset_owner_on_penpal = PenpalASender::get(); let foreign_asset_at_asset_hub_kusama = - MultiLocation { parents: 1, interior: X1(Parachain(PenpalKusamaA::para_id().into())) } + MultiLocation { parents: 1, interior: X1(Parachain(PenpalA::para_id().into())) } .appended_with(asset_location_on_penpal) .unwrap(); @@ -134,8 +136,8 @@ fn swap_locally_on_chain_using_foreign_assets() { ASSET_MIN_BALANCE * 1_000_000, ); - let penpal_as_seen_by_ah = AssetHubKusama::sibling_location_of(PenpalKusamaA::para_id()); - let sov_penpal_on_ahr = AssetHubKusama::sovereign_account_id_of(penpal_as_seen_by_ah); + let penpal_as_seen_by_ah = AssetHubKusama::sibling_location_of(PenpalA::para_id()); + let sov_penpal_on_ahk = AssetHubKusama::sovereign_account_id_of(penpal_as_seen_by_ah); AssetHubKusama::fund_accounts(vec![ (AssetHubKusamaSender::get().into(), 5_000_000 * KUSAMA_ED), /* An account to swap dot * for something else. */ @@ -150,9 +152,9 @@ fn swap_locally_on_chain_using_foreign_assets() { type RuntimeEvent = ::RuntimeEvent; // 3. Mint foreign asset (in reality this should be a teleport or some such) assert_ok!(::ForeignAssets::mint( - ::RuntimeOrigin::signed(sov_penpal_on_ahr.clone().into()), + ::RuntimeOrigin::signed(sov_penpal_on_ahk.clone().into()), foreign_asset_at_asset_hub_kusama, - sov_penpal_on_ahr.clone().into(), + sov_penpal_on_ahk.clone().into(), 3_000_000_000_000, )); @@ -163,12 +165,11 @@ fn swap_locally_on_chain_using_foreign_assets() { ] ); - let foreign_asset_at_asset_hub_kusama = Box::new(foreign_asset_at_asset_hub_kusama); // 4. Create pool: assert_ok!(::AssetConversion::create_pool( ::RuntimeOrigin::signed(AssetHubKusamaSender::get()), - asset_native.clone(), - foreign_asset_at_asset_hub_kusama.clone(), + Box::new(asset_native), + Box::new(foreign_asset_at_asset_hub_kusama), )); assert_expected_events!( @@ -180,14 +181,14 @@ fn swap_locally_on_chain_using_foreign_assets() { // 5. Add liquidity: assert_ok!(::AssetConversion::add_liquidity( - ::RuntimeOrigin::signed(sov_penpal_on_ahr.clone()), - asset_native.clone(), - foreign_asset_at_asset_hub_kusama.clone(), + ::RuntimeOrigin::signed(sov_penpal_on_ahk.clone()), + Box::new(asset_native), + Box::new(foreign_asset_at_asset_hub_kusama), 1_000_000_000_000, 2_000_000_000_000, 0, 0, - sov_penpal_on_ahr.clone().into() + sov_penpal_on_ahk.clone().into() )); assert_expected_events!( @@ -200,10 +201,7 @@ fn swap_locally_on_chain_using_foreign_assets() { ); // 6. Swap! - let path = BoundedVec::<_, _>::truncate_from(vec![ - asset_native.clone(), - foreign_asset_at_asset_hub_kusama.clone(), - ]); + let path = vec![Box::new(asset_native), Box::new(foreign_asset_at_asset_hub_kusama)]; assert_ok!( ::AssetConversion::swap_exact_tokens_for_tokens( @@ -228,20 +226,20 @@ fn swap_locally_on_chain_using_foreign_assets() { // 7. Remove liquidity assert_ok!(::AssetConversion::remove_liquidity( - ::RuntimeOrigin::signed(sov_penpal_on_ahr.clone()), - asset_native, - foreign_asset_at_asset_hub_kusama, + ::RuntimeOrigin::signed(sov_penpal_on_ahk.clone()), + Box::new(asset_native), + Box::new(foreign_asset_at_asset_hub_kusama), 1414213562273 - 2_000_000_000, // all but the 2 EDs can't be retrieved. 0, 0, - sov_penpal_on_ahr.clone().into(), + sov_penpal_on_ahk.clone().into(), )); }); } #[test] fn cannot_create_pool_from_pool_assets() { - let asset_native = Box::new(asset_hub_kusama_runtime::xcm_config::KsmLocation::get()); + let asset_native = asset_hub_kusama_runtime::xcm_config::KsmLocation::get(); let mut asset_one = asset_hub_kusama_runtime::xcm_config::PoolAssetsPalletLocation::get(); asset_one.append_with(GeneralIndex(ASSET_ID.into())).expect("pool assets"); @@ -266,10 +264,10 @@ fn cannot_create_pool_from_pool_assets() { assert_matches::assert_matches!( ::AssetConversion::create_pool( ::RuntimeOrigin::signed(AssetHubKusamaSender::get()), - asset_native.clone(), + Box::new(asset_native), Box::new(asset_one), ), - Err(DispatchError::Module(ModuleError{index: _, error: _, message})) => assert_eq!(message, Some("UnsupportedAsset")) + Err(DispatchError::Module(ModuleError{index: _, error: _, message})) => assert_eq!(message, Some("Unknown")) ); }); } diff --git a/integration-tests/emulated/assets/asset-hub-kusama/src/tests/teleport.rs b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/teleport.rs similarity index 88% rename from integration-tests/emulated/assets/asset-hub-kusama/src/tests/teleport.rs rename to integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/teleport.rs index fdd6ed9081..c298686016 100644 --- a/integration-tests/emulated/assets/asset-hub-kusama/src/tests/teleport.rs +++ b/integration-tests/emulated/tests/assets/asset-hub-kusama/src/tests/teleport.rs @@ -15,7 +15,9 @@ use crate::*; use asset_hub_kusama_runtime::xcm_config::XcmConfig as AssetHubKusamaXcmConfig; +use emulated_integration_tests_common::xcm_helpers::non_fee_asset; use kusama_runtime::xcm_config::XcmConfig as KusamaXcmConfig; +use kusama_system_emulated_network::penpal_emulated_chain::LocalTeleportableToAssetHub as PenpalLocalTeleportableToAssetHub; fn relay_origin_assertions(t: RelayToSystemParaTest) { type RuntimeEvent = ::RuntimeEvent; @@ -26,12 +28,12 @@ fn relay_origin_assertions(t: RelayToSystemParaTest) { Kusama, vec![ // Amount to teleport is withdrawn from Sender - RuntimeEvent::Balances(pallet_balances::Event::Withdraw { who, amount }) => { + RuntimeEvent::Balances(pallet_balances::Event::Burned { who, amount }) => { who: *who == t.sender.account_id, amount: *amount == t.args.amount, }, // Amount to teleport is deposited in Relay's `CheckAccount` - RuntimeEvent::Balances(pallet_balances::Event::Deposit { who, amount }) => { + RuntimeEvent::Balances(pallet_balances::Event::Minted { who, amount }) => { who: *who == ::XcmPallet::check_account(), amount: *amount == t.args.amount, }, @@ -52,12 +54,12 @@ fn relay_dest_assertions(t: SystemParaToRelayTest) { Kusama, vec![ // Amount is withdrawn from Relay Chain's `CheckAccount` - RuntimeEvent::Balances(pallet_balances::Event::Withdraw { who, amount }) => { + RuntimeEvent::Balances(pallet_balances::Event::Burned { who, amount }) => { who: *who == ::XcmPallet::check_account(), amount: *amount == t.args.amount, }, // Amount minus fees are deposited in Receiver's account - RuntimeEvent::Balances(pallet_balances::Event::Deposit { who, .. }) => { + RuntimeEvent::Balances(pallet_balances::Event::Minted { who, .. }) => { who: *who == t.receiver.account_id, }, ] @@ -86,7 +88,7 @@ fn para_origin_assertions(t: SystemParaToRelayTest) { AssetHubKusama, vec![ // Amount is withdrawn from Sender's account - RuntimeEvent::Balances(pallet_balances::Event::Withdraw { who, amount }) => { + RuntimeEvent::Balances(pallet_balances::Event::Burned { who, amount }) => { who: *who == t.sender.account_id, amount: *amount == t.args.amount, }, @@ -103,7 +105,7 @@ fn para_dest_assertions(t: RelayToSystemParaTest) { AssetHubKusama, vec![ // Amount minus fees are deposited in Receiver's account - RuntimeEvent::Balances(pallet_balances::Event::Deposit { who, .. }) => { + RuntimeEvent::Balances(pallet_balances::Event::Minted { who, .. }) => { who: *who == t.receiver.account_id, }, ] @@ -111,13 +113,13 @@ fn para_dest_assertions(t: RelayToSystemParaTest) { } fn penpal_to_ah_foreign_assets_sender_assertions(t: ParaToSystemParaTest) { - type RuntimeEvent = ::RuntimeEvent; - PenpalKusamaA::assert_xcm_pallet_attempted_complete(None); + type RuntimeEvent = ::RuntimeEvent; + PenpalA::assert_xcm_pallet_attempted_complete(None); let expected_asset_id = t.args.asset_id.unwrap(); let (_, expected_asset_amount) = non_fee_asset(&t.args.assets, t.args.fee_asset_item as usize).unwrap(); assert_expected_events!( - PenpalKusamaA, + PenpalA, vec![ RuntimeEvent::Balances( pallet_balances::Event::Withdraw { who, amount } @@ -136,8 +138,8 @@ fn penpal_to_ah_foreign_assets_sender_assertions(t: ParaToSystemParaTest) { fn penpal_to_ah_foreign_assets_receiver_assertions(t: ParaToSystemParaTest) { type RuntimeEvent = ::RuntimeEvent; - let sov_penpal_on_ahr = AssetHubKusama::sovereign_account_id_of( - AssetHubKusama::sibling_location_of(PenpalKusamaA::para_id()), + let sov_penpal_on_ahk = AssetHubKusama::sovereign_account_id_of( + AssetHubKusama::sibling_location_of(PenpalA::para_id()), ); let (expected_foreign_asset_id, expected_foreign_asset_amount) = non_fee_asset(&t.args.assets, t.args.fee_asset_item as usize).unwrap(); @@ -146,12 +148,12 @@ fn penpal_to_ah_foreign_assets_receiver_assertions(t: ParaToSystemParaTest) { vec![ // native asset reserve transfer for paying fees, withdrawn from Penpal's sov account RuntimeEvent::Balances( - pallet_balances::Event::Withdraw { who, amount } + pallet_balances::Event::Burned { who, amount } ) => { - who: *who == sov_penpal_on_ahr.clone().into(), + who: *who == sov_penpal_on_ahk.clone().into(), amount: *amount == t.args.amount, }, - RuntimeEvent::Balances(pallet_balances::Event::Deposit { who, .. }) => { + RuntimeEvent::Balances(pallet_balances::Event::Minted { who, .. }) => { who: *who == t.receiver.account_id, }, RuntimeEvent::ForeignAssets(pallet_assets::Event::Issued { asset_id, owner, amount }) => { @@ -196,13 +198,13 @@ fn ah_to_penpal_foreign_assets_sender_assertions(t: SystemParaToParaTest) { } fn ah_to_penpal_foreign_assets_receiver_assertions(t: SystemParaToParaTest) { - type RuntimeEvent = ::RuntimeEvent; + type RuntimeEvent = ::RuntimeEvent; let expected_asset_id = t.args.asset_id.unwrap(); let (_, expected_asset_amount) = non_fee_asset(&t.args.assets, t.args.fee_asset_item as usize).unwrap(); - let checking_account = ::PolkadotXcm::check_account(); + let checking_account = ::PolkadotXcm::check_account(); assert_expected_events!( - PenpalKusamaA, + PenpalA, vec![ // checking account burns local asset as part of incoming teleport RuntimeEvent::Assets(pallet_assets::Event::Burned { asset_id, owner, balance }) => { @@ -270,7 +272,7 @@ fn system_para_teleport_assets(t: SystemParaToRelayTest) -> DispatchResult { } fn para_to_system_para_transfer_assets(t: ParaToSystemParaTest) -> DispatchResult { - ::PolkadotXcm::transfer_assets( + ::PolkadotXcm::transfer_assets( t.signed_origin, bx!(t.args.dest.into()), bx!(t.args.beneficiary.into()), @@ -301,7 +303,7 @@ fn limited_teleport_native_assets_from_relay_to_system_para_works() { let test_args = TestContext { sender: KusamaSender::get(), receiver: AssetHubKusamaReceiver::get(), - args: relay_test_args(dest, beneficiary_id, amount_to_send), + args: TestArgs::new_relay(dest, beneficiary_id, amount_to_send), }; let mut test = RelayToSystemParaTest::new(test_args); @@ -345,7 +347,7 @@ fn limited_teleport_native_assets_back_from_system_para_to_relay_works() { let test_args = TestContext { sender: AssetHubKusamaSender::get(), receiver: KusamaReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = SystemParaToRelayTest::new(test_args); @@ -386,7 +388,7 @@ fn limited_teleport_native_assets_from_system_para_to_relay_fails() { let test_args = TestContext { sender: AssetHubKusamaSender::get(), receiver: KusamaReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = SystemParaToRelayTest::new(test_args); @@ -424,7 +426,7 @@ fn teleport_native_assets_from_relay_to_system_para_works() { let test_args = TestContext { sender: KusamaSender::get(), receiver: AssetHubKusamaReceiver::get(), - args: relay_test_args(dest, beneficiary_id, amount_to_send), + args: TestArgs::new_relay(dest, beneficiary_id, amount_to_send), }; let mut test = RelayToSystemParaTest::new(test_args); @@ -468,7 +470,7 @@ fn teleport_native_assets_back_from_system_para_to_relay_works() { let test_args = TestContext { sender: AssetHubKusamaSender::get(), receiver: KusamaReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = SystemParaToRelayTest::new(test_args); @@ -509,7 +511,7 @@ fn teleport_native_assets_from_system_para_to_relay_fails() { let test_args = TestContext { sender: AssetHubKusamaSender::get(), receiver: KusamaReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = SystemParaToRelayTest::new(test_args); @@ -554,15 +556,15 @@ fn teleport_to_other_system_parachains_works() { /// (using native reserve-based transfer for fees) #[test] fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { - let ah_as_seen_by_penpal = PenpalKusamaA::sibling_location_of(AssetHubKusama::para_id()); + let ah_as_seen_by_penpal = PenpalA::sibling_location_of(AssetHubKusama::para_id()); let asset_location_on_penpal = PenpalLocalTeleportableToAssetHub::get(); let asset_id_on_penpal = match asset_location_on_penpal.last() { Some(GeneralIndex(id)) => *id as u32, _ => unreachable!(), }; - let asset_owner_on_penpal = PenpalKusamaASender::get(); + let asset_owner_on_penpal = PenpalASender::get(); let foreign_asset_at_asset_hub_kusama = - MultiLocation { parents: 1, interior: X1(Parachain(PenpalKusamaA::para_id().into())) } + MultiLocation { parents: 1, interior: X1(Parachain(PenpalA::para_id().into())) } .appended_with(asset_location_on_penpal) .unwrap(); super::penpal_create_foreign_asset_on_asset_hub( @@ -591,9 +593,9 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { // Penpal to AH test args let penpal_to_ah_test_args = TestContext { - sender: PenpalKusamaASender::get(), + sender: PenpalASender::get(), receiver: AssetHubKusamaReceiver::get(), - args: para_test_args( + args: TestArgs::new_para( ah_as_seen_by_penpal, penpal_to_ah_beneficiary_id, asset_amount_to_send, @@ -607,9 +609,9 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { let penpal_sender_balance_before = penpal_to_ah.sender.balance; let ah_receiver_balance_before = penpal_to_ah.receiver.balance; - let penpal_sender_assets_before = PenpalKusamaA::execute_with(|| { - type Assets = ::Assets; - >::balance(asset_id_on_penpal, &PenpalKusamaASender::get()) + let penpal_sender_assets_before = PenpalA::execute_with(|| { + type Assets = ::Assets; + >::balance(asset_id_on_penpal, &PenpalASender::get()) }); let ah_receiver_assets_before = AssetHubKusama::execute_with(|| { type Assets = ::ForeignAssets; @@ -619,17 +621,17 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { ) }); - penpal_to_ah.set_assertion::(penpal_to_ah_foreign_assets_sender_assertions); + penpal_to_ah.set_assertion::(penpal_to_ah_foreign_assets_sender_assertions); penpal_to_ah.set_assertion::(penpal_to_ah_foreign_assets_receiver_assertions); - penpal_to_ah.set_dispatchable::(para_to_system_para_transfer_assets); + penpal_to_ah.set_dispatchable::(para_to_system_para_transfer_assets); penpal_to_ah.assert(); let penpal_sender_balance_after = penpal_to_ah.sender.balance; let ah_receiver_balance_after = penpal_to_ah.receiver.balance; - let penpal_sender_assets_after = PenpalKusamaA::execute_with(|| { - type Assets = ::Assets; - >::balance(asset_id_on_penpal, &PenpalKusamaASender::get()) + let penpal_sender_assets_after = PenpalA::execute_with(|| { + type Assets = ::Assets; + >::balance(asset_id_on_penpal, &PenpalASender::get()) }); let ah_receiver_assets_after = AssetHubKusama::execute_with(|| { type Assets = ::ForeignAssets; @@ -668,8 +670,8 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { )); }); - let ah_to_penpal_beneficiary_id = PenpalKusamaAReceiver::get(); - let penpal_as_seen_by_ah = AssetHubKusama::sibling_location_of(PenpalKusamaA::para_id()); + let ah_to_penpal_beneficiary_id = PenpalAReceiver::get(); + let penpal_as_seen_by_ah = AssetHubKusama::sibling_location_of(PenpalA::para_id()); let ah_assets: MultiAssets = vec![ (Parent, fee_amount_to_send).into(), (foreign_asset_at_asset_hub_kusama, asset_amount_to_send).into(), @@ -684,8 +686,8 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { // AH to Penpal test args let ah_to_penpal_test_args = TestContext { sender: AssetHubKusamaSender::get(), - receiver: PenpalKusamaAReceiver::get(), - args: para_test_args( + receiver: PenpalAReceiver::get(), + args: TestArgs::new_para( penpal_as_seen_by_ah, ah_to_penpal_beneficiary_id, asset_amount_to_send, @@ -706,13 +708,13 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { &AssetHubKusamaSender::get(), ) }); - let penpal_receiver_assets_before = PenpalKusamaA::execute_with(|| { - type Assets = ::Assets; - >::balance(asset_id_on_penpal, &PenpalKusamaAReceiver::get()) + let penpal_receiver_assets_before = PenpalA::execute_with(|| { + type Assets = ::Assets; + >::balance(asset_id_on_penpal, &PenpalAReceiver::get()) }); ah_to_penpal.set_assertion::(ah_to_penpal_foreign_assets_sender_assertions); - ah_to_penpal.set_assertion::(ah_to_penpal_foreign_assets_receiver_assertions); + ah_to_penpal.set_assertion::(ah_to_penpal_foreign_assets_receiver_assertions); ah_to_penpal.set_dispatchable::(system_para_to_para_transfer_assets); ah_to_penpal.assert(); @@ -726,9 +728,9 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { &AssetHubKusamaSender::get(), ) }); - let penpal_receiver_assets_after = PenpalKusamaA::execute_with(|| { - type Assets = ::Assets; - >::balance(asset_id_on_penpal, &PenpalKusamaAReceiver::get()) + let penpal_receiver_assets_after = PenpalA::execute_with(|| { + type Assets = ::Assets; + >::balance(asset_id_on_penpal, &PenpalAReceiver::get()) }); // Sender's balance is reduced diff --git a/integration-tests/emulated/tests/assets/asset-hub-polkadot/Cargo.toml b/integration-tests/emulated/tests/assets/asset-hub-polkadot/Cargo.toml new file mode 100644 index 0000000000..191501c6e0 --- /dev/null +++ b/integration-tests/emulated/tests/assets/asset-hub-polkadot/Cargo.toml @@ -0,0 +1,40 @@ +[package] +name = "asset-hub-polkadot-integration-tests" +version = "0.1.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Asset Hub Polkadot runtime integration tests with xcm-emulator" +publish = false + +[dependencies] +codec = { package = "parity-scale-codec", version = "3.4.0" } +assert_matches = "1.5.0" + +# Substrate +sp-runtime = { version = "31.0.1" } +frame-support = { version = "28.0.0" } +pallet-balances = { version = "28.0.0" } +pallet-assets = { version = "29.0.0" } +pallet-treasury = { version = "27.0.0" } +pallet-message-queue = { version = "31.0.0" } + +# Polkadot +polkadot-runtime-common = { version = "7.0.0" } +xcm = { package = "staging-xcm", version = "7.0.0" } +pallet-xcm = { version = "7.0.0" } +xcm-executor = { package = "staging-xcm-executor", version = "7.0.3" } + +# Cumulus +asset-test-utils = { version = "7.0.1" } +emulated-integration-tests-common = { version = "3.0.0" } +parachains-common = { version = "7.0.0" } +cumulus-pallet-xcmp-queue = { version = "0.7.0" } +cumulus-pallet-parachain-system = { features = ["parameterized-consensus-hook"], version = "0.7.0" } + +# Local +asset-hub-polkadot-runtime = { path = "../../../../../system-parachains/asset-hubs/asset-hub-polkadot" } +integration-tests-helpers = { path = "../../../helpers" } +polkadot-runtime = { path = "../../../../../relay/polkadot" } +polkadot-system-emulated-network = { path = "../../../networks/polkadot-system" } +system-parachains-constants = { path = "../../../../../system-parachains/constants" } diff --git a/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/lib.rs b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/lib.rs new file mode 100644 index 0000000000..f41329a77d --- /dev/null +++ b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/lib.rs @@ -0,0 +1,79 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pub use codec::Encode; + +// Substrate +pub use frame_support::{ + assert_err, assert_ok, + instances::Instance2, + pallet_prelude::Weight, + sp_runtime::{AccountId32, DispatchError, DispatchResult, ModuleError}, + traits::fungibles::Inspect, + BoundedVec, +}; + +// Polkadot +pub use xcm::{ + prelude::{AccountId32 as AccountId32Junction, *}, + v3::{Error, NetworkId::Polkadot as PolkadotId}, +}; + +// Cumulus +pub use asset_test_utils::xcm_helpers; +pub use emulated_integration_tests_common::{ + xcm_emulator::{ + assert_expected_events, bx, helpers::weight_within_threshold, Chain, Parachain as Para, + RelayChain as Relay, Test, TestArgs, TestContext, TestExt, + }, + xcm_helpers::{xcm_transact_paid_execution, xcm_transact_unpaid_execution}, + PROOF_SIZE_THRESHOLD, REF_TIME_THRESHOLD, XCM_V3, +}; +pub use integration_tests_helpers::test_parachain_is_trusted_teleporter; +pub use parachains_common::{AccountId, Balance}; +pub use polkadot_system_emulated_network::{ + asset_hub_polkadot_emulated_chain::{ + genesis::ED as ASSET_HUB_POLKADOT_ED, AssetHubPolkadotParaPallet as AssetHubPolkadotPallet, + }, + collectives_polkadot_emulated_chain::{ + genesis::ED as COLLECTIVES_POLKADOT_ED, + CollectivesPolkadotParaPallet as CollectivesPolkadotPallet, + }, + penpal_emulated_chain::PenpalBParaPallet as PenpalBPallet, + polkadot_emulated_chain::{genesis::ED as POLKADOT_ED, PolkadotRelayPallet as PolkadotPallet}, + AssetHubPolkadotPara as AssetHubPolkadot, + AssetHubPolkadotParaReceiver as AssetHubPolkadotReceiver, + AssetHubPolkadotParaSender as AssetHubPolkadotSender, + BridgeHubPolkadotPara as BridgeHubPolkadot, + BridgeHubPolkadotParaReceiver as BridgeHubPolkadotReceiver, + CollectivesPolkadotPara as CollectivesPolkadot, PenpalBPara as PenpalB, + PenpalBParaReceiver as PenpalBReceiver, PenpalBParaSender as PenpalBSender, + PolkadotRelay as Polkadot, PolkadotRelayReceiver as PolkadotReceiver, + PolkadotRelaySender as PolkadotSender, +}; + +pub const ASSET_ID: u32 = 1; +pub const ASSET_MIN_BALANCE: u128 = 1000; +// `Assets` pallet index +pub const ASSETS_PALLET_ID: u8 = 50; + +pub type RelayToSystemParaTest = Test; +pub type RelayToParaTest = Test; +pub type SystemParaToRelayTest = Test; +pub type SystemParaToParaTest = Test; +pub type ParaToSystemParaTest = Test; + +#[cfg(test)] +mod tests; diff --git a/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/fellowship_treasury.rs b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/fellowship_treasury.rs new file mode 100644 index 0000000000..188174c0d1 --- /dev/null +++ b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/fellowship_treasury.rs @@ -0,0 +1,131 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::*; +use emulated_integration_tests_common::accounts::{ALICE, BOB}; +use frame_support::traits::fungibles::{Create, Inspect, Mutate}; +use polkadot_runtime_common::impls::VersionedLocatableAsset; +use xcm_executor::traits::ConvertLocation; + +#[test] +fn create_and_claim_treasury_spend() { + const ASSET_ID: u32 = 1984; + const SPEND_AMOUNT: u128 = 1_000_000; + // treasury location from a sibling parachain. + let treasury_location: MultiLocation = MultiLocation::new( + 1, + X2(Parachain(CollectivesPolkadot::para_id().into()), PalletInstance(65)), + ); + // treasury account on a sibling parachain. + let treasury_account = + asset_hub_polkadot_runtime::xcm_config::LocationToAccountId::convert_location( + &treasury_location, + ) + .unwrap(); + let asset_hub_location = MultiLocation::new(1, Parachain(AssetHubPolkadot::para_id().into())); + let root = ::RuntimeOrigin::root(); + // asset kind to be spent from the treasury. + let asset_kind = VersionedLocatableAsset::V3 { + location: asset_hub_location, + asset_id: AssetId::Concrete((PalletInstance(50), GeneralIndex(ASSET_ID.into())).into()), + }; + // treasury spend beneficiary. + let alice: AccountId = Polkadot::account_id_of(ALICE); + let bob: AccountId = CollectivesPolkadot::account_id_of(BOB); + let bob_signed = ::RuntimeOrigin::signed(bob.clone()); + + AssetHubPolkadot::execute_with(|| { + type Assets = ::Assets; + + // create an asset class and mint some assets to the treasury account. + assert_ok!(>::create( + ASSET_ID, + treasury_account.clone(), + true, + SPEND_AMOUNT / 2 + )); + assert_ok!(>::mint_into(ASSET_ID, &treasury_account, SPEND_AMOUNT * 4)); + // beneficiary has zero balance. + assert_eq!(>::balance(ASSET_ID, &alice,), 0u128,); + }); + + CollectivesPolkadot::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + type FellowshipTreasury = + ::FellowshipTreasury; + type AssetRate = ::AssetRate; + + // create a conversion rate from `asset_kind` to the native currency. + assert_ok!(AssetRate::create(root.clone(), Box::new(asset_kind.clone()), 2.into())); + + // create and approve a treasury spend. + assert_ok!(FellowshipTreasury::spend( + root, + Box::new(asset_kind), + SPEND_AMOUNT, + Box::new(MultiLocation::new(0, Into::<[u8; 32]>::into(alice.clone())).into()), + None, + )); + // claim the spend. + assert_ok!(FellowshipTreasury::payout(bob_signed.clone(), 0)); + + assert_expected_events!( + CollectivesPolkadot, + vec![ + RuntimeEvent::FellowshipTreasury(pallet_treasury::Event::Paid { .. }) => {}, + ] + ); + }); + + AssetHubPolkadot::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + type Assets = ::Assets; + + // assert events triggered by xcm pay program + // 1. treasury asset transferred to spend beneficiary + // 2. response to the Fellowship treasury pallet instance sent back + // 3. XCM program completed + assert_expected_events!( + AssetHubPolkadot, + vec![ + RuntimeEvent::Assets(pallet_assets::Event::Transferred { asset_id: id, from, to, amount }) => { + id: id == &ASSET_ID, + from: from == &treasury_account, + to: to == &alice, + amount: amount == &SPEND_AMOUNT, + }, + RuntimeEvent::XcmpQueue(cumulus_pallet_xcmp_queue::Event::XcmpMessageSent { .. }) => {}, + RuntimeEvent::MessageQueue(pallet_message_queue::Event::Processed { success: true ,.. }) => {}, + ] + ); + // beneficiary received the assets from the treasury. + assert_eq!(>::balance(ASSET_ID, &alice,), SPEND_AMOUNT,); + }); + + CollectivesPolkadot::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + type FellowshipTreasury = + ::FellowshipTreasury; + + // check the payment status to ensure the response from the AssetHub was received. + assert_ok!(FellowshipTreasury::check_status(bob_signed, 0)); + assert_expected_events!( + CollectivesPolkadot, + vec![ + RuntimeEvent::FellowshipTreasury(pallet_treasury::Event::SpendProcessed { .. }) => {}, + ] + ); + }); +} diff --git a/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/mod.rs b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/mod.rs similarity index 85% rename from integration-tests/emulated/assets/asset-hub-polkadot/src/tests/mod.rs rename to integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/mod.rs index 2b1a263e01..eaf2a15e11 100644 --- a/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/mod.rs +++ b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/mod.rs @@ -13,14 +13,16 @@ // See the License for the specific language governing permissions and // limitations under the License. +mod fellowship_treasury; mod reserve_transfer; mod send; mod set_xcm_versions; mod teleport; +mod treasury; use crate::*; -integration_tests_common::include_penpal_create_foreign_asset_on_asset_hub!( - PenpalPolkadotA, +emulated_integration_tests_common::include_penpal_create_foreign_asset_on_asset_hub!( + PenpalB, AssetHubPolkadot, POLKADOT_ED, system_parachains_constants::polkadot::fee::WeightToFee diff --git a/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/reserve_transfer.rs b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/reserve_transfer.rs similarity index 81% rename from integration-tests/emulated/assets/asset-hub-polkadot/src/tests/reserve_transfer.rs rename to integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/reserve_transfer.rs index 89f79f9c96..235b09858c 100644 --- a/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/reserve_transfer.rs +++ b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/reserve_transfer.rs @@ -16,10 +16,13 @@ use crate::*; use asset_hub_polkadot_runtime::xcm_config::XcmConfig as AssetHubPolkadotXcmConfig; use polkadot_runtime::xcm_config::XcmConfig as PolkadotXcmConfig; +use polkadot_system_emulated_network::penpal_emulated_chain::XcmConfig as PenpalPolkadotXcmConfig; fn relay_to_para_sender_assertions(t: RelayToParaTest) { type RuntimeEvent = ::RuntimeEvent; + Polkadot::assert_xcm_pallet_attempted_complete(Some(Weight::from_parts(864_610_000, 8_799))); + assert_expected_events!( Polkadot, vec![ @@ -39,10 +42,12 @@ fn relay_to_para_sender_assertions(t: RelayToParaTest) { fn system_para_to_para_sender_assertions(t: SystemParaToParaTest) { type RuntimeEvent = ::RuntimeEvent; + AssetHubPolkadot::assert_xcm_pallet_attempted_complete(Some(Weight::from_parts( - 864_610_000, - 8_799, + 676_119_000, + 6196, ))); + assert_expected_events!( AssetHubPolkadot, vec![ @@ -61,9 +66,9 @@ fn system_para_to_para_sender_assertions(t: SystemParaToParaTest) { } fn para_receiver_assertions(_: Test) { - type RuntimeEvent = ::RuntimeEvent; + type RuntimeEvent = ::RuntimeEvent; assert_expected_events!( - PenpalPolkadotA, + PenpalB, vec![ RuntimeEvent::Balances(pallet_balances::Event::Deposit { .. }) => {}, RuntimeEvent::MessageQueue( @@ -74,13 +79,12 @@ fn para_receiver_assertions(_: Test) { } fn para_to_system_para_sender_assertions(t: ParaToSystemParaTest) { - type RuntimeEvent = ::RuntimeEvent; - PenpalPolkadotA::assert_xcm_pallet_attempted_complete(Some(Weight::from_parts( - 864_610_000, - 8_799, - ))); + type RuntimeEvent = ::RuntimeEvent; + + PenpalB::assert_xcm_pallet_attempted_complete(Some(Weight::from_parts(864_610_000, 8_799))); + assert_expected_events!( - PenpalPolkadotA, + PenpalB, vec![ // Amount to reserve transfer is transferred to Parachain's Sovereign account RuntimeEvent::Balances( @@ -95,20 +99,22 @@ fn para_to_system_para_sender_assertions(t: ParaToSystemParaTest) { fn para_to_system_para_receiver_assertions(t: ParaToSystemParaTest) { type RuntimeEvent = ::RuntimeEvent; - let sov_penpal_on_ahr = AssetHubPolkadot::sovereign_account_id_of( - AssetHubPolkadot::sibling_location_of(PenpalPolkadotA::para_id()), + + let sov_penpal_on_ahp = AssetHubPolkadot::sovereign_account_id_of( + AssetHubPolkadot::sibling_location_of(PenpalB::para_id()), ); + assert_expected_events!( AssetHubPolkadot, vec![ - // Amount to reserve transfer is withdrawn from Parachain's Sovereign account + // Amount to reserve transfer is transferred to Parachain's Sovereign account RuntimeEvent::Balances( - pallet_balances::Event::Withdraw { who, amount } + pallet_balances::Event::Burned { who, amount } ) => { - who: *who == sov_penpal_on_ahr.clone().into(), + who: *who == sov_penpal_on_ahp.clone().into(), amount: *amount == t.args.amount, }, - RuntimeEvent::Balances(pallet_balances::Event::Deposit { .. }) => {}, + RuntimeEvent::Balances(pallet_balances::Event::Minted { .. }) => {}, RuntimeEvent::MessageQueue( pallet_message_queue::Event::Processed { success: true, .. } ) => {}, @@ -118,10 +124,12 @@ fn para_to_system_para_receiver_assertions(t: ParaToSystemParaTest) { fn system_para_to_para_assets_sender_assertions(t: SystemParaToParaTest) { type RuntimeEvent = ::RuntimeEvent; + AssetHubPolkadot::assert_xcm_pallet_attempted_complete(Some(Weight::from_parts( - 864_610_000, - 8799, + 676_119_000, + 6196, ))); + assert_expected_events!( AssetHubPolkadot, vec![ @@ -141,9 +149,9 @@ fn system_para_to_para_assets_sender_assertions(t: SystemParaToParaTest) { } fn system_para_to_para_assets_receiver_assertions(_: Test) { - type RuntimeEvent = ::RuntimeEvent; + type RuntimeEvent = ::RuntimeEvent; assert_expected_events!( - PenpalPolkadotA, + PenpalB, vec![ RuntimeEvent::Balances(pallet_balances::Event::Deposit { .. }) => {}, RuntimeEvent::Assets(pallet_assets::Event::Issued { .. }) => {}, @@ -177,7 +185,7 @@ fn system_para_to_para_reserve_transfer_assets(t: SystemParaToParaTest) -> Dispa } fn para_to_system_para_reserve_transfer_assets(t: ParaToSystemParaTest) -> DispatchResult { - ::PolkadotXcm::limited_reserve_transfer_assets( + ::PolkadotXcm::limited_reserve_transfer_assets( t.signed_origin, bx!(t.args.dest.into()), bx!(t.args.beneficiary.into()), @@ -230,7 +238,6 @@ fn reserve_transfer_native_asset_from_system_para_to_relay_fails() { let beneficiary: MultiLocation = AccountId32Junction { network: None, id: beneficiary_id.into() }.into(); let amount_to_send: Balance = ASSET_HUB_POLKADOT_ED * 1000; - let assets: MultiAssets = (Parent, amount_to_send).into(); let fee_asset_item = 0; @@ -260,14 +267,14 @@ fn reserve_transfer_native_asset_from_system_para_to_relay_fails() { #[test] fn reserve_transfer_native_asset_from_relay_to_para() { // Init values for Relay - let destination = Polkadot::child_location_of(PenpalPolkadotA::para_id()); - let beneficiary_id = PenpalPolkadotAReceiver::get(); + let destination = Polkadot::child_location_of(PenpalB::para_id()); + let beneficiary_id = PenpalBReceiver::get(); let amount_to_send: Balance = POLKADOT_ED * 1000; let test_args = TestContext { sender: PolkadotSender::get(), - receiver: PenpalPolkadotAReceiver::get(), - args: relay_test_args(destination, beneficiary_id, amount_to_send), + receiver: PenpalBReceiver::get(), + args: TestArgs::new_relay(destination, beneficiary_id, amount_to_send), }; let mut test = RelayToParaTest::new(test_args); @@ -276,7 +283,7 @@ fn reserve_transfer_native_asset_from_relay_to_para() { let receiver_balance_before = test.receiver.balance; test.set_assertion::(relay_to_para_sender_assertions); - test.set_assertion::(para_receiver_assertions); + test.set_assertion::(para_receiver_assertions); test.set_dispatchable::(relay_to_para_reserve_transfer_assets); test.assert(); @@ -303,15 +310,15 @@ fn reserve_transfer_native_asset_from_relay_to_para() { #[test] fn reserve_transfer_native_asset_from_system_para_to_para() { // Init values for System Parachain - let destination = AssetHubPolkadot::sibling_location_of(PenpalPolkadotA::para_id()); - let beneficiary_id = PenpalPolkadotAReceiver::get(); + let destination = AssetHubPolkadot::sibling_location_of(PenpalB::para_id()); + let beneficiary_id = PenpalBReceiver::get(); let amount_to_send: Balance = ASSET_HUB_POLKADOT_ED * 1000; let assets = (Parent, amount_to_send).into(); let test_args = TestContext { sender: AssetHubPolkadotSender::get(), - receiver: PenpalPolkadotAReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + receiver: PenpalBReceiver::get(), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = SystemParaToParaTest::new(test_args); @@ -320,7 +327,7 @@ fn reserve_transfer_native_asset_from_system_para_to_para() { let receiver_balance_before = test.receiver.balance; test.set_assertion::(system_para_to_para_sender_assertions); - test.set_assertion::(para_receiver_assertions); + test.set_assertion::(para_receiver_assertions); test.set_dispatchable::(system_para_to_para_reserve_transfer_assets); test.assert(); @@ -347,15 +354,15 @@ fn reserve_transfer_native_asset_from_system_para_to_para() { #[test] fn reserve_transfer_native_asset_from_para_to_system_para() { // Init values for Penpal Parachain - let destination = PenpalPolkadotA::sibling_location_of(AssetHubPolkadot::para_id()); + let destination = PenpalB::sibling_location_of(AssetHubPolkadot::para_id()); let beneficiary_id = AssetHubPolkadotReceiver::get(); let amount_to_send: Balance = ASSET_HUB_POLKADOT_ED * 1000; let assets = (Parent, amount_to_send).into(); let test_args = TestContext { - sender: PenpalPolkadotASender::get(), + sender: PenpalBSender::get(), receiver: AssetHubPolkadotReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = ParaToSystemParaTest::new(test_args); @@ -363,25 +370,24 @@ fn reserve_transfer_native_asset_from_para_to_system_para() { let sender_balance_before = test.sender.balance; let receiver_balance_before = test.receiver.balance; - let penpal_location_as_seen_by_ahr = - AssetHubPolkadot::sibling_location_of(PenpalPolkadotA::para_id()); - let sov_penpal_on_ahr = - AssetHubPolkadot::sovereign_account_id_of(penpal_location_as_seen_by_ahr); + let penpal_location_as_seen_by_ahp = AssetHubPolkadot::sibling_location_of(PenpalB::para_id()); + let sov_penpal_on_ahp = + AssetHubPolkadot::sovereign_account_id_of(penpal_location_as_seen_by_ahp); - // fund the Penpal's SA on AHR with the native tokens held in reserve - AssetHubPolkadot::fund_accounts(vec![(sov_penpal_on_ahr.into(), amount_to_send * 2)]); + // fund the Penpal's SA on AHP with the native tokens held in reserve + AssetHubPolkadot::fund_accounts(vec![(sov_penpal_on_ahp.into(), amount_to_send * 2)]); - test.set_assertion::(para_to_system_para_sender_assertions); + test.set_assertion::(para_to_system_para_sender_assertions); test.set_assertion::(para_to_system_para_receiver_assertions); - test.set_dispatchable::(para_to_system_para_reserve_transfer_assets); + test.set_dispatchable::(para_to_system_para_reserve_transfer_assets); test.assert(); let sender_balance_after = test.sender.balance; let receiver_balance_after = test.receiver.balance; - let delivery_fees = PenpalPolkadotA::execute_with(|| { + let delivery_fees = PenpalB::execute_with(|| { xcm_helpers::transfer_assets_delivery_fees::< - ::XcmSender, + ::XcmSender, >(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest) }); @@ -399,27 +405,27 @@ fn reserve_transfer_native_asset_from_para_to_system_para() { /// work #[test] fn reserve_transfer_assets_from_system_para_to_para() { - // Force create asset on AssetHubPolkadot and PenpalPolkadotA from Relay Chain + // Force create asset on AssetHubPolkadot and PenpalB from Relay Chain AssetHubPolkadot::force_create_and_mint_asset( ASSET_ID, ASSET_MIN_BALANCE, - false, + true, AssetHubPolkadotSender::get(), Some(Weight::from_parts(1_019_445_000, 200_000)), ASSET_MIN_BALANCE * 1_000_000, ); - PenpalPolkadotA::force_create_and_mint_asset( + PenpalB::force_create_and_mint_asset( ASSET_ID, ASSET_MIN_BALANCE, false, - PenpalPolkadotASender::get(), + PenpalBSender::get(), None, 0, ); // Init values for System Parachain - let destination = AssetHubPolkadot::sibling_location_of(PenpalPolkadotA::para_id()); - let beneficiary_id = PenpalPolkadotAReceiver::get(); + let destination = AssetHubPolkadot::sibling_location_of(PenpalB::para_id()); + let beneficiary_id = PenpalBReceiver::get(); let fee_amount_to_send = ASSET_HUB_POLKADOT_ED * 1000; let asset_amount_to_send = ASSET_MIN_BALANCE * 1000; let assets: MultiAssets = vec![ @@ -436,8 +442,8 @@ fn reserve_transfer_assets_from_system_para_to_para() { let para_test_args = TestContext { sender: AssetHubPolkadotSender::get(), - receiver: PenpalPolkadotAReceiver::get(), - args: para_test_args( + receiver: PenpalBReceiver::get(), + args: TestArgs::new_para( destination, beneficiary_id, asset_amount_to_send, @@ -449,10 +455,10 @@ fn reserve_transfer_assets_from_system_para_to_para() { let mut test = SystemParaToParaTest::new(para_test_args); - // Create SA-of-Penpal-on-AHR with ED. - let penpal_location = AssetHubPolkadot::sibling_location_of(PenpalPolkadotA::para_id()); - let sov_penpal_on_ahr = AssetHubPolkadot::sovereign_account_id_of(penpal_location); - AssetHubPolkadot::fund_accounts(vec![(sov_penpal_on_ahr.into(), POLKADOT_ED)]); + // Create SA-of-Penpal-on-AHP with ED. + let penpal_location = AssetHubPolkadot::sibling_location_of(PenpalB::para_id()); + let sov_penpal_on_ahp = AssetHubPolkadot::sovereign_account_id_of(penpal_location); + AssetHubPolkadot::fund_accounts(vec![(sov_penpal_on_ahp.into(), POLKADOT_ED)]); let sender_balance_before = test.sender.balance; let receiver_balance_before = test.receiver.balance; @@ -461,13 +467,13 @@ fn reserve_transfer_assets_from_system_para_to_para() { type Assets = ::Assets; >::balance(ASSET_ID, &AssetHubPolkadotSender::get()) }); - let receiver_assets_before = PenpalPolkadotA::execute_with(|| { - type Assets = ::Assets; - >::balance(ASSET_ID, &PenpalPolkadotAReceiver::get()) + let receiver_assets_before = PenpalB::execute_with(|| { + type Assets = ::Assets; + >::balance(ASSET_ID, &PenpalBReceiver::get()) }); test.set_assertion::(system_para_to_para_assets_sender_assertions); - test.set_assertion::(system_para_to_para_assets_receiver_assertions); + test.set_assertion::(system_para_to_para_assets_receiver_assertions); test.set_dispatchable::(system_para_to_para_reserve_transfer_assets); test.assert(); @@ -487,9 +493,9 @@ fn reserve_transfer_assets_from_system_para_to_para() { type Assets = ::Assets; >::balance(ASSET_ID, &AssetHubPolkadotSender::get()) }); - let receiver_assets_after = PenpalPolkadotA::execute_with(|| { - type Assets = ::Assets; - >::balance(ASSET_ID, &PenpalPolkadotAReceiver::get()) + let receiver_assets_after = PenpalB::execute_with(|| { + type Assets = ::Assets; + >::balance(ASSET_ID, &PenpalBReceiver::get()) }); // Sender's balance is reduced by exact amount diff --git a/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/send.rs b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/send.rs similarity index 87% rename from integration-tests/emulated/assets/asset-hub-polkadot/src/tests/send.rs rename to integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/send.rs index adbb28f024..403ad7d1d1 100644 --- a/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/send.rs +++ b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/send.rs @@ -33,7 +33,7 @@ fn send_transact_as_superuser_from_relay_to_system_para_works() { #[test] fn send_xcm_from_para_to_system_para_paying_fee_with_assets_works() { let para_sovereign_account = AssetHubPolkadot::sovereign_account_id_of( - AssetHubPolkadot::sibling_location_of(PenpalPolkadotA::para_id()), + AssetHubPolkadot::sibling_location_of(PenpalB::para_id()), ); // Force create and mint assets for Parachain's sovereign account @@ -60,9 +60,8 @@ fn send_xcm_from_para_to_system_para_paying_fee_with_assets_works() { let native_asset = (X2(PalletInstance(ASSETS_PALLET_ID), GeneralIndex(ASSET_ID.into())), fee_amount).into(); - let root_origin = ::RuntimeOrigin::root(); - let system_para_destination = - PenpalPolkadotA::sibling_location_of(AssetHubPolkadot::para_id()).into(); + let root_origin = ::RuntimeOrigin::root(); + let system_para_destination = PenpalB::sibling_location_of(AssetHubPolkadot::para_id()).into(); let xcm = xcm_transact_paid_execution( call, origin_kind, @@ -70,21 +69,21 @@ fn send_xcm_from_para_to_system_para_paying_fee_with_assets_works() { para_sovereign_account.clone(), ); - PenpalPolkadotA::execute_with(|| { - assert_ok!(::PolkadotXcm::send( + PenpalB::execute_with(|| { + assert_ok!(::PolkadotXcm::send( root_origin, bx!(system_para_destination), bx!(xcm), )); - PenpalPolkadotA::assert_xcm_pallet_sent(); + PenpalB::assert_xcm_pallet_sent(); }); AssetHubPolkadot::execute_with(|| { type RuntimeEvent = ::RuntimeEvent; AssetHubPolkadot::assert_xcmp_queue_success(Some(Weight::from_parts( - 15_594_564_000, + 16_290_336_000, 562_893, ))); diff --git a/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/set_xcm_versions.rs b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/set_xcm_versions.rs similarity index 100% rename from integration-tests/emulated/assets/asset-hub-polkadot/src/tests/set_xcm_versions.rs rename to integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/set_xcm_versions.rs diff --git a/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/teleport.rs b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/teleport.rs similarity index 86% rename from integration-tests/emulated/assets/asset-hub-polkadot/src/tests/teleport.rs rename to integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/teleport.rs index 69d7ffe7b9..ae48670843 100644 --- a/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/teleport.rs +++ b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/teleport.rs @@ -15,23 +15,25 @@ use crate::*; use asset_hub_polkadot_runtime::xcm_config::XcmConfig as AssetHubPolkadotXcmConfig; +use emulated_integration_tests_common::xcm_helpers::non_fee_asset; use polkadot_runtime::xcm_config::XcmConfig as PolkadotXcmConfig; +use polkadot_system_emulated_network::penpal_emulated_chain::LocalTeleportableToAssetHub as PenpalLocalTeleportableToAssetHub; fn relay_origin_assertions(t: RelayToSystemParaTest) { type RuntimeEvent = ::RuntimeEvent; - Polkadot::assert_xcm_pallet_attempted_complete(Some(Weight::from_parts(631_531_000, 7_186))); + Polkadot::assert_xcm_pallet_attempted_complete(Some(Weight::from_parts(632_207_000, 7_186))); assert_expected_events!( Polkadot, vec![ // Amount to teleport is withdrawn from Sender - RuntimeEvent::Balances(pallet_balances::Event::Withdraw { who, amount }) => { + RuntimeEvent::Balances(pallet_balances::Event::Burned { who, amount }) => { who: *who == t.sender.account_id, amount: *amount == t.args.amount, }, // Amount to teleport is deposited in Relay's `CheckAccount` - RuntimeEvent::Balances(pallet_balances::Event::Deposit { who, amount }) => { + RuntimeEvent::Balances(pallet_balances::Event::Minted { who, amount }) => { who: *who == ::XcmPallet::check_account(), amount: *amount == t.args.amount, }, @@ -45,19 +47,19 @@ fn relay_dest_assertions(t: SystemParaToRelayTest) { Polkadot::assert_ump_queue_processed( true, Some(AssetHubPolkadot::para_id()), - Some(Weight::from_parts(307_225_000, 7_186)), + Some(Weight::from_parts(308_222_000, 7_186)), ); assert_expected_events!( Polkadot, vec![ // Amount is withdrawn from Relay Chain's `CheckAccount` - RuntimeEvent::Balances(pallet_balances::Event::Withdraw { who, amount }) => { + RuntimeEvent::Balances(pallet_balances::Event::Burned { who, amount }) => { who: *who == ::XcmPallet::check_account(), amount: *amount == t.args.amount, }, // Amount minus fees are deposited in Receiver's account - RuntimeEvent::Balances(pallet_balances::Event::Deposit { who, .. }) => { + RuntimeEvent::Balances(pallet_balances::Event::Minted { who, .. }) => { who: *who == t.receiver.account_id, }, ] @@ -68,7 +70,7 @@ fn relay_dest_assertions_fail(_t: SystemParaToRelayTest) { Polkadot::assert_ump_queue_processed( false, Some(AssetHubPolkadot::para_id()), - Some(Weight::from_parts(157_718_000, 3_593)), + Some(Weight::from_parts(148_705_000, 3_593)), ); } @@ -76,8 +78,8 @@ fn para_origin_assertions(t: SystemParaToRelayTest) { type RuntimeEvent = ::RuntimeEvent; AssetHubPolkadot::assert_xcm_pallet_attempted_complete(Some(Weight::from_parts( - 720_053_000, - 7_203, + 533_910_000, + 7167, ))); AssetHubPolkadot::assert_parachain_system_ump_sent(); @@ -86,7 +88,7 @@ fn para_origin_assertions(t: SystemParaToRelayTest) { AssetHubPolkadot, vec![ // Amount is withdrawn from Sender's account - RuntimeEvent::Balances(pallet_balances::Event::Withdraw { who, amount }) => { + RuntimeEvent::Balances(pallet_balances::Event::Burned { who, amount }) => { who: *who == t.sender.account_id, amount: *amount == t.args.amount, }, @@ -97,13 +99,13 @@ fn para_origin_assertions(t: SystemParaToRelayTest) { fn para_dest_assertions(t: RelayToSystemParaTest) { type RuntimeEvent = ::RuntimeEvent; - AssetHubPolkadot::assert_dmp_queue_complete(Some(Weight::from_parts(157_718_000, 3593))); + AssetHubPolkadot::assert_dmp_queue_complete(Some(Weight::from_parts(164_793_000, 3593))); assert_expected_events!( AssetHubPolkadot, vec![ // Amount minus fees are deposited in Receiver's account - RuntimeEvent::Balances(pallet_balances::Event::Deposit { who, .. }) => { + RuntimeEvent::Balances(pallet_balances::Event::Minted { who, .. }) => { who: *who == t.receiver.account_id, }, ] @@ -111,13 +113,13 @@ fn para_dest_assertions(t: RelayToSystemParaTest) { } fn penpal_to_ah_foreign_assets_sender_assertions(t: ParaToSystemParaTest) { - type RuntimeEvent = ::RuntimeEvent; - PenpalPolkadotA::assert_xcm_pallet_attempted_complete(None); + type RuntimeEvent = ::RuntimeEvent; + PenpalB::assert_xcm_pallet_attempted_complete(None); let expected_asset_id = t.args.asset_id.unwrap(); let (_, expected_asset_amount) = non_fee_asset(&t.args.assets, t.args.fee_asset_item as usize).unwrap(); assert_expected_events!( - PenpalPolkadotA, + PenpalB, vec![ RuntimeEvent::Balances( pallet_balances::Event::Withdraw { who, amount } @@ -136,8 +138,8 @@ fn penpal_to_ah_foreign_assets_sender_assertions(t: ParaToSystemParaTest) { fn penpal_to_ah_foreign_assets_receiver_assertions(t: ParaToSystemParaTest) { type RuntimeEvent = ::RuntimeEvent; - let sov_penpal_on_ahr = AssetHubPolkadot::sovereign_account_id_of( - AssetHubPolkadot::sibling_location_of(PenpalPolkadotA::para_id()), + let sov_penpal_on_ahk = AssetHubPolkadot::sovereign_account_id_of( + AssetHubPolkadot::sibling_location_of(PenpalB::para_id()), ); let (expected_foreign_asset_id, expected_foreign_asset_amount) = non_fee_asset(&t.args.assets, t.args.fee_asset_item as usize).unwrap(); @@ -146,12 +148,12 @@ fn penpal_to_ah_foreign_assets_receiver_assertions(t: ParaToSystemParaTest) { vec![ // native asset reserve transfer for paying fees, withdrawn from Penpal's sov account RuntimeEvent::Balances( - pallet_balances::Event::Withdraw { who, amount } + pallet_balances::Event::Burned { who, amount } ) => { - who: *who == sov_penpal_on_ahr.clone().into(), + who: *who == sov_penpal_on_ahk.clone().into(), amount: *amount == t.args.amount, }, - RuntimeEvent::Balances(pallet_balances::Event::Deposit { who, .. }) => { + RuntimeEvent::Balances(pallet_balances::Event::Minted { who, .. }) => { who: *who == t.receiver.account_id, }, RuntimeEvent::ForeignAssets(pallet_assets::Event::Issued { asset_id, owner, amount }) => { @@ -196,13 +198,13 @@ fn ah_to_penpal_foreign_assets_sender_assertions(t: SystemParaToParaTest) { } fn ah_to_penpal_foreign_assets_receiver_assertions(t: SystemParaToParaTest) { - type RuntimeEvent = ::RuntimeEvent; + type RuntimeEvent = ::RuntimeEvent; let expected_asset_id = t.args.asset_id.unwrap(); let (_, expected_asset_amount) = non_fee_asset(&t.args.assets, t.args.fee_asset_item as usize).unwrap(); - let checking_account = ::PolkadotXcm::check_account(); + let checking_account = ::PolkadotXcm::check_account(); assert_expected_events!( - PenpalPolkadotA, + PenpalB, vec![ // checking account burns local asset as part of incoming teleport RuntimeEvent::Assets(pallet_assets::Event::Burned { asset_id, owner, balance }) => { @@ -269,8 +271,8 @@ fn system_para_teleport_assets(t: SystemParaToRelayTest) -> DispatchResult { ) } -fn para_to_system_para_transfer_assets(t: ParaToSystemParaTest) -> DispatchResult { - ::PolkadotXcm::transfer_assets( +fn system_para_to_para_transfer_assets(t: SystemParaToParaTest) -> DispatchResult { + ::PolkadotXcm::transfer_assets( t.signed_origin, bx!(t.args.dest.into()), bx!(t.args.beneficiary.into()), @@ -280,8 +282,8 @@ fn para_to_system_para_transfer_assets(t: ParaToSystemParaTest) -> DispatchResul ) } -fn system_para_to_para_transfer_assets(t: SystemParaToParaTest) -> DispatchResult { - ::PolkadotXcm::transfer_assets( +fn para_to_system_para_transfer_assets(t: ParaToSystemParaTest) -> DispatchResult { + ::PolkadotXcm::transfer_assets( t.signed_origin, bx!(t.args.dest.into()), bx!(t.args.beneficiary.into()), @@ -297,11 +299,11 @@ fn limited_teleport_native_assets_from_relay_to_system_para_works() { // Init values for Relay Chain let amount_to_send: Balance = POLKADOT_ED * 1000; let dest = Polkadot::child_location_of(AssetHubPolkadot::para_id()); - let beneficiary_id = AssetHubPolkadotReceiver::get(); + let beneficiary = AssetHubPolkadotReceiver::get(); let test_args = TestContext { sender: PolkadotSender::get(), - receiver: AssetHubPolkadotReceiver::get(), - args: relay_test_args(dest, beneficiary_id, amount_to_send), + receiver: beneficiary.clone(), + args: TestArgs::new_relay(dest, beneficiary, amount_to_send), }; let mut test = RelayToSystemParaTest::new(test_args); @@ -345,7 +347,7 @@ fn limited_teleport_native_assets_back_from_system_para_to_relay_works() { let test_args = TestContext { sender: AssetHubPolkadotSender::get(), receiver: PolkadotReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = SystemParaToRelayTest::new(test_args); @@ -386,7 +388,7 @@ fn limited_teleport_native_assets_from_system_para_to_relay_fails() { let test_args = TestContext { sender: AssetHubPolkadotSender::get(), receiver: PolkadotReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = SystemParaToRelayTest::new(test_args); @@ -420,11 +422,11 @@ fn teleport_native_assets_from_relay_to_system_para_works() { // Init values for Relay Chain let amount_to_send: Balance = POLKADOT_ED * 1000; let dest = Polkadot::child_location_of(AssetHubPolkadot::para_id()); - let beneficiary_id = AssetHubPolkadotReceiver::get(); + let beneficiary = AssetHubPolkadotReceiver::get(); let test_args = TestContext { sender: PolkadotSender::get(), - receiver: AssetHubPolkadotReceiver::get(), - args: relay_test_args(dest, beneficiary_id, amount_to_send), + receiver: beneficiary.clone(), + args: TestArgs::new_relay(dest, beneficiary, amount_to_send), }; let mut test = RelayToSystemParaTest::new(test_args); @@ -468,7 +470,7 @@ fn teleport_native_assets_back_from_system_para_to_relay_works() { let test_args = TestContext { sender: AssetHubPolkadotSender::get(), receiver: PolkadotReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = SystemParaToRelayTest::new(test_args); @@ -481,15 +483,15 @@ fn teleport_native_assets_back_from_system_para_to_relay_works() { test.set_dispatchable::(system_para_teleport_assets); test.assert(); - let sender_balance_after = test.sender.balance; - let receiver_balance_after = test.receiver.balance; - let delivery_fees = AssetHubPolkadot::execute_with(|| { xcm_helpers::transfer_assets_delivery_fees::< ::XcmSender, >(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest) }); + let sender_balance_after = test.sender.balance; + let receiver_balance_after = test.receiver.balance; + // Sender's balance is reduced assert_eq!(sender_balance_before - amount_to_send - delivery_fees, sender_balance_after); // Receiver's balance is increased @@ -509,7 +511,7 @@ fn teleport_native_assets_from_system_para_to_relay_fails() { let test_args = TestContext { sender: AssetHubPolkadotSender::get(), receiver: PolkadotReceiver::get(), - args: para_test_args(destination, beneficiary_id, amount_to_send, assets, None, 0), + args: TestArgs::new_para(destination, beneficiary_id, amount_to_send, assets, None, 0), }; let mut test = SystemParaToRelayTest::new(test_args); @@ -554,15 +556,15 @@ fn teleport_to_other_system_parachains_works() { /// (using native reserve-based transfer for fees) #[test] fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { - let ah_as_seen_by_penpal = PenpalPolkadotA::sibling_location_of(AssetHubPolkadot::para_id()); + let ah_as_seen_by_penpal = PenpalB::sibling_location_of(AssetHubPolkadot::para_id()); let asset_location_on_penpal = PenpalLocalTeleportableToAssetHub::get(); let asset_id_on_penpal = match asset_location_on_penpal.last() { Some(GeneralIndex(id)) => *id as u32, _ => unreachable!(), }; - let asset_owner_on_penpal = PenpalPolkadotASender::get(); + let asset_owner_on_penpal = PenpalBSender::get(); let foreign_asset_at_asset_hub_polkadot = - MultiLocation { parents: 1, interior: X1(Parachain(PenpalPolkadotA::para_id().into())) } + MultiLocation { parents: 1, interior: X1(Parachain(PenpalB::para_id().into())) } .appended_with(asset_location_on_penpal) .unwrap(); super::penpal_create_foreign_asset_on_asset_hub( @@ -575,7 +577,7 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { ); let penpal_to_ah_beneficiary_id = AssetHubPolkadotReceiver::get(); - let fee_amount_to_send = ASSET_HUB_POLKADOT_ED * 10_000; + let fee_amount_to_send = ASSET_HUB_POLKADOT_ED * 1000; let asset_amount_to_send = ASSET_MIN_BALANCE * 1000; let penpal_assets: MultiAssets = vec![ @@ -591,9 +593,9 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { // Penpal to AH test args let penpal_to_ah_test_args = TestContext { - sender: PenpalPolkadotASender::get(), + sender: PenpalBSender::get(), receiver: AssetHubPolkadotReceiver::get(), - args: para_test_args( + args: TestArgs::new_para( ah_as_seen_by_penpal, penpal_to_ah_beneficiary_id, asset_amount_to_send, @@ -607,9 +609,9 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { let penpal_sender_balance_before = penpal_to_ah.sender.balance; let ah_receiver_balance_before = penpal_to_ah.receiver.balance; - let penpal_sender_assets_before = PenpalPolkadotA::execute_with(|| { - type Assets = ::Assets; - >::balance(asset_id_on_penpal, &PenpalPolkadotASender::get()) + let penpal_sender_assets_before = PenpalB::execute_with(|| { + type Assets = ::Assets; + >::balance(asset_id_on_penpal, &PenpalBSender::get()) }); let ah_receiver_assets_before = AssetHubPolkadot::execute_with(|| { type Assets = ::ForeignAssets; @@ -619,17 +621,17 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { ) }); - penpal_to_ah.set_assertion::(penpal_to_ah_foreign_assets_sender_assertions); + penpal_to_ah.set_assertion::(penpal_to_ah_foreign_assets_sender_assertions); penpal_to_ah.set_assertion::(penpal_to_ah_foreign_assets_receiver_assertions); - penpal_to_ah.set_dispatchable::(para_to_system_para_transfer_assets); + penpal_to_ah.set_dispatchable::(para_to_system_para_transfer_assets); penpal_to_ah.assert(); let penpal_sender_balance_after = penpal_to_ah.sender.balance; let ah_receiver_balance_after = penpal_to_ah.receiver.balance; - let penpal_sender_assets_after = PenpalPolkadotA::execute_with(|| { - type Assets = ::Assets; - >::balance(asset_id_on_penpal, &PenpalPolkadotASender::get()) + let penpal_sender_assets_after = PenpalB::execute_with(|| { + type Assets = ::Assets; + >::balance(asset_id_on_penpal, &PenpalBSender::get()) }); let ah_receiver_assets_after = AssetHubPolkadot::execute_with(|| { type Assets = ::ForeignAssets; @@ -668,8 +670,8 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { )); }); - let ah_to_penpal_beneficiary_id = PenpalPolkadotAReceiver::get(); - let penpal_as_seen_by_ah = AssetHubPolkadot::sibling_location_of(PenpalPolkadotA::para_id()); + let ah_to_penpal_beneficiary_id = PenpalBReceiver::get(); + let penpal_as_seen_by_ah = AssetHubPolkadot::sibling_location_of(PenpalB::para_id()); let ah_assets: MultiAssets = vec![ (Parent, fee_amount_to_send).into(), (foreign_asset_at_asset_hub_polkadot, asset_amount_to_send).into(), @@ -684,8 +686,8 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { // AH to Penpal test args let ah_to_penpal_test_args = TestContext { sender: AssetHubPolkadotSender::get(), - receiver: PenpalPolkadotAReceiver::get(), - args: para_test_args( + receiver: PenpalBReceiver::get(), + args: TestArgs::new_para( penpal_as_seen_by_ah, ah_to_penpal_beneficiary_id, asset_amount_to_send, @@ -706,13 +708,13 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { &AssetHubPolkadotSender::get(), ) }); - let penpal_receiver_assets_before = PenpalPolkadotA::execute_with(|| { - type Assets = ::Assets; - >::balance(asset_id_on_penpal, &PenpalPolkadotAReceiver::get()) + let penpal_receiver_assets_before = PenpalB::execute_with(|| { + type Assets = ::Assets; + >::balance(asset_id_on_penpal, &PenpalBReceiver::get()) }); ah_to_penpal.set_assertion::(ah_to_penpal_foreign_assets_sender_assertions); - ah_to_penpal.set_assertion::(ah_to_penpal_foreign_assets_receiver_assertions); + ah_to_penpal.set_assertion::(ah_to_penpal_foreign_assets_receiver_assertions); ah_to_penpal.set_dispatchable::(system_para_to_para_transfer_assets); ah_to_penpal.assert(); @@ -726,9 +728,9 @@ fn bidirectional_teleport_foreign_assets_between_para_and_asset_hub() { &AssetHubPolkadotSender::get(), ) }); - let penpal_receiver_assets_after = PenpalPolkadotA::execute_with(|| { - type Assets = ::Assets; - >::balance(asset_id_on_penpal, &PenpalPolkadotAReceiver::get()) + let penpal_receiver_assets_after = PenpalB::execute_with(|| { + type Assets = ::Assets; + >::balance(asset_id_on_penpal, &PenpalBReceiver::get()) }); // Sender's balance is reduced diff --git a/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/treasury.rs b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/treasury.rs new file mode 100644 index 0000000000..03e34b234d --- /dev/null +++ b/integration-tests/emulated/tests/assets/asset-hub-polkadot/src/tests/treasury.rs @@ -0,0 +1,126 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::*; +use emulated_integration_tests_common::accounts::{ALICE, BOB}; +use frame_support::traits::fungibles::{Create, Inspect, Mutate}; +use polkadot_runtime_common::impls::VersionedLocatableAsset; +use xcm_executor::traits::ConvertLocation; + +#[test] +fn create_and_claim_treasury_spend() { + const ASSET_ID: u32 = 1984; + const SPEND_AMOUNT: u128 = 1_000_000; + // treasury location from a sibling parachain. + let treasury_location: MultiLocation = MultiLocation::new(1, PalletInstance(19)); + // treasury account on a sibling parachain. + let treasury_account = + asset_hub_polkadot_runtime::xcm_config::LocationToAccountId::convert_location( + &treasury_location, + ) + .unwrap(); + let asset_hub_location = MultiLocation::new(0, Parachain(AssetHubPolkadot::para_id().into())); + let root = ::RuntimeOrigin::root(); + // asset kind to be spend from the treasury. + let asset_kind = VersionedLocatableAsset::V3 { + location: asset_hub_location, + asset_id: AssetId::Concrete((PalletInstance(50), GeneralIndex(ASSET_ID.into())).into()), + }; + // treasury spend beneficiary. + let alice: AccountId = Polkadot::account_id_of(ALICE); + let bob: AccountId = Polkadot::account_id_of(BOB); + let bob_signed = ::RuntimeOrigin::signed(bob.clone()); + + AssetHubPolkadot::execute_with(|| { + type Assets = ::Assets; + + // create an asset class and mint some assets to the treasury account. + assert_ok!(>::create( + ASSET_ID, + treasury_account.clone(), + true, + SPEND_AMOUNT / 2 + )); + assert_ok!(>::mint_into(ASSET_ID, &treasury_account, SPEND_AMOUNT * 4)); + // beneficiary has zero balance. + assert_eq!(>::balance(ASSET_ID, &alice,), 0u128,); + }); + + Polkadot::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + type Treasury = ::Treasury; + type AssetRate = ::AssetRate; + + // create a conversion rate from `asset_kind` to the native currency. + assert_ok!(AssetRate::create(root.clone(), Box::new(asset_kind.clone()), 2.into())); + + // create and approve a treasury spend. + assert_ok!(Treasury::spend( + root, + Box::new(asset_kind), + SPEND_AMOUNT, + Box::new(MultiLocation::new(0, Into::<[u8; 32]>::into(alice.clone())).into()), + None, + )); + // claim the spend. + assert_ok!(Treasury::payout(bob_signed.clone(), 0)); + + assert_expected_events!( + Polkadot, + vec![ + RuntimeEvent::Treasury(pallet_treasury::Event::Paid { .. }) => {}, + ] + ); + }); + + AssetHubPolkadot::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + type Assets = ::Assets; + + // assert events triggered by xcm pay program + // 1. treasury asset transferred to spend beneficiary + // 2. response to Relay Chain treasury pallet instance sent back + // 3. XCM program completed + assert_expected_events!( + AssetHubPolkadot, + vec![ + RuntimeEvent::Assets(pallet_assets::Event::Transferred { asset_id: id, from, to, amount }) => { + id: id == &ASSET_ID, + from: from == &treasury_account, + to: to == &alice, + amount: amount == &SPEND_AMOUNT, + }, + RuntimeEvent::ParachainSystem(cumulus_pallet_parachain_system::Event::UpwardMessageSent { .. }) => {}, + RuntimeEvent::MessageQueue(pallet_message_queue::Event::Processed { success: true ,.. }) => {}, + ] + ); + // beneficiary received the assets from the treasury. + assert_eq!(>::balance(ASSET_ID, &alice,), SPEND_AMOUNT,); + }); + + Polkadot::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + type Treasury = ::Treasury; + + // check the payment status to ensure the response from the AssetHub was received. + assert_ok!(Treasury::check_status(bob_signed, 0)); + assert_expected_events!( + Polkadot, + vec![ + RuntimeEvent::Treasury(pallet_treasury::Event::SpendProcessed { .. }) => {}, + ] + ); + }); +} diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-kusama/Cargo.toml b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/Cargo.toml new file mode 100644 index 0000000000..ee4e95c369 --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/Cargo.toml @@ -0,0 +1,41 @@ +[package] +name = "bridge-hub-kusama-integration-tests" +version = "0.1.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Bridge Hub Kusama runtime integration tests with xcm-emulator" +publish = false + +[dependencies] +codec = { package = "parity-scale-codec", version = "3.4.0" } +scale-info = { version = "2.10.0", features = ["derive"] } +hex = "0.4.3" +hex-literal = "0.4.1" + +# Substrate +sp-runtime = { version = "31.0.1" } +frame-support = { version = "28.0.0" } +pallet-balances = { version = "28.0.0" } +pallet-assets = { version = "29.0.0" } +pallet-message-queue = { version = "31.0.0" } + +# Polkadot +xcm = { package = "staging-xcm", version = "7.0.0" } +pallet-xcm = { version = "7.0.0" } +xcm-executor = { package = "staging-xcm-executor", version = "7.0.3" } + +# Cumulus +emulated-integration-tests-common = { version = "3.0.0" } +parachains-common = { version = "7.0.0" } +cumulus-pallet-xcmp-queue = { version = "0.7.0" } + +# Bridges +bp-messages = { version = "0.7.0" } +pallet-bridge-messages = { version = "0.7.0" } + +# Local +bridge-hub-kusama-runtime = { path = "../../../../../system-parachains/bridge-hubs/bridge-hub-kusama" } +integration-tests-helpers = { path = "../../../helpers" } +kusama-polkadot-system-emulated-network = { path = "../../../networks/kusama-polkadot-system" } +kusama-system-emulated-network = { path = "../../../networks/kusama-system" } diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/lib.rs b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/lib.rs new file mode 100644 index 0000000000..1c7d1e1682 --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/lib.rs @@ -0,0 +1,75 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Substrate +pub use frame_support::{assert_err, assert_ok, pallet_prelude::DispatchResult}; +pub use sp_runtime::DispatchError; + +// Polkadot +pub use xcm::{ + latest::ParentThen, + prelude::{AccountId32 as AccountId32Junction, *}, + v3::{ + Error, + NetworkId::{Kusama as KusamaId, Polkadot as PolkadotId}, + }, +}; + +// Bridges +pub use bp_messages::LaneId; + +// Cumulus +pub use emulated_integration_tests_common::{ + accounts::ALICE, + impls::Inspect, + xcm_emulator::{ + assert_expected_events, bx, helpers::weight_within_threshold, Chain, Parachain as Para, + RelayChain as Relay, Test, TestArgs, TestContext, TestExt, + }, + xcm_helpers::{xcm_transact_paid_execution, xcm_transact_unpaid_execution}, + PROOF_SIZE_THRESHOLD, REF_TIME_THRESHOLD, XCM_V3, +}; +pub use integration_tests_helpers::test_parachain_is_trusted_teleporter; +pub use kusama_polkadot_system_emulated_network::{ + asset_hub_kusama_emulated_chain::{ + genesis::ED as ASSET_HUB_KUSAMA_ED, AssetHubKusamaParaPallet as AssetHubKusamaPallet, + }, + asset_hub_polkadot_emulated_chain::{ + genesis::ED as ASSET_HUB_POLKADOT_ED, AssetHubPolkadotParaPallet as AssetHubPolkadotPallet, + }, + bridge_hub_kusama_emulated_chain::{ + genesis::ED as BRIDGE_HUB_KUSAMA_ED, BridgeHubKusamaParaPallet as BridgeHubKusamaPallet, + }, + kusama_emulated_chain::{genesis::ED as KUSAMA_ED, KusamaRelayPallet as KusamaPallet}, + AssetHubKusamaPara as AssetHubKusama, AssetHubKusamaParaReceiver as AssetHubKusamaReceiver, + AssetHubKusamaParaSender as AssetHubKusamaSender, AssetHubPolkadotPara as AssetHubPolkadot, + AssetHubPolkadotParaReceiver as AssetHubPolkadotReceiver, + BridgeHubKusamaPara as BridgeHubKusama, BridgeHubKusamaParaSender as BridgeHubKusamaSender, + BridgeHubPolkadotPara as BridgeHubPolkadot, KusamaRelay as Kusama, + KusamaRelayReceiver as KusamaReceiver, KusamaRelaySender as KusamaSender, +}; +pub use kusama_system_emulated_network::{ + penpal_emulated_chain::PenpalAParaPallet as PenpalAPallet, + BridgeHubKusamaParaReceiver as BridgeHubKusamaReceiver, PenpalAPara as PenpalA, + PenpalAParaReceiver as PenpalAReceiver, PenpalAParaSender as PenpalASender, +}; +pub use parachains_common::{AccountId, Balance}; + +pub const ASSET_ID: u32 = 1; +pub const ASSET_MIN_BALANCE: u128 = 1000; +pub const ASSETS_PALLET_ID: u8 = 50; + +#[cfg(test)] +mod tests; diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/asset_transfers.rs b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/asset_transfers.rs new file mode 100644 index 0000000000..148c8b3ba9 --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/asset_transfers.rs @@ -0,0 +1,171 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::tests::*; + +fn send_asset_from_asset_hub_kusama_to_asset_hub_polkadot(id: MultiLocation, amount: u128) { + let destination = asset_hub_polkadot_location(); + + // fund the AHK's SA on BHK for paying bridge transport fees + BridgeHubKusama::fund_para_sovereign(AssetHubKusama::para_id(), 10_000_000_000_000u128); + + // set XCM versions + AssetHubKusama::force_xcm_version(destination, XCM_VERSION); + BridgeHubKusama::force_xcm_version(bridge_hub_polkadot_location(), XCM_VERSION); + + // send message over bridge + assert_ok!(send_asset_from_asset_hub_kusama(destination, (id, amount))); + assert_bridge_hub_kusama_message_accepted(true); + assert_bridge_hub_polkadot_message_received(); +} + +#[test] +fn send_ksms_from_asset_hub_kusama_to_asset_hub_polkadot() { + let ksm_at_asset_hub_kusama: MultiLocation = Parent.into(); + let ksm_at_asset_hub_polkadot = + MultiLocation { parents: 2, interior: X1(GlobalConsensus(NetworkId::Kusama)) }; + let owner: AccountId = AssetHubPolkadot::account_id_of(ALICE); + AssetHubPolkadot::force_create_foreign_asset( + ksm_at_asset_hub_polkadot, + owner, + true, + ASSET_MIN_BALANCE, + vec![], + ); + let sov_ahp_on_ahk = AssetHubKusama::sovereign_account_of_parachain_on_other_global_consensus( + NetworkId::Polkadot, + AssetHubPolkadot::para_id(), + ); + + let ksms_in_reserve_on_ahk_before = + ::account_data_of(sov_ahp_on_ahk.clone()).free; + let sender_ksms_before = + ::account_data_of(AssetHubKusamaSender::get()).free; + let receiver_ksms_before = AssetHubPolkadot::execute_with(|| { + type Assets = ::ForeignAssets; + >::balance(ksm_at_asset_hub_polkadot, &AssetHubPolkadotReceiver::get()) + }); + + let amount = ASSET_HUB_KUSAMA_ED * 1_000; + send_asset_from_asset_hub_kusama_to_asset_hub_polkadot(ksm_at_asset_hub_kusama, amount); + AssetHubPolkadot::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + assert_expected_events!( + AssetHubPolkadot, + vec![ + // issue KSMs on AHP + RuntimeEvent::ForeignAssets(pallet_assets::Event::Issued { asset_id, owner, .. }) => { + asset_id: *asset_id == ksm_at_asset_hub_kusama, + owner: *owner == AssetHubPolkadotReceiver::get(), + }, + // message processed successfully + RuntimeEvent::MessageQueue( + pallet_message_queue::Event::Processed { success: true, .. } + ) => {}, + ] + ); + }); + + let sender_ksms_after = + ::account_data_of(AssetHubKusamaSender::get()).free; + let receiver_ksms_after = AssetHubPolkadot::execute_with(|| { + type Assets = ::ForeignAssets; + >::balance(ksm_at_asset_hub_polkadot, &AssetHubPolkadotReceiver::get()) + }); + let ksms_in_reserve_on_ahk_after = + ::account_data_of(sov_ahp_on_ahk.clone()).free; + + // Sender's balance is reduced + assert!(sender_ksms_before > sender_ksms_after); + // Receiver's balance is increased + assert!(receiver_ksms_after > receiver_ksms_before); + // Reserve balance is reduced by sent amount + assert_eq!(ksms_in_reserve_on_ahk_after, ksms_in_reserve_on_ahk_before + amount); +} + +#[test] +fn send_dots_from_asset_hub_kusama_to_asset_hub_polkadot() { + let prefund_amount = 10_000_000_000_000u128; + let dot_at_asset_hub_kusama = + MultiLocation { parents: 2, interior: X1(GlobalConsensus(NetworkId::Polkadot)) }; + let owner: AccountId = AssetHubPolkadot::account_id_of(ALICE); + AssetHubKusama::force_create_foreign_asset( + dot_at_asset_hub_kusama, + owner, + true, + ASSET_MIN_BALANCE, + vec![(AssetHubKusamaSender::get(), prefund_amount)], + ); + + // fund the AHK's SA on AHP with the DOT tokens held in reserve + let sov_ahk_on_ahp = AssetHubPolkadot::sovereign_account_of_parachain_on_other_global_consensus( + NetworkId::Kusama, + AssetHubKusama::para_id(), + ); + AssetHubPolkadot::fund_accounts(vec![(sov_ahk_on_ahp.clone(), prefund_amount)]); + + let dots_in_reserve_on_ahp_before = + ::account_data_of(sov_ahk_on_ahp.clone()).free; + assert_eq!(dots_in_reserve_on_ahp_before, prefund_amount); + let sender_dots_before = AssetHubKusama::execute_with(|| { + type Assets = ::ForeignAssets; + >::balance(dot_at_asset_hub_kusama, &AssetHubKusamaSender::get()) + }); + assert_eq!(sender_dots_before, prefund_amount); + let receiver_dots_before = + ::account_data_of(AssetHubPolkadotReceiver::get()).free; + + let amount_to_send = ASSET_HUB_POLKADOT_ED * 1_000; + send_asset_from_asset_hub_kusama_to_asset_hub_polkadot(dot_at_asset_hub_kusama, amount_to_send); + AssetHubPolkadot::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + assert_expected_events!( + AssetHubPolkadot, + vec![ + // DOT is withdrawn from AHK's SA on AHP + RuntimeEvent::Balances( + pallet_balances::Event::Burned { who, amount } + ) => { + who: *who == sov_ahk_on_ahp, + amount: *amount == amount_to_send, + }, + // DOTs deposited to beneficiary + RuntimeEvent::Balances(pallet_balances::Event::Minted { who, .. }) => { + who: *who == AssetHubPolkadotReceiver::get(), + }, + // message processed successfully + RuntimeEvent::MessageQueue( + pallet_message_queue::Event::Processed { success: true, .. } + ) => {}, + ] + ); + }); + + let sender_dots_after = AssetHubKusama::execute_with(|| { + type Assets = ::ForeignAssets; + >::balance(dot_at_asset_hub_kusama, &AssetHubKusamaSender::get()) + }); + let receiver_dots_after = + ::account_data_of(AssetHubPolkadotReceiver::get()).free; + let dots_in_reserve_on_ahp_after = + ::account_data_of(sov_ahk_on_ahp).free; + + // Sender's balance is reduced + assert!(sender_dots_before > sender_dots_after); + // Receiver's balance is increased + assert!(receiver_dots_after > receiver_dots_before); + // Reserve balance is reduced by sent amount + assert_eq!(dots_in_reserve_on_ahp_after, dots_in_reserve_on_ahp_before - amount_to_send); +} diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/mod.rs b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/mod.rs new file mode 100644 index 0000000000..3e3f63297c --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/mod.rs @@ -0,0 +1,114 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::*; + +mod asset_transfers; +mod send_xcm; +mod teleport; + +pub(crate) fn asset_hub_polkadot_location() -> MultiLocation { + MultiLocation { + parents: 2, + interior: X2( + GlobalConsensus(NetworkId::Polkadot), + Parachain(AssetHubPolkadot::para_id().into()), + ), + } +} + +pub(crate) fn bridge_hub_polkadot_location() -> MultiLocation { + MultiLocation { + parents: 2, + interior: X2( + GlobalConsensus(NetworkId::Polkadot), + Parachain(BridgeHubPolkadot::para_id().into()), + ), + } +} + +pub(crate) fn send_asset_from_asset_hub_kusama( + destination: MultiLocation, + (id, amount): (MultiLocation, u128), +) -> DispatchResult { + let signed_origin = + ::RuntimeOrigin::signed(AssetHubKusamaSender::get().into()); + + let beneficiary: MultiLocation = + AccountId32Junction { network: None, id: AssetHubPolkadotReceiver::get().into() }.into(); + + let assets: MultiAssets = (id, amount).into(); + let fee_asset_item = 0; + + AssetHubKusama::execute_with(|| { + ::PolkadotXcm::limited_reserve_transfer_assets( + signed_origin, + bx!(destination.into()), + bx!(beneficiary.into()), + bx!(assets.into()), + fee_asset_item, + WeightLimit::Unlimited, + ) + }) +} + +pub(crate) fn assert_bridge_hub_kusama_message_accepted(expected_processed: bool) { + BridgeHubKusama::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + + if expected_processed { + assert_expected_events!( + BridgeHubKusama, + vec![ + // pay for bridge fees + RuntimeEvent::Balances(pallet_balances::Event::Burned { .. }) => {}, + // message exported + RuntimeEvent::BridgePolkadotMessages( + pallet_bridge_messages::Event::MessageAccepted { .. } + ) => {}, + // message processed successfully + RuntimeEvent::MessageQueue( + pallet_message_queue::Event::Processed { success: true, .. } + ) => {}, + ] + ); + } else { + assert_expected_events!( + BridgeHubKusama, + vec![ + RuntimeEvent::MessageQueue(pallet_message_queue::Event::Processed { + success: false, + .. + }) => {}, + ] + ); + } + }); +} + +pub(crate) fn assert_bridge_hub_polkadot_message_received() { + BridgeHubPolkadot::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + assert_expected_events!( + BridgeHubPolkadot, + vec![ + // message sent to destination + RuntimeEvent::XcmpQueue( + cumulus_pallet_xcmp_queue::Event::XcmpMessageSent { .. } + ) => {}, + ] + ); + }) +} diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/send_xcm.rs b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/send_xcm.rs new file mode 100644 index 0000000000..e1c64ef580 --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/send_xcm.rs @@ -0,0 +1,177 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::tests::*; + +#[test] +fn send_xcm_from_kusama_relay_to_polkadot_asset_hub_should_fail_on_not_applicable() { + // Init tests variables + // XcmPallet send arguments + let sudo_origin = ::RuntimeOrigin::root(); + let destination = Kusama::child_location_of(BridgeHubKusama::para_id()).into(); + let weight_limit = WeightLimit::Unlimited; + let check_origin = None; + + let remote_xcm = Xcm(vec![ClearOrigin]); + + let xcm = VersionedXcm::from(Xcm(vec![ + UnpaidExecution { weight_limit, check_origin }, + ExportMessage { + network: PolkadotId, + destination: X1(Parachain(AssetHubPolkadot::para_id().into())), + xcm: remote_xcm, + }, + ])); + + // Kusama Global Consensus + // Send XCM message from Relay Chain to Bridge Hub source Parachain + Kusama::execute_with(|| { + assert_ok!(::XcmPallet::send( + sudo_origin, + bx!(destination), + bx!(xcm), + )); + + type RuntimeEvent = ::RuntimeEvent; + + assert_expected_events!( + Kusama, + vec![ + RuntimeEvent::XcmPallet(pallet_xcm::Event::Sent { .. }) => {}, + ] + ); + }); + // Receive XCM message in Bridge Hub source Parachain, it should fail, because we don't have + // opened bridge/lane. + assert_bridge_hub_kusama_message_accepted(false); +} + +#[test] +fn send_xcm_through_opened_lane_with_different_xcm_version_on_hops_works() { + // Initially set only default version on all runtimes + AssetHubKusama::force_default_xcm_version(Some(xcm::v2::prelude::XCM_VERSION)); + BridgeHubKusama::force_default_xcm_version(Some(xcm::v2::prelude::XCM_VERSION)); + BridgeHubPolkadot::force_default_xcm_version(Some(xcm::v2::prelude::XCM_VERSION)); + AssetHubPolkadot::force_default_xcm_version(Some(xcm::v2::prelude::XCM_VERSION)); + + // prepare data + let destination = asset_hub_polkadot_location(); + let native_token = MultiLocation::parent(); + let amount = ASSET_HUB_KUSAMA_ED * 1_000; + + // fund the AHK's SA on BHK for paying bridge transport fees + BridgeHubKusama::fund_para_sovereign(AssetHubKusama::para_id(), 10_000_000_000_000u128); + // fund sender + AssetHubKusama::fund_accounts(vec![(AssetHubKusamaSender::get().into(), amount * 10)]); + + // send XCM from AssetHubKusama - fails - destination version not known + assert_err!( + send_asset_from_asset_hub_kusama(destination, (native_token, amount)), + DispatchError::Module(sp_runtime::ModuleError { + index: 31, + error: [1, 0, 0, 0], + message: Some("SendFailure") + }) + ); + + // set destination version + AssetHubKusama::force_xcm_version(destination, xcm::v3::prelude::XCM_VERSION); + + // TODO: remove this block, when removing `xcm:v2` + { + // send XCM from AssetHubKusama - fails - AssetHubKusama is set to the default/safe `2` + // version, which does not have the `ExportMessage` instruction. If the default `2` is + // changed to `3`, then this assert can go away" + assert_err!( + send_asset_from_asset_hub_kusama(destination, (native_token, amount)), + DispatchError::Module(sp_runtime::ModuleError { + index: 31, + error: [1, 0, 0, 0], + message: Some("SendFailure") + }) + ); + + // set exact version for BridgeHubPolkadot to `2` without `ExportMessage` instruction + AssetHubKusama::force_xcm_version( + ParentThen(Parachain(BridgeHubKusama::para_id().into()).into()).into(), + xcm::v2::prelude::XCM_VERSION, + ); + // send XCM from AssetHubKusama - fails - `ExportMessage` is not in `2` + assert_err!( + send_asset_from_asset_hub_kusama(destination, (native_token, amount)), + DispatchError::Module(sp_runtime::ModuleError { + index: 31, + error: [1, 0, 0, 0], + message: Some("SendFailure") + }) + ); + } + + // set version with `ExportMessage` for BridgeHubKusama + AssetHubKusama::force_xcm_version( + ParentThen(Parachain(BridgeHubKusama::para_id().into()).into()).into(), + xcm::v3::prelude::XCM_VERSION, + ); + // send XCM from AssetHubKusama - ok + assert_ok!(send_asset_from_asset_hub_kusama(destination, (native_token, amount))); + + // `ExportMessage` on local BridgeHub - fails - remote BridgeHub version not known + assert_bridge_hub_kusama_message_accepted(false); + + // set version for remote BridgeHub on BridgeHubKusama + BridgeHubKusama::force_xcm_version( + bridge_hub_polkadot_location(), + xcm::v3::prelude::XCM_VERSION, + ); + // set version for AssetHubPolkadot on BridgeHubPolkadot + BridgeHubPolkadot::force_xcm_version( + ParentThen(Parachain(AssetHubPolkadot::para_id().into()).into()).into(), + xcm::v3::prelude::XCM_VERSION, + ); + + // send XCM from AssetHubKusama - ok + assert_ok!(send_asset_from_asset_hub_kusama(destination, (native_token, amount))); + assert_bridge_hub_kusama_message_accepted(true); + assert_bridge_hub_polkadot_message_received(); + // message delivered and processed at destination + AssetHubPolkadot::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + assert_expected_events!( + AssetHubPolkadot, + vec![ + // message processed with failure, but for this scenario it is ok, important is that was delivered + RuntimeEvent::MessageQueue( + pallet_message_queue::Event::Processed { success: false, .. } + ) => {}, + ] + ); + }); + + // TODO: remove this block, when removing `xcm:v2` + { + // set `2` version for remote BridgeHub on BridgeHubKusama, which does not have + // `UniversalOrigin` and `DescendOrigin` + BridgeHubKusama::force_xcm_version( + bridge_hub_polkadot_location(), + xcm::v2::prelude::XCM_VERSION, + ); + + // send XCM from AssetHubKusama - ok + assert_ok!(send_asset_from_asset_hub_kusama(destination, (native_token, amount))); + // message is not accepted on the local BridgeHub (`DestinationUnsupported`) because we + // cannot add `UniversalOrigin` and `DescendOrigin` + assert_bridge_hub_kusama_message_accepted(false); + } +} diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/teleport.rs b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/teleport.rs new file mode 100644 index 0000000000..eac53a7ed2 --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-kusama/src/tests/teleport.rs @@ -0,0 +1,30 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::*; +use bridge_hub_kusama_runtime::xcm_config::XcmConfig; + +#[test] +fn teleport_to_other_system_parachains_works() { + let amount = BRIDGE_HUB_KUSAMA_ED * 100; + let native_asset: MultiAssets = (Parent, amount).into(); + + test_parachain_is_trusted_teleporter!( + BridgeHubKusama, // Origin + XcmConfig, // XCM configuration + vec![AssetHubKusama], // Destinations + (native_asset, amount) + ); +} diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/Cargo.toml b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/Cargo.toml new file mode 100644 index 0000000000..98b2fc0fd1 --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "bridge-hub-polkadot-integration-tests" +version = "0.1.0" +authors.workspace = true +edition.workspace = true +license = "Apache-2.0" +description = "Bridge Hub Polkadot runtime integration tests with xcm-emulator" +publish = false + +[dependencies] +codec = { package = "parity-scale-codec", version = "3.4.0" } + +# Substrate +sp-runtime = { version = "31.0.1" } +frame-support = { version = "28.0.0" } +pallet-balances = { version = "28.0.0" } +pallet-assets = { version = "29.0.0" } +pallet-message-queue = { version = "31.0.0" } + +# Polkadot +xcm = { package = "staging-xcm", version = "7.0.0" } +pallet-xcm = { version = "7.0.0" } +xcm-executor = { package = "staging-xcm-executor", version = "7.0.3" } + +# Cumulus +emulated-integration-tests-common = { version = "3.0.0" } +parachains-common = { version = "7.0.0" } +cumulus-pallet-xcmp-queue = { version = "0.7.0" } + +# Bridges +bp-messages = { version = "0.7.0" } +pallet-bridge-messages = { version = "0.7.0" } + +# Runtimes +bridge-hub-polkadot-runtime = { path = "../../../../../system-parachains/bridge-hubs/bridge-hub-polkadot" } +integration-tests-helpers = { path = "../../../helpers" } +kusama-polkadot-system-emulated-network = { path = "../../../networks/kusama-polkadot-system" } diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/lib.rs b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/lib.rs new file mode 100644 index 0000000000..2919efed42 --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/lib.rs @@ -0,0 +1,71 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Substrate +pub use frame_support::{assert_err, assert_ok, pallet_prelude::DispatchResult}; +pub use sp_runtime::DispatchError; + +// Polkadot +pub use xcm::{ + latest::ParentThen, + prelude::{AccountId32 as AccountId32Junction, *}, + v3::{ + Error, + NetworkId::{Kusama as KusamaId, Polkadot as PolkadotId}, + }, +}; + +// Bridges +pub use bp_messages::LaneId; + +// Cumulus +pub use emulated_integration_tests_common::{ + accounts::ALICE, + impls::Inspect, + xcm_emulator::{ + assert_expected_events, bx, helpers::weight_within_threshold, Chain, Parachain as Para, + RelayChain as Relay, Test, TestArgs, TestContext, TestExt, + }, + xcm_helpers::{xcm_transact_paid_execution, xcm_transact_unpaid_execution}, + PROOF_SIZE_THRESHOLD, REF_TIME_THRESHOLD, XCM_V3, +}; +pub use integration_tests_helpers::test_parachain_is_trusted_teleporter; +pub use kusama_polkadot_system_emulated_network::{ + asset_hub_kusama_emulated_chain::{ + genesis::ED as ASSET_HUB_KUSAMA_ED, AssetHubKusamaParaPallet as AssetHubKusamaPallet, + }, + asset_hub_polkadot_emulated_chain::{ + genesis::ED as ASSET_HUB_POLKADOT_ED, AssetHubPolkadotParaPallet as AssetHubPolkadotPallet, + }, + bridge_hub_polkadot_emulated_chain::{ + genesis::ED as BRIDGE_HUB_POLKADOT_ED, + BridgeHubPolkadotParaPallet as BridgeHubPolkadotPallet, + }, + polkadot_emulated_chain::PolkadotRelayPallet as PolkadotPallet, + AssetHubKusamaPara as AssetHubKusama, AssetHubKusamaParaReceiver as AssetHubKusamaReceiver, + AssetHubPolkadotPara as AssetHubPolkadot, + AssetHubPolkadotParaReceiver as AssetHubPolkadotReceiver, + AssetHubPolkadotParaSender as AssetHubPolkadotSender, BridgeHubKusamaPara as BridgeHubKusama, + BridgeHubPolkadotPara as BridgeHubPolkadot, + BridgeHubPolkadotParaSender as BridgeHubPolkadotSender, PolkadotRelay as Polkadot, +}; +pub use parachains_common::{AccountId, Balance}; + +pub const ASSET_ID: u32 = 1; +pub const ASSET_MIN_BALANCE: u128 = 1000; +pub const ASSETS_PALLET_ID: u8 = 50; + +#[cfg(test)] +mod tests; diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/asset_transfers.rs b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/asset_transfers.rs new file mode 100644 index 0000000000..8c653c0900 --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/asset_transfers.rs @@ -0,0 +1,173 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +use crate::tests::*; + +fn send_asset_from_asset_hub_polkadot_to_asset_hub_kusama(id: MultiLocation, amount: u128) { + let destination = asset_hub_kusama_location(); + + // fund the AHP's SA on BHP for paying bridge transport fees + BridgeHubPolkadot::fund_para_sovereign(AssetHubPolkadot::para_id(), 10_000_000_000_000u128); + + // set XCM versions + AssetHubPolkadot::force_xcm_version(destination, XCM_VERSION); + BridgeHubPolkadot::force_xcm_version(bridge_hub_kusama_location(), XCM_VERSION); + + // send message over bridge + assert_ok!(send_asset_from_asset_hub_polkadot(destination, (id, amount))); + assert_bridge_hub_polkadot_message_accepted(true); + assert_bridge_hub_kusama_message_received(); +} + +#[test] +fn send_dots_from_asset_hub_polkadot_to_asset_hub_kusama() { + let dot_at_asset_hub_polkadot: MultiLocation = Parent.into(); + let dot_at_asset_hub_kusama = + MultiLocation { parents: 2, interior: X1(GlobalConsensus(NetworkId::Polkadot)) }; + let owner: AccountId = AssetHubKusama::account_id_of(ALICE); + AssetHubKusama::force_create_foreign_asset( + dot_at_asset_hub_kusama, + owner, + true, + ASSET_MIN_BALANCE, + vec![], + ); + let sov_ahk_on_ahp = AssetHubPolkadot::sovereign_account_of_parachain_on_other_global_consensus( + NetworkId::Kusama, + AssetHubKusama::para_id(), + ); + + let dots_in_reserve_on_ahp_before = + ::account_data_of(sov_ahk_on_ahp.clone()).free; + let sender_dots_before = + ::account_data_of(AssetHubPolkadotSender::get()).free; + let receiver_dots_before = AssetHubKusama::execute_with(|| { + type Assets = ::ForeignAssets; + >::balance(dot_at_asset_hub_kusama, &AssetHubKusamaReceiver::get()) + }); + + let amount = ASSET_HUB_POLKADOT_ED * 1_000; + send_asset_from_asset_hub_polkadot_to_asset_hub_kusama(dot_at_asset_hub_polkadot, amount); + AssetHubKusama::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + assert_expected_events!( + AssetHubKusama, + vec![ + // issue DOTs on AHK + RuntimeEvent::ForeignAssets(pallet_assets::Event::Issued { asset_id, owner, .. }) => { + asset_id: *asset_id == dot_at_asset_hub_kusama, + owner: *owner == AssetHubKusamaReceiver::get(), + }, + // message processed successfully + RuntimeEvent::MessageQueue( + pallet_message_queue::Event::Processed { success: true, .. } + ) => {}, + ] + ); + }); + + let sender_dots_after = + ::account_data_of(AssetHubPolkadotSender::get()).free; + let receiver_dots_after = AssetHubKusama::execute_with(|| { + type Assets = ::ForeignAssets; + >::balance(dot_at_asset_hub_kusama, &AssetHubKusamaReceiver::get()) + }); + let dots_in_reserve_on_ahp_after = + ::account_data_of(sov_ahk_on_ahp).free; + + // Sender's balance is reduced + assert!(sender_dots_before > sender_dots_after); + // Receiver's balance is increased + assert!(receiver_dots_after > receiver_dots_before); + // Reserve balance is increased by sent amount + assert_eq!(dots_in_reserve_on_ahp_after, dots_in_reserve_on_ahp_before + amount); +} + +#[test] +fn send_ksms_from_asset_hub_polkadot_to_asset_hub_kusama() { + let prefund_amount = 10_000_000_000_000u128; + let ksm_at_asset_hub_polkadot = + MultiLocation { parents: 2, interior: X1(GlobalConsensus(NetworkId::Kusama)) }; + let owner: AccountId = AssetHubPolkadot::account_id_of(ALICE); + AssetHubPolkadot::force_create_foreign_asset( + ksm_at_asset_hub_polkadot, + owner, + true, + ASSET_MIN_BALANCE, + vec![(AssetHubPolkadotSender::get(), prefund_amount)], + ); + + // fund the AHP's SA on AHK with the KSM tokens held in reserve + let sov_ahp_on_ahk = AssetHubKusama::sovereign_account_of_parachain_on_other_global_consensus( + NetworkId::Polkadot, + AssetHubPolkadot::para_id(), + ); + AssetHubKusama::fund_accounts(vec![(sov_ahp_on_ahk.clone(), prefund_amount)]); + + let ksms_in_reserve_on_ahk_before = + ::account_data_of(sov_ahp_on_ahk.clone()).free; + assert_eq!(ksms_in_reserve_on_ahk_before, prefund_amount); + let sender_ksms_before = AssetHubPolkadot::execute_with(|| { + type Assets = ::ForeignAssets; + >::balance(ksm_at_asset_hub_polkadot, &AssetHubPolkadotSender::get()) + }); + assert_eq!(sender_ksms_before, prefund_amount); + let receiver_ksms_before = + ::account_data_of(AssetHubKusamaReceiver::get()).free; + + let amount_to_send = ASSET_HUB_KUSAMA_ED * 1_000; + send_asset_from_asset_hub_polkadot_to_asset_hub_kusama( + ksm_at_asset_hub_polkadot, + amount_to_send, + ); + AssetHubKusama::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + assert_expected_events!( + AssetHubKusama, + vec![ + // KSM is withdrawn from AHP's SA on AHK + RuntimeEvent::Balances( + pallet_balances::Event::Burned { who, amount } + ) => { + who: *who == sov_ahp_on_ahk, + amount: *amount == amount_to_send, + }, + // KSMs deposited to beneficiary + RuntimeEvent::Balances(pallet_balances::Event::Minted { who, .. }) => { + who: *who == AssetHubKusamaReceiver::get(), + }, + // message processed successfully + RuntimeEvent::MessageQueue( + pallet_message_queue::Event::Processed { success: true, .. } + ) => {}, + ] + ); + }); + + let sender_ksms_after = AssetHubPolkadot::execute_with(|| { + type Assets = ::ForeignAssets; + >::balance(ksm_at_asset_hub_polkadot, &AssetHubPolkadotSender::get()) + }); + let receiver_ksms_after = + ::account_data_of(AssetHubKusamaReceiver::get()).free; + let ksms_in_reserve_on_ahk_after = + ::account_data_of(sov_ahp_on_ahk.clone()).free; + + // Sender's balance is reduced + assert!(sender_ksms_before > sender_ksms_after); + // Receiver's balance is increased + assert!(receiver_ksms_after > receiver_ksms_before); + // Reserve balance is reduced by sent amount + assert_eq!(ksms_in_reserve_on_ahk_after, ksms_in_reserve_on_ahk_before - amount_to_send); +} diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/mod.rs b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/mod.rs new file mode 100644 index 0000000000..e53c1ff66a --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/mod.rs @@ -0,0 +1,114 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::*; + +mod asset_transfers; +mod send_xcm; +mod teleport; + +pub(crate) fn asset_hub_kusama_location() -> MultiLocation { + MultiLocation { + parents: 2, + interior: X2( + GlobalConsensus(NetworkId::Kusama), + Parachain(AssetHubKusama::para_id().into()), + ), + } +} + +pub(crate) fn bridge_hub_kusama_location() -> MultiLocation { + MultiLocation { + parents: 2, + interior: X2( + GlobalConsensus(NetworkId::Kusama), + Parachain(BridgeHubKusama::para_id().into()), + ), + } +} + +pub(crate) fn send_asset_from_asset_hub_polkadot( + destination: MultiLocation, + (id, amount): (MultiLocation, u128), +) -> DispatchResult { + let signed_origin = + ::RuntimeOrigin::signed(AssetHubPolkadotSender::get().into()); + + let beneficiary: MultiLocation = + AccountId32Junction { network: None, id: AssetHubKusamaReceiver::get().into() }.into(); + + let assets: MultiAssets = (id, amount).into(); + let fee_asset_item = 0; + + AssetHubPolkadot::execute_with(|| { + ::PolkadotXcm::limited_reserve_transfer_assets( + signed_origin, + bx!(destination.into()), + bx!(beneficiary.into()), + bx!(assets.into()), + fee_asset_item, + WeightLimit::Unlimited, + ) + }) +} + +pub(crate) fn assert_bridge_hub_polkadot_message_accepted(expected_processed: bool) { + BridgeHubPolkadot::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + + if expected_processed { + assert_expected_events!( + BridgeHubPolkadot, + vec![ + // pay for bridge fees + RuntimeEvent::Balances(pallet_balances::Event::Burned { .. }) => {}, + // message exported + RuntimeEvent::BridgeKusamaMessages( + pallet_bridge_messages::Event::MessageAccepted { .. } + ) => {}, + // message processed successfully + RuntimeEvent::MessageQueue( + pallet_message_queue::Event::Processed { success: true, .. } + ) => {}, + ] + ); + } else { + assert_expected_events!( + BridgeHubPolkadot, + vec![ + RuntimeEvent::MessageQueue(pallet_message_queue::Event::Processed { + success: false, + .. + }) => {}, + ] + ); + } + }); +} + +pub(crate) fn assert_bridge_hub_kusama_message_received() { + BridgeHubKusama::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + assert_expected_events!( + BridgeHubKusama, + vec![ + // message sent to destination + RuntimeEvent::XcmpQueue( + cumulus_pallet_xcmp_queue::Event::XcmpMessageSent { .. } + ) => {}, + ] + ); + }) +} diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/send_xcm.rs b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/send_xcm.rs new file mode 100644 index 0000000000..ef30c0b758 --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/send_xcm.rs @@ -0,0 +1,177 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::tests::*; + +#[test] +fn send_xcm_from_polkadot_relay_to_kusama_asset_hub_should_fail_on_not_applicable() { + // Init tests variables + // XcmPallet send arguments + let sudo_origin = ::RuntimeOrigin::root(); + let destination = Polkadot::child_location_of(BridgeHubPolkadot::para_id()).into(); + let weight_limit = WeightLimit::Unlimited; + let check_origin = None; + + let remote_xcm = Xcm(vec![ClearOrigin]); + + let xcm = VersionedXcm::from(Xcm(vec![ + UnpaidExecution { weight_limit, check_origin }, + ExportMessage { + network: KusamaId, + destination: X1(Parachain(AssetHubKusama::para_id().into())), + xcm: remote_xcm, + }, + ])); + + // Polkadot Global Consensus + // Send XCM message from Relay Chain to Bridge Hub source Parachain + Polkadot::execute_with(|| { + assert_ok!(::XcmPallet::send( + sudo_origin, + bx!(destination), + bx!(xcm), + )); + + type RuntimeEvent = ::RuntimeEvent; + + assert_expected_events!( + Polkadot, + vec![ + RuntimeEvent::XcmPallet(pallet_xcm::Event::Sent { .. }) => {}, + ] + ); + }); + // Receive XCM message in Bridge Hub source Parachain, it should fail, because we don't have + // opened bridge/lane. + assert_bridge_hub_polkadot_message_accepted(false); +} + +#[test] +fn send_xcm_through_opened_lane_with_different_xcm_version_on_hops_works() { + // Initially set only default version on all runtimes + AssetHubKusama::force_default_xcm_version(Some(xcm::v2::prelude::XCM_VERSION)); + BridgeHubKusama::force_default_xcm_version(Some(xcm::v2::prelude::XCM_VERSION)); + BridgeHubPolkadot::force_default_xcm_version(Some(xcm::v2::prelude::XCM_VERSION)); + AssetHubPolkadot::force_default_xcm_version(Some(xcm::v2::prelude::XCM_VERSION)); + + // prepare data + let destination = asset_hub_kusama_location(); + let native_token = MultiLocation::parent(); + let amount = ASSET_HUB_POLKADOT_ED * 1_000; + + // fund the AHK's SA on BHK for paying bridge transport fees + BridgeHubPolkadot::fund_para_sovereign(AssetHubPolkadot::para_id(), 10_000_000_000_000u128); + // fund sender + AssetHubPolkadot::fund_accounts(vec![(AssetHubPolkadotSender::get().into(), amount * 10)]); + + // send XCM from AssetHubPolkadot - fails - destination version not known + assert_err!( + send_asset_from_asset_hub_polkadot(destination, (native_token, amount)), + DispatchError::Module(sp_runtime::ModuleError { + index: 31, + error: [1, 0, 0, 0], + message: Some("SendFailure") + }) + ); + + // set destination version + AssetHubPolkadot::force_xcm_version(destination, xcm::v3::prelude::XCM_VERSION); + + // TODO: remove this block, when removing `xcm:v2` + { + // send XCM from AssetHubKusama - fails - AssetHubKusama is set to the default/safe `2` + // version, which does not have the `ExportMessage` instruction. If the default `2` is + // changed to `3`, then this assert can go away" + assert_err!( + send_asset_from_asset_hub_polkadot(destination, (native_token, amount)), + DispatchError::Module(sp_runtime::ModuleError { + index: 31, + error: [1, 0, 0, 0], + message: Some("SendFailure") + }) + ); + + // set exact version for BridgeHubPolkadot to `2` without `ExportMessage` instruction + AssetHubPolkadot::force_xcm_version( + ParentThen(Parachain(BridgeHubPolkadot::para_id().into()).into()).into(), + xcm::v2::prelude::XCM_VERSION, + ); + // send XCM from AssetHubPolkadot - fails - `ExportMessage` is not in `2` + assert_err!( + send_asset_from_asset_hub_polkadot(destination, (native_token, amount)), + DispatchError::Module(sp_runtime::ModuleError { + index: 31, + error: [1, 0, 0, 0], + message: Some("SendFailure") + }) + ); + } + + // set version with `ExportMessage` for BridgeHubPolkadot + AssetHubPolkadot::force_xcm_version( + ParentThen(Parachain(BridgeHubPolkadot::para_id().into()).into()).into(), + xcm::v3::prelude::XCM_VERSION, + ); + // send XCM from AssetHubPolkadot - ok + assert_ok!(send_asset_from_asset_hub_polkadot(destination, (native_token, amount))); + + // `ExportMessage` on local BridgeHub - fails - remote BridgeHub version not known + assert_bridge_hub_polkadot_message_accepted(false); + + // set version for remote BridgeHub on BridgeHubPolkadot + BridgeHubPolkadot::force_xcm_version( + bridge_hub_kusama_location(), + xcm::v3::prelude::XCM_VERSION, + ); + // set version for AssetHubKusama on BridgeHubKusama + BridgeHubKusama::force_xcm_version( + ParentThen(Parachain(AssetHubKusama::para_id().into()).into()).into(), + xcm::v3::prelude::XCM_VERSION, + ); + + // send XCM from AssetHubPolkadot - ok + assert_ok!(send_asset_from_asset_hub_polkadot(destination, (native_token, amount))); + assert_bridge_hub_polkadot_message_accepted(true); + assert_bridge_hub_kusama_message_received(); + // message delivered and processed at destination + AssetHubKusama::execute_with(|| { + type RuntimeEvent = ::RuntimeEvent; + assert_expected_events!( + AssetHubKusama, + vec![ + // message processed with failure, but for this scenario it is ok, important is that was delivered + RuntimeEvent::MessageQueue( + pallet_message_queue::Event::Processed { success: false, .. } + ) => {}, + ] + ); + }); + + // TODO: remove this block, when removing `xcm:v2` + { + // set `2` version for remote BridgeHub on BridgeHubKusama, which does not have + // `UniversalOrigin` and `DescendOrigin` + BridgeHubPolkadot::force_xcm_version( + bridge_hub_kusama_location(), + xcm::v2::prelude::XCM_VERSION, + ); + + // send XCM from AssetHubPolkadot - ok + assert_ok!(send_asset_from_asset_hub_polkadot(destination, (native_token, amount))); + // message is not accepted on the local BridgeHub (`DestinationUnsupported`) because we + // cannot add `UniversalOrigin` and `DescendOrigin` + assert_bridge_hub_polkadot_message_accepted(false); + } +} diff --git a/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/teleport.rs b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/teleport.rs new file mode 100644 index 0000000000..eb915c3110 --- /dev/null +++ b/integration-tests/emulated/tests/bridges/bridge-hub-polkadot/src/tests/teleport.rs @@ -0,0 +1,30 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::*; +use bridge_hub_polkadot_runtime::xcm_config::XcmConfig; + +#[test] +fn teleport_to_other_system_parachains_works() { + let amount = BRIDGE_HUB_POLKADOT_ED * 100; + let native_asset: MultiAssets = (Parent, amount).into(); + + test_parachain_is_trusted_teleporter!( + BridgeHubPolkadot, // Origin + XcmConfig, // XCM configuration + vec![AssetHubPolkadot], // Destinations + (native_asset, amount) + ); +} diff --git a/relay/kusama/Cargo.toml b/relay/kusama/Cargo.toml index 2aa26d106b..87eee79a1b 100644 --- a/relay/kusama/Cargo.toml +++ b/relay/kusama/Cargo.toml @@ -9,125 +9,113 @@ repository.workspace = true version.workspace = true [dependencies] -bitvec = { version = "1.0.1", default-features = false, features = ["alloc"] } parity-scale-codec = { version = "3.6.9", default-features = false, features = ["derive", "max-encoded-len"] } scale-info = { version = "2.10.0", default-features = false, features = ["derive"] } log = { version = "0.4.20", default-features = false } -rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.195", default-features = false } -serde_derive = { version = "1.0.195", optional = true } -static_assertions = "1.1.0" -authority-discovery-primitives = { package = "sp-authority-discovery", default-features = false , version = "25.0.0" } -babe-primitives = { package = "sp-consensus-babe", default-features = false , version = "0.31.0" } -beefy-primitives = { package = "sp-consensus-beefy", default-features = false , version = "12.0.0" } -binary-merkle-tree = { default-features = false , version = "12.0.0" } +authority-discovery-primitives = { package = "sp-authority-discovery", default-features = false , version = "26.0.0" } +babe-primitives = { package = "sp-consensus-babe", default-features = false , version = "0.32.0" } +beefy-primitives = { package = "sp-consensus-beefy", default-features = false , version = "13.0.0" } +binary-merkle-tree = { default-features = false , version = "13.0.0" } kusama-runtime-constants = { package = "kusama-runtime-constants", path = "constants", default-features = false } -sp-api = { default-features = false , version = "25.0.0" } -inherents = { package = "sp-inherents", default-features = false , version = "25.0.0" } -offchain-primitives = { package = "sp-offchain", default-features = false , version = "25.0.0" } -sp-std = { package = "sp-std", default-features = false , version = "13.0.0" } -sp-application-crypto = { default-features = false , version = "29.0.0" } -sp-arithmetic = { default-features = false , version = "22.0.0" } -sp-genesis-builder = { default-features = false , version = "0.6.0" } -sp-io = { default-features = false , version = "29.0.0" } -sp-mmr-primitives = { default-features = false , version = "25.0.0" } -sp-runtime = { default-features = false , version = "30.0.1" } -sp-staking = { default-features = false , version = "25.0.0" } -sp-core = { default-features = false , version = "27.0.0" } -sp-session = { default-features = false , version = "26.0.0" } -sp-storage = { default-features = false , version = "18.0.0" } -sp-version = { default-features = false , version = "28.0.0" } -tx-pool-api = { package = "sp-transaction-pool", default-features = false , version = "25.0.0" } -block-builder-api = { package = "sp-block-builder", default-features = false , version = "25.0.0" } -sp-npos-elections = { default-features = false , version = "25.0.0" } +sp-api = { default-features = false , version = "26.0.0" } +inherents = { package = "sp-inherents", default-features = false , version = "26.0.0" } +offchain-primitives = { package = "sp-offchain", default-features = false , version = "26.0.0" } +sp-std = { package = "sp-std", default-features = false , version = "14.0.0" } +sp-arithmetic = { default-features = false , version = "23.0.0" } +sp-genesis-builder = { default-features = false , version = "0.7.0" } +sp-io = { default-features = false , version = "30.0.0" } +sp-runtime = { default-features = false , version = "31.0.1" } +sp-staking = { default-features = false , version = "26.0.0" } +sp-core = { default-features = false , version = "28.0.0" } +sp-session = { default-features = false , version = "27.0.0" } +sp-storage = { default-features = false , version = "19.0.0" } +sp-version = { default-features = false , version = "29.0.0" } +tx-pool-api = { package = "sp-transaction-pool", default-features = false , version = "26.0.0" } +block-builder-api = { package = "sp-block-builder", default-features = false , version = "26.0.0" } +sp-npos-elections = { default-features = false , version = "26.0.0" } -pallet-asset-rate = { default-features = false , version = "6.0.0" } -pallet-authority-discovery = { default-features = false , version = "27.0.0" } -pallet-authorship = { default-features = false , version = "27.0.0" } -pallet-babe = { default-features = false , version = "27.0.0" } -pallet-bags-list = { default-features = false , version = "26.0.0" } -pallet-balances = { default-features = false , version = "27.0.0" } -pallet-beefy = { default-features = false , version = "27.0.0" } -pallet-beefy-mmr = { default-features = false , version = "27.0.0" } -pallet-bounties = { default-features = false , version = "26.0.0" } -pallet-child-bounties = { default-features = false , version = "26.0.0" } -pallet-transaction-payment = { default-features = false , version = "27.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false , version = "27.0.0" } -pallet-nomination-pools-runtime-api = { default-features = false , version = "22.0.0" } -pallet-collective = { default-features = false , version = "27.0.0" } -pallet-conviction-voting = { default-features = false , version = "27.0.0" } -pallet-democracy = { default-features = false , version = "27.0.0" } -pallet-elections-phragmen = { default-features = false , version = "28.0.0" } -pallet-election-provider-multi-phase = { default-features = false , version = "26.0.0" } -pallet-fast-unstake = { default-features = false , version = "26.0.0" } -frame-executive = { default-features = false , version = "27.0.0" } -pallet-grandpa = { default-features = false , version = "27.0.0" } -pallet-nis = { default-features = false , version = "27.0.0" } -pallet-identity = { default-features = false , version = "27.0.0" } -pallet-im-online = { default-features = false , version = "26.0.0" } -pallet-indices = { default-features = false , version = "27.0.0" } -pallet-membership = { default-features = false , version = "27.0.0" } -pallet-message-queue = { default-features = false , version = "30.0.0" } -pallet-mmr = { default-features = false , version = "26.0.0" } -pallet-multisig = { default-features = false , version = "27.0.0" } -pallet-nomination-pools = { default-features = false , version = "24.0.2" } -pallet-offences = { default-features = false , version = "26.0.0" } -pallet-preimage = { default-features = false , version = "27.0.0" } -pallet-proxy = { default-features = false , version = "27.0.0" } -pallet-ranked-collective = { default-features = false , version = "27.0.0" } -pallet-recovery = { default-features = false , version = "27.0.0" } -pallet-referenda = { default-features = false , version = "27.0.0" } -pallet-scheduler = { default-features = false , version = "28.0.0" } -pallet-session = { default-features = false , version = "27.0.0" } -pallet-society = { default-features = false, version = "27.0.0" } -frame-support = { default-features = false , version = "27.0.0" } -pallet-staking = { default-features = false , version = "27.0.0" } -pallet-state-trie-migration = { default-features = false , version = "28.0.0" } -pallet-staking-runtime-api = { default-features = false , version = "13.0.0" } -frame-system = { default-features = false , version = "27.0.0" } -frame-system-rpc-runtime-api = { default-features = false , version = "25.0.0" } -pallet-timestamp = { default-features = false , version = "26.0.0" } -pallet-tips = { default-features = false , version = "26.0.0" } -pallet-treasury = { default-features = false , version = "26.0.0" } -pallet-utility = { default-features = false , version = "27.0.0" } -pallet-vesting = { default-features = false , version = "27.0.0" } -pallet-whitelist = { default-features = false , version = "26.0.0" } -pallet-xcm = { default-features = false , version = "6.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "6.0.2" } -frame-election-provider-support = { default-features = false , version = "27.0.0" } +pallet-asset-rate = { default-features = false , version = "7.0.0" } +pallet-authority-discovery = { default-features = false , version = "28.0.0" } +pallet-authorship = { default-features = false , version = "28.0.0" } +pallet-babe = { default-features = false , version = "28.0.0" } +pallet-bags-list = { default-features = false , version = "27.0.0" } +pallet-balances = { default-features = false , version = "28.0.0" } +pallet-beefy = { default-features = false , version = "28.0.0" } +pallet-beefy-mmr = { default-features = false , version = "28.0.0" } +pallet-bounties = { default-features = false , version = "27.0.0" } +pallet-child-bounties = { default-features = false , version = "27.0.0" } +pallet-transaction-payment = { default-features = false , version = "28.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false , version = "28.0.0" } +pallet-nomination-pools-runtime-api = { default-features = false , version = "23.0.0" } +pallet-conviction-voting = { default-features = false , version = "28.0.0" } +pallet-election-provider-multi-phase = { default-features = false , version = "27.0.0" } +pallet-fast-unstake = { default-features = false , version = "27.0.0" } +frame-executive = { default-features = false , version = "28.0.0" } +pallet-grandpa = { default-features = false , version = "28.0.0" } +pallet-nis = { default-features = false , version = "28.0.0" } +pallet-identity = { default-features = false , version = "28.0.0" } +pallet-im-online = { default-features = false , version = "27.0.0" } +pallet-indices = { default-features = false , version = "28.0.0" } +pallet-message-queue = { default-features = false , version = "31.0.0" } +pallet-mmr = { default-features = false , version = "27.0.0" } +pallet-multisig = { default-features = false , version = "28.0.0" } +pallet-nomination-pools = { default-features = false , version = "25.0.3" } +pallet-offences = { default-features = false , version = "27.0.0" } +pallet-preimage = { default-features = false , version = "28.0.0" } +pallet-proxy = { default-features = false , version = "28.0.0" } +pallet-ranked-collective = { default-features = false , version = "28.0.0" } +pallet-recovery = { default-features = false , version = "28.0.0" } +pallet-referenda = { default-features = false , version = "28.0.0" } +pallet-scheduler = { default-features = false , version = "29.0.0" } +pallet-session = { default-features = false , version = "28.0.0" } +pallet-society = { default-features = false, version = "28.0.0" } +frame-support = { default-features = false, features = [ "tuples-96" ] , version = "28.0.0" } +pallet-staking = { default-features = false , version = "28.0.0" } +pallet-state-trie-migration = { default-features = false , version = "29.0.0" } +pallet-staking-runtime-api = { default-features = false , version = "14.0.0" } +frame-system = { default-features = false , version = "28.0.0" } +frame-system-rpc-runtime-api = { default-features = false , version = "26.0.0" } +pallet-timestamp = { default-features = false , version = "27.0.0" } +pallet-treasury = { default-features = false , version = "27.0.0" } +pallet-utility = { default-features = false , version = "28.0.0" } +pallet-vesting = { default-features = false , version = "28.0.0" } +pallet-whitelist = { default-features = false , version = "27.0.0" } +pallet-xcm = { default-features = false , version = "7.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "7.0.4" } +frame-election-provider-support = { default-features = false , version = "28.0.0" } -frame-benchmarking = { default-features = false, optional = true , version = "27.0.0" } -frame-try-runtime = { default-features = false, optional = true , version = "0.33.0" } -pallet-offences-benchmarking = { default-features = false, optional = true , version = "27.0.0" } -pallet-session-benchmarking = { default-features = false, optional = true , version = "27.0.0" } -pallet-nomination-pools-benchmarking = { default-features = false, optional = true , version = "25.0.0" } -frame-system-benchmarking = { default-features = false, optional = true , version = "27.0.0" } -pallet-election-provider-support-benchmarking = { default-features = false, optional = true , version = "26.0.0" } +frame-benchmarking = { default-features = false, optional = true , version = "28.0.0" } +frame-try-runtime = { default-features = false, optional = true , version = "0.34.0" } +pallet-offences-benchmarking = { default-features = false, optional = true , version = "28.0.0" } +pallet-session-benchmarking = { default-features = false, optional = true , version = "28.0.0" } +pallet-nomination-pools-benchmarking = { default-features = false, optional = true , version = "26.0.0" } +frame-system-benchmarking = { default-features = false, optional = true , version = "28.0.0" } +pallet-election-provider-support-benchmarking = { default-features = false, optional = true , version = "27.0.0" } hex-literal = "0.4.1" -runtime-common = { package = "polkadot-runtime-common", default-features = false, version = "6.0.0" } -runtime-parachains = { package = "polkadot-runtime-parachains", default-features = false , version = "6.0.0" } -primitives = { package = "polkadot-primitives", default-features = false , version = "6.0.0" } +runtime-common = { package = "polkadot-runtime-common", default-features = false, version = "7.0.0" } +runtime-parachains = { package = "polkadot-runtime-parachains", default-features = false , version = "7.0.0" } +primitives = { package = "polkadot-primitives", default-features = false , version = "7.0.0" } -xcm = { package = "staging-xcm", default-features = false , version = "6.0.0" } -xcm-executor = { package = "staging-xcm-executor", default-features = false , version = "6.0.2" } -xcm-builder = { package = "staging-xcm-builder", default-features = false , version = "6.0.2" } +xcm = { package = "staging-xcm", default-features = false , version = "7.0.0" } +xcm-executor = { package = "staging-xcm-executor", default-features = false , version = "7.0.3" } +xcm-builder = { package = "staging-xcm-builder", default-features = false , version = "7.0.3" } -sp-debug-derive = { default-features = false, version = "13.0.0" } +sp-debug-derive = { default-features = false, version = "14.0.0" } [dev-dependencies] tiny-keccak = { version = "2.0.2", features = ["keccak"] } -keyring = { package = "sp-keyring", version = "30.0.0" } -sp-trie = { version = "28.0.0" } +keyring = { package = "sp-keyring", version = "31.0.0" } +sp-trie = { version = "29.0.0" } separator = "0.4.1" serde_json = "1.0.111" -remote-externalities = { package = "frame-remote-externalities", version = "0.34.0" } +remote-externalities = { package = "frame-remote-externalities", version = "0.35.0" } tokio = { version = "1.35.1", features = ["macros"] } -sp-tracing = { default-features = false , version = "15.0.0" } +sp-tracing = { default-features = false , version = "16.0.0" } [build-dependencies] -substrate-wasm-builder = { version = "16.0.0" } +substrate-wasm-builder = { version = "17.0.0" } [features] default = [ "std" ] @@ -138,7 +126,6 @@ std = [ "babe-primitives/std", "beefy-primitives/std", "binary-merkle-tree/std", - "bitvec/std", "block-builder-api/std", "frame-benchmarking?/std", "frame-election-provider-support/std", @@ -162,18 +149,14 @@ std = [ "pallet-beefy/std", "pallet-bounties/std", "pallet-child-bounties/std", - "pallet-collective/std", "pallet-conviction-voting/std", - "pallet-democracy/std", "pallet-election-provider-multi-phase/std", "pallet-election-provider-support-benchmarking?/std", - "pallet-elections-phragmen/std", "pallet-fast-unstake/std", "pallet-grandpa/std", "pallet-identity/std", "pallet-im-online/std", "pallet-indices/std", - "pallet-membership/std", "pallet-message-queue/std", "pallet-mmr/std", "pallet-multisig/std", @@ -196,7 +179,6 @@ std = [ "pallet-staking/std", "pallet-state-trie-migration/std", "pallet-timestamp/std", - "pallet-tips/std", "pallet-transaction-payment-rpc-runtime-api/std", "pallet-transaction-payment/std", "pallet-treasury/std", @@ -209,18 +191,13 @@ std = [ "primitives/std", "runtime-common/std", "runtime-parachains/std", - "rustc-hex/std", "scale-info/std", - "serde/std", - "serde_derive", "sp-api/std", - "sp-application-crypto/std", "sp-arithmetic/std", "sp-core/std", "sp-debug-derive/std", "sp-genesis-builder/std", "sp-io/std", - "sp-mmr-primitives/std", "sp-npos-elections/std", "sp-runtime/std", "sp-session/std", @@ -246,18 +223,14 @@ runtime-benchmarks = [ "pallet-balances/runtime-benchmarks", "pallet-bounties/runtime-benchmarks", "pallet-child-bounties/runtime-benchmarks", - "pallet-collective/runtime-benchmarks", "pallet-conviction-voting/runtime-benchmarks", - "pallet-democracy/runtime-benchmarks", "pallet-election-provider-multi-phase/runtime-benchmarks", "pallet-election-provider-support-benchmarking/runtime-benchmarks", - "pallet-elections-phragmen/runtime-benchmarks", "pallet-fast-unstake/runtime-benchmarks", "pallet-grandpa/runtime-benchmarks", "pallet-identity/runtime-benchmarks", "pallet-im-online/runtime-benchmarks", "pallet-indices/runtime-benchmarks", - "pallet-membership/runtime-benchmarks", "pallet-message-queue/runtime-benchmarks", "pallet-mmr/runtime-benchmarks", "pallet-multisig/runtime-benchmarks", @@ -277,7 +250,6 @@ runtime-benchmarks = [ "pallet-staking/runtime-benchmarks", "pallet-state-trie-migration/runtime-benchmarks", "pallet-timestamp/runtime-benchmarks", - "pallet-tips/runtime-benchmarks", "pallet-treasury/runtime-benchmarks", "pallet-utility/runtime-benchmarks", "pallet-vesting/runtime-benchmarks", @@ -309,17 +281,13 @@ try-runtime = [ "pallet-beefy/try-runtime", "pallet-bounties/try-runtime", "pallet-child-bounties/try-runtime", - "pallet-collective/try-runtime", "pallet-conviction-voting/try-runtime", - "pallet-democracy/try-runtime", "pallet-election-provider-multi-phase/try-runtime", - "pallet-elections-phragmen/try-runtime", "pallet-fast-unstake/try-runtime", "pallet-grandpa/try-runtime", "pallet-identity/try-runtime", "pallet-im-online/try-runtime", "pallet-indices/try-runtime", - "pallet-membership/try-runtime", "pallet-message-queue/try-runtime", "pallet-mmr/try-runtime", "pallet-multisig/try-runtime", @@ -337,7 +305,6 @@ try-runtime = [ "pallet-staking/try-runtime", "pallet-state-trie-migration/try-runtime", "pallet-timestamp/try-runtime", - "pallet-tips/try-runtime", "pallet-transaction-payment/try-runtime", "pallet-treasury/try-runtime", "pallet-utility/try-runtime", diff --git a/relay/kusama/constants/Cargo.toml b/relay/kusama/constants/Cargo.toml index 0d7da2911c..f62cc11612 100644 --- a/relay/kusama/constants/Cargo.toml +++ b/relay/kusama/constants/Cargo.toml @@ -9,14 +9,14 @@ license.workspace = true [dependencies] smallvec = "1.13.1" -frame-support = { default-features = false , version = "27.0.0" } -primitives = { package = "polkadot-primitives", default-features = false , version = "6.0.0" } -runtime-common = { package = "polkadot-runtime-common", default-features = false , version = "6.0.0" } -sp-runtime = { default-features = false , version = "30.0.1" } -sp-weights = { default-features = false , version = "26.0.0" } -sp-core = { default-features = false , version = "27.0.0" } +frame-support = { default-features = false , version = "28.0.0" } +primitives = { package = "polkadot-primitives", default-features = false , version = "7.0.0" } +runtime-common = { package = "polkadot-runtime-common", default-features = false , version = "7.0.0" } +sp-runtime = { default-features = false , version = "31.0.1" } +sp-weights = { default-features = false , version = "27.0.0" } +sp-core = { default-features = false , version = "28.0.0" } -xcm = { package = "staging-xcm", default-features = false , version = "6.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false , version = "7.0.3" } [features] default = [ "std" ] @@ -27,5 +27,5 @@ std = [ "sp-core/std", "sp-runtime/std", "sp-weights/std", - "xcm/std" + "xcm-builder/std" ] diff --git a/relay/kusama/constants/src/lib.rs b/relay/kusama/constants/src/lib.rs index 342359608b..68cad9c3b6 100644 --- a/relay/kusama/constants/src/lib.rs +++ b/relay/kusama/constants/src/lib.rs @@ -99,7 +99,8 @@ pub mod fee { /// System Parachains. pub mod system_parachain { - use xcm::latest::prelude::*; + use primitives::Id; + use xcm_builder::IsChildSystemParachain; /// Asset Hub parachain ID. pub const ASSET_HUB_ID: u32 = 1000; @@ -107,20 +108,11 @@ pub mod system_parachain { pub const ENCOINTER_ID: u32 = 1001; /// Bridge Hub parachain ID. pub const BRIDGE_HUB_ID: u32 = 1002; + /// Brokerage parachain ID. + pub const BROKER_ID: u32 = 1005; - frame_support::match_types! { - // System parachains from Kusama point of view. - pub type SystemParachains: impl Contains = { - MultiLocation { - parents: 0, - interior: X1(Parachain( - ASSET_HUB_ID | - ENCOINTER_ID | - BRIDGE_HUB_ID - )), - } - }; - } + // System parachains from Kusama point of view. + pub type SystemParachains = IsChildSystemParachain; } /// Kusama Treasury pallet instance. diff --git a/relay/kusama/src/lib.rs b/relay/kusama/src/lib.rs index 133aa3d81e..bc813a2457 100644 --- a/relay/kusama/src/lib.rs +++ b/relay/kusama/src/lib.rs @@ -36,15 +36,18 @@ use runtime_common::{ DealWithFees, LocatableAssetConverter, VersionedLocatableAsset, VersionedMultiLocationConverter, }, - paras_registrar, prod_or_fast, slots, BalanceToU256, BlockHashCount, BlockLength, - CurrencyToVote, SlowAdjustingFeeUpdate, U256ToBalance, + paras_registrar, prod_or_fast, slots, + traits::Leaser, + BalanceToU256, BlockHashCount, BlockLength, CurrencyToVote, SlowAdjustingFeeUpdate, + U256ToBalance, }; use scale_info::TypeInfo; use sp_std::{cmp::Ordering, collections::btree_map::BTreeMap, prelude::*}; use runtime_parachains::{ - assigner_parachains as parachains_assigner_parachains, - configuration as parachains_configuration, disputes as parachains_disputes, + assigner_coretime as parachains_assigner_coretime, + assigner_on_demand as parachains_assigner_on_demand, configuration as parachains_configuration, + coretime, disputes as parachains_disputes, disputes::slashing as parachains_slashing, dmp as parachains_dmp, hrmp as parachains_hrmp, inclusion as parachains_inclusion, inclusion::{AggregateMessageOrigin, UmpQueueId}, @@ -115,7 +118,9 @@ use sp_runtime::traits::Get; pub use sp_runtime::BuildStorage; /// Constant values used within the runtime. -use kusama_runtime_constants::{currency::*, fee::*, time::*, TREASURY_PALLET_ID}; +use kusama_runtime_constants::{ + currency::*, fee::*, system_parachain, time::*, TREASURY_PALLET_ID, +}; // Weights used in the runtime. mod weights; @@ -189,6 +194,7 @@ impl frame_system::Config for Runtime { type Lookup = AccountIdLookup; type Block = Block; type RuntimeEvent = RuntimeEvent; + type RuntimeTask = RuntimeTask; type BlockHashCount = BlockHashCount; type DbWeight = RocksDbWeight; type Version = Version; @@ -486,7 +492,6 @@ parameter_types! { pub const SignedDepositByte: Balance = deposit(0, 10) / 1024; // Each good submission will get 1/10 KSM as reward pub SignedRewardBase: Balance = UNITS / 10; - pub BetterUnsignedThreshold: Perbill = Perbill::from_rational(5u32, 10_000); // 1 hour session, 15 minutes unsigned phase, 8 offchain executions. pub OffchainRepeat: BlockNumber = UnsignedPhase::get() / 8; @@ -565,7 +570,6 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type SlashHandler = (); // burn slashes type RewardHandler = (); // nothing to do upon rewards type SignedPhase = SignedPhase; - type BetterUnsignedThreshold = BetterUnsignedThreshold; type BetterSignedThreshold = (); type OffchainRepeat = OffchainRepeat; type MinerTxPriority = NposSolutionPriority; @@ -684,6 +688,7 @@ impl pallet_staking::Config for Runtime { type NominationsQuota = pallet_staking::FixedNominationsQuota<{ MaxNominations::get() }>; type MaxUnlockingChunks = frame_support::traits::ConstU32<32>; type HistoryDepth = frame_support::traits::ConstU32<84>; + type MaxControllersInDeprecationBatch = ConstU32<5169>; type BenchmarkingConfig = runtime_common::StakingBenchmarkingConfig; type EventListeners = NominationPools; type WeightInfo = weights::pallet_staking::WeightInfo; @@ -935,6 +940,12 @@ impl pallet_identity::Config for Runtime { type Slashed = Treasury; type ForceOrigin = EitherOf, GeneralAdmin>; type RegistrarOrigin = EitherOf, GeneralAdmin>; + type OffchainSignature = Signature; + type SigningPublicKey = ::Signer; + type UsernameAuthorityOrigin = EnsureRoot; + type PendingUsernameExpiration = ConstU32<{ 7 * DAYS }>; + type MaxSuffixLength = ConstU32<7>; + type MaxUsernameLength = ConstU32<32>; type WeightInfo = weights::pallet_identity::WeightInfo; } @@ -1015,6 +1026,7 @@ impl pallet_vesting::Config for Runtime { type MinVestedTransfer = MinVestedTransfer; type WeightInfo = weights::pallet_vesting::WeightInfo; type UnvestedFundsAllowedWithdrawReasons = UnvestedFundsAllowedWithdrawReasons; + type BlockNumberProvider = System; const MAX_VESTING_SCHEDULES: u32 = 28; } @@ -1217,6 +1229,7 @@ impl parachains_paras::Config for Runtime { type QueueFootprinter = ParaInclusion; type NextSessionRotation = Babe; type OnNewHead = Registrar; + type AssignCoretime = (); } parameter_types! { @@ -1283,15 +1296,42 @@ impl parachains_paras_inherent::Config for Runtime { } impl parachains_scheduler::Config for Runtime { - type AssignmentProvider = ParaAssignmentProvider; + // If you change this, make sure the `Assignment` type of the new provider is binary compatible, + // otherwise provide a migration. + type AssignmentProvider = CoretimeAssignmentProvider; +} + +parameter_types! { + pub const BrokerId: u32 = system_parachain::BROKER_ID; +} + +impl coretime::Config for Runtime { + type RuntimeOrigin = RuntimeOrigin; + type RuntimeEvent = RuntimeEvent; + type Currency = Balances; + type BrokerId = BrokerId; + type WeightInfo = weights::runtime_parachains_coretime::WeightInfo; + type SendXcm = crate::xcm_config::XcmRouter; } -impl parachains_assigner_parachains::Config for Runtime {} +parameter_types! { + pub const OnDemandTrafficDefaultValue: FixedU128 = FixedU128::from_u32(1); +} + +impl parachains_assigner_on_demand::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type Currency = Balances; + type TrafficDefaultValue = OnDemandTrafficDefaultValue; + type WeightInfo = weights::runtime_parachains_assigner_on_demand::WeightInfo; +} + +impl parachains_assigner_coretime::Config for Runtime {} impl parachains_initializer::Config for Runtime { type Randomness = pallet_babe::RandomnessFromOneEpochAgo; type ForceOrigin = EnsureRoot; type WeightInfo = weights::runtime_parachains_initializer::WeightInfo; + type CoretimeOnNewSession = Coretime; } impl parachains_disputes::Config for Runtime { @@ -1600,13 +1640,15 @@ construct_runtime! { ParaSessionInfo: parachains_session_info = 61, ParasDisputes: parachains_disputes = 62, ParasSlashing: parachains_slashing = 63, - ParaAssignmentProvider: parachains_assigner_parachains = 64, + OnDemandAssignmentProvider: parachains_assigner_on_demand = 64, + CoretimeAssignmentProvider: parachains_assigner_coretime = 65, // Parachain Onboarding Pallets. Start indices at 70 to leave room. Registrar: paras_registrar = 70, Slots: slots = 71, Auctions: auctions = 72, Crowdloan: crowdloan = 73, + Coretime: coretime = 74, // State trie migration pallet, only temporary. StateTrieMigration: pallet_state_trie_migration = 98, @@ -1667,14 +1709,48 @@ pub type Migrations = migrations::Unreleased; /// The runtime migrations per release. #[allow(deprecated, missing_docs)] pub mod migrations { - use super::{parachains_configuration, Runtime}; + use super::{ + coretime, parachains_configuration, parachains_scheduler, slots, BlockNumber, LeasePeriod, + Leaser, ParaId, Runtime, + }; + + // We don't have a limit in the Relay Chain. + const IDENTITY_MIGRATION_KEY_LIMIT: u64 = u64::MAX; + + pub struct GetLegacyLeaseImpl; + impl coretime::migration::GetLegacyLease for GetLegacyLeaseImpl { + fn get_parachain_lease_in_blocks(para: ParaId) -> Option { + let now = frame_system::Pallet::::block_number(); + let lease = slots::Pallet::::lease(para); + if lease.is_empty() { + return None + } + // Lease not yet started, ignore: + if lease.iter().any(Option::is_none) { + return None + } + let (index, _) = + as Leaser>::lease_period_index(now)?; + Some(index.saturating_add(lease.len() as u32).saturating_mul(LeasePeriod::get())) + } + } /// Unreleased migrations. Add new ones here: pub type Unreleased = ( pallet_nomination_pools::migration::versioned::V7ToV8, pallet_staking::migrations::v14::MigrateToV14, parachains_configuration::migration::v10::MigrateToV10, + parachains_configuration::migration::v11::MigrateToV11, pallet_grandpa::migrations::MigrateV4ToV5, + // Migrate Identity pallet for Usernames + pallet_identity::migration::versioned::V0ToV1, + parachains_scheduler::migration::MigrateV1ToV2, + // Migrate from legacy lease to coretime. Needs to run after configuration v11 + coretime::migration::MigrateToCoretime< + Runtime, + crate::xcm_config::XcmRouter, + GetLegacyLeaseImpl, + >, ); } @@ -1712,6 +1788,8 @@ mod benches { [runtime_parachains::initializer, Initializer] [runtime_parachains::paras_inherent, ParaInherent] [runtime_parachains::paras, Paras] + [runtime_parachains::assigner_on_demand, OnDemandAssignmentProvider] + [runtime_parachains::coretime, Coretime] // Substrate [pallet_balances, Native] [pallet_balances, Nis] diff --git a/relay/kusama/src/weights/frame_system.rs b/relay/kusama/src/weights/frame_system.rs index 7b91d447dd..5ac1e481d2 100644 --- a/relay/kusama/src/weights/frame_system.rs +++ b/relay/kusama/src/weights/frame_system.rs @@ -145,4 +145,31 @@ impl frame_system::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) } + /// Storage: `System::AuthorizedUpgrade` (r:0 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + fn authorize_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 33_027_000 picoseconds. + Weight::from_parts(33_027_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `System::AuthorizedUpgrade` (r:1 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:1) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + fn apply_authorized_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `22` + // Estimated: `1518` + // Minimum execution time: 118_101_992_000 picoseconds. + Weight::from_parts(118_101_992_000, 0) + .saturating_add(Weight::from_parts(0, 1518)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } } diff --git a/relay/kusama/src/weights/mod.rs b/relay/kusama/src/weights/mod.rs index a9a9f4bce7..94f14c40da 100644 --- a/relay/kusama/src/weights/mod.rs +++ b/relay/kusama/src/weights/mod.rs @@ -53,7 +53,9 @@ pub mod runtime_common_claims; pub mod runtime_common_crowdloan; pub mod runtime_common_paras_registrar; pub mod runtime_common_slots; +pub mod runtime_parachains_assigner_on_demand; pub mod runtime_parachains_configuration; +pub mod runtime_parachains_coretime; pub mod runtime_parachains_disputes; pub mod runtime_parachains_disputes_slashing; pub mod runtime_parachains_hrmp; diff --git a/relay/kusama/src/weights/pallet_identity.rs b/relay/kusama/src/weights/pallet_identity.rs index c160e50c64..fd6256f3af 100644 --- a/relay/kusama/src/weights/pallet_identity.rs +++ b/relay/kusama/src/weights/pallet_identity.rs @@ -345,4 +345,98 @@ impl pallet_identity::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(2)) } + /// Storage: `Identity::UsernameAuthorities` (r:0 w:1) + /// Proof: `Identity::UsernameAuthorities` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + fn add_username_authority() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 13_873_000 picoseconds. + Weight::from_parts(13_873_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Identity::UsernameAuthorities` (r:0 w:1) + /// Proof: `Identity::UsernameAuthorities` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + fn remove_username_authority() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 10_653_000 picoseconds. + Weight::from_parts(10_653_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Identity::UsernameAuthorities` (r:1 w:1) + /// Proof: `Identity::UsernameAuthorities` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Identity::AccountOfUsername` (r:1 w:1) + /// Proof: `Identity::AccountOfUsername` (`max_values`: None, `max_size`: Some(73), added: 2548, mode: `MaxEncodedLen`) + /// Storage: `Identity::IdentityOf` (r:1 w:1) + /// Proof: `Identity::IdentityOf` (`max_values`: None, `max_size`: Some(7572), added: 10047, mode: `MaxEncodedLen`) + fn set_username_for() -> Weight { + // Proof Size summary in bytes: + // Measured: `80` + // Estimated: `11037` + // Minimum execution time: 75_928_000 picoseconds. + Weight::from_parts(75_928_000, 0) + .saturating_add(Weight::from_parts(0, 11037)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `Identity::PendingUsernames` (r:1 w:1) + /// Proof: `Identity::PendingUsernames` (`max_values`: None, `max_size`: Some(77), added: 2552, mode: `MaxEncodedLen`) + /// Storage: `Identity::IdentityOf` (r:1 w:1) + /// Proof: `Identity::IdentityOf` (`max_values`: None, `max_size`: Some(7572), added: 10047, mode: `MaxEncodedLen`) + /// Storage: `Identity::AccountOfUsername` (r:0 w:1) + /// Proof: `Identity::AccountOfUsername` (`max_values`: None, `max_size`: Some(73), added: 2548, mode: `MaxEncodedLen`) + fn accept_username() -> Weight { + // Proof Size summary in bytes: + // Measured: `106` + // Estimated: `11037` + // Minimum execution time: 38_157_000 picoseconds. + Weight::from_parts(38_157_000, 0) + .saturating_add(Weight::from_parts(0, 11037)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `Identity::PendingUsernames` (r:1 w:1) + /// Proof: `Identity::PendingUsernames` (`max_values`: None, `max_size`: Some(77), added: 2552, mode: `MaxEncodedLen`) + fn remove_expired_approval() -> Weight { + // Proof Size summary in bytes: + // Measured: `106` + // Estimated: `3542` + // Minimum execution time: 46_821_000 picoseconds. + Weight::from_parts(46_821_000, 0) + .saturating_add(Weight::from_parts(0, 3542)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Identity::AccountOfUsername` (r:1 w:0) + /// Proof: `Identity::AccountOfUsername` (`max_values`: None, `max_size`: Some(73), added: 2548, mode: `MaxEncodedLen`) + /// Storage: `Identity::IdentityOf` (r:1 w:1) + /// Proof: `Identity::IdentityOf` (`max_values`: None, `max_size`: Some(7572), added: 10047, mode: `MaxEncodedLen`) + fn set_primary_username() -> Weight { + // Proof Size summary in bytes: + // Measured: `247` + // Estimated: `11037` + // Minimum execution time: 22_515_000 picoseconds. + Weight::from_parts(22_515_000, 0) + .saturating_add(Weight::from_parts(0, 11037)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Identity::AccountOfUsername` (r:1 w:1) + /// Proof: `Identity::AccountOfUsername` (`max_values`: None, `max_size`: Some(73), added: 2548, mode: `MaxEncodedLen`) + /// Storage: `Identity::IdentityOf` (r:1 w:0) + /// Proof: `Identity::IdentityOf` (`max_values`: None, `max_size`: Some(7572), added: 10047, mode: `MaxEncodedLen`) + fn remove_dangling_username() -> Weight { + // Proof Size summary in bytes: + // Measured: `126` + // Estimated: `11037` + // Minimum execution time: 15_997_000 picoseconds. + Weight::from_parts(15_997_000, 0) + .saturating_add(Weight::from_parts(0, 11037)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } } diff --git a/relay/kusama/src/weights/pallet_staking.rs b/relay/kusama/src/weights/pallet_staking.rs index 356b94047c..56c0a56507 100644 --- a/relay/kusama/src/weights/pallet_staking.rs +++ b/relay/kusama/src/weights/pallet_staking.rs @@ -405,6 +405,26 @@ impl pallet_staking::WeightInfo for WeightInfo { .saturating_add(Weight::from_parts(10_319, 0).saturating_mul(v.into())) .saturating_add(T::DbWeight::get().writes(1)) } + /// Storage: `Staking::Ledger` (r:751 w:1502) + /// Proof: `Staking::Ledger` (`max_values`: None, `max_size`: Some(1091), added: 3566, mode: `MaxEncodedLen`) + /// Storage: `Staking::Payee` (r:751 w:0) + /// Proof: `Staking::Payee` (`max_values`: None, `max_size`: Some(73), added: 2548, mode: `MaxEncodedLen`) + /// Storage: `Staking::Bonded` (r:0 w:751) + /// Proof: `Staking::Bonded` (`max_values`: None, `max_size`: Some(72), added: 2547, mode: `MaxEncodedLen`) + /// The range of component `i` is `[0, 751]`. + fn deprecate_controller_batch(i: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `668 + i * (148 ±0)` + // Estimated: `990 + i * (3566 ±0)` + // Minimum execution time: 1_934_000 picoseconds. + Weight::from_parts(2_070_000, 0) + .saturating_add(Weight::from_parts(0, 990)) + // Standard Error: 19_129 + .saturating_add(Weight::from_parts(13_231_580, 0).saturating_mul(i.into())) + .saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(i.into()))) + .saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(i.into()))) + .saturating_add(Weight::from_parts(0, 3566).saturating_mul(i.into())) + } /// Storage: `Staking::SlashingSpans` (r:1 w:1) /// Proof: `Staking::SlashingSpans` (`max_values`: None, `max_size`: None, mode: `Measured`) /// Storage: `Staking::Bonded` (r:1 w:1) diff --git a/relay/kusama/src/weights/runtime_parachains_assigner_on_demand.rs b/relay/kusama/src/weights/runtime_parachains_assigner_on_demand.rs new file mode 100644 index 0000000000..ac0f05301b --- /dev/null +++ b/relay/kusama/src/weights/runtime_parachains_assigner_on_demand.rs @@ -0,0 +1,91 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Autogenerated weights for `runtime_parachains::assigner_on_demand` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2023-08-11, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `runner-fljshgub-project-163-concurrent-0`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("rococo-dev")`, DB CACHE: 1024 + +// Executed Command: +// target/production/polkadot +// benchmark +// pallet +// --steps=50 +// --repeat=20 +// --extrinsic=* +// --wasm-execution=compiled +// --heap-pages=4096 +// --json-file=/builds/parity/mirrors/polkadot/.git/.artifacts/bench.json +// --pallet=runtime_parachains::assigner_on_demand +// --chain=rococo-dev +// --header=./file_header.txt +// --output=./runtime/rococo/src/weights/ + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] +#![allow(missing_docs)] + +use frame_support::{traits::Get, weights::Weight}; +use core::marker::PhantomData; + +/// Weight functions for `runtime_parachains::assigner_on_demand`. +pub struct WeightInfo(PhantomData); +impl runtime_parachains::assigner_on_demand::WeightInfo for WeightInfo { + /// Storage: `OnDemandAssignmentProvider::SpotTraffic` (r:1 w:0) + /// Proof: `OnDemandAssignmentProvider::SpotTraffic` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Paras::ParaLifecycles` (r:1 w:0) + /// Proof: `Paras::ParaLifecycles` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `OnDemandAssignmentProvider::OnDemandQueue` (r:1 w:1) + /// Proof: `OnDemandAssignmentProvider::OnDemandQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `s` is `[1, 9999]`. + fn place_order_keep_alive(s: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `297 + s * (4 ±0)` + // Estimated: `3762 + s * (4 ±0)` + // Minimum execution time: 33_522_000 picoseconds. + Weight::from_parts(35_436_835, 0) + .saturating_add(Weight::from_parts(0, 3762)) + // Standard Error: 129 + .saturating_add(Weight::from_parts(14_041, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(1)) + .saturating_add(Weight::from_parts(0, 4).saturating_mul(s.into())) + } + /// Storage: `OnDemandAssignmentProvider::SpotTraffic` (r:1 w:0) + /// Proof: `OnDemandAssignmentProvider::SpotTraffic` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Paras::ParaLifecycles` (r:1 w:0) + /// Proof: `Paras::ParaLifecycles` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `OnDemandAssignmentProvider::OnDemandQueue` (r:1 w:1) + /// Proof: `OnDemandAssignmentProvider::OnDemandQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// The range of component `s` is `[1, 9999]`. + fn place_order_allow_death(s: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `297 + s * (4 ±0)` + // Estimated: `3762 + s * (4 ±0)` + // Minimum execution time: 33_488_000 picoseconds. + Weight::from_parts(34_848_934, 0) + .saturating_add(Weight::from_parts(0, 3762)) + // Standard Error: 143 + .saturating_add(Weight::from_parts(14_215, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(1)) + .saturating_add(Weight::from_parts(0, 4).saturating_mul(s.into())) + } +} diff --git a/relay/kusama/src/weights/runtime_parachains_coretime.rs b/relay/kusama/src/weights/runtime_parachains_coretime.rs new file mode 100644 index 0000000000..aa65a2e903 --- /dev/null +++ b/relay/kusama/src/weights/runtime_parachains_coretime.rs @@ -0,0 +1,84 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Autogenerated weights for `runtime_parachains::coretime` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0 +//! DATE: 2024-02-15, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `runner-bn-ce5rx-project-674-concurrent-0`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("westend-dev")`, DB CACHE: 1024 + +// Executed Command: +// target/production/polkadot +// benchmark +// pallet +// --steps=50 +// --repeat=20 +// --extrinsic=* +// --wasm-execution=compiled +// --heap-pages=4096 +// --json-file=/builds/parity/mirrors/polkadot-sdk/.git/.artifacts/bench.json +// --pallet=runtime_parachains::coretime +// --chain=westend-dev +// --header=./polkadot/file_header.txt +// --output=./polkadot/runtime/westend/src/weights/ + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] +#![allow(missing_docs)] + +use frame_support::{traits::Get, weights::Weight}; +use core::marker::PhantomData; + +/// Weight functions for `runtime_parachains::coretime`. +pub struct WeightInfo(PhantomData); +impl runtime_parachains::coretime::WeightInfo for WeightInfo { + /// Storage: `Configuration::PendingConfigs` (r:1 w:1) + /// Proof: `Configuration::PendingConfigs` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Configuration::BypassConsistencyCheck` (r:1 w:0) + /// Proof: `Configuration::BypassConsistencyCheck` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `ParasShared::CurrentSessionIndex` (r:1 w:0) + /// Proof: `ParasShared::CurrentSessionIndex` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + fn request_core_count() -> Weight { + // Proof Size summary in bytes: + // Measured: `151` + // Estimated: `1636` + // Minimum execution time: 7_486_000 picoseconds. + Weight::from_parts(7_889_000, 0) + .saturating_add(Weight::from_parts(0, 1636)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `CoretimeAssignmentProvider::CoreDescriptors` (r:1 w:1) + /// Proof: `CoretimeAssignmentProvider::CoreDescriptors` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `CoretimeAssignmentProvider::CoreSchedules` (r:0 w:1) + /// Proof: `CoretimeAssignmentProvider::CoreSchedules` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `s` is `[1, 100]`. + fn assign_core(s: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `147` + // Estimated: `3612` + // Minimum execution time: 9_409_000 picoseconds. + Weight::from_parts(10_177_115, 0) + .saturating_add(Weight::from_parts(0, 3612)) + // Standard Error: 259 + .saturating_add(Weight::from_parts(13_932, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(2)) + } +} diff --git a/relay/kusama/src/xcm_config.rs b/relay/kusama/src/xcm_config.rs index 989008d758..5c609c9cf7 100644 --- a/relay/kusama/src/xcm_config.rs +++ b/relay/kusama/src/xcm_config.rs @@ -37,12 +37,12 @@ use xcm::latest::prelude::*; use xcm_builder::{ AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses, AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, ChildParachainAsNative, - ChildParachainConvertsVia, CurrencyAdapter as XcmCurrencyAdapter, DescribeAllTerminal, - DescribeFamily, FrameTransactionalProcessor, HashedDescription, IsChildSystemParachain, - IsConcrete, MintLocation, OriginToPluralityVoice, SignedAccountId32AsNative, - SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, - UsingComponents, WeightInfoBounds, WithComputedOrigin, WithUniqueTopic, - XcmFeeManagerFromComponents, XcmFeeToAccount, + ChildParachainConvertsVia, DescribeAllTerminal, DescribeFamily, FrameTransactionalProcessor, + FungibleAdapter, HashedDescription, IsChildSystemParachain, IsConcrete, MintLocation, + OriginToPluralityVoice, SignedAccountId32AsNative, SignedToAccountId32, + SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, + WeightInfoBounds, WithComputedOrigin, WithUniqueTopic, XcmFeeManagerFromComponents, + XcmFeeToAccount, }; parameter_types! { @@ -80,7 +80,7 @@ pub type SovereignAccountOf = ( /// point of view of XCM-only concepts like `MultiLocation` and `MultiAsset`. /// /// Ours is only aware of the Balances pallet, which is mapped to `TokenLocation`. -pub type LocalAssetTransactor = XcmCurrencyAdapter< +pub type LocalAssetTransactor = FungibleAdapter< // Use this currency: Balances, // Use this currency when it is a fungible asset matching the given location or name: @@ -133,6 +133,8 @@ parameter_types! { pub const KsmForEncointer: (MultiAssetFilter, MultiLocation) = (Ksm::get(), Encointer::get()); pub const BridgeHubLocation: MultiLocation = Parachain(BRIDGE_HUB_ID).into_location(); pub const KsmForBridgeHub: (MultiAssetFilter, MultiLocation) = (Ksm::get(), BridgeHubLocation::get()); + pub Broker: MultiLocation = Parachain(BROKER_ID).into_location(); + pub KsmForBroker: (MultiAssetFilter, MultiLocation) = (Ksm::get(), Broker::get()); pub const MaxAssetsIntoHolding: u32 = 64; } @@ -141,6 +143,7 @@ pub type TrustedTeleporters = ( xcm_builder::Case, xcm_builder::Case, xcm_builder::Case, + xcm_builder::Case, ); match_types! { diff --git a/relay/polkadot/Cargo.toml b/relay/polkadot/Cargo.toml index 6cae342373..5d71d51891 100644 --- a/relay/polkadot/Cargo.toml +++ b/relay/polkadot/Cargo.toml @@ -8,123 +8,110 @@ edition.workspace = true license.workspace = true [dependencies] -bitvec = { version = "1.0.1", default-features = false, features = ["alloc"] } parity-scale-codec = { version = "3.6.9", default-features = false, features = ["derive", "max-encoded-len"] } scale-info = { version = "2.10.0", default-features = false, features = ["derive"] } log = { version = "0.4.20", default-features = false } -rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.195", default-features = false } -serde_derive = { version = "1.0.195", optional = true } -static_assertions = "1.1.0" -authority-discovery-primitives = { package = "sp-authority-discovery", default-features = false , version = "25.0.0" } -babe-primitives = { package = "sp-consensus-babe", default-features = false , version = "0.31.0" } -beefy-primitives = { package = "sp-consensus-beefy", default-features = false , version = "12.0.0" } -binary-merkle-tree = { default-features = false , version = "12.0.0" } -block-builder-api = { package = "sp-block-builder", default-features = false , version = "25.0.0" } -inherents = { package = "sp-inherents", default-features = false , version = "25.0.0" } -offchain-primitives = { package = "sp-offchain", default-features = false , version = "25.0.0" } -tx-pool-api = { package = "sp-transaction-pool", default-features = false , version = "25.0.0" } -sp-arithmetic = { default-features = false , version = "22.0.0" } -sp-api = { default-features = false , version = "25.0.0" } -sp-genesis-builder = { default-features = false , version = "0.6.0" } -sp-std = { default-features = false , version = "13.0.0" } -sp-application-crypto = { default-features = false , version = "29.0.0" } -sp-io = { default-features = false , version = "29.0.0" } -sp-mmr-primitives = { default-features = false , version = "25.0.0" } -sp-runtime = { default-features = false , version = "30.0.1" } -sp-staking = { default-features = false , version = "25.0.0" } -sp-core = { default-features = false , version = "27.0.0" } -sp-session = { default-features = false , version = "26.0.0" } -sp-storage = { default-features = false , version = "18.0.0" } -sp-version = { default-features = false , version = "28.0.0" } -sp-npos-elections = { default-features = false , version = "25.0.0" } +authority-discovery-primitives = { package = "sp-authority-discovery", default-features = false , version = "26.0.0" } +babe-primitives = { package = "sp-consensus-babe", default-features = false , version = "0.32.0" } +beefy-primitives = { package = "sp-consensus-beefy", default-features = false , version = "13.0.0" } +binary-merkle-tree = { default-features = false , version = "13.0.0" } +block-builder-api = { package = "sp-block-builder", default-features = false , version = "26.0.0" } +inherents = { package = "sp-inherents", default-features = false , version = "26.0.0" } +offchain-primitives = { package = "sp-offchain", default-features = false , version = "26.0.0" } +tx-pool-api = { package = "sp-transaction-pool", default-features = false , version = "26.0.0" } +sp-arithmetic = { default-features = false , version = "23.0.0" } +sp-api = { default-features = false , version = "26.0.0" } +sp-genesis-builder = { default-features = false , version = "0.7.0" } +sp-std = { default-features = false , version = "14.0.0" } +sp-application-crypto = { default-features = false , version = "30.0.0" } +sp-io = { default-features = false , version = "30.0.0" } +sp-runtime = { default-features = false , version = "31.0.1" } +sp-staking = { default-features = false , version = "26.0.0" } +sp-core = { default-features = false , version = "28.0.0" } +sp-session = { default-features = false , version = "27.0.0" } +sp-storage = { default-features = false , version = "19.0.0" } +sp-version = { default-features = false , version = "29.0.0" } +sp-npos-elections = { default-features = false , version = "26.0.0" } -pallet-asset-rate = { default-features = false , version = "6.0.0" } -pallet-authority-discovery = { default-features = false , version = "27.0.0" } -pallet-authorship = { default-features = false , version = "27.0.0" } -pallet-babe = { default-features = false , version = "27.0.0" } -pallet-bags-list = { default-features = false , version = "26.0.0" } -pallet-balances = { default-features = false , version = "27.0.0" } -pallet-beefy = { default-features = false , version = "27.0.0" } -pallet-beefy-mmr = { default-features = false , version = "27.0.0" } -pallet-bounties = { default-features = false , version = "26.0.0" } -pallet-child-bounties = { default-features = false , version = "26.0.0" } -pallet-transaction-payment = { default-features = false , version = "27.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false , version = "27.0.0" } -pallet-collective = { default-features = false , version = "27.0.0" } -pallet-conviction-voting = { default-features = false , version = "27.0.0" } -pallet-democracy = { default-features = false , version = "27.0.0" } -pallet-elections-phragmen = { default-features = false , version = "28.0.0" } -pallet-election-provider-multi-phase = { default-features = false , version = "26.0.0" } -pallet-fast-unstake = { default-features = false , version = "26.0.0" } -frame-executive = { default-features = false , version = "27.0.0" } -pallet-grandpa = { default-features = false , version = "27.0.0" } -pallet-identity = { default-features = false , version = "27.0.0" } -pallet-im-online = { default-features = false , version = "26.0.0" } -pallet-indices = { default-features = false , version = "27.0.0" } -pallet-membership = { default-features = false , version = "27.0.0" } -pallet-message-queue = { default-features = false , version = "30.0.0" } -pallet-mmr = { default-features = false , version = "26.0.0" } -pallet-multisig = { default-features = false , version = "27.0.0" } -pallet-nomination-pools = { default-features = false , version = "24.0.2" } -pallet-nomination-pools-runtime-api = { default-features = false , version = "22.0.0" } -pallet-offences = { default-features = false , version = "26.0.0" } -pallet-preimage = { default-features = false , version = "27.0.0" } -pallet-proxy = { default-features = false , version = "27.0.0" } -pallet-referenda = { default-features = false , version = "27.0.0" } -pallet-scheduler = { default-features = false , version = "28.0.0" } -pallet-session = { default-features = false , version = "27.0.0" } -frame-support = { default-features = false , version = "27.0.0" } -pallet-staking = { default-features = false , version = "27.0.0" } -pallet-staking-reward-fn = { default-features = false, version = "18.0.0" } -pallet-staking-reward-curve = { version = "10.0.0" } -pallet-staking-runtime-api = { default-features = false , version = "13.0.0" } -frame-system = { default-features = false , version = "27.0.0" } -frame-system-rpc-runtime-api = { default-features = false , version = "25.0.0" } +pallet-asset-rate = { default-features = false , version = "7.0.0" } +pallet-authority-discovery = { default-features = false , version = "28.0.0" } +pallet-authorship = { default-features = false , version = "28.0.0" } +pallet-babe = { default-features = false , version = "28.0.0" } +pallet-bags-list = { default-features = false , version = "27.0.0" } +pallet-balances = { default-features = false , version = "28.0.0" } +pallet-beefy = { default-features = false , version = "28.0.0" } +pallet-beefy-mmr = { default-features = false , version = "28.0.0" } +pallet-bounties = { default-features = false , version = "27.0.0" } +pallet-child-bounties = { default-features = false , version = "27.0.0" } +pallet-transaction-payment = { default-features = false , version = "28.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false , version = "28.0.0" } +pallet-conviction-voting = { default-features = false , version = "28.0.0" } +pallet-election-provider-multi-phase = { default-features = false , version = "27.0.0" } +pallet-fast-unstake = { default-features = false , version = "27.0.0" } +frame-executive = { default-features = false , version = "28.0.0" } +pallet-grandpa = { default-features = false , version = "28.0.0" } +pallet-identity = { default-features = false , version = "28.0.0" } +pallet-im-online = { default-features = false , version = "27.0.0" } +pallet-indices = { default-features = false , version = "28.0.0" } +pallet-message-queue = { default-features = false , version = "31.0.0" } +pallet-mmr = { default-features = false , version = "27.0.0" } +pallet-multisig = { default-features = false , version = "28.0.0" } +pallet-nomination-pools = { default-features = false , version = "25.0.3" } +pallet-nomination-pools-runtime-api = { default-features = false , version = "23.0.0" } +pallet-offences = { default-features = false , version = "27.0.0" } +pallet-preimage = { default-features = false , version = "28.0.0" } +pallet-proxy = { default-features = false , version = "28.0.0" } +pallet-referenda = { default-features = false , version = "28.0.0" } +pallet-scheduler = { default-features = false , version = "29.0.0" } +pallet-session = { default-features = false , version = "28.0.0" } +frame-support = { default-features = false , version = "28.0.0" } +pallet-staking = { default-features = false , version = "28.0.0" } +pallet-staking-reward-fn = { default-features = false, version = "19.0.0" } +pallet-staking-reward-curve = { version = "11.0.0" } +pallet-staking-runtime-api = { default-features = false , version = "14.0.0" } +frame-system = { default-features = false , version = "28.0.0" } +frame-system-rpc-runtime-api = { default-features = false , version = "26.0.0" } polkadot-runtime-constants = { package = "polkadot-runtime-constants", path = "constants", default-features = false } -pallet-timestamp = { default-features = false , version = "26.0.0" } -pallet-tips = { default-features = false , version = "26.0.0" } -pallet-treasury = { default-features = false , version = "26.0.0" } -pallet-whitelist = { default-features = false , version = "26.0.0" } -pallet-vesting = { default-features = false , version = "27.0.0" } -pallet-utility = { default-features = false , version = "27.0.0" } -frame-election-provider-support = { default-features = false , version = "27.0.0" } -pallet-xcm = { default-features = false, version = "6.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "6.0.2" } +pallet-timestamp = { default-features = false , version = "27.0.0" } +pallet-treasury = { default-features = false , version = "27.0.0" } +pallet-whitelist = { default-features = false , version = "27.0.0" } +pallet-vesting = { default-features = false , version = "28.0.0" } +pallet-utility = { default-features = false , version = "28.0.0" } +frame-election-provider-support = { default-features = false , version = "28.0.0" } +pallet-xcm = { default-features = false, version = "7.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "7.0.4" } -frame-benchmarking = { default-features = false, optional = true , version = "27.0.0" } -frame-try-runtime = { default-features = false, optional = true , version = "0.33.0" } -frame-system-benchmarking = { default-features = false, optional = true , version = "27.0.0" } -pallet-election-provider-support-benchmarking = { default-features = false, optional = true , version = "26.0.0" } -pallet-offences-benchmarking = { default-features = false, optional = true , version = "27.0.0" } -pallet-session-benchmarking = { default-features = false, optional = true , version = "27.0.0" } -pallet-nomination-pools-benchmarking = { default-features = false, optional = true , version = "25.0.0" } -hex-literal = { version = "0.4.1", optional = true } +frame-benchmarking = { default-features = false, optional = true , version = "28.0.0" } +frame-try-runtime = { default-features = false, optional = true , version = "0.34.0" } +frame-system-benchmarking = { default-features = false, optional = true , version = "28.0.0" } +pallet-election-provider-support-benchmarking = { default-features = false, optional = true , version = "27.0.0" } +pallet-offences-benchmarking = { default-features = false, optional = true , version = "28.0.0" } +pallet-session-benchmarking = { default-features = false, optional = true , version = "28.0.0" } +pallet-nomination-pools-benchmarking = { default-features = false, optional = true , version = "26.0.0" } -runtime-common = { package = "polkadot-runtime-common", default-features = false, version = "6.0.0" } -runtime-parachains = { package = "polkadot-runtime-parachains", default-features = false , version = "6.0.0" } -primitives = { package = "polkadot-primitives", default-features = false , version = "6.0.0" } +runtime-common = { package = "polkadot-runtime-common", default-features = false, version = "7.0.0" } +runtime-parachains = { package = "polkadot-runtime-parachains", default-features = false , version = "7.0.0" } +primitives = { package = "polkadot-primitives", default-features = false , version = "7.0.0" } -xcm = { package = "staging-xcm", default-features = false , version = "6.0.0" } -xcm-executor = { package = "staging-xcm-executor", default-features = false , version = "6.0.2" } -xcm-builder = { package = "staging-xcm-builder", default-features = false , version = "6.0.2" } +xcm = { package = "staging-xcm", default-features = false , version = "7.0.0" } +xcm-executor = { package = "staging-xcm-executor", default-features = false , version = "7.0.3" } +xcm-builder = { package = "staging-xcm-builder", default-features = false , version = "7.0.3" } -sp-debug-derive = { default-features = false, version = "13.0.0" } +sp-debug-derive = { default-features = false, version = "14.0.0" } [dev-dependencies] -hex-literal = "0.4.1" tiny-keccak = { version = "2.0.2", features = ["keccak"] } -keyring = { package = "sp-keyring", version = "30.0.0" } -sp-trie = { version = "28.0.0" } +keyring = { package = "sp-keyring", version = "31.0.0" } +sp-trie = { version = "29.0.0" } serde_json = "1.0.111" separator = "0.4.1" -remote-externalities = { package = "frame-remote-externalities", version = "0.34.0" } +remote-externalities = { package = "frame-remote-externalities", version = "0.35.0" } tokio = { version = "1.35.1", features = ["macros"] } -sp-tracing = { default-features = false , version = "15.0.0" } +sp-tracing = { default-features = false , version = "16.0.0" } [build-dependencies] -substrate-wasm-builder = { version = "16.0.0" } +substrate-wasm-builder = { version = "17.0.0" } [features] default = [ "std" ] @@ -135,7 +122,6 @@ std = [ "babe-primitives/std", "beefy-primitives/std", "binary-merkle-tree/std", - "bitvec/std", "block-builder-api/std", "frame-benchmarking?/std", "frame-election-provider-support/std", @@ -158,18 +144,14 @@ std = [ "pallet-beefy-mmr/std", "pallet-bounties/std", "pallet-child-bounties/std", - "pallet-collective/std", "pallet-conviction-voting/std", - "pallet-democracy/std", "pallet-election-provider-multi-phase/std", "pallet-election-provider-support-benchmarking?/std", - "pallet-elections-phragmen/std", "pallet-fast-unstake/std", "pallet-grandpa/std", "pallet-identity/std", "pallet-im-online/std", "pallet-indices/std", - "pallet-membership/std", "pallet-message-queue/std", "pallet-mmr/std", "pallet-multisig/std", @@ -188,7 +170,6 @@ std = [ "pallet-staking-runtime-api/std", "pallet-staking/std", "pallet-timestamp/std", - "pallet-tips/std", "pallet-transaction-payment-rpc-runtime-api/std", "pallet-transaction-payment/std", "pallet-treasury/std", @@ -202,10 +183,7 @@ std = [ "primitives/std", "runtime-common/std", "runtime-parachains/std", - "rustc-hex/std", "scale-info/std", - "serde/std", - "serde_derive", "sp-api/std", "sp-application-crypto/std", "sp-arithmetic/std", @@ -213,7 +191,6 @@ std = [ "sp-debug-derive/std", "sp-genesis-builder/std", "sp-io/std", - "sp-mmr-primitives/std", "sp-npos-elections/std", "sp-runtime/std", "sp-session/std", @@ -233,25 +210,20 @@ runtime-benchmarks = [ "frame-support/runtime-benchmarks", "frame-system-benchmarking/runtime-benchmarks", "frame-system/runtime-benchmarks", - "hex-literal", "pallet-asset-rate/runtime-benchmarks", "pallet-babe/runtime-benchmarks", "pallet-bags-list/runtime-benchmarks", "pallet-balances/runtime-benchmarks", "pallet-bounties/runtime-benchmarks", "pallet-child-bounties/runtime-benchmarks", - "pallet-collective/runtime-benchmarks", "pallet-conviction-voting/runtime-benchmarks", - "pallet-democracy/runtime-benchmarks", "pallet-election-provider-multi-phase/runtime-benchmarks", "pallet-election-provider-support-benchmarking/runtime-benchmarks", - "pallet-elections-phragmen/runtime-benchmarks", "pallet-fast-unstake/runtime-benchmarks", "pallet-grandpa/runtime-benchmarks", "pallet-identity/runtime-benchmarks", "pallet-im-online/runtime-benchmarks", "pallet-indices/runtime-benchmarks", - "pallet-membership/runtime-benchmarks", "pallet-message-queue/runtime-benchmarks", "pallet-mmr/runtime-benchmarks", "pallet-multisig/runtime-benchmarks", @@ -266,7 +238,6 @@ runtime-benchmarks = [ "pallet-session-benchmarking/runtime-benchmarks", "pallet-staking/runtime-benchmarks", "pallet-timestamp/runtime-benchmarks", - "pallet-tips/runtime-benchmarks", "pallet-treasury/runtime-benchmarks", "pallet-utility/runtime-benchmarks", "pallet-vesting/runtime-benchmarks", @@ -298,17 +269,13 @@ try-runtime = [ "pallet-beefy/try-runtime", "pallet-bounties/try-runtime", "pallet-child-bounties/try-runtime", - "pallet-collective/try-runtime", "pallet-conviction-voting/try-runtime", - "pallet-democracy/try-runtime", "pallet-election-provider-multi-phase/try-runtime", - "pallet-elections-phragmen/try-runtime", "pallet-fast-unstake/try-runtime", "pallet-grandpa/try-runtime", "pallet-identity/try-runtime", "pallet-im-online/try-runtime", "pallet-indices/try-runtime", - "pallet-membership/try-runtime", "pallet-message-queue/try-runtime", "pallet-mmr/try-runtime", "pallet-multisig/try-runtime", @@ -321,7 +288,6 @@ try-runtime = [ "pallet-session/try-runtime", "pallet-staking/try-runtime", "pallet-timestamp/try-runtime", - "pallet-tips/try-runtime", "pallet-transaction-payment/try-runtime", "pallet-treasury/try-runtime", "pallet-utility/try-runtime", diff --git a/relay/polkadot/constants/Cargo.toml b/relay/polkadot/constants/Cargo.toml index bb07bfb6a4..1c7250e884 100644 --- a/relay/polkadot/constants/Cargo.toml +++ b/relay/polkadot/constants/Cargo.toml @@ -9,14 +9,14 @@ license.workspace = true [dependencies] smallvec = "1.13.1" -frame-support = { default-features = false , version = "27.0.0" } -primitives = { package = "polkadot-primitives", default-features = false , version = "6.0.0" } -runtime-common = { package = "polkadot-runtime-common", default-features = false , version = "6.0.0" } -sp-runtime = { default-features = false , version = "30.0.1" } -sp-weights = { default-features = false , version = "26.0.0" } -sp-core = { default-features = false , version = "27.0.0" } +frame-support = { default-features = false , version = "28.0.0" } +primitives = { package = "polkadot-primitives", default-features = false , version = "7.0.0" } +runtime-common = { package = "polkadot-runtime-common", default-features = false , version = "7.0.0" } +sp-runtime = { default-features = false , version = "31.0.1" } +sp-weights = { default-features = false , version = "27.0.0" } +sp-core = { default-features = false , version = "28.0.0" } -xcm = { package = "staging-xcm", default-features = false , version = "6.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false , version = "7.0.3" } [features] default = [ "std" ] @@ -27,5 +27,5 @@ std = [ "sp-core/std", "sp-runtime/std", "sp-weights/std", - "xcm/std" + "xcm-builder/std" ] diff --git a/relay/polkadot/constants/src/lib.rs b/relay/polkadot/constants/src/lib.rs index e9e997d8a8..e2f413bbbd 100644 --- a/relay/polkadot/constants/src/lib.rs +++ b/relay/polkadot/constants/src/lib.rs @@ -117,7 +117,8 @@ pub mod xcm { /// System Parachains. pub mod system_parachain { - use xcm::latest::prelude::*; + use primitives::Id; + use xcm_builder::IsChildSystemParachain; /// Asset Hub parachain ID. pub const ASSET_HUB_ID: u32 = 1000; @@ -126,19 +127,8 @@ pub mod system_parachain { /// Bridge Hub parachain ID. pub const BRIDGE_HUB_ID: u32 = 1002; - frame_support::match_types! { - // System parachains from Polkadot point of view. - pub type SystemParachains: impl Contains = { - MultiLocation { - parents: 0, - interior: X1(Parachain( - ASSET_HUB_ID | - COLLECTIVES_ID | - BRIDGE_HUB_ID - )), - } - }; - } + // System parachains from Polkadot point of view. + pub type SystemParachains = IsChildSystemParachain; } /// Polkadot Treasury pallet instance. diff --git a/relay/polkadot/src/governance/old.rs b/relay/polkadot/src/governance/old.rs deleted file mode 100644 index f4c2655a78..0000000000 --- a/relay/polkadot/src/governance/old.rs +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright (C) Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Old governance configurations for the Polkadot runtime. - -use crate::*; -use frame_support::{parameter_types, traits::EitherOfDiverse}; - -parameter_types! { - pub LaunchPeriod: BlockNumber = prod_or_fast!(28 * DAYS, 1, "DOT_LAUNCH_PERIOD"); - pub VotingPeriod: BlockNumber = prod_or_fast!(28 * DAYS, 1 * MINUTES, "DOT_VOTING_PERIOD"); - pub FastTrackVotingPeriod: BlockNumber = prod_or_fast!(3 * HOURS, 1 * MINUTES, "DOT_FAST_TRACK_VOTING_PERIOD"); - pub const MinimumDeposit: Balance = 100 * DOLLARS; - pub EnactmentPeriod: BlockNumber = prod_or_fast!(28 * DAYS, 1, "DOT_ENACTMENT_PERIOD"); - pub CooloffPeriod: BlockNumber = prod_or_fast!(7 * DAYS, 1, "DOT_COOLOFF_PERIOD"); - pub const InstantAllowed: bool = true; - pub const MaxVotes: u32 = 100; - pub const MaxProposals: u32 = 100; -} - -impl pallet_democracy::Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type Currency = Balances; - type EnactmentPeriod = EnactmentPeriod; - type VoteLockingPeriod = EnactmentPeriod; - type LaunchPeriod = LaunchPeriod; - type VotingPeriod = VotingPeriod; - type MinimumDeposit = MinimumDeposit; - type SubmitOrigin = frame_system::EnsureSigned; - /// A straight majority of the council can decide what their next motion is. - type ExternalOrigin = EitherOfDiverse< - pallet_collective::EnsureProportionAtLeast, - frame_system::EnsureRoot, - >; - /// A 60% super-majority can have the next scheduled referendum be a straight majority-carries vote. - type ExternalMajorityOrigin = EitherOfDiverse< - pallet_collective::EnsureProportionAtLeast, - frame_system::EnsureRoot, - >; - /// A unanimous council can have the next scheduled referendum be a straight default-carries - /// (NTB) vote. - type ExternalDefaultOrigin = EitherOfDiverse< - pallet_collective::EnsureProportionAtLeast, - frame_system::EnsureRoot, - >; - /// Two thirds of the technical committee can have an `ExternalMajority/ExternalDefault` vote - /// be tabled immediately and with a shorter voting/enactment period. - type FastTrackOrigin = EitherOfDiverse< - pallet_collective::EnsureProportionAtLeast, - frame_system::EnsureRoot, - >; - type InstantOrigin = EitherOfDiverse< - pallet_collective::EnsureProportionAtLeast, - frame_system::EnsureRoot, - >; - type InstantAllowed = InstantAllowed; - type FastTrackVotingPeriod = FastTrackVotingPeriod; - // To cancel a proposal which has been passed, 2/3 of the council must agree to it. - type CancellationOrigin = EitherOfDiverse< - pallet_collective::EnsureProportionAtLeast, - EnsureRoot, - >; - // To cancel a proposal before it has been passed, the technical committee must be unanimous or - // Root must agree. - type CancelProposalOrigin = EitherOfDiverse< - pallet_collective::EnsureProportionAtLeast, - EnsureRoot, - >; - type BlacklistOrigin = EnsureRoot; - // Any single technical committee member may veto a coming council proposal, however they can - // only do it once and it lasts only for the cooloff period. - type VetoOrigin = pallet_collective::EnsureMember; - type CooloffPeriod = CooloffPeriod; - type Slash = Treasury; - type Scheduler = Scheduler; - type PalletsOrigin = OriginCaller; - type MaxVotes = MaxVotes; - type WeightInfo = weights::pallet_democracy::WeightInfo; - type MaxProposals = MaxProposals; - type Preimages = Preimage; - type MaxDeposits = ConstU32<100>; - type MaxBlacklisted = ConstU32<100>; -} - -parameter_types! { - pub CouncilMotionDuration: BlockNumber = prod_or_fast!(7 * DAYS, 2 * MINUTES, "DOT_MOTION_DURATION"); - pub const CouncilMaxProposals: u32 = 100; - pub const CouncilMaxMembers: u32 = 100; - pub MaxProposalWeight: Weight = Perbill::from_percent(50) * BlockWeights::get().max_block; -} - -pub type CouncilCollective = pallet_collective::Instance1; -impl pallet_collective::Config for Runtime { - type RuntimeOrigin = RuntimeOrigin; - type Proposal = RuntimeCall; - type RuntimeEvent = RuntimeEvent; - type MotionDuration = CouncilMotionDuration; - type MaxProposals = CouncilMaxProposals; - type MaxMembers = CouncilMaxMembers; - type DefaultVote = pallet_collective::PrimeDefaultVote; - type SetMembersOrigin = EnsureRoot; - type WeightInfo = weights::pallet_collective_council::WeightInfo; - type MaxProposalWeight = MaxProposalWeight; -} - -parameter_types! { - pub const CandidacyBond: Balance = 100 * DOLLARS; - // 1 storage item created, key size is 32 bytes, value size is 16+16. - pub const VotingBondBase: Balance = deposit(1, 64); - // additional data per vote is 32 bytes (account id). - pub const VotingBondFactor: Balance = deposit(0, 32); - /// Weekly council elections; scaling up to monthly eventually. - pub TermDuration: BlockNumber = prod_or_fast!(7 * DAYS, 2 * MINUTES, "DOT_TERM_DURATION"); - /// 13 members initially, to be increased to 23 eventually. - pub const DesiredMembers: u32 = 13; - pub const DesiredRunnersUp: u32 = 20; - pub const MaxVoters: u32 = 10 * 1000; - pub const MaxVotesPerVoter: u32 = 16; - pub const MaxCandidates: u32 = 1000; - pub const PhragmenElectionPalletId: LockIdentifier = *b"phrelect"; -} -// Make sure that there are no more than `MaxMembers` members elected via phragmen. -const_assert!(DesiredMembers::get() <= CouncilMaxMembers::get()); - -impl pallet_elections_phragmen::Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type PalletId = PhragmenElectionPalletId; - type Currency = Balances; - type ChangeMembers = Council; - type InitializeMembers = Council; - type CurrencyToVote = runtime_common::CurrencyToVote; - type CandidacyBond = CandidacyBond; - type VotingBondBase = VotingBondBase; - type VotingBondFactor = VotingBondFactor; - type LoserCandidate = Treasury; - type KickedMember = Treasury; - type DesiredMembers = DesiredMembers; - type DesiredRunnersUp = DesiredRunnersUp; - type TermDuration = TermDuration; - type MaxVoters = MaxVoters; - type MaxVotesPerVoter = MaxVotesPerVoter; - type MaxCandidates = MaxCandidates; - type WeightInfo = weights::pallet_elections_phragmen::WeightInfo; -} - -parameter_types! { - pub const TechnicalMotionDuration: BlockNumber = 7 * DAYS; - pub const TechnicalMaxProposals: u32 = 100; - pub const TechnicalMaxMembers: u32 = 100; -} - -pub type TechnicalCollective = pallet_collective::Instance2; -impl pallet_collective::Config for Runtime { - type RuntimeOrigin = RuntimeOrigin; - type Proposal = RuntimeCall; - type RuntimeEvent = RuntimeEvent; - type MotionDuration = TechnicalMotionDuration; - type MaxProposals = TechnicalMaxProposals; - type MaxMembers = TechnicalMaxMembers; - type DefaultVote = pallet_collective::PrimeDefaultVote; - type SetMembersOrigin = EnsureRoot; - type WeightInfo = weights::pallet_collective_technical_committee::WeightInfo; - type MaxProposalWeight = MaxProposalWeight; -} - -impl pallet_membership::Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type AddOrigin = EnsureRoot; - type RemoveOrigin = EnsureRoot; - type SwapOrigin = EnsureRoot; - type ResetOrigin = EnsureRoot; - type PrimeOrigin = EnsureRoot; - type MembershipInitialized = TechnicalCommittee; - type MembershipChanged = TechnicalCommittee; - type MaxMembers = TechnicalMaxMembers; - type WeightInfo = weights::pallet_membership::WeightInfo; -} diff --git a/relay/polkadot/src/lib.rs b/relay/polkadot/src/lib.rs index 6a0e522f99..6ff280ba8e 100644 --- a/relay/polkadot/src/lib.rs +++ b/relay/polkadot/src/lib.rs @@ -182,6 +182,7 @@ impl frame_system::Config for Runtime { type Lookup = AccountIdLookup; type Block = Block; type RuntimeEvent = RuntimeEvent; + type RuntimeTask = RuntimeTask; type BlockHashCount = BlockHashCount; type DbWeight = RocksDbWeight; type Version = Version; @@ -481,7 +482,6 @@ parameter_types! { pub const SignedDepositByte: Balance = deposit(0, 10) / 1024; // Each good submission will get 1 DOT as reward pub SignedRewardBase: Balance = 1 * UNITS; - pub BetterUnsignedThreshold: Perbill = Perbill::from_rational(5u32, 10_000); // 4 hour session, 1 hour unsigned phase, 32 offchain executions. pub OffchainRepeat: BlockNumber = UnsignedPhase::get() / 32; @@ -558,7 +558,6 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type MinerConfig = Self; type SlashHandler = (); // burn slashes type RewardHandler = (); // nothing to do upon rewards - type BetterUnsignedThreshold = BetterUnsignedThreshold; type BetterSignedThreshold = (); type OffchainRepeat = OffchainRepeat; type MinerTxPriority = NposSolutionPriority; @@ -741,6 +740,7 @@ impl pallet_staking::Config for Runtime { type NominationsQuota = pallet_staking::FixedNominationsQuota<{ MaxNominations::get() }>; type MaxUnlockingChunks = frame_support::traits::ConstU32<32>; type HistoryDepth = frame_support::traits::ConstU32<84>; + type MaxControllersInDeprecationBatch = ConstU32<5314>; type BenchmarkingConfig = runtime_common::StakingBenchmarkingConfig; type EventListeners = NominationPools; type WeightInfo = weights::pallet_staking::WeightInfo; @@ -779,6 +779,12 @@ impl pallet_identity::Config for Runtime { type Slashed = Treasury; type ForceOrigin = EitherOf, GeneralAdmin>; type RegistrarOrigin = EitherOf, GeneralAdmin>; + type OffchainSignature = Signature; + type SigningPublicKey = ::Signer; + type UsernameAuthorityOrigin = EnsureRoot; + type PendingUsernameExpiration = ConstU32<{ 7 * DAYS }>; + type MaxSuffixLength = ConstU32<7>; + type MaxUsernameLength = ConstU32<32>; type WeightInfo = weights::pallet_identity::WeightInfo; } @@ -1020,6 +1026,7 @@ impl pallet_vesting::Config for Runtime { type MinVestedTransfer = MinVestedTransfer; type WeightInfo = weights::pallet_vesting::WeightInfo; type UnvestedFundsAllowedWithdrawReasons = UnvestedFundsAllowedWithdrawReasons; + type BlockNumberProvider = System; const MAX_VESTING_SCHEDULES: u32 = 28; } @@ -1262,6 +1269,7 @@ impl parachains_paras::Config for Runtime { type QueueFootprinter = ParaInclusion; type NextSessionRotation = Babe; type OnNewHead = Registrar; + type AssignCoretime = (); } parameter_types! { @@ -1337,6 +1345,7 @@ impl parachains_initializer::Config for Runtime { type Randomness = pallet_babe::RandomnessFromOneEpochAgo; type ForceOrigin = EnsureRoot; type WeightInfo = weights::runtime_parachains_initializer::WeightInfo; + type CoretimeOnNewSession = (); } impl parachains_disputes::Config for Runtime { @@ -1653,12 +1662,19 @@ pub type Migrations = migrations::Unreleased; pub mod migrations { use super::*; + // We don't have a limit in the Relay Chain. + const IDENTITY_MIGRATION_KEY_LIMIT: u64 = u64::MAX; + /// Unreleased migrations. Add new ones here: pub type Unreleased = ( pallet_nomination_pools::migration::versioned::V7ToV8, pallet_staking::migrations::v14::MigrateToV14, parachains_configuration::migration::v10::MigrateToV10, + parachains_configuration::migration::v11::MigrateToV11, pallet_grandpa::migrations::MigrateV4ToV5, + // Migrate Identity pallet for Usernames + pallet_identity::migration::versioned::V0ToV1, + parachains_scheduler::migration::MigrateV1ToV2, ); } diff --git a/relay/polkadot/src/weights/frame_system.rs b/relay/polkadot/src/weights/frame_system.rs index d63eb078b1..d656b958b1 100644 --- a/relay/polkadot/src/weights/frame_system.rs +++ b/relay/polkadot/src/weights/frame_system.rs @@ -145,4 +145,31 @@ impl frame_system::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) } + /// Storage: `System::AuthorizedUpgrade` (r:0 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + fn authorize_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 33_027_000 picoseconds. + Weight::from_parts(33_027_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `System::AuthorizedUpgrade` (r:1 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:1) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + fn apply_authorized_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `22` + // Estimated: `1518` + // Minimum execution time: 118_101_992_000 picoseconds. + Weight::from_parts(118_101_992_000, 0) + .saturating_add(Weight::from_parts(0, 1518)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } } diff --git a/relay/polkadot/src/weights/pallet_identity.rs b/relay/polkadot/src/weights/pallet_identity.rs index 087cdb708c..5c17727ba6 100644 --- a/relay/polkadot/src/weights/pallet_identity.rs +++ b/relay/polkadot/src/weights/pallet_identity.rs @@ -345,4 +345,98 @@ impl pallet_identity::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(2)) } + /// Storage: `Identity::UsernameAuthorities` (r:0 w:1) + /// Proof: `Identity::UsernameAuthorities` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + fn add_username_authority() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 13_873_000 picoseconds. + Weight::from_parts(13_873_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Identity::UsernameAuthorities` (r:0 w:1) + /// Proof: `Identity::UsernameAuthorities` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + fn remove_username_authority() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 10_653_000 picoseconds. + Weight::from_parts(10_653_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Identity::UsernameAuthorities` (r:1 w:1) + /// Proof: `Identity::UsernameAuthorities` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Identity::AccountOfUsername` (r:1 w:1) + /// Proof: `Identity::AccountOfUsername` (`max_values`: None, `max_size`: Some(73), added: 2548, mode: `MaxEncodedLen`) + /// Storage: `Identity::IdentityOf` (r:1 w:1) + /// Proof: `Identity::IdentityOf` (`max_values`: None, `max_size`: Some(7572), added: 10047, mode: `MaxEncodedLen`) + fn set_username_for() -> Weight { + // Proof Size summary in bytes: + // Measured: `80` + // Estimated: `11037` + // Minimum execution time: 75_928_000 picoseconds. + Weight::from_parts(75_928_000, 0) + .saturating_add(Weight::from_parts(0, 11037)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `Identity::PendingUsernames` (r:1 w:1) + /// Proof: `Identity::PendingUsernames` (`max_values`: None, `max_size`: Some(77), added: 2552, mode: `MaxEncodedLen`) + /// Storage: `Identity::IdentityOf` (r:1 w:1) + /// Proof: `Identity::IdentityOf` (`max_values`: None, `max_size`: Some(7572), added: 10047, mode: `MaxEncodedLen`) + /// Storage: `Identity::AccountOfUsername` (r:0 w:1) + /// Proof: `Identity::AccountOfUsername` (`max_values`: None, `max_size`: Some(73), added: 2548, mode: `MaxEncodedLen`) + fn accept_username() -> Weight { + // Proof Size summary in bytes: + // Measured: `106` + // Estimated: `11037` + // Minimum execution time: 38_157_000 picoseconds. + Weight::from_parts(38_157_000, 0) + .saturating_add(Weight::from_parts(0, 11037)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `Identity::PendingUsernames` (r:1 w:1) + /// Proof: `Identity::PendingUsernames` (`max_values`: None, `max_size`: Some(77), added: 2552, mode: `MaxEncodedLen`) + fn remove_expired_approval() -> Weight { + // Proof Size summary in bytes: + // Measured: `106` + // Estimated: `3542` + // Minimum execution time: 46_821_000 picoseconds. + Weight::from_parts(46_821_000, 0) + .saturating_add(Weight::from_parts(0, 3542)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Identity::AccountOfUsername` (r:1 w:0) + /// Proof: `Identity::AccountOfUsername` (`max_values`: None, `max_size`: Some(73), added: 2548, mode: `MaxEncodedLen`) + /// Storage: `Identity::IdentityOf` (r:1 w:1) + /// Proof: `Identity::IdentityOf` (`max_values`: None, `max_size`: Some(7572), added: 10047, mode: `MaxEncodedLen`) + fn set_primary_username() -> Weight { + // Proof Size summary in bytes: + // Measured: `247` + // Estimated: `11037` + // Minimum execution time: 22_515_000 picoseconds. + Weight::from_parts(22_515_000, 0) + .saturating_add(Weight::from_parts(0, 11037)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Identity::AccountOfUsername` (r:1 w:1) + /// Proof: `Identity::AccountOfUsername` (`max_values`: None, `max_size`: Some(73), added: 2548, mode: `MaxEncodedLen`) + /// Storage: `Identity::IdentityOf` (r:1 w:0) + /// Proof: `Identity::IdentityOf` (`max_values`: None, `max_size`: Some(7572), added: 10047, mode: `MaxEncodedLen`) + fn remove_dangling_username() -> Weight { + // Proof Size summary in bytes: + // Measured: `126` + // Estimated: `11037` + // Minimum execution time: 15_997_000 picoseconds. + Weight::from_parts(15_997_000, 0) + .saturating_add(Weight::from_parts(0, 11037)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } } diff --git a/relay/polkadot/src/weights/pallet_staking.rs b/relay/polkadot/src/weights/pallet_staking.rs index 80359106f4..28e53589f7 100644 --- a/relay/polkadot/src/weights/pallet_staking.rs +++ b/relay/polkadot/src/weights/pallet_staking.rs @@ -405,6 +405,26 @@ impl pallet_staking::WeightInfo for WeightInfo { .saturating_add(Weight::from_parts(10_309, 0).saturating_mul(v.into())) .saturating_add(T::DbWeight::get().writes(1)) } + /// Storage: `Staking::Ledger` (r:751 w:1502) + /// Proof: `Staking::Ledger` (`max_values`: None, `max_size`: Some(1091), added: 3566, mode: `MaxEncodedLen`) + /// Storage: `Staking::Payee` (r:751 w:0) + /// Proof: `Staking::Payee` (`max_values`: None, `max_size`: Some(73), added: 2548, mode: `MaxEncodedLen`) + /// Storage: `Staking::Bonded` (r:0 w:751) + /// Proof: `Staking::Bonded` (`max_values`: None, `max_size`: Some(72), added: 2547, mode: `MaxEncodedLen`) + /// The range of component `i` is `[0, 751]`. + fn deprecate_controller_batch(i: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `668 + i * (148 ±0)` + // Estimated: `990 + i * (3566 ±0)` + // Minimum execution time: 1_934_000 picoseconds. + Weight::from_parts(2_070_000, 0) + .saturating_add(Weight::from_parts(0, 990)) + // Standard Error: 19_129 + .saturating_add(Weight::from_parts(13_231_580, 0).saturating_mul(i.into())) + .saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(i.into()))) + .saturating_add(T::DbWeight::get().writes((3_u64).saturating_mul(i.into()))) + .saturating_add(Weight::from_parts(0, 3566).saturating_mul(i.into())) + } /// Storage: `Staking::SlashingSpans` (r:1 w:1) /// Proof: `Staking::SlashingSpans` (`max_values`: None, `max_size`: None, mode: `Measured`) /// Storage: `Staking::Bonded` (r:1 w:1) diff --git a/relay/polkadot/src/xcm_config.rs b/relay/polkadot/src/xcm_config.rs index 66b310ab84..53c9cfcee2 100644 --- a/relay/polkadot/src/xcm_config.rs +++ b/relay/polkadot/src/xcm_config.rs @@ -40,12 +40,11 @@ use xcm::latest::prelude::*; use xcm_builder::{ AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses, AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, ChildParachainAsNative, - ChildParachainConvertsVia, CurrencyAdapter as XcmCurrencyAdapter, DescribeAllTerminal, - DescribeFamily, FrameTransactionalProcessor, HashedDescription, IsConcrete, MintLocation, - OriginToPluralityVoice, SignedAccountId32AsNative, SignedToAccountId32, - SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, - WeightInfoBounds, WithComputedOrigin, WithUniqueTopic, XcmFeeManagerFromComponents, - XcmFeeToAccount, + ChildParachainConvertsVia, DescribeAllTerminal, DescribeFamily, FrameTransactionalProcessor, + FungibleAdapter, HashedDescription, IsConcrete, MintLocation, OriginToPluralityVoice, + SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, + TrailingSetTopicAsId, UsingComponents, WeightInfoBounds, WithComputedOrigin, WithUniqueTopic, + XcmFeeManagerFromComponents, XcmFeeToAccount, }; parameter_types! { @@ -81,7 +80,7 @@ pub type SovereignAccountOf = ( /// of view of XCM-only concepts like `MultiLocation` and `MultiAsset`. /// /// Ours is only aware of the Balances pallet, which is mapped to `TokenLocation`. -pub type LocalAssetTransactor = XcmCurrencyAdapter< +pub type LocalAssetTransactor = FungibleAdapter< // Use this currency: Balances, // Use this currency when it is a fungible asset matching the given location or name: diff --git a/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml b/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml index 0ce737bc14..1120213d38 100644 --- a/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml +++ b/system-parachains/asset-hubs/asset-hub-kusama/Cargo.toml @@ -23,84 +23,84 @@ kusama-runtime-constants = { path = "../../../relay/kusama/constants", default-f polkadot-runtime-constants = { path = "../../../relay/polkadot/constants", default-features = false} # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-executive = { default-features = false, version = "27.0.0" } -frame-support = { default-features = false, version = "27.0.0" } -frame-system = { default-features = false, version = "27.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "25.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.33.0" } -pallet-asset-conversion-tx-payment = { default-features = false, version = "9.0.0" } -pallet-assets = { default-features = false, version = "28.0.0" } -pallet-asset-conversion = { default-features = false, version = "9.0.0" } -pallet-aura = { default-features = false, version = "26.0.0" } -pallet-authorship = { default-features = false, version = "27.0.0" } -pallet-balances = { default-features = false, version = "27.0.0" } -pallet-message-queue = { default-features = false , version = "30.0.0" } -pallet-multisig = { default-features = false, version = "27.0.0" } -pallet-nft-fractionalization = { default-features = false, version = "9.0.0" } -pallet-nfts = { default-features = false, version = "21.0.0" } -pallet-nfts-runtime-api = { default-features = false, version = "13.0.0" } -pallet-proxy = { default-features = false, version = "27.0.0" } -pallet-session = { default-features = false, version = "27.0.0" } -pallet-state-trie-migration = { default-features = false, optional = true , version = "28.0.0" } -pallet-timestamp = { default-features = false, version = "26.0.0" } -pallet-transaction-payment = { default-features = false, version = "27.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "27.0.0" } -pallet-uniques = { default-features = false, version = "27.0.0" } -pallet-utility = { default-features = false, version = "27.0.0" } -sp-api = { default-features = false, version = "25.0.0" } -sp-block-builder = { default-features = false, version = "25.0.0" } -sp-consensus-aura = { default-features = false, version = "0.31.0" } -sp-core = { default-features = false, version = "27.0.0" } -sp-genesis-builder = { default-features = false , version = "0.6.0" } -sp-inherents = { default-features = false, version = "25.0.0" } -sp-offchain = { default-features = false, version = "25.0.0" } -sp-runtime = { default-features = false, version = "30.0.1" } -sp-session = { default-features = false, version = "26.0.0" } -sp-std = { default-features = false, version = "13.0.0" } -sp-storage = { default-features = false, version = "18.0.0" } -sp-transaction-pool = { default-features = false, version = "25.0.0" } -sp-version = { default-features = false, version = "28.0.0" } -sp-weights = { default-features = false, version = "26.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-executive = { default-features = false, version = "28.0.0" } +frame-support = { default-features = false, version = "28.0.0" } +frame-system = { default-features = false, version = "28.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "26.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.34.0" } +pallet-asset-conversion-tx-payment = { default-features = false, version = "10.0.0" } +pallet-assets = { default-features = false, version = "29.0.0" } +pallet-asset-conversion = { default-features = false, version = "10.0.0" } +pallet-aura = { default-features = false, version = "27.0.0" } +pallet-authorship = { default-features = false, version = "28.0.0" } +pallet-balances = { default-features = false, version = "28.0.0" } +pallet-message-queue = { default-features = false , version = "31.0.0" } +pallet-multisig = { default-features = false, version = "28.0.0" } +pallet-nft-fractionalization = { default-features = false, version = "10.0.0" } +pallet-nfts = { default-features = false, version = "22.0.0" } +pallet-nfts-runtime-api = { default-features = false, version = "14.0.0" } +pallet-proxy = { default-features = false, version = "28.0.0" } +pallet-session = { default-features = false, version = "28.0.0" } +pallet-state-trie-migration = { default-features = false, optional = true , version = "29.0.0" } +pallet-timestamp = { default-features = false, version = "27.0.0" } +pallet-transaction-payment = { default-features = false, version = "28.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "28.0.0" } +pallet-uniques = { default-features = false, version = "28.0.0" } +pallet-utility = { default-features = false, version = "28.0.0" } +sp-api = { default-features = false, version = "26.0.0" } +sp-block-builder = { default-features = false, version = "26.0.0" } +sp-consensus-aura = { default-features = false, version = "0.32.0" } +sp-core = { default-features = false, version = "28.0.0" } +sp-genesis-builder = { default-features = false , version = "0.7.0" } +sp-inherents = { default-features = false, version = "26.0.0" } +sp-offchain = { default-features = false, version = "26.0.0" } +sp-runtime = { default-features = false, version = "31.0.1" } +sp-session = { default-features = false, version = "27.0.0" } +sp-std = { default-features = false, version = "14.0.0" } +sp-storage = { default-features = false, version = "19.0.0" } +sp-transaction-pool = { default-features = false, version = "26.0.0" } +sp-version = { default-features = false, version = "29.0.0" } +sp-weights = { default-features = false, version = "27.0.0" } # num-traits feature needed for dex integer sq root: primitive-types = { version = "0.12.2", default-features = false, features = ["codec", "scale-info", "num-traits"] } # Polkadot -pallet-xcm = { default-features = false, version = "6.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "6.0.2" } -polkadot-core-primitives = { default-features = false, version = "6.0.0" } -polkadot-parachain-primitives = { default-features = false, version = "5.0.0" } -polkadot-runtime-common = { default-features = false, version = "6.0.0" } -xcm = { package = "staging-xcm", default-features = false, version = "6.0.0" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "6.0.2" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "6.0.2" } +pallet-xcm = { default-features = false, version = "7.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "7.0.4" } +polkadot-core-primitives = { default-features = false, version = "7.0.0" } +polkadot-parachain-primitives = { default-features = false, version = "6.0.0" } +polkadot-runtime-common = { default-features = false, version = "7.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "7.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "7.0.3" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "7.0.3" } # Cumulus -cumulus-pallet-aura-ext = { default-features = false , version = "0.6.0" } -cumulus-pallet-dmp-queue = { default-features = false , version = "0.6.0" } -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.6.0" } -cumulus-pallet-session-benchmarking = { default-features = false, version = "8.0.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.6.0" } -cumulus-pallet-xcmp-queue = { default-features = false , features = ["bridging"] , version = "0.6.0" } -cumulus-primitives-core = { default-features = false , version = "0.6.0" } -cumulus-primitives-utility = { default-features = false , version = "0.6.2" } -pallet-collator-selection = { default-features = false , version = "8.0.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.6.0" } -parachains-common = { default-features = false , version = "6.0.0" } +cumulus-pallet-aura-ext = { default-features = false , version = "0.7.0" } +cumulus-pallet-dmp-queue = { default-features = false , version = "0.7.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.7.0" } +cumulus-pallet-session-benchmarking = { default-features = false, version = "9.0.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.7.0" } +cumulus-pallet-xcmp-queue = { default-features = false , features = ["bridging"] , version = "0.7.0" } +cumulus-primitives-core = { default-features = false , version = "0.7.0" } +cumulus-primitives-utility = { default-features = false , version = "0.7.3" } +pallet-collator-selection = { default-features = false , version = "9.0.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.7.0" } +parachains-common = { default-features = false , version = "7.0.0" } system-parachains-constants = { path = "../../constants", default-features = false } -assets-common = { default-features = false , version = "0.6.0" } +assets-common = { default-features = false , version = "0.7.0" } # Bridges -pallet-xcm-bridge-hub-router = { default-features = false , version = "0.4.0" } +pallet-xcm-bridge-hub-router = { default-features = false , version = "0.5.0" } [dev-dependencies] -asset-test-utils = { version = "6.0.1" } -parachains-runtimes-test-utils = { version = "6.0.1" } -sp-io = { version = "29.0.0" } +asset-test-utils = { version = "7.0.1" } +parachains-runtimes-test-utils = { version = "7.0.1" } +sp-io = { version = "30.0.0" } [build-dependencies] -substrate-wasm-builder = { optional = true , version = "16.0.0" } +substrate-wasm-builder = { optional = true , version = "17.0.0" } [features] default = [ "std" ] diff --git a/system-parachains/asset-hubs/asset-hub-kusama/primitives/Cargo.toml b/system-parachains/asset-hubs/asset-hub-kusama/primitives/Cargo.toml index 2382481ca3..6f45d8ebda 100644 --- a/system-parachains/asset-hubs/asset-hub-kusama/primitives/Cargo.toml +++ b/system-parachains/asset-hubs/asset-hub-kusama/primitives/Cargo.toml @@ -12,14 +12,14 @@ codec = { package = "parity-scale-codec", version = "3.6.9", default-features = scale-info = { version = "2.10.0", default-features = false, features = ["derive"] } # Bridge Dependencies -bp-xcm-bridge-hub-router = { default-features = false , version = "0.5.0" } +bp-xcm-bridge-hub-router = { default-features = false , version = "0.6.0" } # Substrate Based Dependencies -frame-support = { default-features = false, version = "27.0.0" } -sp-std = { default-features = false, version = "13.0.0" } +frame-support = { default-features = false, version = "28.0.0" } +sp-std = { default-features = false, version = "14.0.0" } # Polkadot -xcm = { package = "staging-xcm", default-features = false, version = "6.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "7.0.0" } [features] default = [ "std" ] diff --git a/system-parachains/asset-hubs/asset-hub-kusama/src/lib.rs b/system-parachains/asset-hubs/asset-hub-kusama/src/lib.rs index 08b7b6d2b0..c4b1dafa94 100644 --- a/system-parachains/asset-hubs/asset-hub-kusama/src/lib.rs +++ b/system-parachains/asset-hubs/asset-hub-kusama/src/lib.rs @@ -29,7 +29,7 @@ pub mod xcm_config; use assets_common::{ foreign_creators::ForeignCreators, - local_and_foreign_assets::{LocalAndForeignAssets, MultiLocationConverter}, + local_and_foreign_assets::{LocalFromLeft, TargetFromLeft}, matching::FromSiblingParachain, AssetIdForTrustBackedAssetsConvert, MultiLocationForAssetId, }; @@ -56,8 +56,9 @@ use frame_support::{ genesis_builder_helper::{build_config, create_default_config}, ord_parameter_types, parameter_types, traits::{ - AsEnsureOriginWithArg, ConstBool, ConstU128, ConstU32, ConstU64, ConstU8, EitherOfDiverse, - Equals, InstanceFilter, TransformOrigin, + fungible, fungibles, tokens::imbalance::ResolveAssetTo, AsEnsureOriginWithArg, ConstBool, + ConstU128, ConstU32, ConstU64, ConstU8, EitherOfDiverse, Equals, InstanceFilter, + TransformOrigin, }, weights::{ConstantMultiplier, Weight}, BoundedVec, PalletId, @@ -80,8 +81,9 @@ use system_parachains_constants::{ }; use xcm::opaque::v3::MultiLocation; use xcm_config::{ - FellowshipLocation, ForeignAssetsConvertedConcreteId, GovernanceLocation, KsmLocation, - PoolAssetsConvertedConcreteId, TrustBackedAssetsConvertedConcreteId, + FellowshipLocation, ForeignAssetsConvertedConcreteId, ForeignCreatorsSovereignAccountOf, + GovernanceLocation, KsmLocation, PoolAssetsConvertedConcreteId, + TrustBackedAssetsConvertedConcreteId, TrustBackedAssetsPalletLocation, }; #[cfg(any(feature = "std", test))] @@ -92,10 +94,6 @@ use pallet_xcm::{EnsureXcm, IsVoiceOfBody}; use polkadot_runtime_common::{BlockHashCount, SlowAdjustingFeeUpdate}; use xcm::prelude::*; -use crate::xcm_config::{ - ForeignCreatorsSovereignAccountOf, LocalAndForeignAssetsMultiLocationMatcher, - TrustBackedAssetsPalletLocation, -}; use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight}; impl_opaque_keys! { @@ -180,6 +178,7 @@ impl frame_system::Config for Runtime { type Hashing = BlakeTwo256; type Block = Block; type RuntimeEvent = RuntimeEvent; + type RuntimeTask = RuntimeTask; type RuntimeOrigin = RuntimeOrigin; type BlockHashCount = BlockHashCount; type DbWeight = RocksDbWeight; @@ -292,8 +291,6 @@ impl pallet_assets::Config for Runtime { parameter_types! { pub const AssetConversionPalletId: PalletId = PalletId(*b"py/ascon"); - pub const AllowMultiAssetPools: bool = false; - // should be non-zero if AllowMultiAssetPools is true, otherwise can be zero pub const LiquidityWithdrawalFee: Permill = Permill::from_percent(0); } @@ -328,36 +325,50 @@ impl pallet_assets::Config for Runtime { type BenchmarkHelper = (); } +/// Union fungibles implementation for `Assets`` and `ForeignAssets`. +pub type LocalAndForeignAssets = fungibles::UnionOf< + Assets, + ForeignAssets, + LocalFromLeft< + AssetIdForTrustBackedAssetsConvert, + AssetIdForTrustBackedAssets, + >, + MultiLocation, + AccountId, +>; + impl pallet_asset_conversion::Config for Runtime { type RuntimeEvent = RuntimeEvent; type Balance = Balance; type HigherPrecisionBalance = sp_core::U256; - type Currency = Balances; - type AssetBalance = Balance; - type AssetId = MultiLocation; - type Assets = LocalAndForeignAssets< - Assets, - AssetIdForTrustBackedAssetsConvert, - ForeignAssets, + type AssetKind = MultiLocation; + type Assets = fungible::UnionOf< + Balances, + LocalAndForeignAssets, + TargetFromLeft, + Self::AssetKind, + Self::AccountId, >; - type PoolAssets = PoolAssets; + type PoolId = (Self::AssetKind, Self::AssetKind); + type PoolLocator = + pallet_asset_conversion::WithFirstAsset; type PoolAssetId = u32; + type PoolAssets = PoolAssets; type PoolSetupFee = ConstU128<0>; // Asset class deposit fees are sufficient to prevent spam - type PoolSetupFeeReceiver = AssetConversionOrigin; - // should be non-zero if `AllowMultiAssetPools` is true, otherwise can be zero. + type PoolSetupFeeAsset = KsmLocation; + type PoolSetupFeeTarget = ResolveAssetTo; type LiquidityWithdrawalFee = LiquidityWithdrawalFee; type LPFee = ConstU32<3>; type PalletId = AssetConversionPalletId; - type AllowMultiAssetPools = AllowMultiAssetPools; - type MaxSwapPathLength = ConstU32<4>; - type MultiAssetId = Box; - type MultiAssetIdConverter = - MultiLocationConverter; + type MaxSwapPathLength = ConstU32<3>; type MintMinLiquidity = ConstU128<100>; type WeightInfo = weights::pallet_asset_conversion::WeightInfo; #[cfg(feature = "runtime-benchmarks")] - type BenchmarkHelper = - crate::xcm_config::BenchmarkMultiLocationConverter>; + type BenchmarkHelper = assets_common::benchmarks::AssetPairFactory< + KsmLocation, + parachain_info::Pallet, + xcm_config::AssetsPalletIndex, + >; } parameter_types! { @@ -763,12 +774,8 @@ impl pallet_collator_selection::Config for Runtime { impl pallet_asset_conversion_tx_payment::Config for Runtime { type RuntimeEvent = RuntimeEvent; - type Fungibles = LocalAndForeignAssets< - Assets, - AssetIdForTrustBackedAssetsConvert, - ForeignAssets, - >; - type OnChargeAssetTransaction = AssetConversionAdapter; + type Fungibles = LocalAndForeignAssets; + type OnChargeAssetTransaction = AssetConversionAdapter; } parameter_types! { @@ -875,6 +882,7 @@ impl pallet_xcm_bridge_hub_router::Config for Runti type UniversalLocation = xcm_config::UniversalLocation; type BridgedNetworkId = xcm_config::bridging::to_polkadot::PolkadotNetwork; type Bridges = xcm_config::bridging::NetworkExportTable; + type DestinationVersion = PolkadotXcm; #[cfg(not(feature = "runtime-benchmarks"))] type BridgeHubOrigin = EnsureXcm>; @@ -1117,18 +1125,19 @@ impl_runtime_apis! { impl pallet_asset_conversion::AssetConversionApi< Block, Balance, - u128, - Box, + MultiLocation, > for Runtime { - fn quote_price_exact_tokens_for_tokens(asset1: Box, asset2: Box, amount: u128, include_fee: bool) -> Option { + fn quote_price_exact_tokens_for_tokens(asset1: MultiLocation, asset2: MultiLocation, amount: Balance, include_fee: bool) -> Option { AssetConversion::quote_price_exact_tokens_for_tokens(asset1, asset2, amount, include_fee) } - fn quote_price_tokens_for_exact_tokens(asset1: Box, asset2: Box, amount: u128, include_fee: bool) -> Option { + + fn quote_price_tokens_for_exact_tokens(asset1: MultiLocation, asset2: MultiLocation, amount: Balance, include_fee: bool) -> Option { AssetConversion::quote_price_tokens_for_exact_tokens(asset1, asset2, amount, include_fee) } - fn get_reserves(asset1: Box, asset2: Box) -> Option<(Balance, Balance)> { - AssetConversion::get_reserves(&asset1, &asset2).ok() + + fn get_reserves(asset1: MultiLocation, asset2: MultiLocation) -> Option<(Balance, Balance)> { + AssetConversion::get_reserves(asset1, asset2).ok() } } @@ -1534,11 +1543,26 @@ impl_runtime_apis! { ); } - fn ensure_bridged_target_destination() -> MultiLocation { + fn ensure_bridged_target_destination() -> Result { ParachainSystem::open_outbound_hrmp_channel_for_benchmarks_or_tests( xcm_config::bridging::SiblingBridgeHubParaId::get().into() ); - xcm_config::bridging::to_polkadot::AssetHubPolkadot::get() + let bridged_asset_hub = xcm_config::bridging::to_polkadot::AssetHubPolkadot::get(); + let _ = PolkadotXcm::force_xcm_version( + RuntimeOrigin::root(), + Box::new(bridged_asset_hub), + XCM_VERSION, + ).map_err(|e| { + log::error!( + "Failed to dispatch `force_xcm_version({:?}, {:?}, {:?})`, error: {:?}", + RuntimeOrigin::root(), + bridged_asset_hub, + XCM_VERSION, + e + ); + BenchmarkError::Stop("XcmVersion was not stored!") + })?; + Ok(bridged_asset_hub) } } diff --git a/system-parachains/asset-hubs/asset-hub-kusama/src/weights/frame_system.rs b/system-parachains/asset-hubs/asset-hub-kusama/src/weights/frame_system.rs index 765cfdecb4..3bbf793fb2 100644 --- a/system-parachains/asset-hubs/asset-hub-kusama/src/weights/frame_system.rs +++ b/system-parachains/asset-hubs/asset-hub-kusama/src/weights/frame_system.rs @@ -149,4 +149,31 @@ impl frame_system::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) } + /// Storage: `System::AuthorizedUpgrade` (r:0 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + fn authorize_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 33_027_000 picoseconds. + Weight::from_parts(33_027_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `System::AuthorizedUpgrade` (r:1 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:1) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + fn apply_authorized_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `22` + // Estimated: `1518` + // Minimum execution time: 118_101_992_000 picoseconds. + Weight::from_parts(118_101_992_000, 0) + .saturating_add(Weight::from_parts(0, 1518)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } } diff --git a/system-parachains/asset-hubs/asset-hub-kusama/src/weights/pallet_asset_conversion.rs b/system-parachains/asset-hubs/asset-hub-kusama/src/weights/pallet_asset_conversion.rs index be47f8e53a..97b959858f 100644 --- a/system-parachains/asset-hubs/asset-hub-kusama/src/weights/pallet_asset_conversion.rs +++ b/system-parachains/asset-hubs/asset-hub-kusama/src/weights/pallet_asset_conversion.rs @@ -121,15 +121,18 @@ impl pallet_asset_conversion::WeightInfo for WeightInfo /// Proof: `ForeignAssets::Account` (`max_values`: None, `max_size`: Some(732), added: 3207, mode: `MaxEncodedLen`) /// Storage: `System::Account` (r:2 w:2) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) - fn swap_exact_tokens_for_tokens() -> Weight { + fn swap_exact_tokens_for_tokens(n: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1185` - // Estimated: `13818` - // Minimum execution time: 155_900_000 picoseconds. - Weight::from_parts(158_685_000, 0) - .saturating_add(Weight::from_parts(0, 13818)) - .saturating_add(T::DbWeight::get().reads(8)) - .saturating_add(T::DbWeight::get().writes(8)) + // Measured: `0 + n * (557 ±0)` + // Estimated: `7404 + n * (393 ±92)` + // Minimum execution time: 930_000_000 picoseconds. + Weight::from_parts(960_000_000, 0) + .saturating_add(Weight::from_parts(0, 7404)) + // Standard Error: 17_993_720 + .saturating_add(Weight::from_parts(41_959_183, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(4)) + .saturating_add(T::DbWeight::get().writes(4)) + .saturating_add(Weight::from_parts(0, 393).saturating_mul(n.into())) } /// Storage: `System::Account` (r:2 w:2) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) @@ -137,14 +140,17 @@ impl pallet_asset_conversion::WeightInfo for WeightInfo /// Proof: `ForeignAssets::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) /// Storage: `ForeignAssets::Account` (r:4 w:4) /// Proof: `ForeignAssets::Account` (`max_values`: None, `max_size`: Some(732), added: 3207, mode: `MaxEncodedLen`) - fn swap_tokens_for_exact_tokens() -> Weight { + fn swap_tokens_for_exact_tokens(n: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1185` - // Estimated: `13818` - // Minimum execution time: 156_024_000 picoseconds. - Weight::from_parts(157_817_000, 0) - .saturating_add(Weight::from_parts(0, 13818)) - .saturating_add(T::DbWeight::get().reads(8)) - .saturating_add(T::DbWeight::get().writes(8)) + // Measured: `0 + n * (557 ±0)` + // Estimated: `7404 + n * (393 ±92)` + // Minimum execution time: 940_000_000 picoseconds. + Weight::from_parts(956_000_000, 0) + .saturating_add(Weight::from_parts(0, 7404)) + // Standard Error: 15_746_647 + .saturating_add(Weight::from_parts(39_193_877, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(4)) + .saturating_add(T::DbWeight::get().writes(4)) + .saturating_add(Weight::from_parts(0, 393).saturating_mul(n.into())) } } diff --git a/system-parachains/asset-hubs/asset-hub-kusama/src/xcm_config.rs b/system-parachains/asset-hubs/asset-hub-kusama/src/xcm_config.rs index dd6535b648..3820d5c793 100644 --- a/system-parachains/asset-hubs/asset-hub-kusama/src/xcm_config.rs +++ b/system-parachains/asset-hubs/asset-hub-kusama/src/xcm_config.rs @@ -20,22 +20,18 @@ use super::{ TrustBackedAssetsInstance, WeightToFee, XcmpQueue, }; use crate::{ForeignAssets, ForeignAssetsInstance}; -use assets_common::{ - local_and_foreign_assets::MatchesLocalAndForeignAssetsMultiLocation, - matching::{FromSiblingParachain, IsForeignConcreteAsset}, -}; +use assets_common::matching::{FromSiblingParachain, IsForeignConcreteAsset}; use frame_support::{ match_types, parameter_types, traits::{ConstU32, Contains, Equals, Everything, Nothing, PalletInfoAccess}, }; use frame_system::EnsureRoot; -use kusama_runtime_constants::system_parachain; use pallet_xcm::XcmPassthrough; use parachains_common::{ impls::ToStakingPot, xcm_config::{ - AssetFeeAsExistentialDepositMultiplier, ConcreteAssetFromSystem, - RelayOrOtherSystemParachains, + AllSiblingSystemParachains, AssetFeeAsExistentialDepositMultiplier, + ConcreteAssetFromSystem, ParentRelayOrSiblingParachains, RelayOrOtherSystemParachains, }, }; use polkadot_parachain_primitives::primitives::Sibling; @@ -44,21 +40,17 @@ use system_parachains_constants::TREASURY_PALLET_ID; use xcm::latest::prelude::*; use xcm_builder::{ AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses, - AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, CurrencyAdapter, - DenyReserveTransferToRelayChain, DenyThenTry, DescribeAllTerminal, DescribeFamily, - EnsureXcmOrigin, FrameTransactionalProcessor, FungiblesAdapter, - GlobalConsensusParachainConvertsFor, HashedDescription, IsConcrete, LocalMint, NoChecking, - ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, - SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, - SovereignSignedViaLocation, StartsWith, StartsWithExplicitGlobalConsensus, TakeWeightCredit, - TrailingSetTopicAsId, UsingComponents, WeightInfoBounds, WithComputedOrigin, WithUniqueTopic, - XcmFeeManagerFromComponents, XcmFeeToAccount, + AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, DenyReserveTransferToRelayChain, + DenyThenTry, DescribeAllTerminal, DescribeFamily, EnsureXcmOrigin, FrameTransactionalProcessor, + FungibleAdapter, FungiblesAdapter, GlobalConsensusParachainConvertsFor, HashedDescription, + IsConcrete, LocalMint, NoChecking, ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, + SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative, + SignedToAccountId32, SovereignSignedViaLocation, StartsWith, StartsWithExplicitGlobalConsensus, + TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, WeightInfoBounds, WithComputedOrigin, + WithUniqueTopic, XcmFeeManagerFromComponents, XcmFeeToAccount, }; use xcm_executor::{traits::WithOriginFilter, XcmExecutor}; -#[cfg(feature = "runtime-benchmarks")] -use {cumulus_primitives_core::ParaId, sp_core::Get}; - parameter_types! { pub const KsmLocation: MultiLocation = MultiLocation::parent(); pub const RelayNetwork: Option = Some(NetworkId::Kusama); @@ -66,8 +58,8 @@ parameter_types! { pub UniversalLocation: InteriorMultiLocation = X2(GlobalConsensus(RelayNetwork::get().unwrap()), Parachain(ParachainInfo::parachain_id().into())); pub UniversalLocationNetworkId: NetworkId = UniversalLocation::get().global_consensus().unwrap(); - pub TrustBackedAssetsPalletLocation: MultiLocation = - PalletInstance(::index() as u8).into(); + pub AssetsPalletIndex: u32 = ::index() as u32; + pub TrustBackedAssetsPalletLocation: MultiLocation = PalletInstance(AssetsPalletIndex::get() as u8).into(); pub ForeignAssetsPalletLocation: MultiLocation = PalletInstance(::index() as u8).into(); pub PoolAssetsPalletLocation: MultiLocation = @@ -97,7 +89,7 @@ pub type LocationToAccountId = ( ); /// Means for transacting the native currency on this chain. -pub type CurrencyTransactor = CurrencyAdapter< +pub type CurrencyTransactor = FungibleAdapter< // Use this currency: Balances, // Use this currency when it is a fungible asset matching the given location or name: @@ -137,8 +129,8 @@ pub type ForeignAssetsConvertedConcreteId = assets_common::ForeignAssetsConverte // Ignore `TrustBackedAssets` explicitly StartsWith, // Ignore assets that start explicitly with our `GlobalConsensus(NetworkId)`, means: - // - foreign assets from our consensus should be: `MultiLocation {parents: 1, - // X*(Parachain(xyz), ..)}` + // - foreign assets from our consensus should be: `Location {parents: 1, X*(Parachain(xyz), + // ..)}` // - foreign assets outside our consensus with the same `GlobalConsensus(NetworkId)` won't // be accepted here StartsWithExplicitGlobalConsensus, @@ -187,24 +179,6 @@ pub type PoolFungiblesTransactor = FungiblesAdapter< pub type AssetTransactors = (CurrencyTransactor, FungiblesTransactor, ForeignFungiblesTransactor, PoolFungiblesTransactor); -/// Simple `MultiLocation` matcher for Local and Foreign asset `MultiLocation`. -pub struct LocalAndForeignAssetsMultiLocationMatcher; -impl MatchesLocalAndForeignAssetsMultiLocation for LocalAndForeignAssetsMultiLocationMatcher { - fn is_local(location: &MultiLocation) -> bool { - use assets_common::fungible_conversion::MatchesMultiLocation; - TrustBackedAssetsConvertedConcreteId::contains(location) - } - fn is_foreign(location: &MultiLocation) -> bool { - use assets_common::fungible_conversion::MatchesMultiLocation; - ForeignAssetsConvertedConcreteId::contains(location) - } -} -impl Contains for LocalAndForeignAssetsMultiLocationMatcher { - fn contains(location: &MultiLocation) -> bool { - Self::is_local(location) || Self::is_foreign(location) - } -} - /// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance, /// ready for dispatching a transaction with Xcm's `Transact`. There is an `OriginKind` which can /// biases the kind of local `Origin` it will become. @@ -240,10 +214,6 @@ match_types! { MultiLocation { parents: 1, interior: Here } | MultiLocation { parents: 1, interior: X1(Plurality { .. }) } }; - pub type ParentOrSiblings: impl Contains = { - MultiLocation { parents: 1, interior: Here } | - MultiLocation { parents: 1, interior: X1(_) } - }; } /// A call filter for the XCM Transact instruction. This is a temporary measure until we properly @@ -488,7 +458,7 @@ pub type Barrier = TrailingSetTopicAsId< Equals, )>, // Subscriptions for version tracking are OK. - AllowSubscriptionsFrom, + AllowSubscriptionsFrom, ), UniversalLocation, ConstU32<8>, @@ -504,23 +474,13 @@ pub type AssetFeeAsExistentialDepositMultiplierFeeCharger = AssetFeeAsExistentia TrustBackedAssetsInstance, >; -match_types! { - pub type SystemParachains: impl Contains = { - MultiLocation { - parents: 1, - interior: X1(Parachain( - system_parachain::ENCOINTER_ID | - system_parachain::BRIDGE_HUB_ID - )), - } - }; -} - /// Locations that will not be charged fees in the executor, /// either execution or delivery. /// We only waive fees for system functions, which these locations represent. -pub type WaivedLocations = - (RelayOrOtherSystemParachains, Equals); +pub type WaivedLocations = ( + RelayOrOtherSystemParachains, + Equals, +); /// Cases where a remote origin is accepted as trusted Teleporter for a given asset: /// @@ -685,33 +645,6 @@ impl pallet_assets::BenchmarkHelper for XcmBenchmarkHelper { } } -#[cfg(feature = "runtime-benchmarks")] -pub struct BenchmarkMultiLocationConverter { - _phantom: sp_std::marker::PhantomData, -} - -#[cfg(feature = "runtime-benchmarks")] -impl - pallet_asset_conversion::BenchmarkHelper> - for BenchmarkMultiLocationConverter -where - SelfParaId: Get, -{ - fn asset_id(asset_id: u32) -> MultiLocation { - MultiLocation { - parents: 1, - interior: X3( - Parachain(SelfParaId::get().into()), - PalletInstance(::index() as u8), - GeneralIndex(asset_id.into()), - ), - } - } - fn multiasset_id(asset_id: u32) -> sp_std::boxed::Box { - sp_std::boxed::Box::new(Self::asset_id(asset_id)) - } -} - /// All configuration related to bridging pub mod bridging { use super::*; diff --git a/system-parachains/asset-hubs/asset-hub-kusama/tests/tests.rs b/system-parachains/asset-hubs/asset-hub-kusama/tests/tests.rs index 603e3ea8ca..1d2b5daa0d 100644 --- a/system-parachains/asset-hubs/asset-hub-kusama/tests/tests.rs +++ b/system-parachains/asset-hubs/asset-hub-kusama/tests/tests.rs @@ -25,9 +25,9 @@ use asset_hub_kusama_runtime::{ TrustBackedAssetsPalletLocation, XcmConfig, }, AllPalletsWithoutSystem, AssetDeposit, Assets, Balances, ExistentialDeposit, ForeignAssets, - ForeignAssetsInstance, MetadataDepositBase, MetadataDepositPerByte, ParachainSystem, Runtime, - RuntimeCall, RuntimeEvent, SessionKeys, ToPolkadotXcmRouterInstance, TrustBackedAssetsInstance, - XcmpQueue, + ForeignAssetsInstance, MetadataDepositBase, MetadataDepositPerByte, ParachainSystem, + PolkadotXcm, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, SessionKeys, + ToPolkadotXcmRouterInstance, TrustBackedAssetsInstance, XcmpQueue, }; use asset_test_utils::{ test_cases_over_bridge::TestBridgingConfig, CollatorSessionKey, CollatorSessionKeys, ExtBuilder, @@ -657,6 +657,12 @@ asset_test_utils::include_create_and_manage_foreign_assets_for_local_consensus_p ); fn bridging_to_asset_hub_polkadot() -> TestBridgingConfig { + let _ = PolkadotXcm::force_xcm_version( + RuntimeOrigin::root(), + Box::new(bridging::to_polkadot::AssetHubPolkadot::get()), + XCM_VERSION, + ) + .expect("version saved!"); TestBridgingConfig { bridged_network: bridging::to_polkadot::PolkadotNetwork::get(), local_bridge_hub_para_id: bridging::SiblingBridgeHubParaId::get(), diff --git a/system-parachains/asset-hubs/asset-hub-polkadot/Cargo.toml b/system-parachains/asset-hubs/asset-hub-polkadot/Cargo.toml index 70c5d89ca0..5daf0bf6ec 100644 --- a/system-parachains/asset-hubs/asset-hub-polkadot/Cargo.toml +++ b/system-parachains/asset-hubs/asset-hub-polkadot/Cargo.toml @@ -23,80 +23,80 @@ kusama-runtime-constants = { path = "../../../relay/kusama/constants", default-f polkadot-runtime-constants = { path = "../../../relay/polkadot/constants", default-features = false} # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-executive = { default-features = false, version = "27.0.0" } -frame-support = { default-features = false, version = "27.0.0" } -frame-system = { default-features = false, version = "27.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "25.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.33.0" } -pallet-asset-tx-payment = { default-features = false , version = "27.0.0" } -pallet-assets = { default-features = false, version = "28.0.0" } -pallet-aura = { default-features = false, version = "26.0.0" } -pallet-authorship = { default-features = false, version = "27.0.0" } -pallet-balances = { default-features = false, version = "27.0.0" } -pallet-message-queue = { default-features = false , version = "30.0.0" } -pallet-multisig = { default-features = false, version = "27.0.0" } -pallet-nfts = { default-features = false, version = "21.0.0" } -pallet-nfts-runtime-api = { default-features = false, version = "13.0.0" } -pallet-proxy = { default-features = false, version = "27.0.0" } -pallet-session = { default-features = false, version = "27.0.0" } -pallet-timestamp = { default-features = false, version = "26.0.0" } -pallet-transaction-payment = { default-features = false, version = "27.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "27.0.0" } -pallet-uniques = { default-features = false, version = "27.0.0" } -pallet-utility = { default-features = false, version = "27.0.0" } -sp-api = { default-features = false, version = "25.0.0" } -sp-block-builder = { default-features = false, version = "25.0.0" } -sp-consensus-aura = { default-features = false, version = "0.31.0" } -sp-core = { default-features = false, version = "27.0.0" } -sp-genesis-builder = { default-features = false , version = "0.6.0" } -sp-inherents = { default-features = false, version = "25.0.0" } -sp-offchain = { default-features = false, version = "25.0.0" } -sp-runtime = { default-features = false, version = "30.0.1" } -sp-session = { default-features = false, version = "26.0.0" } -sp-std = { default-features = false, version = "13.0.0" } -sp-storage = { default-features = false, version = "18.0.0" } -sp-transaction-pool = { default-features = false, version = "25.0.0" } -sp-version = { default-features = false, version = "28.0.0" } -sp-weights = { default-features = false, version = "26.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-executive = { default-features = false, version = "28.0.0" } +frame-support = { default-features = false, version = "28.0.0" } +frame-system = { default-features = false, version = "28.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "26.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.34.0" } +pallet-asset-tx-payment = { default-features = false , version = "28.0.0" } +pallet-assets = { default-features = false, version = "29.0.0" } +pallet-aura = { default-features = false, version = "27.0.0" } +pallet-authorship = { default-features = false, version = "28.0.0" } +pallet-balances = { default-features = false, version = "28.0.0" } +pallet-message-queue = { default-features = false , version = "31.0.0" } +pallet-multisig = { default-features = false, version = "28.0.0" } +pallet-nfts = { default-features = false, version = "22.0.0" } +pallet-nfts-runtime-api = { default-features = false, version = "14.0.0" } +pallet-proxy = { default-features = false, version = "28.0.0" } +pallet-session = { default-features = false, version = "28.0.0" } +pallet-timestamp = { default-features = false, version = "27.0.0" } +pallet-transaction-payment = { default-features = false, version = "28.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "28.0.0" } +pallet-uniques = { default-features = false, version = "28.0.0" } +pallet-utility = { default-features = false, version = "28.0.0" } +sp-api = { default-features = false, version = "26.0.0" } +sp-block-builder = { default-features = false, version = "26.0.0" } +sp-consensus-aura = { default-features = false, version = "0.32.0" } +sp-core = { default-features = false, version = "28.0.0" } +sp-genesis-builder = { default-features = false , version = "0.7.0" } +sp-inherents = { default-features = false, version = "26.0.0" } +sp-offchain = { default-features = false, version = "26.0.0" } +sp-runtime = { default-features = false, version = "31.0.1" } +sp-session = { default-features = false, version = "27.0.0" } +sp-std = { default-features = false, version = "14.0.0" } +sp-storage = { default-features = false, version = "19.0.0" } +sp-transaction-pool = { default-features = false, version = "26.0.0" } +sp-version = { default-features = false, version = "29.0.0" } +sp-weights = { default-features = false, version = "27.0.0" } # Polkadot -pallet-xcm = { default-features = false, version = "6.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "6.0.2" } -polkadot-core-primitives = { default-features = false, version = "6.0.0" } -polkadot-parachain-primitives = { default-features = false, version = "5.0.0" } -polkadot-runtime-common = { default-features = false, version = "6.0.0" } -xcm = { package = "staging-xcm", default-features = false, version = "6.0.0" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "6.0.2" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "6.0.2" } +pallet-xcm = { default-features = false, version = "7.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "7.0.4" } +polkadot-core-primitives = { default-features = false, version = "7.0.0" } +polkadot-parachain-primitives = { default-features = false, version = "6.0.0" } +polkadot-runtime-common = { default-features = false, version = "7.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "7.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "7.0.3" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "7.0.3" } # Cumulus -cumulus-pallet-aura-ext = { default-features = false , version = "0.6.0" } -cumulus-pallet-dmp-queue = { default-features = false , version = "0.6.0" } -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.6.0" } -cumulus-pallet-session-benchmarking = { default-features = false, version = "8.0.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.6.0" } -cumulus-pallet-xcmp-queue = { default-features = false , features = ["bridging"] , version = "0.6.0" } -cumulus-primitives-core = { default-features = false , version = "0.6.0" } -cumulus-primitives-utility = { default-features = false , version = "0.6.2" } -pallet-collator-selection = { default-features = false , version = "8.0.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.6.0" } -parachains-common = { default-features = false , version = "6.0.0" } +cumulus-pallet-aura-ext = { default-features = false , version = "0.7.0" } +cumulus-pallet-dmp-queue = { default-features = false , version = "0.7.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.7.0" } +cumulus-pallet-session-benchmarking = { default-features = false, version = "9.0.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.7.0" } +cumulus-pallet-xcmp-queue = { default-features = false , features = ["bridging"] , version = "0.7.0" } +cumulus-primitives-core = { default-features = false , version = "0.7.0" } +cumulus-primitives-utility = { default-features = false , version = "0.7.3" } +pallet-collator-selection = { default-features = false , version = "9.0.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.7.0" } +parachains-common = { default-features = false , version = "7.0.0" } system-parachains-constants = { path = "../../constants", default-features = false } -assets-common = { default-features = false , version = "0.6.0" } +assets-common = { default-features = false , version = "0.7.0" } # Bridges -pallet-xcm-bridge-hub-router = { default-features = false , version = "0.4.0" } +pallet-xcm-bridge-hub-router = { default-features = false , version = "0.5.0" } [dev-dependencies] hex-literal = "0.4.1" -asset-test-utils = { version = "6.0.1" } -parachains-runtimes-test-utils = { version = "6.0.1" } -sp-io = { version = "29.0.0" } +asset-test-utils = { version = "7.0.1" } +parachains-runtimes-test-utils = { version = "7.0.1" } +sp-io = { version = "30.0.0" } [build-dependencies] -substrate-wasm-builder = { optional = true , version = "16.0.0" } +substrate-wasm-builder = { optional = true , version = "17.0.0" } [features] default = [ "std" ] diff --git a/system-parachains/asset-hubs/asset-hub-polkadot/primitives/Cargo.toml b/system-parachains/asset-hubs/asset-hub-polkadot/primitives/Cargo.toml index f881bbcde7..6ac886036c 100644 --- a/system-parachains/asset-hubs/asset-hub-polkadot/primitives/Cargo.toml +++ b/system-parachains/asset-hubs/asset-hub-polkadot/primitives/Cargo.toml @@ -12,14 +12,14 @@ codec = { package = "parity-scale-codec", version = "3.6.9", default-features = scale-info = { version = "2.10.0", default-features = false, features = ["derive"] } # Bridge Dependencies -bp-xcm-bridge-hub-router = { default-features = false , version = "0.5.0" } +bp-xcm-bridge-hub-router = { default-features = false , version = "0.6.0" } # Substrate Based Dependencies -frame-support = { default-features = false, version = "27.0.0" } -sp-std = { default-features = false, version = "13.0.0" } +frame-support = { default-features = false, version = "28.0.0" } +sp-std = { default-features = false, version = "14.0.0" } # Polkadot -xcm = { package = "staging-xcm", default-features = false, version = "6.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "7.0.0" } [features] default = [ "std" ] diff --git a/system-parachains/asset-hubs/asset-hub-polkadot/src/lib.rs b/system-parachains/asset-hubs/asset-hub-polkadot/src/lib.rs index 2b57f0c1e8..fe10cdb4c8 100644 --- a/system-parachains/asset-hubs/asset-hub-polkadot/src/lib.rs +++ b/system-parachains/asset-hubs/asset-hub-polkadot/src/lib.rs @@ -113,8 +113,9 @@ use system_parachains_constants::{ SLOT_DURATION, }; use xcm_config::{ - DotLocation, FellowshipLocation, ForeignAssetsConvertedConcreteId, GovernanceLocation, - TrustBackedAssetsConvertedConcreteId, XcmOriginToTransactDispatchOrigin, + DotLocation, FellowshipLocation, ForeignAssetsConvertedConcreteId, + ForeignCreatorsSovereignAccountOf, GovernanceLocation, TrustBackedAssetsConvertedConcreteId, + XcmOriginToTransactDispatchOrigin, }; #[cfg(any(feature = "std", test))] @@ -125,7 +126,6 @@ use pallet_xcm::{EnsureXcm, IsVoiceOfBody}; use polkadot_runtime_common::{BlockHashCount, SlowAdjustingFeeUpdate}; use xcm::prelude::*; -use crate::xcm_config::ForeignCreatorsSovereignAccountOf; use weights::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight}; impl_opaque_keys! { @@ -193,6 +193,7 @@ impl frame_system::Config for Runtime { type Hashing = BlakeTwo256; type Block = Block; type RuntimeEvent = RuntimeEvent; + type RuntimeTask = RuntimeTask; type RuntimeOrigin = RuntimeOrigin; type BlockHashCount = BlockHashCount; type DbWeight = RocksDbWeight; @@ -792,6 +793,7 @@ impl pallet_xcm_bridge_hub_router::Config for Runtime type UniversalLocation = xcm_config::UniversalLocation; type BridgedNetworkId = xcm_config::bridging::to_kusama::KusamaNetwork; type Bridges = xcm_config::bridging::NetworkExportTable; + type DestinationVersion = PolkadotXcm; #[cfg(not(feature = "runtime-benchmarks"))] type BridgeHubOrigin = EnsureXcm>; @@ -1416,11 +1418,26 @@ impl_runtime_apis! { ); } - fn ensure_bridged_target_destination() -> MultiLocation { + fn ensure_bridged_target_destination() -> Result { ParachainSystem::open_outbound_hrmp_channel_for_benchmarks_or_tests( xcm_config::bridging::SiblingBridgeHubParaId::get().into() ); - xcm_config::bridging::to_kusama::AssetHubKusama::get() + let bridged_asset_hub = xcm_config::bridging::to_kusama::AssetHubKusama::get(); + let _ = PolkadotXcm::force_xcm_version( + RuntimeOrigin::root(), + Box::new(bridged_asset_hub), + XCM_VERSION, + ).map_err(|e| { + log::error!( + "Failed to dispatch `force_xcm_version({:?}, {:?}, {:?})`, error: {:?}", + RuntimeOrigin::root(), + bridged_asset_hub, + XCM_VERSION, + e + ); + BenchmarkError::Stop("XcmVersion was not stored!") + })?; + Ok(bridged_asset_hub) } } diff --git a/system-parachains/asset-hubs/asset-hub-polkadot/src/weights/frame_system.rs b/system-parachains/asset-hubs/asset-hub-polkadot/src/weights/frame_system.rs index 0f8e05242a..00e6f9824d 100644 --- a/system-parachains/asset-hubs/asset-hub-polkadot/src/weights/frame_system.rs +++ b/system-parachains/asset-hubs/asset-hub-polkadot/src/weights/frame_system.rs @@ -149,4 +149,31 @@ impl frame_system::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) } + /// Storage: `System::AuthorizedUpgrade` (r:0 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + fn authorize_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 33_027_000 picoseconds. + Weight::from_parts(33_027_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `System::AuthorizedUpgrade` (r:1 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:1) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + fn apply_authorized_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `22` + // Estimated: `1518` + // Minimum execution time: 118_101_992_000 picoseconds. + Weight::from_parts(118_101_992_000, 0) + .saturating_add(Weight::from_parts(0, 1518)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } } diff --git a/system-parachains/asset-hubs/asset-hub-polkadot/src/xcm_config.rs b/system-parachains/asset-hubs/asset-hub-polkadot/src/xcm_config.rs index 04469b3fcd..6b50feb0d3 100644 --- a/system-parachains/asset-hubs/asset-hub-polkadot/src/xcm_config.rs +++ b/system-parachains/asset-hubs/asset-hub-polkadot/src/xcm_config.rs @@ -30,26 +30,24 @@ use pallet_xcm::XcmPassthrough; use parachains_common::{ impls::ToStakingPot, xcm_config::{ - AssetFeeAsExistentialDepositMultiplier, ConcreteAssetFromSystem, - RelayOrOtherSystemParachains, + AllSiblingSystemParachains, AssetFeeAsExistentialDepositMultiplier, + ConcreteAssetFromSystem, ParentRelayOrSiblingParachains, RelayOrOtherSystemParachains, }, }; use polkadot_parachain_primitives::primitives::Sibling; -use polkadot_runtime_constants::system_parachain; use sp_runtime::traits::{AccountIdConversion, ConvertInto}; use system_parachains_constants::TREASURY_PALLET_ID; use xcm::latest::prelude::*; use xcm_builder::{ AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses, - AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, CurrencyAdapter, - DenyReserveTransferToRelayChain, DenyThenTry, DescribeAllTerminal, DescribeFamily, - EnsureXcmOrigin, FrameTransactionalProcessor, FungiblesAdapter, - GlobalConsensusParachainConvertsFor, HashedDescription, IsConcrete, LocalMint, NoChecking, - ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, - SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, - SovereignSignedViaLocation, StartsWith, StartsWithExplicitGlobalConsensus, TakeWeightCredit, - TrailingSetTopicAsId, UsingComponents, WeightInfoBounds, WithComputedOrigin, WithUniqueTopic, - XcmFeeManagerFromComponents, XcmFeeToAccount, + AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, DenyReserveTransferToRelayChain, + DenyThenTry, DescribeAllTerminal, DescribeFamily, EnsureXcmOrigin, FrameTransactionalProcessor, + FungibleAdapter, FungiblesAdapter, GlobalConsensusParachainConvertsFor, HashedDescription, + IsConcrete, LocalMint, NoChecking, ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, + SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative, + SignedToAccountId32, SovereignSignedViaLocation, StartsWith, StartsWithExplicitGlobalConsensus, + TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, WeightInfoBounds, WithComputedOrigin, + WithUniqueTopic, XcmFeeManagerFromComponents, XcmFeeToAccount, }; use xcm_executor::{traits::WithOriginFilter, XcmExecutor}; @@ -87,7 +85,7 @@ pub type LocationToAccountId = ( ); /// Means for transacting the native currency on this chain. -pub type CurrencyTransactor = CurrencyAdapter< +pub type FungibleTransactor = FungibleAdapter< // Use this currency: Balances, // Use this currency when it is a fungible asset matching the given location or name: @@ -127,8 +125,8 @@ pub type ForeignAssetsConvertedConcreteId = assets_common::ForeignAssetsConverte // Ignore `TrustBackedAssets` explicitly StartsWith, // Ignore assets that start explicitly with our `GlobalConsensus(NetworkId)`, means: - // - foreign assets from our consensus should be: `MultiLocation {parents: 1, - // X*(Parachain(xyz), ..)}` + // - foreign assets from our consensus should be: `Location {parents: 1, X*(Parachain(xyz), + // ..)}` // - foreign assets outside our consensus with the same `GlobalConsensus(NetworkId)` won't // be accepted here StartsWithExplicitGlobalConsensus, @@ -153,7 +151,7 @@ pub type ForeignFungiblesTransactor = FungiblesAdapter< >; /// Means for transacting assets on this chain. -pub type AssetTransactors = (CurrencyTransactor, FungiblesTransactor, ForeignFungiblesTransactor); +pub type AssetTransactors = (FungibleTransactor, FungiblesTransactor, ForeignFungiblesTransactor); /// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance, /// ready for dispatching a transaction with Xcm's `Transact`. There is an `OriginKind` which can @@ -190,10 +188,6 @@ match_types! { MultiLocation { parents: 1, interior: Here } | MultiLocation { parents: 1, interior: X1(Plurality { .. }) } }; - pub type ParentOrSiblings: impl Contains = { - MultiLocation { parents: 1, interior: Here } | - MultiLocation { parents: 1, interior: X1(_) } - }; pub type FellowshipEntities: impl Contains = { // Fellowship Plurality MultiLocation { parents: 1, interior: X2(Parachain(1001), Plurality { id: BodyId::Technical, ..}) } | @@ -407,7 +401,7 @@ pub type Barrier = TrailingSetTopicAsId< Equals, )>, // Subscriptions for version tracking are OK. - AllowSubscriptionsFrom, + AllowSubscriptionsFrom, ), UniversalLocation, ConstU32<8>, @@ -423,23 +417,11 @@ pub type AssetFeeAsExistentialDepositMultiplierFeeCharger = AssetFeeAsExistentia TrustBackedAssetsInstance, >; -match_types! { - pub type SystemParachains: impl Contains = { - MultiLocation { - parents: 1, - interior: X1(Parachain( - system_parachain::COLLECTIVES_ID | - system_parachain::BRIDGE_HUB_ID - )), - } - }; -} - /// Locations that will not be charged fees in the executor, /// either execution or delivery. /// We only waive fees for system functions, which these locations represent. pub type WaivedLocations = ( - RelayOrOtherSystemParachains, + RelayOrOtherSystemParachains, Equals, FellowshipEntities, ); diff --git a/system-parachains/asset-hubs/asset-hub-polkadot/tests/tests.rs b/system-parachains/asset-hubs/asset-hub-polkadot/tests/tests.rs index b9bb25e243..5b36c1ed18 100644 --- a/system-parachains/asset-hubs/asset-hub-polkadot/tests/tests.rs +++ b/system-parachains/asset-hubs/asset-hub-polkadot/tests/tests.rs @@ -25,9 +25,9 @@ use asset_hub_polkadot_runtime::{ TrustBackedAssetsPalletLocation, XcmConfig, }, AllPalletsWithoutSystem, AssetDeposit, Assets, Balances, ExistentialDeposit, ForeignAssets, - ForeignAssetsInstance, MetadataDepositBase, MetadataDepositPerByte, ParachainSystem, Runtime, - RuntimeCall, RuntimeEvent, SessionKeys, ToKusamaXcmRouterInstance, TrustBackedAssetsInstance, - XcmpQueue, + ForeignAssetsInstance, MetadataDepositBase, MetadataDepositPerByte, ParachainSystem, + PolkadotXcm, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, SessionKeys, + ToKusamaXcmRouterInstance, TrustBackedAssetsInstance, XcmpQueue, }; use asset_test_utils::{ test_cases_over_bridge::TestBridgingConfig, CollatorSessionKey, CollatorSessionKeys, ExtBuilder, @@ -683,6 +683,12 @@ asset_test_utils::include_create_and_manage_foreign_assets_for_local_consensus_p ); fn bridging_to_asset_hub_kusama() -> TestBridgingConfig { + let _ = PolkadotXcm::force_xcm_version( + RuntimeOrigin::root(), + Box::new(bridging::to_kusama::AssetHubKusama::get()), + XCM_VERSION, + ) + .expect("version saved!"); TestBridgingConfig { bridged_network: bridging::to_kusama::KusamaNetwork::get(), local_bridge_hub_para_id: bridging::SiblingBridgeHubParaId::get(), diff --git a/system-parachains/bridge-hubs/bridge-hub-kusama/Cargo.toml b/system-parachains/bridge-hubs/bridge-hub-kusama/Cargo.toml index 244988223a..43678efe79 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 = "16.0.0" } +substrate-wasm-builder = { optional = true , version = "17.0.0" } [dependencies] codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false, features = ["derive"] } @@ -27,82 +27,82 @@ kusama-runtime-constants = { path = "../../../relay/kusama/constants", default-f polkadot-runtime-constants = { path = "../../../relay/polkadot/constants", default-features = false} # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-executive = { default-features = false, version = "27.0.0" } -frame-support = { default-features = false, version = "27.0.0" } -frame-system = { default-features = false, version = "27.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "25.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.33.0" } -pallet-aura = { default-features = false, version = "26.0.0" } -pallet-authorship = { default-features = false, version = "27.0.0" } -pallet-balances = { default-features = false, version = "27.0.0" } -pallet-message-queue = { default-features = false , version = "30.0.0" } -pallet-multisig = { default-features = false, version = "27.0.0" } -pallet-session = { default-features = false, version = "27.0.0" } -pallet-timestamp = { default-features = false, version = "26.0.0" } -pallet-transaction-payment = { default-features = false, version = "27.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "27.0.0" } -pallet-utility = { default-features = false, version = "27.0.0" } -sp-api = { default-features = false, version = "25.0.0" } -sp-block-builder = { default-features = false, version = "25.0.0" } -sp-consensus-aura = { default-features = false, version = "0.31.0" } -sp-core = { default-features = false, version = "27.0.0" } -sp-genesis-builder = { default-features = false , version = "0.6.0" } -sp-inherents = { default-features = false, version = "25.0.0" } -sp-io = { default-features = false, version = "29.0.0" } -sp-offchain = { default-features = false, version = "25.0.0" } -sp-runtime = { default-features = false, version = "30.0.1" } -sp-session = { default-features = false, version = "26.0.0" } -sp-std = { default-features = false, version = "13.0.0" } -sp-storage = { default-features = false, version = "18.0.0" } -sp-transaction-pool = { default-features = false, version = "25.0.0" } -sp-version = { default-features = false, version = "28.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-executive = { default-features = false, version = "28.0.0" } +frame-support = { default-features = false, version = "28.0.0" } +frame-system = { default-features = false, version = "28.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "26.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.34.0" } +pallet-aura = { default-features = false, version = "27.0.0" } +pallet-authorship = { default-features = false, version = "28.0.0" } +pallet-balances = { default-features = false, version = "28.0.0" } +pallet-message-queue = { default-features = false , version = "31.0.0" } +pallet-multisig = { default-features = false, version = "28.0.0" } +pallet-session = { default-features = false, version = "28.0.0" } +pallet-timestamp = { default-features = false, version = "27.0.0" } +pallet-transaction-payment = { default-features = false, version = "28.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "28.0.0" } +pallet-utility = { default-features = false, version = "28.0.0" } +sp-api = { default-features = false, version = "26.0.0" } +sp-block-builder = { default-features = false, version = "26.0.0" } +sp-consensus-aura = { default-features = false, version = "0.32.0" } +sp-core = { default-features = false, version = "28.0.0" } +sp-genesis-builder = { default-features = false , version = "0.7.0" } +sp-inherents = { default-features = false, version = "26.0.0" } +sp-io = { default-features = false, version = "30.0.0" } +sp-offchain = { default-features = false, version = "26.0.0" } +sp-runtime = { default-features = false, version = "31.0.1" } +sp-session = { default-features = false, version = "27.0.0" } +sp-std = { default-features = false, version = "14.0.0" } +sp-storage = { default-features = false, version = "19.0.0" } +sp-transaction-pool = { default-features = false, version = "26.0.0" } +sp-version = { default-features = false, version = "29.0.0" } # Polkadot -pallet-xcm = { default-features = false, version = "6.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "6.0.2" } -polkadot-core-primitives = { default-features = false, version = "6.0.0" } -polkadot-parachain-primitives = { default-features = false, version = "5.0.0" } -polkadot-runtime-common = { default-features = false, version = "6.0.0" } -xcm = { package = "staging-xcm", default-features = false, version = "6.0.0" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "6.0.2" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "6.0.2" } +pallet-xcm = { default-features = false, version = "7.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "7.0.4" } +polkadot-core-primitives = { default-features = false, version = "7.0.0" } +polkadot-parachain-primitives = { default-features = false, version = "6.0.0" } +polkadot-runtime-common = { default-features = false, version = "7.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "7.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "7.0.3" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "7.0.3" } # Cumulus -cumulus-pallet-aura-ext = { default-features = false , version = "0.6.0" } -cumulus-pallet-dmp-queue = { default-features = false , version = "0.6.0" } -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.6.0" } -cumulus-pallet-session-benchmarking = { default-features = false, version = "8.0.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.6.0" } -cumulus-pallet-xcmp-queue = { default-features = false , features = ["bridging"] , version = "0.6.0" } -cumulus-primitives-core = { default-features = false , version = "0.6.0" } -cumulus-primitives-utility = { default-features = false , version = "0.6.2" } -pallet-collator-selection = { default-features = false , version = "8.0.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.6.0" } -parachains-common = { default-features = false , version = "6.0.0" } +cumulus-pallet-aura-ext = { default-features = false , version = "0.7.0" } +cumulus-pallet-dmp-queue = { default-features = false , version = "0.7.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.7.0" } +cumulus-pallet-session-benchmarking = { default-features = false, version = "9.0.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.7.0" } +cumulus-pallet-xcmp-queue = { default-features = false , features = ["bridging"] , version = "0.7.0" } +cumulus-primitives-core = { default-features = false , version = "0.7.0" } +cumulus-primitives-utility = { default-features = false , version = "0.7.3" } +pallet-collator-selection = { default-features = false , version = "9.0.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.7.0" } +parachains-common = { default-features = false , version = "7.0.0" } system-parachains-constants = { path = "../../constants", default-features = false } # Bridges -bp-header-chain = { default-features = false , version = "0.6.0" } -bp-messages = { default-features = false , version = "0.6.0" } -bp-parachains = { default-features = false , version = "0.6.0" } -bp-polkadot-core = { default-features = false , version = "0.6.0" } -bp-relayers = { default-features = false , version = "0.6.0" } -bp-runtime = { default-features = false , version = "0.6.0" } -bp-kusama = { default-features = false , version = "0.4.0" } -bp-polkadot = { default-features = false , version = "0.4.0" } -bridge-runtime-common = { default-features = false , version = "0.6.0" } -pallet-bridge-grandpa = { default-features = false , version = "0.6.0" } -pallet-bridge-messages = { default-features = false , version = "0.6.0" } -pallet-bridge-parachains = { default-features = false , version = "0.6.0" } -pallet-bridge-relayers = { default-features = false , version = "0.6.0" } -pallet-xcm-bridge-hub = { default-features = false , version = "0.1.0" } +bp-header-chain = { default-features = false , version = "0.7.0" } +bp-messages = { default-features = false , version = "0.7.0" } +bp-parachains = { default-features = false , version = "0.7.0" } +bp-polkadot-core = { default-features = false , version = "0.7.0" } +bp-relayers = { default-features = false , version = "0.7.0" } +bp-runtime = { default-features = false , version = "0.7.0" } +bp-kusama = { default-features = false , version = "0.5.0" } +bp-polkadot = { default-features = false , version = "0.5.0" } +bridge-runtime-common = { default-features = false , version = "0.7.0" } +pallet-bridge-grandpa = { default-features = false , version = "0.7.0" } +pallet-bridge-messages = { default-features = false , version = "0.7.0" } +pallet-bridge-parachains = { default-features = false , version = "0.7.0" } +pallet-bridge-relayers = { default-features = false , version = "0.7.0" } +pallet-xcm-bridge-hub = { default-features = false , version = "0.2.0" } [dev-dependencies] -bridge-hub-test-utils = { version = "0.6.1" } -bridge-runtime-common = { version = "0.6.0", features = ["integrity-test"] } -sp-keyring = { version = "30.0.0" } +bridge-hub-test-utils = { version = "0.7.1" } +bridge-runtime-common = { version = "0.7.0", features = ["integrity-test"] } +sp-keyring = { version = "31.0.0" } static_assertions = { version = "1.1.0" } [features] diff --git a/system-parachains/bridge-hubs/bridge-hub-kusama/primitives/Cargo.toml b/system-parachains/bridge-hubs/bridge-hub-kusama/primitives/Cargo.toml index fe96ffdfbe..f45a93f2ec 100644 --- a/system-parachains/bridge-hubs/bridge-hub-kusama/primitives/Cargo.toml +++ b/system-parachains/bridge-hubs/bridge-hub-kusama/primitives/Cargo.toml @@ -14,15 +14,15 @@ kusama-runtime-constants = { path = "../../../../relay/kusama/constants", defaul polkadot-runtime-constants = { path = "../../../../relay/polkadot/constants", default-features = false} # Bridge Dependencies -bp-bridge-hub-cumulus = { default-features = false , version = "0.6.0" } -bp-runtime = { default-features = false , version = "0.6.0" } -bp-messages = { default-features = false , version = "0.6.0" } +bp-bridge-hub-cumulus = { default-features = false , version = "0.7.0" } +bp-runtime = { default-features = false , version = "0.7.0" } +bp-messages = { default-features = false , version = "0.7.0" } # Substrate Based Dependencies -frame-support = { default-features = false, version = "27.0.0" } -sp-api = { default-features = false, version = "25.0.0" } -sp-runtime = { default-features = false, version = "30.0.1" } -sp-std = { default-features = false , version = "13.0.0" } +frame-support = { default-features = false, version = "28.0.0" } +sp-api = { default-features = false, version = "26.0.0" } +sp-runtime = { default-features = false, version = "31.0.1" } +sp-std = { default-features = false , version = "14.0.0" } [features] default = [ "std" ] diff --git a/system-parachains/bridge-hubs/bridge-hub-kusama/primitives/src/lib.rs b/system-parachains/bridge-hubs/bridge-hub-kusama/primitives/src/lib.rs index a746c2e022..d1faa0e11a 100644 --- a/system-parachains/bridge-hubs/bridge-hub-kusama/primitives/src/lib.rs +++ b/system-parachains/bridge-hubs/bridge-hub-kusama/primitives/src/lib.rs @@ -87,15 +87,15 @@ frame_support::parameter_types! { /// The XCM fee that is paid for executing XCM program (with `ExportMessage` instruction) at the Kusama /// BridgeHub. /// (initially was calculated by test `BridgeHubKusama::can_calculate_weight_for_paid_export_message_with_reserve_transfer` + `33%`) - pub const BridgeHubKusamaBaseXcmFeeInKsms: u128 = 16_196_533_317; + pub const BridgeHubKusamaBaseXcmFeeInKsms: u128 = 16_156_041_984; /// Transaction fee that is paid at the Kusama BridgeHub for delivering single inbound message. /// (initially was calculated by test `BridgeHubKusama::can_calculate_fee_for_complex_message_delivery_transaction` + `33%`) - pub const BridgeHubKusamaBaseDeliveryFeeInKsms: u128 = 56_516_280_489; + pub const BridgeHubKusamaBaseDeliveryFeeInKsms: u128 = 56_374_989_788; /// Transaction fee that is paid at the Kusama BridgeHub for delivering single outbound message confirmation. /// (initially was calculated by test `BridgeHubKusama::can_calculate_fee_for_complex_message_confirmation_transaction` + `33%`) - pub const BridgeHubKusamaBaseConfirmationFeeInKsms: u128 = 53_943_614_276; + pub const BridgeHubKusamaBaseConfirmationFeeInKsms: u128 = 53_808_755_240; } /// Compute the total estimated fee that needs to be paid in KSMs by the sender when sending diff --git a/system-parachains/bridge-hubs/bridge-hub-kusama/src/bridge_to_polkadot_config.rs b/system-parachains/bridge-hubs/bridge-hub-kusama/src/bridge_to_polkadot_config.rs index b18f167158..477a9ac12c 100644 --- a/system-parachains/bridge-hubs/bridge-hub-kusama/src/bridge_to_polkadot_config.rs +++ b/system-parachains/bridge-hubs/bridge-hub-kusama/src/bridge_to_polkadot_config.rs @@ -19,8 +19,8 @@ use crate::{ weights, xcm_config::{UniversalLocation, XcmRouter}, - AccountId, Balance, Balances, BlockNumber, BridgePolkadotMessages, Runtime, RuntimeEvent, - RuntimeOrigin, XcmOverBridgeHubPolkadot, + AccountId, Balance, Balances, BlockNumber, BridgePolkadotMessages, PolkadotXcm, Runtime, + RuntimeEvent, RuntimeOrigin, XcmOverBridgeHubPolkadot, }; use bp_messages::LaneId; use bp_parachains::SingleParaStoredHeaderDataBuilder; @@ -33,7 +33,7 @@ use bridge_runtime_common::{ }, messages_xcm_extension::{ SenderAndLane, XcmAsPlainPayload, XcmBlobHauler, XcmBlobHaulerAdapter, - XcmBlobMessageDispatch, + XcmBlobMessageDispatch, XcmVersionOfDestAndRemoteBridge, }, refund_relayer_extension::{ ActualFeeRefund, RefundBridgedParachainMessages, RefundSignedExtensionAdapter, @@ -75,6 +75,11 @@ parameter_types! { parameter_types! { /// Polkadot Network identifier. pub PolkadotGlobalConsensusNetwork: NetworkId = NetworkId::Polkadot; + /// Polkadot Network as `Location`. + pub PolkadotGlobalConsensusNetworkLocation: MultiLocation = MultiLocation { + parents: 2, + interior: X1(GlobalConsensus(PolkadotGlobalConsensusNetwork::get())) + }; /// Interior location (relative to this runtime) of the with-Polkadot messages pallet. pub BridgeKusamaToPolkadotMessagesPalletInstance: InteriorMultiLocation = X1( PalletInstance(::index() as u8), @@ -84,6 +89,14 @@ parameter_types! { pub AssetHubKusamaParaId: cumulus_primitives_core::ParaId = kusama_runtime_constants::system_parachain::ASSET_HUB_ID.into(); /// Identifier of the bridged Polkadot Asset Hub parachain. pub AssetHubPolkadotParaId: cumulus_primitives_core::ParaId = polkadot_runtime_constants::system_parachain::ASSET_HUB_ID.into(); + /// Location of the bridged Polkadot Bridge Hub parachain. + pub BridgeHubPolkadotLocation: MultiLocation = MultiLocation { + parents: 2, + interior: X2( + GlobalConsensus(PolkadotGlobalConsensusNetwork::get()), + Parachain(::PARACHAIN_ID) + ) + }; /// A route (XCM location and bridge lane) that the Kusama Asset Hub -> Polkadot Asset Hub /// message is following. @@ -257,12 +270,14 @@ impl XcmBlobHauler for ToBridgeHubPolkadotXcmBlobHauler { pub type XcmOverBridgeHubPolkadotInstance = pallet_xcm_bridge_hub::Instance1; impl pallet_xcm_bridge_hub::Config for Runtime { type UniversalLocation = UniversalLocation; - type BridgedNetworkId = PolkadotGlobalConsensusNetwork; + type BridgedNetwork = PolkadotGlobalConsensusNetworkLocation; type BridgeMessagesPalletInstance = WithBridgeHubPolkadotMessagesInstance; // `MessageExportPrice` is simply propagated to the inner `xcm_builder::HaulBlobExporter`, and // we do not need or want to add any additional price for exporting here, as it is already // covered by the measured weight of the `ExportMessage` instruction. type MessageExportPrice = (); + type DestinationVersion = + XcmVersionOfDestAndRemoteBridge; type Lanes = ActiveLanes; type LanesSupport = ToBridgeHubPolkadotXcmBlobHauler; } @@ -421,5 +436,8 @@ mod tests { bp_bridge_hub_kusama::WITH_BRIDGE_KUSAMA_TO_POLKADOT_MESSAGES_PALLET_INDEX )) ); + + assert!(BridgeHubPolkadotLocation::get() + .starts_with(&PolkadotGlobalConsensusNetworkLocation::get())); } } diff --git a/system-parachains/bridge-hubs/bridge-hub-kusama/src/lib.rs b/system-parachains/bridge-hubs/bridge-hub-kusama/src/lib.rs index 92c2df46e2..f7c004c661 100644 --- a/system-parachains/bridge-hubs/bridge-hub-kusama/src/lib.rs +++ b/system-parachains/bridge-hubs/bridge-hub-kusama/src/lib.rs @@ -205,6 +205,7 @@ impl frame_system::Config for Runtime { type Block = Block; /// The ubiquitous event type. type RuntimeEvent = RuntimeEvent; + type RuntimeTask = RuntimeTask; /// The ubiquitous origin type. type RuntimeOrigin = RuntimeOrigin; /// Maximum number of block number to block hash mappings to keep (oldest pruned first). @@ -949,6 +950,21 @@ impl_runtime_apis! { fn export_message_origin_and_destination( ) -> Result<(MultiLocation, NetworkId, InteriorMultiLocation), BenchmarkError> { + // save XCM version for remote bridge hub + let _ = PolkadotXcm::force_xcm_version( + RuntimeOrigin::root(), + Box::new(bridge_to_polkadot_config::BridgeHubPolkadotLocation::get()), + XCM_VERSION, + ).map_err(|e| { + log::error!( + "Failed to dispatch `force_xcm_version({:?}, {:?}, {:?})`, error: {:?}", + RuntimeOrigin::root(), + bridge_to_polkadot_config::BridgeHubPolkadotLocation::get(), + XCM_VERSION, + e + ); + BenchmarkError::Stop("XcmVersion was not stored!") + })?; Ok( ( bridge_to_polkadot_config::FromAssetHubKusamaToAssetHubPolkadotRoute::get().location, diff --git a/system-parachains/bridge-hubs/bridge-hub-kusama/src/weights/frame_system.rs b/system-parachains/bridge-hubs/bridge-hub-kusama/src/weights/frame_system.rs index 4a27cf896d..b744030203 100644 --- a/system-parachains/bridge-hubs/bridge-hub-kusama/src/weights/frame_system.rs +++ b/system-parachains/bridge-hubs/bridge-hub-kusama/src/weights/frame_system.rs @@ -149,4 +149,31 @@ impl frame_system::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) } + /// Storage: `System::AuthorizedUpgrade` (r:0 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + fn authorize_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 33_027_000 picoseconds. + Weight::from_parts(33_027_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `System::AuthorizedUpgrade` (r:1 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:1) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + fn apply_authorized_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `22` + // Estimated: `1518` + // Minimum execution time: 118_101_992_000 picoseconds. + Weight::from_parts(118_101_992_000, 0) + .saturating_add(Weight::from_parts(0, 1518)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } } diff --git a/system-parachains/bridge-hubs/bridge-hub-kusama/src/xcm_config.rs b/system-parachains/bridge-hubs/bridge-hub-kusama/src/xcm_config.rs index b73e1c7494..8d2dbf762d 100644 --- a/system-parachains/bridge-hubs/bridge-hub-kusama/src/xcm_config.rs +++ b/system-parachains/bridge-hubs/bridge-hub-kusama/src/xcm_config.rs @@ -27,11 +27,13 @@ use frame_support::{ traits::{ConstU32, Contains, Equals, Everything, Nothing}, }; use frame_system::EnsureRoot; -use kusama_runtime_constants::system_parachain; use pallet_xcm::XcmPassthrough; use parachains_common::{ impls::ToStakingPot, - xcm_config::{ConcreteAssetFromSystem, RelayOrOtherSystemParachains}, + xcm_config::{ + AllSiblingSystemParachains, ConcreteAssetFromSystem, ParentRelayOrSiblingParachains, + RelayOrOtherSystemParachains, + }, }; use polkadot_parachain_primitives::primitives::Sibling; use sp_runtime::traits::AccountIdConversion; @@ -39,10 +41,10 @@ use system_parachains_constants::TREASURY_PALLET_ID; use xcm::latest::prelude::*; use xcm_builder::{ AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses, - AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, CurrencyAdapter, - DenyReserveTransferToRelayChain, DenyThenTry, DescribeAllTerminal, DescribeFamily, - EnsureXcmOrigin, FrameTransactionalProcessor, HashedDescription, IsConcrete, ParentAsSuperuser, - ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, + AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, DenyReserveTransferToRelayChain, + DenyThenTry, DescribeAllTerminal, DescribeFamily, EnsureXcmOrigin, FrameTransactionalProcessor, + FungibleAdapter, HashedDescription, IsConcrete, ParentAsSuperuser, ParentIsPreset, + RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, WeightInfoBounds, WithComputedOrigin, WithUniqueTopic, XcmFeeManagerFromComponents, XcmFeeToAccount, @@ -78,7 +80,7 @@ pub type LocationToAccountId = ( ); /// Means for transacting the native currency on this chain. -pub type CurrencyTransactor = CurrencyAdapter< +pub type FungibleTransactor = FungibleAdapter< // Use this currency: Balances, // Use this currency when it is a fungible asset matching the given location or name: @@ -120,10 +122,6 @@ match_types! { MultiLocation { parents: 1, interior: Here } | MultiLocation { parents: 1, interior: X1(Plurality { .. }) } }; - pub type ParentOrSiblings: impl Contains = { - MultiLocation { parents: 1, interior: Here } | - MultiLocation { parents: 1, interior: X1(_) } - }; } /// A call filter for the XCM Transact instruction. This is a temporary measure until we properly /// account for proof size weights. @@ -217,7 +215,7 @@ pub type Barrier = TrailingSetTopicAsId< Equals, )>, // Subscriptions for version tracking are OK. - AllowSubscriptionsFrom, + AllowSubscriptionsFrom, ), UniversalLocation, ConstU32<8>, @@ -226,23 +224,13 @@ pub type Barrier = TrailingSetTopicAsId< >, >; -match_types! { - pub type SystemParachains: impl Contains = { - MultiLocation { - parents: 1, - interior: X1(Parachain( - system_parachain::ASSET_HUB_ID | - system_parachain::ENCOINTER_ID - )), - } - }; -} - /// Locations that will not be charged fees in the executor, /// either execution or delivery. /// We only waive fees for system functions, which these locations represent. -pub type WaivedLocations = - (RelayOrOtherSystemParachains, Equals); +pub type WaivedLocations = ( + RelayOrOtherSystemParachains, + Equals, +); /// Cases where a remote origin is accepted as trusted Teleporter for a given asset: /// - KSM with the parent Relay Chain and sibling parachains. @@ -252,7 +240,7 @@ pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { type RuntimeCall = RuntimeCall; type XcmSender = XcmRouter; - type AssetTransactor = CurrencyTransactor; + type AssetTransactor = FungibleTransactor; type OriginConverter = XcmOriginToTransactDispatchOrigin; // BridgeHub does not recognize a reserve location for any asset. Users must teleport KSM // where allowed (e.g. with the Relay Chain). diff --git a/system-parachains/bridge-hubs/bridge-hub-kusama/tests/tests.rs b/system-parachains/bridge-hubs/bridge-hub-kusama/tests/tests.rs index b9a0d64516..a69892be80 100644 --- a/system-parachains/bridge-hubs/bridge-hub-kusama/tests/tests.rs +++ b/system-parachains/bridge-hubs/bridge-hub-kusama/tests/tests.rs @@ -18,25 +18,26 @@ use bp_polkadot_core::Signature; use bridge_hub_kusama_runtime::{ bridge_to_polkadot_config::{ AssetHubPolkadotParaId, BridgeGrandpaPolkadotInstance, BridgeHubPolkadotChainId, - BridgeParachainPolkadotInstance, DeliveryRewardInBalance, PolkadotGlobalConsensusNetwork, - RefundBridgeHubPolkadotMessages, RequiredStakeForStakeAndSlash, - WithBridgeHubPolkadotMessageBridge, WithBridgeHubPolkadotMessagesInstance, - XCM_LANE_FOR_ASSET_HUB_KUSAMA_TO_ASSET_HUB_POLKADOT, + BridgeHubPolkadotLocation, BridgeParachainPolkadotInstance, DeliveryRewardInBalance, + PolkadotGlobalConsensusNetwork, RefundBridgeHubPolkadotMessages, + RequiredStakeForStakeAndSlash, WithBridgeHubPolkadotMessageBridge, + WithBridgeHubPolkadotMessagesInstance, XCM_LANE_FOR_ASSET_HUB_KUSAMA_TO_ASSET_HUB_POLKADOT, }, xcm_config::{KsmRelayLocation, RelayNetwork, XcmConfig}, AllPalletsWithoutSystem, BridgeRejectObsoleteHeadersAndMessages, Executive, ExistentialDeposit, - ParachainSystem, PolkadotXcm, Runtime, RuntimeCall, RuntimeEvent, SessionKeys, SignedExtra, - UncheckedExtrinsic, + ParachainSystem, PolkadotXcm, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, SessionKeys, + SignedExtra, TransactionPayment, UncheckedExtrinsic, }; +use bridge_hub_test_utils::test_cases::from_parachain; use codec::{Decode, Encode}; -use frame_support::parameter_types; -use frame_system::pallet_prelude::HeaderFor; -use parachains_common::{kusama::fee::WeightToFee, AccountId, AuraId, Balance}; +use frame_support::{dispatch::GetDispatchInfo, parameter_types, traits::ConstU8}; +use parachains_common::{AccountId, AuraId, Balance}; use sp_keyring::AccountKeyring::Alice; use sp_runtime::{ generic::{Era, SignedPayload}, AccountId32, }; +use system_parachains_constants::kusama::fee::WeightToFee; use xcm::latest::prelude::*; const ALICE: [u8; 32] = [1u8; 32]; @@ -44,6 +45,16 @@ const ALICE: [u8; 32] = [1u8; 32]; // Para id of sibling chain used in tests. pub const SIBLING_PARACHAIN_ID: u32 = 1000; +// Runtime from tests PoV +type RuntimeTestsAdapter = from_parachain::WithRemoteParachainHelperAdapter< + Runtime, + AllPalletsWithoutSystem, + BridgeGrandpaPolkadotInstance, + BridgeParachainPolkadotInstance, + WithBridgeHubPolkadotMessagesInstance, + WithBridgeHubPolkadotMessageBridge, +>; + parameter_types! { pub CheckingAccount: AccountId = PolkadotXcm::check_account(); } @@ -52,13 +63,16 @@ fn construct_extrinsic( sender: sp_keyring::AccountKeyring, call: RuntimeCall, ) -> UncheckedExtrinsic { + let account_id = AccountId32::from(sender.public()); let extra: SignedExtra = ( frame_system::CheckNonZeroSender::::new(), frame_system::CheckSpecVersion::::new(), frame_system::CheckTxVersion::::new(), frame_system::CheckGenesis::::new(), frame_system::CheckEra::::from(Era::immortal()), - frame_system::CheckNonce::::from(0), + frame_system::CheckNonce::::from( + frame_system::Pallet::::account(&account_id).nonce, + ), frame_system::CheckWeight::::new(), pallet_transaction_payment::ChargeTransactionPayment::::from(0), BridgeRejectObsoleteHeadersAndMessages, @@ -68,7 +82,7 @@ fn construct_extrinsic( let signature = payload.using_encoded(|e| sender.sign(e)); UncheckedExtrinsic::new_signed( call, - AccountId32::from(sender.public()).into(), + account_id.into(), Signature::Sr25519(signature.clone()), extra, ) @@ -76,16 +90,18 @@ fn construct_extrinsic( fn construct_and_apply_extrinsic( relayer_at_target: sp_keyring::AccountKeyring, - batch: pallet_utility::Call, + call: RuntimeCall, ) -> sp_runtime::DispatchOutcome { - let batch_call = RuntimeCall::Utility(batch); - let xt = construct_extrinsic(relayer_at_target, batch_call); + let xt = construct_extrinsic(relayer_at_target, call); let r = Executive::apply_extrinsic(xt); r.unwrap() } -fn executive_init_block(header: &HeaderFor) { - Executive::initialize_block(header) +fn construct_and_estimate_extrinsic_fee(batch: pallet_utility::Call) -> Balance { + let batch_call = RuntimeCall::Utility(batch); + let batch_info = batch_call.get_dispatch_info(); + let xt = construct_extrinsic(Alice, batch_call); + TransactionPayment::compute_fee(xt.encoded_size() as _, &batch_info, 0) } fn collator_session_keys() -> bridge_hub_test_utils::CollatorSessionKeys { @@ -130,11 +146,7 @@ fn initialize_bridge_by_governance_works() { bridge_hub_test_utils::test_cases::initialize_bridge_by_governance_works::< Runtime, BridgeGrandpaPolkadotInstance, - >( - collator_session_keys(), - bp_bridge_hub_kusama::BRIDGE_HUB_KUSAMA_PARACHAIN_ID, - Box::new(|call| RuntimeCall::BridgePolkadotGrandpa(call).encode()), - ) + >(collator_session_keys(), bp_bridge_hub_kusama::BRIDGE_HUB_KUSAMA_PARACHAIN_ID) } #[test] @@ -188,7 +200,7 @@ fn handle_export_message_from_system_parachain_add_to_outbound_queue_works() { Some((KsmRelayLocation::get(), ExistentialDeposit::get()).into()), // value should be >= than value generated by `can_calculate_weight_for_paid_export_message_with_reserve_transfer` Some((KsmRelayLocation::get(), bp_bridge_hub_kusama::BridgeHubKusamaBaseXcmFeeInKsms::get()).into()), - || (), + || PolkadotXcm::force_xcm_version(RuntimeOrigin::root(), Box::new(BridgeHubPolkadotLocation::get()), XCM_VERSION).expect("version saved!"), ) } @@ -202,6 +214,7 @@ fn message_dispatch_routing_works() { WithBridgeHubPolkadotMessagesInstance, RelayNetwork, PolkadotGlobalConsensusNetwork, + ConstU8<2>, >( collator_session_keys(), bp_bridge_hub_kusama::BRIDGE_HUB_KUSAMA_PARACHAIN_ID, @@ -225,38 +238,22 @@ fn message_dispatch_routing_works() { #[test] fn relayed_incoming_message_works() { - bridge_hub_test_utils::test_cases::relayed_incoming_message_works::< - Runtime, - AllPalletsWithoutSystem, - XcmConfig, - ParachainSystem, - BridgeGrandpaPolkadotInstance, - BridgeParachainPolkadotInstance, - WithBridgeHubPolkadotMessagesInstance, - WithBridgeHubPolkadotMessageBridge, - >( + from_parachain::relayed_incoming_message_works::( collator_session_keys(), bp_bridge_hub_kusama::BRIDGE_HUB_KUSAMA_PARACHAIN_ID, bp_bridge_hub_polkadot::BRIDGE_HUB_POLKADOT_PARACHAIN_ID, + BridgeHubPolkadotChainId::get(), SIBLING_PARACHAIN_ID, Kusama, XCM_LANE_FOR_ASSET_HUB_KUSAMA_TO_ASSET_HUB_POLKADOT, || (), + construct_and_apply_extrinsic, ) } #[test] pub fn complex_relay_extrinsic_works() { - bridge_hub_test_utils::test_cases::complex_relay_extrinsic_works::< - Runtime, - AllPalletsWithoutSystem, - XcmConfig, - ParachainSystem, - BridgeGrandpaPolkadotInstance, - BridgeParachainPolkadotInstance, - WithBridgeHubPolkadotMessagesInstance, - WithBridgeHubPolkadotMessageBridge, - >( + from_parachain::complex_relay_extrinsic_works::( collator_session_keys(), bp_bridge_hub_kusama::BRIDGE_HUB_KUSAMA_PARACHAIN_ID, bp_bridge_hub_polkadot::BRIDGE_HUB_POLKADOT_PARACHAIN_ID, @@ -264,51 +261,118 @@ pub fn complex_relay_extrinsic_works() { BridgeHubPolkadotChainId::get(), Kusama, XCM_LANE_FOR_ASSET_HUB_KUSAMA_TO_ASSET_HUB_POLKADOT, - ExistentialDeposit::get(), - executive_init_block, - construct_and_apply_extrinsic, || (), + construct_and_apply_extrinsic, ); } #[test] pub fn can_calculate_weight_for_paid_export_message_with_reserve_transfer() { - let estimated = bridge_hub_test_utils::test_cases::can_calculate_weight_for_paid_export_message_with_reserve_transfer::< - Runtime, - XcmConfig, - WeightToFee, - >(); + check_sane_fees_values( + "bp_bridge_hub_kusama::BridgeHubKusamaBaseXcmFeeInKsms", + bp_bridge_hub_kusama::BridgeHubKusamaBaseXcmFeeInKsms::get(), + || { + bridge_hub_test_utils::test_cases::can_calculate_weight_for_paid_export_message_with_reserve_transfer::< + Runtime, + XcmConfig, + WeightToFee, + >() + }, + Perbill::from_percent(33), + Some(-33), + &format!( + "Estimate fee for `ExportMessage` for runtime: {:?}", + ::Version::get() + ), + ) +} + +#[test] +pub fn can_calculate_fee_for_complex_message_delivery_transaction() { + check_sane_fees_values( + "bp_bridge_hub_kusama::BridgeHubKusamaBaseDeliveryFeeInKsms", + bp_bridge_hub_kusama::BridgeHubKusamaBaseDeliveryFeeInKsms::get(), + || { + from_parachain::can_calculate_fee_for_complex_message_delivery_transaction::< + RuntimeTestsAdapter, + >(collator_session_keys(), construct_and_estimate_extrinsic_fee) + }, + Perbill::from_percent(33), + Some(-33), + &format!( + "Estimate fee for `single message delivery` for runtime: {:?}", + ::Version::get() + ), + ) +} + +#[test] +pub fn can_calculate_fee_for_complex_message_confirmation_transaction() { + check_sane_fees_values( + "bp_bridge_hub_kusama::BridgeHubKusamaBaseConfirmationFeeInKsms", + bp_bridge_hub_kusama::BridgeHubKusamaBaseConfirmationFeeInKsms::get(), + || { + from_parachain::can_calculate_fee_for_complex_message_confirmation_transaction::< + RuntimeTestsAdapter, + >(collator_session_keys(), construct_and_estimate_extrinsic_fee) + }, + Perbill::from_percent(33), + Some(-33), + &format!( + "Estimate fee for `single message confirmation` for runtime: {:?}", + ::Version::get() + ), + ) +} + +use sp_runtime::Perbill; + +// TODO:(PR#159): remove when `polkadot-sdk@1.8.0` bump (https://github.com/polkadot-fellows/runtimes/issues/186) +/// A helper function for comparing the actual value of a fee constant with its estimated value. The +/// estimated value can be overestimated (`overestimate_in_percent`), and if the difference to the +/// actual value is below `margin_overestimate_diff_in_percent_for_lowering`, we should lower the +/// actual value. +pub fn check_sane_fees_values( + const_name: &str, + actual: u128, + calculate_estimated_fee: fn() -> u128, + overestimate_in_percent: Perbill, + margin_overestimate_diff_in_percent_for_lowering: Option, + label: &str, +) { + let estimated = calculate_estimated_fee(); + let estimated_plus_overestimate = estimated + (overestimate_in_percent * estimated); + let diff_to_estimated = diff_as_percent(actual, estimated); + let diff_to_estimated_plus_overestimate = diff_as_percent(actual, estimated_plus_overestimate); + + log::error!( + target: "bridges::estimate", + "{label}:\nconstant: {const_name}\n[+] actual: {actual}\n[+] estimated: {estimated} ({diff_to_estimated:.2?})\n[+] estimated(+33%): {estimated_plus_overestimate} ({diff_to_estimated_plus_overestimate:.2?})", + ); // check if estimated value is sane - let max_expected = bp_bridge_hub_kusama::BridgeHubKusamaBaseXcmFeeInKsms::get(); assert!( - estimated <= max_expected, - "calculated: {:?}, max_expected: {:?}, please adjust `bp_bridge_hub_kusama::BridgeHubKusamaBaseXcmFeeInKsms` value", - estimated, - max_expected + estimated <= actual, + "estimated: {estimated}, actual: {actual}, please adjust `{const_name}` to the value: {estimated_plus_overestimate}", + ); + assert!( + estimated_plus_overestimate <= actual, + "estimated_plus_overestimate: {estimated_plus_overestimate}, actual: {actual}, please adjust `{const_name}` to the value: {estimated_plus_overestimate}", + ); + + if let Some(margin_overestimate_diff_in_percent_for_lowering) = + margin_overestimate_diff_in_percent_for_lowering + { + assert!( + diff_to_estimated_plus_overestimate > margin_overestimate_diff_in_percent_for_lowering as f64, + "diff_to_estimated_plus_overestimate: {diff_to_estimated_plus_overestimate:.2}, overestimate_diff_in_percent_for_lowering: {margin_overestimate_diff_in_percent_for_lowering}, please adjust `{const_name}` to the value: {estimated_plus_overestimate}", ); + } } -// TODO: replace me with direct usages of `bridge_hub_test_utils` after deps are bumped to (at -// least) 1.4 -// -// Following two tests have to be implemented properly after upgrade to 1.6. -// See https://github.com/paritytech/polkadot-sdk/pull/2139/ and https://github.com/paritytech/parity-bridges-common/pull/2728 -// for impl details -// -// Until that, anyone can run it manually by doing following: -// -// 1) cargo vendor ../vendored-dependencies -// 2) apply relevant changes from above PRs -// 3) change workspace Cargo.toml: -// [patch.crates-io] -// bp-polkadot-core = { path = "../vendored-dependencies/bp-polkadot-core" } -// bridge-hub-test-utils = { path = "../vendored-dependencies/bridge-hub-test-utils" } -// bridge-runtime-common = { path = "../vendored-dependencies/bridge-runtime-common" } -// 4) add actual tests code and do `cargo test -p bridge-hub-polkadot-runtime` - -#[test] -pub fn can_calculate_fee_for_complex_message_delivery_transaction() {} - -#[test] -pub fn can_calculate_fee_for_complex_message_confirmation_transaction() {} +// TODO:(PR#159): remove when `polkadot-sdk@1.8.0` bump (https://github.com/polkadot-fellows/runtimes/issues/186) +pub fn diff_as_percent(left: u128, right: u128) -> f64 { + let left = left as f64; + let right = right as f64; + ((left - right).abs() / left) * 100f64 * (if left >= right { -1 } else { 1 }) as f64 +} diff --git a/system-parachains/bridge-hubs/bridge-hub-polkadot/Cargo.toml b/system-parachains/bridge-hubs/bridge-hub-polkadot/Cargo.toml index 9fdb15cf52..b304a94545 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 = "16.0.0" } +substrate-wasm-builder = { optional = true , version = "17.0.0" } [dependencies] codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false, features = ["derive"] } @@ -27,82 +27,82 @@ kusama-runtime-constants = { path = "../../../relay/kusama/constants", default-f polkadot-runtime-constants = { path = "../../../relay/polkadot/constants", default-features = false} # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-executive = { default-features = false, version = "27.0.0" } -frame-support = { default-features = false, version = "27.0.0" } -frame-system = { default-features = false, version = "27.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "25.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.33.0" } -pallet-aura = { default-features = false, version = "26.0.0" } -pallet-authorship = { default-features = false, version = "27.0.0" } -pallet-balances = { default-features = false, version = "27.0.0" } -pallet-message-queue = { default-features = false , version = "30.0.0" } -pallet-multisig = { default-features = false, version = "27.0.0" } -pallet-session = { default-features = false, version = "27.0.0" } -pallet-timestamp = { default-features = false, version = "26.0.0" } -pallet-transaction-payment = { default-features = false, version = "27.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "27.0.0" } -pallet-utility = { default-features = false, version = "27.0.0" } -sp-api = { default-features = false, version = "25.0.0" } -sp-block-builder = { default-features = false, version = "25.0.0" } -sp-consensus-aura = { default-features = false, version = "0.31.0" } -sp-core = { default-features = false, version = "27.0.0" } -sp-genesis-builder = { default-features = false , version = "0.6.0" } -sp-inherents = { default-features = false, version = "25.0.0" } -sp-io = { default-features = false, version = "29.0.0" } -sp-offchain = { default-features = false, version = "25.0.0" } -sp-runtime = { default-features = false, version = "30.0.1" } -sp-session = { default-features = false, version = "26.0.0" } -sp-std = { default-features = false, version = "13.0.0" } -sp-storage = { default-features = false, version = "18.0.0" } -sp-transaction-pool = { default-features = false, version = "25.0.0" } -sp-version = { default-features = false, version = "28.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-executive = { default-features = false, version = "28.0.0" } +frame-support = { default-features = false, version = "28.0.0" } +frame-system = { default-features = false, version = "28.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "26.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.34.0" } +pallet-aura = { default-features = false, version = "27.0.0" } +pallet-authorship = { default-features = false, version = "28.0.0" } +pallet-balances = { default-features = false, version = "28.0.0" } +pallet-message-queue = { default-features = false , version = "31.0.0" } +pallet-multisig = { default-features = false, version = "28.0.0" } +pallet-session = { default-features = false, version = "28.0.0" } +pallet-timestamp = { default-features = false, version = "27.0.0" } +pallet-transaction-payment = { default-features = false, version = "28.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "28.0.0" } +pallet-utility = { default-features = false, version = "28.0.0" } +sp-api = { default-features = false, version = "26.0.0" } +sp-block-builder = { default-features = false, version = "26.0.0" } +sp-consensus-aura = { default-features = false, version = "0.32.0" } +sp-core = { default-features = false, version = "28.0.0" } +sp-genesis-builder = { default-features = false , version = "0.7.0" } +sp-inherents = { default-features = false, version = "26.0.0" } +sp-io = { default-features = false, version = "30.0.0" } +sp-offchain = { default-features = false, version = "26.0.0" } +sp-runtime = { default-features = false, version = "31.0.1" } +sp-session = { default-features = false, version = "27.0.0" } +sp-std = { default-features = false, version = "14.0.0" } +sp-storage = { default-features = false, version = "19.0.0" } +sp-transaction-pool = { default-features = false, version = "26.0.0" } +sp-version = { default-features = false, version = "29.0.0" } # Polkadot -pallet-xcm = { default-features = false, version = "6.0.0" } -pallet-xcm-benchmarks = { default-features = false, optional = true , version = "6.0.2" } -polkadot-core-primitives = { default-features = false, version = "6.0.0" } -polkadot-parachain-primitives = { default-features = false, version = "5.0.0" } -polkadot-runtime-common = { default-features = false, version = "6.0.0" } -xcm = { package = "staging-xcm", default-features = false, version = "6.0.0" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "6.0.2" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "6.0.2" } +pallet-xcm = { default-features = false, version = "7.0.0" } +pallet-xcm-benchmarks = { default-features = false, optional = true , version = "7.0.4" } +polkadot-core-primitives = { default-features = false, version = "7.0.0" } +polkadot-parachain-primitives = { default-features = false, version = "6.0.0" } +polkadot-runtime-common = { default-features = false, version = "7.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "7.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "7.0.3" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "7.0.3" } # Cumulus -cumulus-pallet-aura-ext = { default-features = false , version = "0.6.0" } -cumulus-pallet-dmp-queue = { default-features = false , version = "0.6.0" } -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.6.0" } -cumulus-pallet-session-benchmarking = { default-features = false, version = "8.0.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.6.0" } -cumulus-pallet-xcmp-queue = { default-features = false , features = ["bridging"] , version = "0.6.0" } -cumulus-primitives-core = { default-features = false , version = "0.6.0" } -cumulus-primitives-utility = { default-features = false , version = "0.6.2" } -pallet-collator-selection = { default-features = false , version = "8.0.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.6.0" } -parachains-common = { default-features = false , version = "6.0.0" } +cumulus-pallet-aura-ext = { default-features = false , version = "0.7.0" } +cumulus-pallet-dmp-queue = { default-features = false , version = "0.7.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.7.0" } +cumulus-pallet-session-benchmarking = { default-features = false, version = "9.0.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.7.0" } +cumulus-pallet-xcmp-queue = { default-features = false , features = ["bridging"] , version = "0.7.0" } +cumulus-primitives-core = { default-features = false , version = "0.7.0" } +cumulus-primitives-utility = { default-features = false , version = "0.7.3" } +pallet-collator-selection = { default-features = false , version = "9.0.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.7.0" } +parachains-common = { default-features = false , version = "7.0.0" } system-parachains-constants = { path = "../../constants", default-features = false } # Bridges -bp-header-chain = { default-features = false , version = "0.6.0" } -bp-messages = { default-features = false , version = "0.6.0" } -bp-parachains = { default-features = false , version = "0.6.0" } -bp-polkadot-core = { default-features = false , version = "0.6.0" } -bp-relayers = { default-features = false , version = "0.6.0" } -bp-runtime = { default-features = false , version = "0.6.0" } -bp-kusama = { default-features = false , version = "0.4.0" } -bp-polkadot = { default-features = false , version = "0.4.0" } -bridge-runtime-common = { default-features = false , version = "0.6.0" } -pallet-bridge-grandpa = { default-features = false , version = "0.6.0" } -pallet-bridge-messages = { default-features = false , version = "0.6.0" } -pallet-bridge-parachains = { default-features = false , version = "0.6.0" } -pallet-bridge-relayers = { default-features = false , version = "0.6.0" } -pallet-xcm-bridge-hub = { default-features = false , version = "0.1.0" } +bp-header-chain = { default-features = false , version = "0.7.0" } +bp-messages = { default-features = false , version = "0.7.0" } +bp-parachains = { default-features = false , version = "0.7.0" } +bp-polkadot-core = { default-features = false , version = "0.7.0" } +bp-relayers = { default-features = false , version = "0.7.0" } +bp-runtime = { default-features = false , version = "0.7.0" } +bp-kusama = { default-features = false , version = "0.5.0" } +bp-polkadot = { default-features = false , version = "0.5.0" } +bridge-runtime-common = { default-features = false , version = "0.7.0" } +pallet-bridge-grandpa = { default-features = false , version = "0.7.0" } +pallet-bridge-messages = { default-features = false , version = "0.7.0" } +pallet-bridge-parachains = { default-features = false , version = "0.7.0" } +pallet-bridge-relayers = { default-features = false , version = "0.7.0" } +pallet-xcm-bridge-hub = { default-features = false , version = "0.2.0" } [dev-dependencies] -bridge-hub-test-utils = { version = "0.6.1" } -bridge-runtime-common = { version = "0.6.0", features = ["integrity-test"] } -sp-keyring = { version = "30.0.0" } +bridge-hub-test-utils = { version = "0.7.1" } +bridge-runtime-common = { version = "0.7.0", features = ["integrity-test"] } +sp-keyring = { version = "31.0.0" } static_assertions = { version = "1.1.0" } [features] diff --git a/system-parachains/bridge-hubs/bridge-hub-polkadot/primitives/Cargo.toml b/system-parachains/bridge-hubs/bridge-hub-polkadot/primitives/Cargo.toml index 717310b606..773ff5bca6 100644 --- a/system-parachains/bridge-hubs/bridge-hub-polkadot/primitives/Cargo.toml +++ b/system-parachains/bridge-hubs/bridge-hub-polkadot/primitives/Cargo.toml @@ -14,15 +14,15 @@ kusama-runtime-constants = { path = "../../../../relay/kusama/constants", defaul polkadot-runtime-constants = { path = "../../../../relay/polkadot/constants", default-features = false} # Bridge Dependencies -bp-bridge-hub-cumulus = { default-features = false , version = "0.6.0" } -bp-runtime = { default-features = false , version = "0.6.0" } -bp-messages = { default-features = false , version = "0.6.0" } +bp-bridge-hub-cumulus = { default-features = false , version = "0.7.0" } +bp-runtime = { default-features = false , version = "0.7.0" } +bp-messages = { default-features = false , version = "0.7.0" } # Substrate Based Dependencies -frame-support = { default-features = false, version = "27.0.0" } -sp-api = { default-features = false, version = "25.0.0" } -sp-runtime = { default-features = false, version = "30.0.1" } -sp-std = { default-features = false , version = "13.0.0" } +frame-support = { default-features = false, version = "28.0.0" } +sp-api = { default-features = false, version = "26.0.0" } +sp-runtime = { default-features = false, version = "31.0.1" } +sp-std = { default-features = false , version = "14.0.0" } [features] default = [ "std" ] diff --git a/system-parachains/bridge-hubs/bridge-hub-polkadot/primitives/src/lib.rs b/system-parachains/bridge-hubs/bridge-hub-polkadot/primitives/src/lib.rs index b02f6107d6..50c7713549 100644 --- a/system-parachains/bridge-hubs/bridge-hub-polkadot/primitives/src/lib.rs +++ b/system-parachains/bridge-hubs/bridge-hub-polkadot/primitives/src/lib.rs @@ -78,15 +78,15 @@ frame_support::parameter_types! { /// The XCM fee that is paid for executing XCM program (with `ExportMessage` instruction) at the Polkadot /// BridgeHub. /// (initially was calculated by test `BridgeHubPolkadot::can_calculate_weight_for_paid_export_message_with_reserve_transfer` + `33%`) - pub const BridgeHubPolkadotBaseXcmFeeInDots: Balance = 4_858_960_000; + pub const BridgeHubPolkadotBaseXcmFeeInDots: Balance = 4_846_812_600; /// Transaction fee that is paid at the Polkadot BridgeHub for delivering single inbound message. /// (initially was calculated by test `BridgeHubPolkadot::can_calculate_fee_for_complex_message_delivery_transaction` + `33%`) - pub const BridgeHubPolkadotBaseDeliveryFeeInDots: Balance = 16_954_899_613; + pub const BridgeHubPolkadotBaseDeliveryFeeInDots: Balance = 16_912_512_364; /// Transaction fee that is paid at the Polkadot BridgeHub for delivering single outbound message confirmation. /// (initially was calculated by test `BridgeHubPolkadot::can_calculate_fee_for_complex_message_confirmation_transaction` + `33%`) - pub const BridgeHubPolkadotBaseConfirmationFeeInDots: Balance = 16_183_099_613; + pub const BridgeHubPolkadotBaseConfirmationFeeInDots: Balance = 16_142_641_864; } /// Compute the total estimated fee that needs to be paid in DOTs by the sender when sending diff --git a/system-parachains/bridge-hubs/bridge-hub-polkadot/src/bridge_to_kusama_config.rs b/system-parachains/bridge-hubs/bridge-hub-polkadot/src/bridge_to_kusama_config.rs index 1b9f151727..b862a9ed4c 100644 --- a/system-parachains/bridge-hubs/bridge-hub-polkadot/src/bridge_to_kusama_config.rs +++ b/system-parachains/bridge-hubs/bridge-hub-polkadot/src/bridge_to_kusama_config.rs @@ -19,8 +19,8 @@ use crate::{ weights, xcm_config::{UniversalLocation, XcmRouter}, - AccountId, Balance, Balances, BlockNumber, BridgeKusamaMessages, Runtime, RuntimeEvent, - RuntimeOrigin, XcmOverBridgeHubKusama, + AccountId, Balance, Balances, BlockNumber, BridgeKusamaMessages, PolkadotXcm, Runtime, + RuntimeEvent, RuntimeOrigin, XcmOverBridgeHubKusama, }; use bp_messages::LaneId; use bp_parachains::SingleParaStoredHeaderDataBuilder; @@ -33,7 +33,7 @@ use bridge_runtime_common::{ }, messages_xcm_extension::{ SenderAndLane, XcmAsPlainPayload, XcmBlobHauler, XcmBlobHaulerAdapter, - XcmBlobMessageDispatch, + XcmBlobMessageDispatch, XcmVersionOfDestAndRemoteBridge, }, refund_relayer_extension::{ ActualFeeRefund, RefundBridgedParachainMessages, RefundSignedExtensionAdapter, @@ -75,6 +75,11 @@ parameter_types! { parameter_types! { /// Kusama Network identifier. pub KusamaGlobalConsensusNetwork: NetworkId = NetworkId::Kusama; + /// Kusama Network as `Location`. + pub KusamaGlobalConsensusNetworkLocation: MultiLocation = MultiLocation { + parents: 2, + interior: X1(GlobalConsensus(KusamaGlobalConsensusNetwork::get())) + }; /// Interior location (relative to this runtime) of the with-Kusama messages pallet. pub BridgePolkadotToKusamaMessagesPalletInstance: InteriorMultiLocation = X1( PalletInstance(::index() as u8), @@ -84,6 +89,14 @@ parameter_types! { pub AssetHubPolkadotParaId: cumulus_primitives_core::ParaId = polkadot_runtime_constants::system_parachain::ASSET_HUB_ID.into(); /// Identifier of the bridged Kusama Asset Hub parachain. pub AssetHubKusamaParaId: cumulus_primitives_core::ParaId = kusama_runtime_constants::system_parachain::ASSET_HUB_ID.into(); + /// Location of the bridged Kusama Bridge Hub parachain. + pub BridgeHubKusamaLocation: MultiLocation = MultiLocation { + parents: 2, + interior: X2( + GlobalConsensus(KusamaGlobalConsensusNetwork::get()), + Parachain(::PARACHAIN_ID) + ) + }; /// A route (XCM location and bridge lane) that the Polkadot Asset Hub -> Kusama Asset Hub /// message is following. @@ -257,12 +270,13 @@ impl XcmBlobHauler for ToBridgeHubKusamaXcmBlobHauler { pub type XcmOverBridgeHubKusamaInstance = pallet_xcm_bridge_hub::Instance1; impl pallet_xcm_bridge_hub::Config for Runtime { type UniversalLocation = UniversalLocation; - type BridgedNetworkId = KusamaGlobalConsensusNetwork; + type BridgedNetwork = KusamaGlobalConsensusNetworkLocation; type BridgeMessagesPalletInstance = WithBridgeHubKusamaMessagesInstance; // `MessageExportPrice` is simply propagated to the inner `xcm_builder::HaulBlobExporter`, and // we do not need or want to add any additional price for exporting here, as it is already // covered by the measured weight of the `ExportMessage` instruction. type MessageExportPrice = (); + type DestinationVersion = XcmVersionOfDestAndRemoteBridge; type Lanes = ActiveLanes; type LanesSupport = ToBridgeHubKusamaXcmBlobHauler; } @@ -417,5 +431,8 @@ mod tests { bp_bridge_hub_polkadot::WITH_BRIDGE_POLKADOT_TO_KUSAMA_MESSAGES_PALLET_INDEX )) ); + + assert!(BridgeHubKusamaLocation::get() + .starts_with(&KusamaGlobalConsensusNetworkLocation::get())); } } diff --git a/system-parachains/bridge-hubs/bridge-hub-polkadot/src/lib.rs b/system-parachains/bridge-hubs/bridge-hub-polkadot/src/lib.rs index a656380a43..6b712213a9 100644 --- a/system-parachains/bridge-hubs/bridge-hub-polkadot/src/lib.rs +++ b/system-parachains/bridge-hubs/bridge-hub-polkadot/src/lib.rs @@ -205,6 +205,7 @@ impl frame_system::Config for Runtime { type Block = Block; /// The ubiquitous event type. type RuntimeEvent = RuntimeEvent; + type RuntimeTask = RuntimeTask; /// The ubiquitous origin type. type RuntimeOrigin = RuntimeOrigin; /// Maximum number of block number to block hash mappings to keep (oldest pruned first). @@ -949,6 +950,21 @@ impl_runtime_apis! { fn export_message_origin_and_destination( ) -> Result<(MultiLocation, NetworkId, InteriorMultiLocation), BenchmarkError> { + // save XCM version for remote bridge hub + let _ = PolkadotXcm::force_xcm_version( + RuntimeOrigin::root(), + Box::new(bridge_to_kusama_config::BridgeHubKusamaLocation::get()), + XCM_VERSION, + ).map_err(|e| { + log::error!( + "Failed to dispatch `force_xcm_version({:?}, {:?}, {:?})`, error: {:?}", + RuntimeOrigin::root(), + bridge_to_kusama_config::BridgeHubKusamaLocation::get(), + XCM_VERSION, + e + ); + BenchmarkError::Stop("XcmVersion was not stored!") + })?; Ok( ( bridge_to_kusama_config::FromAssetHubPolkadotToAssetHubKusamaRoute::get().location, diff --git a/system-parachains/bridge-hubs/bridge-hub-polkadot/src/weights/frame_system.rs b/system-parachains/bridge-hubs/bridge-hub-polkadot/src/weights/frame_system.rs index 0acabfdc2a..11a8083bcc 100644 --- a/system-parachains/bridge-hubs/bridge-hub-polkadot/src/weights/frame_system.rs +++ b/system-parachains/bridge-hubs/bridge-hub-polkadot/src/weights/frame_system.rs @@ -149,4 +149,31 @@ impl frame_system::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) } + /// Storage: `System::AuthorizedUpgrade` (r:0 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + fn authorize_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 33_027_000 picoseconds. + Weight::from_parts(33_027_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `System::AuthorizedUpgrade` (r:1 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:1) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + fn apply_authorized_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `22` + // Estimated: `1518` + // Minimum execution time: 118_101_992_000 picoseconds. + Weight::from_parts(118_101_992_000, 0) + .saturating_add(Weight::from_parts(0, 1518)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } } diff --git a/system-parachains/bridge-hubs/bridge-hub-polkadot/src/xcm_config.rs b/system-parachains/bridge-hubs/bridge-hub-polkadot/src/xcm_config.rs index 9eda62b0bc..d0bb97438c 100644 --- a/system-parachains/bridge-hubs/bridge-hub-polkadot/src/xcm_config.rs +++ b/system-parachains/bridge-hubs/bridge-hub-polkadot/src/xcm_config.rs @@ -30,19 +30,21 @@ use frame_system::EnsureRoot; use pallet_xcm::XcmPassthrough; use parachains_common::{ impls::ToStakingPot, - xcm_config::{ConcreteAssetFromSystem, RelayOrOtherSystemParachains}, + xcm_config::{ + AllSiblingSystemParachains, ConcreteAssetFromSystem, ParentRelayOrSiblingParachains, + RelayOrOtherSystemParachains, + }, }; use polkadot_parachain_primitives::primitives::Sibling; -use polkadot_runtime_constants::system_parachain; use sp_runtime::traits::AccountIdConversion; use system_parachains_constants::TREASURY_PALLET_ID; use xcm::latest::prelude::*; use xcm_builder::{ AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses, - AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, CurrencyAdapter, - DenyReserveTransferToRelayChain, DenyThenTry, DescribeAllTerminal, DescribeFamily, - EnsureXcmOrigin, FrameTransactionalProcessor, HashedDescription, IsConcrete, ParentAsSuperuser, - ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, + AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, DenyReserveTransferToRelayChain, + DenyThenTry, DescribeAllTerminal, DescribeFamily, EnsureXcmOrigin, FrameTransactionalProcessor, + FungibleAdapter, HashedDescription, IsConcrete, ParentAsSuperuser, ParentIsPreset, + RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, WeightInfoBounds, WithComputedOrigin, WithUniqueTopic, XcmFeeManagerFromComponents, XcmFeeToAccount, @@ -78,7 +80,7 @@ pub type LocationToAccountId = ( ); /// Means for transacting the native currency on this chain. -pub type CurrencyTransactor = CurrencyAdapter< +pub type FungibleTransactor = FungibleAdapter< // Use this currency: Balances, // Use this currency when it is a fungible asset matching the given location or name: @@ -120,10 +122,6 @@ match_types! { MultiLocation { parents: 1, interior: Here } | MultiLocation { parents: 1, interior: X1(Plurality { .. }) } }; - pub type ParentOrSiblings: impl Contains = { - MultiLocation { parents: 1, interior: Here } | - MultiLocation { parents: 1, interior: X1(_) } - }; pub type FellowsPlurality: impl Contains = { MultiLocation { parents: 1, interior: X2(Parachain(1001), Plurality { id: BodyId::Technical, ..}) } }; @@ -221,7 +219,7 @@ pub type Barrier = TrailingSetTopicAsId< Equals, )>, // Subscriptions for version tracking are OK. - AllowSubscriptionsFrom, + AllowSubscriptionsFrom, ), UniversalLocation, ConstU32<8>, @@ -230,23 +228,11 @@ pub type Barrier = TrailingSetTopicAsId< >, >; -match_types! { - pub type SystemParachains: impl Contains = { - MultiLocation { - parents: 1, - interior: X1(Parachain( - system_parachain::ASSET_HUB_ID | - system_parachain::COLLECTIVES_ID - )), - } - }; -} - /// Locations that will not be charged fees in the executor, /// either execution or delivery. /// We only waive fees for system functions, which these locations represent. pub type WaivedLocations = ( - RelayOrOtherSystemParachains, + RelayOrOtherSystemParachains, Equals, FellowsPlurality, ); @@ -259,7 +245,7 @@ pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { type RuntimeCall = RuntimeCall; type XcmSender = XcmRouter; - type AssetTransactor = CurrencyTransactor; + type AssetTransactor = FungibleTransactor; type OriginConverter = XcmOriginToTransactDispatchOrigin; // BridgeHub does not recognize a reserve location for any asset. Users must teleport DOT // where allowed (e.g. with the Relay Chain). diff --git a/system-parachains/bridge-hubs/bridge-hub-polkadot/tests/tests.rs b/system-parachains/bridge-hubs/bridge-hub-polkadot/tests/tests.rs index ba7a5c2d87..8d0423f4ee 100644 --- a/system-parachains/bridge-hubs/bridge-hub-polkadot/tests/tests.rs +++ b/system-parachains/bridge-hubs/bridge-hub-polkadot/tests/tests.rs @@ -14,29 +14,31 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . +use bp_bridge_hub_kusama::Perbill; use bp_polkadot_core::Signature; use bridge_hub_polkadot_runtime::{ bridge_to_kusama_config::{ AssetHubKusamaParaId, BridgeGrandpaKusamaInstance, BridgeHubKusamaChainId, - BridgeParachainKusamaInstance, DeliveryRewardInBalance, KusamaGlobalConsensusNetwork, - RefundBridgeHubKusamaMessages, RequiredStakeForStakeAndSlash, + BridgeHubKusamaLocation, BridgeParachainKusamaInstance, DeliveryRewardInBalance, + KusamaGlobalConsensusNetwork, RefundBridgeHubKusamaMessages, RequiredStakeForStakeAndSlash, WithBridgeHubKusamaMessageBridge, WithBridgeHubKusamaMessagesInstance, XCM_LANE_FOR_ASSET_HUB_POLKADOT_TO_ASSET_HUB_KUSAMA, }, xcm_config::{DotRelayLocation, RelayNetwork, XcmConfig}, AllPalletsWithoutSystem, BridgeRejectObsoleteHeadersAndMessages, Executive, ExistentialDeposit, - ParachainSystem, PolkadotXcm, Runtime, RuntimeCall, RuntimeEvent, SessionKeys, SignedExtra, - UncheckedExtrinsic, + ParachainSystem, PolkadotXcm, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, SessionKeys, + SignedExtra, TransactionPayment, UncheckedExtrinsic, }; +use bridge_hub_test_utils::test_cases::from_parachain; use codec::{Decode, Encode}; -use frame_support::parameter_types; -use frame_system::pallet_prelude::HeaderFor; -use parachains_common::{polkadot::fee::WeightToFee, AccountId, AuraId, Balance}; +use frame_support::{dispatch::GetDispatchInfo, parameter_types, traits::ConstU8}; +use parachains_common::{AccountId, AuraId, Balance}; use sp_keyring::AccountKeyring::Alice; use sp_runtime::{ generic::{Era, SignedPayload}, AccountId32, }; +use system_parachains_constants::polkadot::fee::WeightToFee; use xcm::latest::prelude::*; const ALICE: [u8; 32] = [1u8; 32]; @@ -44,6 +46,16 @@ const ALICE: [u8; 32] = [1u8; 32]; // Para id of sibling chain used in tests. pub const SIBLING_PARACHAIN_ID: u32 = 1000; +// Runtime from tests PoV +type RuntimeTestsAdapter = from_parachain::WithRemoteParachainHelperAdapter< + Runtime, + AllPalletsWithoutSystem, + BridgeGrandpaKusamaInstance, + BridgeParachainKusamaInstance, + WithBridgeHubKusamaMessagesInstance, + WithBridgeHubKusamaMessageBridge, +>; + parameter_types! { pub CheckingAccount: AccountId = PolkadotXcm::check_account(); } @@ -52,13 +64,16 @@ fn construct_extrinsic( sender: sp_keyring::AccountKeyring, call: RuntimeCall, ) -> UncheckedExtrinsic { + let account_id = AccountId32::from(sender.public()); let extra: SignedExtra = ( frame_system::CheckNonZeroSender::::new(), frame_system::CheckSpecVersion::::new(), frame_system::CheckTxVersion::::new(), frame_system::CheckGenesis::::new(), frame_system::CheckEra::::from(Era::immortal()), - frame_system::CheckNonce::::from(0), + frame_system::CheckNonce::::from( + frame_system::Pallet::::account(&account_id).nonce, + ), frame_system::CheckWeight::::new(), pallet_transaction_payment::ChargeTransactionPayment::::from(0), BridgeRejectObsoleteHeadersAndMessages, @@ -68,7 +83,7 @@ fn construct_extrinsic( let signature = payload.using_encoded(|e| sender.sign(e)); UncheckedExtrinsic::new_signed( call, - AccountId32::from(sender.public()).into(), + account_id.into(), Signature::Sr25519(signature.clone()), extra, ) @@ -76,16 +91,18 @@ fn construct_extrinsic( fn construct_and_apply_extrinsic( relayer_at_target: sp_keyring::AccountKeyring, - batch: pallet_utility::Call, + call: RuntimeCall, ) -> sp_runtime::DispatchOutcome { - let batch_call = RuntimeCall::Utility(batch); - let xt = construct_extrinsic(relayer_at_target, batch_call); + let xt = construct_extrinsic(relayer_at_target, call); let r = Executive::apply_extrinsic(xt); r.unwrap() } -fn executive_init_block(header: &HeaderFor) { - Executive::initialize_block(header) +fn construct_and_estimate_extrinsic_fee(batch: pallet_utility::Call) -> Balance { + let batch_call = RuntimeCall::Utility(batch); + let batch_info = batch_call.get_dispatch_info(); + let xt = construct_extrinsic(Alice, batch_call); + TransactionPayment::compute_fee(xt.encoded_size() as _, &batch_info, 0) } fn collator_session_keys() -> bridge_hub_test_utils::CollatorSessionKeys { @@ -130,11 +147,7 @@ fn initialize_bridge_by_governance_works() { bridge_hub_test_utils::test_cases::initialize_bridge_by_governance_works::< Runtime, BridgeGrandpaKusamaInstance, - >( - collator_session_keys(), - bp_bridge_hub_polkadot::BRIDGE_HUB_POLKADOT_PARACHAIN_ID, - Box::new(|call| RuntimeCall::BridgeKusamaGrandpa(call).encode()), - ) + >(collator_session_keys(), bp_bridge_hub_polkadot::BRIDGE_HUB_POLKADOT_PARACHAIN_ID) } #[test] @@ -188,7 +201,7 @@ fn handle_export_message_from_system_parachain_add_to_outbound_queue_works() { Some((DotRelayLocation::get(), ExistentialDeposit::get()).into()), // value should be >= than value generated by `can_calculate_weight_for_paid_export_message_with_reserve_transfer` Some((DotRelayLocation::get(), bp_bridge_hub_polkadot::BridgeHubPolkadotBaseXcmFeeInDots::get()).into()), - || (), + || PolkadotXcm::force_xcm_version(RuntimeOrigin::root(), Box::new(BridgeHubKusamaLocation::get()), XCM_VERSION).expect("version saved!"), ) } @@ -202,6 +215,7 @@ fn message_dispatch_routing_works() { WithBridgeHubKusamaMessagesInstance, RelayNetwork, KusamaGlobalConsensusNetwork, + ConstU8<2>, >( collator_session_keys(), bp_bridge_hub_polkadot::BRIDGE_HUB_POLKADOT_PARACHAIN_ID, @@ -225,38 +239,22 @@ fn message_dispatch_routing_works() { #[test] fn relayed_incoming_message_works() { - bridge_hub_test_utils::test_cases::relayed_incoming_message_works::< - Runtime, - AllPalletsWithoutSystem, - XcmConfig, - ParachainSystem, - BridgeGrandpaKusamaInstance, - BridgeParachainKusamaInstance, - WithBridgeHubKusamaMessagesInstance, - WithBridgeHubKusamaMessageBridge, - >( + from_parachain::relayed_incoming_message_works::( collator_session_keys(), bp_bridge_hub_polkadot::BRIDGE_HUB_POLKADOT_PARACHAIN_ID, bp_bridge_hub_kusama::BRIDGE_HUB_KUSAMA_PARACHAIN_ID, + BridgeHubKusamaChainId::get(), SIBLING_PARACHAIN_ID, Polkadot, XCM_LANE_FOR_ASSET_HUB_POLKADOT_TO_ASSET_HUB_KUSAMA, || (), + construct_and_apply_extrinsic, ) } #[test] pub fn complex_relay_extrinsic_works() { - bridge_hub_test_utils::test_cases::complex_relay_extrinsic_works::< - Runtime, - AllPalletsWithoutSystem, - XcmConfig, - ParachainSystem, - BridgeGrandpaKusamaInstance, - BridgeParachainKusamaInstance, - WithBridgeHubKusamaMessagesInstance, - WithBridgeHubKusamaMessageBridge, - >( + from_parachain::complex_relay_extrinsic_works::( collator_session_keys(), bp_bridge_hub_polkadot::BRIDGE_HUB_POLKADOT_PARACHAIN_ID, bp_bridge_hub_kusama::BRIDGE_HUB_KUSAMA_PARACHAIN_ID, @@ -264,51 +262,116 @@ pub fn complex_relay_extrinsic_works() { BridgeHubKusamaChainId::get(), Polkadot, XCM_LANE_FOR_ASSET_HUB_POLKADOT_TO_ASSET_HUB_KUSAMA, - ExistentialDeposit::get(), - executive_init_block, - construct_and_apply_extrinsic, || (), + construct_and_apply_extrinsic, ); } #[test] pub fn can_calculate_weight_for_paid_export_message_with_reserve_transfer() { - let estimated = bridge_hub_test_utils::test_cases::can_calculate_weight_for_paid_export_message_with_reserve_transfer::< - Runtime, - XcmConfig, - WeightToFee, - >(); + check_sane_fees_values( + "bp_bridge_hub_polkadot::BridgeHubPolkadotBaseXcmFeeInDots", + bp_bridge_hub_polkadot::BridgeHubPolkadotBaseXcmFeeInDots::get(), + || { + bridge_hub_test_utils::test_cases::can_calculate_weight_for_paid_export_message_with_reserve_transfer::< + Runtime, + XcmConfig, + WeightToFee, + >() + }, + Perbill::from_percent(33), + Some(-33), + &format!( + "Estimate fee for `ExportMessage` for runtime: {:?}", + ::Version::get() + ), + ) +} + +#[test] +pub fn can_calculate_fee_for_complex_message_delivery_transaction() { + check_sane_fees_values( + "bp_bridge_hub_polkadot::BridgeHubPolkadotBaseDeliveryFeeInDots", + bp_bridge_hub_polkadot::BridgeHubPolkadotBaseDeliveryFeeInDots::get(), + || { + from_parachain::can_calculate_fee_for_complex_message_delivery_transaction::< + RuntimeTestsAdapter, + >(collator_session_keys(), construct_and_estimate_extrinsic_fee) + }, + Perbill::from_percent(33), + Some(-33), + &format!( + "Estimate fee for `single message delivery` for runtime: {:?}", + ::Version::get() + ), + ) +} + +#[test] +pub fn can_calculate_fee_for_complex_message_confirmation_transaction() { + check_sane_fees_values( + "bp_bridge_hub_polkadot::BridgeHubPolkadotBaseConfirmationFeeInDots", + bp_bridge_hub_polkadot::BridgeHubPolkadotBaseConfirmationFeeInDots::get(), + || { + from_parachain::can_calculate_fee_for_complex_message_confirmation_transaction::< + RuntimeTestsAdapter, + >(collator_session_keys(), construct_and_estimate_extrinsic_fee) + }, + Perbill::from_percent(33), + Some(-33), + &format!( + "Estimate fee for `single message confirmation` for runtime: {:?}", + ::Version::get() + ), + ) +} + +// TODO:(PR#159): remove when `polkadot-sdk@1.8.0` bump (https://github.com/polkadot-fellows/runtimes/issues/186) +/// A helper function for comparing the actual value of a fee constant with its estimated value. The +/// estimated value can be overestimated (`overestimate_in_percent`), and if the difference to the +/// actual value is below `margin_overestimate_diff_in_percent_for_lowering`, we should lower the +/// actual value. +pub fn check_sane_fees_values( + const_name: &str, + actual: u128, + calculate_estimated_fee: fn() -> u128, + overestimate_in_percent: Perbill, + margin_overestimate_diff_in_percent_for_lowering: Option, + label: &str, +) { + let estimated = calculate_estimated_fee(); + let estimated_plus_overestimate = estimated + (overestimate_in_percent * estimated); + let diff_to_estimated = diff_as_percent(actual, estimated); + let diff_to_estimated_plus_overestimate = diff_as_percent(actual, estimated_plus_overestimate); + + log::error!( + target: "bridges::estimate", + "{label}:\nconstant: {const_name}\n[+] actual: {actual}\n[+] estimated: {estimated} ({diff_to_estimated:.2?})\n[+] estimated(+33%): {estimated_plus_overestimate} ({diff_to_estimated_plus_overestimate:.2?})", + ); // check if estimated value is sane - let max_expected = bp_bridge_hub_polkadot::BridgeHubPolkadotBaseXcmFeeInDots::get(); assert!( - estimated <= max_expected, - "calculated: {:?}, max_expected: {:?}, please adjust `bp_bridge_hub_polkadot::BridgeHubPolkadotBaseXcmFeeInDots` value", - estimated, - max_expected + estimated <= actual, + "estimated: {estimated}, actual: {actual}, please adjust `{const_name}` to the value: {estimated_plus_overestimate}", + ); + assert!( + estimated_plus_overestimate <= actual, + "estimated_plus_overestimate: {estimated_plus_overestimate}, actual: {actual}, please adjust `{const_name}` to the value: {estimated_plus_overestimate}", + ); + + if let Some(margin_overestimate_diff_in_percent_for_lowering) = + margin_overestimate_diff_in_percent_for_lowering + { + assert!( + diff_to_estimated_plus_overestimate > margin_overestimate_diff_in_percent_for_lowering as f64, + "diff_to_estimated_plus_overestimate: {diff_to_estimated_plus_overestimate:.2}, overestimate_diff_in_percent_for_lowering: {margin_overestimate_diff_in_percent_for_lowering}, please adjust `{const_name}` to the value: {estimated_plus_overestimate}", ); + } } -// TODO: replace me with direct usages of `bridge_hub_test_utils` after deps are bumped to (at -// least) 1.4 -// -// Following two tests have to be implemented properly after upgrade to 1.6. -// See https://github.com/paritytech/polkadot-sdk/pull/2139/ and https://github.com/paritytech/parity-bridges-common/pull/2728 -// for impl details -// -// Until that, anyone can run it manually by doing following: -// -// 1) cargo vendor ../vendored-dependencies -// 2) apply relevant changes from above PRs -// 3) change workspace Cargo.toml: -// [patch.crates-io] -// bp-polkadot-core = { path = "../vendored-dependencies/bp-polkadot-core" } -// bridge-hub-test-utils = { path = "../vendored-dependencies/bridge-hub-test-utils" } -// bridge-runtime-common = { path = "../vendored-dependencies/bridge-runtime-common" } -// 4) add actual tests code and do `cargo test -p bridge-hub-polkadot-runtime` - -#[test] -pub fn can_calculate_fee_for_complex_message_delivery_transaction() {} - -#[test] -pub fn can_calculate_fee_for_complex_message_confirmation_transaction() {} +// TODO:(PR#159): remove when `polkadot-sdk@1.8.0` bump (https://github.com/polkadot-fellows/runtimes/issues/186) +pub fn diff_as_percent(left: u128, right: u128) -> f64 { + let left = left as f64; + let right = right as f64; + ((left - right).abs() / left) * 100f64 * (if left >= right { -1 } else { 1 }) as f64 +} diff --git a/system-parachains/collectives/collectives-polkadot/Cargo.toml b/system-parachains/collectives/collectives-polkadot/Cargo.toml index 1676d925d8..a4ad3bbde0 100644 --- a/system-parachains/collectives/collectives-polkadot/Cargo.toml +++ b/system-parachains/collectives/collectives-polkadot/Cargo.toml @@ -15,75 +15,75 @@ log = { version = "0.4.20", default-features = false } scale-info = { version = "2.10.0", default-features = false, features = ["derive"] } # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-executive = { default-features = false, version = "27.0.0" } -frame-support = { default-features = false, version = "27.0.0" } -frame-system = { default-features = false, version = "27.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "25.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.33.0" } -pallet-asset-rate = { default-features = false , version = "6.0.0" } -pallet-alliance = { default-features = false, version = "26.0.0" } -pallet-aura = { default-features = false, version = "26.0.0" } -pallet-authorship = { default-features = false, version = "27.0.0" } -pallet-balances = { default-features = false, version = "27.0.0" } -pallet-collective = { default-features = false, version = "27.0.0" } -pallet-message-queue = { default-features = false , version = "30.0.0" } -pallet-multisig = { default-features = false, version = "27.0.0" } -pallet-preimage = { default-features = false , version = "27.0.0" } -pallet-proxy = { default-features = false, version = "27.0.0" } -pallet-scheduler = { default-features = false , version = "28.0.0" } -pallet-session = { default-features = false, version = "27.0.0" } -pallet-timestamp = { default-features = false, version = "26.0.0" } -pallet-transaction-payment = { default-features = false, version = "27.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "27.0.0" } -pallet-treasury = { default-features = false , version = "26.0.0" } -pallet-utility = { default-features = false, version = "27.0.0" } -pallet-referenda = { default-features = false, version = "27.0.0" } -pallet-ranked-collective = { default-features = false, version = "27.0.0" } -pallet-core-fellowship = { default-features = false, version = "11.0.0" } -pallet-salary = { default-features = false, version = "12.0.0" } -sp-api = { default-features = false, version = "25.0.0" } -sp-arithmetic = { default-features = false , version = "22.0.0" } -sp-block-builder = { default-features = false, version = "25.0.0" } -sp-consensus-aura = { default-features = false, version = "0.31.0" } -sp-core = { default-features = false, version = "27.0.0" } -sp-genesis-builder = { default-features = false , version = "0.6.0" } -sp-inherents = { default-features = false, version = "25.0.0" } -sp-offchain = { default-features = false, version = "25.0.0" } -sp-runtime = { default-features = false, version = "30.0.1" } -sp-session = { default-features = false, version = "26.0.0" } -sp-std = { default-features = false, version = "13.0.0" } -sp-storage = { default-features = false, version = "18.0.0" } -sp-transaction-pool = { default-features = false, version = "25.0.0" } -sp-version = { default-features = false, version = "28.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-executive = { default-features = false, version = "28.0.0" } +frame-support = { default-features = false, version = "28.0.0" } +frame-system = { default-features = false, version = "28.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "26.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.34.0" } +pallet-asset-rate = { default-features = false , version = "7.0.0" } +pallet-alliance = { default-features = false, version = "27.0.0" } +pallet-aura = { default-features = false, version = "27.0.0" } +pallet-authorship = { default-features = false, version = "28.0.0" } +pallet-balances = { default-features = false, version = "28.0.0" } +pallet-collective = { default-features = false, version = "28.0.0" } +pallet-message-queue = { default-features = false , version = "31.0.0" } +pallet-multisig = { default-features = false, version = "28.0.0" } +pallet-preimage = { default-features = false , version = "28.0.0" } +pallet-proxy = { default-features = false, version = "28.0.0" } +pallet-scheduler = { default-features = false , version = "29.0.0" } +pallet-session = { default-features = false, version = "28.0.0" } +pallet-timestamp = { default-features = false, version = "27.0.0" } +pallet-transaction-payment = { default-features = false, version = "28.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "28.0.0" } +pallet-treasury = { default-features = false , version = "27.0.0" } +pallet-utility = { default-features = false, version = "28.0.0" } +pallet-referenda = { default-features = false, version = "28.0.0" } +pallet-ranked-collective = { default-features = false, version = "28.0.0" } +pallet-core-fellowship = { default-features = false, version = "12.0.0" } +pallet-salary = { default-features = false, version = "13.0.0" } +sp-api = { default-features = false, version = "26.0.0" } +sp-arithmetic = { default-features = false , version = "23.0.0" } +sp-block-builder = { default-features = false, version = "26.0.0" } +sp-consensus-aura = { default-features = false, version = "0.32.0" } +sp-core = { default-features = false, version = "28.0.0" } +sp-genesis-builder = { default-features = false , version = "0.7.0" } +sp-inherents = { default-features = false, version = "26.0.0" } +sp-offchain = { default-features = false, version = "26.0.0" } +sp-runtime = { default-features = false, version = "31.0.1" } +sp-session = { default-features = false, version = "27.0.0" } +sp-std = { default-features = false, version = "14.0.0" } +sp-storage = { default-features = false, version = "19.0.0" } +sp-transaction-pool = { default-features = false, version = "26.0.0" } +sp-version = { default-features = false, version = "29.0.0" } # Polkadot -pallet-xcm = { default-features = false, version = "6.0.0" } -polkadot-core-primitives = { default-features = false, version = "6.0.0" } -polkadot-parachain-primitives = { default-features = false, version = "5.0.0" } -polkadot-runtime-common = { default-features = false, version = "6.0.0" } +pallet-xcm = { default-features = false, version = "7.0.0" } +polkadot-core-primitives = { default-features = false, version = "7.0.0" } +polkadot-parachain-primitives = { default-features = false, version = "6.0.0" } +polkadot-runtime-common = { default-features = false, version = "7.0.0" } polkadot-runtime-constants = { path = "../../../relay/polkadot/constants", default-features = false} -xcm = { package = "staging-xcm", default-features = false, version = "6.0.0" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "6.0.2" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "6.0.2" } +xcm = { package = "staging-xcm", default-features = false, version = "7.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "7.0.3" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "7.0.3" } # Cumulus -cumulus-pallet-aura-ext = { default-features = false , version = "0.6.0" } -cumulus-pallet-dmp-queue = { default-features = false , version = "0.6.0" } -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.6.0" } -cumulus-pallet-session-benchmarking = { default-features = false, version = "8.0.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.6.0" } -cumulus-pallet-xcmp-queue = { default-features = false , version = "0.6.0" } -cumulus-primitives-core = { default-features = false , version = "0.6.0" } -cumulus-primitives-utility = { default-features = false , version = "0.6.2" } -pallet-collator-selection = { default-features = false , version = "8.0.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.6.0" } -parachains-common = { default-features = false , version = "6.0.0" } +cumulus-pallet-aura-ext = { default-features = false , version = "0.7.0" } +cumulus-pallet-dmp-queue = { default-features = false , version = "0.7.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.7.0" } +cumulus-pallet-session-benchmarking = { default-features = false, version = "9.0.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.7.0" } +cumulus-pallet-xcmp-queue = { default-features = false , version = "0.7.0" } +cumulus-primitives-core = { default-features = false , version = "0.7.0" } +cumulus-primitives-utility = { default-features = false , version = "0.7.3" } +pallet-collator-selection = { default-features = false , version = "9.0.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.7.0" } +parachains-common = { default-features = false , version = "7.0.0" } system-parachains-constants = { path = "../../constants", default-features = false } [build-dependencies] -substrate-wasm-builder = { optional = true , version = "16.0.0" } +substrate-wasm-builder = { optional = true , version = "17.0.0" } [features] default = [ "std" ] diff --git a/system-parachains/collectives/collectives-polkadot/src/fellowship/mod.rs b/system-parachains/collectives/collectives-polkadot/src/fellowship/mod.rs index 8af872a2a2..088e6437f9 100644 --- a/system-parachains/collectives/collectives-polkadot/src/fellowship/mod.rs +++ b/system-parachains/collectives/collectives-polkadot/src/fellowship/mod.rs @@ -345,5 +345,8 @@ impl pallet_treasury::Config for Runtime { type BalanceConverter = AssetRate; type PayoutPeriod = ConstU32<{ 30 * DAYS }>; #[cfg(feature = "runtime-benchmarks")] - type BenchmarkHelper = polkadot_runtime_common::impls::benchmarks::TreasuryArguments; + type BenchmarkHelper = polkadot_runtime_common::impls::benchmarks::TreasuryArguments< + sp_core::ConstU8<1>, + ConstU32<1000>, + >; } diff --git a/system-parachains/collectives/collectives-polkadot/src/lib.rs b/system-parachains/collectives/collectives-polkadot/src/lib.rs index 2d876529bb..962a29652c 100644 --- a/system-parachains/collectives/collectives-polkadot/src/lib.rs +++ b/system-parachains/collectives/collectives-polkadot/src/lib.rs @@ -169,6 +169,7 @@ impl frame_system::Config for Runtime { type Hashing = BlakeTwo256; type Block = Block; type RuntimeEvent = RuntimeEvent; + type RuntimeTask = RuntimeTask; type RuntimeOrigin = RuntimeOrigin; type BlockHashCount = BlockHashCount; type DbWeight = RocksDbWeight; diff --git a/system-parachains/collectives/collectives-polkadot/src/weights/frame_system.rs b/system-parachains/collectives/collectives-polkadot/src/weights/frame_system.rs index b70406f300..1eed2e545a 100644 --- a/system-parachains/collectives/collectives-polkadot/src/weights/frame_system.rs +++ b/system-parachains/collectives/collectives-polkadot/src/weights/frame_system.rs @@ -149,4 +149,31 @@ impl frame_system::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) } + /// Storage: `System::AuthorizedUpgrade` (r:0 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + fn authorize_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 33_027_000 picoseconds. + Weight::from_parts(33_027_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `System::AuthorizedUpgrade` (r:1 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:1) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + fn apply_authorized_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `22` + // Estimated: `1518` + // Minimum execution time: 118_101_992_000 picoseconds. + Weight::from_parts(118_101_992_000, 0) + .saturating_add(Weight::from_parts(0, 1518)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } } diff --git a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs index 7c0bd73139..9b40d7a447 100644 --- a/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs +++ b/system-parachains/collectives/collectives-polkadot/src/xcm_config.rs @@ -27,23 +27,25 @@ use frame_system::EnsureRoot; use pallet_xcm::XcmPassthrough; use parachains_common::{ impls::ToStakingPot, - xcm_config::{ConcreteAssetFromSystem, RelayOrOtherSystemParachains}, + xcm_config::{ + AllSiblingSystemParachains, ConcreteAssetFromSystem, ParentRelayOrSiblingParachains, + RelayOrOtherSystemParachains, + }, }; use polkadot_parachain_primitives::primitives::Sibling; -use polkadot_runtime_constants::system_parachain; use sp_runtime::traits::AccountIdConversion; use system_parachains_constants::TREASURY_PALLET_ID; use xcm::latest::prelude::*; use xcm_builder::{ AccountId32Aliases, AllowExplicitUnpaidExecutionFrom, AllowKnownQueryResponses, - AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, CurrencyAdapter, - DenyReserveTransferToRelayChain, DenyThenTry, DescribeAllTerminal, DescribeFamily, - DescribeTerminus, EnsureXcmOrigin, FixedWeightBounds, FrameTransactionalProcessor, - HashedDescription, IsConcrete, OriginToPluralityVoice, ParentAsSuperuser, ParentIsPreset, - RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, - SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, - TrailingSetTopicAsId, UsingComponents, WithComputedOrigin, WithUniqueTopic, - XcmFeeManagerFromComponents, XcmFeeToAccount, + AllowSubscriptionsFrom, AllowTopLevelPaidExecutionFrom, DenyReserveTransferToRelayChain, + DenyThenTry, DescribeAllTerminal, DescribeFamily, DescribeTerminus, EnsureXcmOrigin, + FixedWeightBounds, FrameTransactionalProcessor, FungibleAdapter, HashedDescription, IsConcrete, + OriginToPluralityVoice, ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, + SiblingParachainAsNative, SiblingParachainConvertsVia, SignedAccountId32AsNative, + SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, + UsingComponents, WithComputedOrigin, WithUniqueTopic, XcmFeeManagerFromComponents, + XcmFeeToAccount, }; use xcm_executor::{traits::WithOriginFilter, XcmExecutor}; @@ -78,7 +80,7 @@ pub type LocationToAccountId = ( ); /// Means for transacting the native currency on this chain. -pub type CurrencyTransactor = CurrencyAdapter< +pub type FungibleTransactor = FungibleAdapter< // Use this currency: Balances, // Use this currency when it is a fungible asset matching the given location or name: @@ -132,10 +134,6 @@ match_types! { MultiLocation { parents: 1, interior: Here } | MultiLocation { parents: 1, interior: X1(Plurality { .. }) } }; - pub type ParentOrSiblings: impl Contains = { - MultiLocation { parents: 1, interior: Here } | - MultiLocation { parents: 1, interior: X1(_) } - }; pub type LocalPlurality: impl Contains = { MultiLocation { parents: 0, interior: X1(Plurality { .. }) } }; @@ -244,7 +242,7 @@ pub type Barrier = TrailingSetTopicAsId< Equals, )>, // Subscriptions for version tracking are OK. - AllowSubscriptionsFrom, + AllowSubscriptionsFrom, ), UniversalLocation, ConstU32<8>, @@ -253,23 +251,11 @@ pub type Barrier = TrailingSetTopicAsId< >, >; -match_types! { - pub type SystemParachains: impl Contains = { - MultiLocation { - parents: 1, - interior: X1(Parachain( - system_parachain::ASSET_HUB_ID | - system_parachain::BRIDGE_HUB_ID - )), - } - }; -} - /// Locations that will not be charged fees in the executor, /// either execution or delivery. /// We only waive fees for system functions, which these locations represent. pub type WaivedLocations = ( - RelayOrOtherSystemParachains, + RelayOrOtherSystemParachains, Equals, Equals, LocalPlurality, @@ -283,7 +269,7 @@ pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { type RuntimeCall = RuntimeCall; type XcmSender = XcmRouter; - type AssetTransactor = CurrencyTransactor; + type AssetTransactor = FungibleTransactor; type OriginConverter = XcmOriginToTransactDispatchOrigin; // Collectives does not recognize a reserve location for any asset. Users must teleport DOT // where allowed (e.g. with the Relay Chain). diff --git a/system-parachains/constants/Cargo.toml b/system-parachains/constants/Cargo.toml index a414dd6126..b1f97d2384 100644 --- a/system-parachains/constants/Cargo.toml +++ b/system-parachains/constants/Cargo.toml @@ -10,13 +10,13 @@ license.workspace = true [dependencies] smallvec = "1.13.1" -frame-support = { default-features = false , version = "27.0.0" } +frame-support = { default-features = false , version = "28.0.0" } kusama-runtime-constants = { path = "../../relay/kusama/constants", default-features = false} -parachains-common = { default-features = false , version = "6.0.0" } -polkadot-core-primitives = { default-features = false, version = "6.0.0"} -polkadot-primitives = { default-features = false , version = "6.0.0" } +parachains-common = { default-features = false , version = "7.0.0" } +polkadot-core-primitives = { default-features = false, version = "7.0.0"} +polkadot-primitives = { default-features = false , version = "7.0.0" } polkadot-runtime-constants = { path = "../../relay/polkadot/constants", default-features = false} -sp-runtime = { default-features = false , version = "30.0.1" } +sp-runtime = { default-features = false , version = "31.0.1" } [features] default = [ "std" ] diff --git a/system-parachains/encointer/Cargo.toml b/system-parachains/encointer/Cargo.toml index 52f7b22fee..86659ef1d2 100644 --- a/system-parachains/encointer/Cargo.toml +++ b/system-parachains/encointer/Cargo.toml @@ -20,93 +20,91 @@ scale-info = { version = "2.10.0", default-features = false, features = [ smallvec = "1.13.1" # encointer deps -encointer-balances-tx-payment = { default-features = false, version = "3.0.2" } -encointer-balances-tx-payment-rpc-runtime-api = { default-features = false, version = "3.0.2" } -encointer-primitives = { default-features = false, version = "3.0.2" } -pallet-encointer-balances = { default-features = false, version = "3.0.2" } -pallet-encointer-bazaar = { default-features = false, version = "3.0.3" } -pallet-encointer-bazaar-rpc-runtime-api = { default-features = false, version = "3.0.2" } -pallet-encointer-ceremonies = { default-features = false, version = "3.0.4" } -pallet-encointer-ceremonies-rpc-runtime-api = { default-features = false, version = "3.0.2" } -pallet-encointer-communities = { default-features = false, version = "3.0.3" } -pallet-encointer-communities-rpc-runtime-api = { default-features = false, version = "3.0.2" } -pallet-encointer-faucet = { default-features = false, version = "3.0.3" } -pallet-encointer-reputation-commitments = { default-features = false, version = "3.0.2" } -pallet-encointer-scheduler = { default-features = false, version = "3.0.3" } +encointer-balances-tx-payment = { default-features = false, version = "5.0.0" } +encointer-balances-tx-payment-rpc-runtime-api = { default-features = false, version = "5.0.0" } +encointer-primitives = { default-features = false, version = "5.0.0" } +pallet-encointer-balances = { default-features = false, version = "5.0.0" } +pallet-encointer-bazaar = { default-features = false, version = "5.0.0" } +pallet-encointer-bazaar-rpc-runtime-api = { default-features = false, version = "5.0.0" } +pallet-encointer-ceremonies = { default-features = false, version = "5.0.0" } +pallet-encointer-ceremonies-rpc-runtime-api = { default-features = false, version = "5.0.0" } +pallet-encointer-communities = { default-features = false, version = "5.0.0" } +pallet-encointer-communities-rpc-runtime-api = { default-features = false, version = "5.0.0" } +pallet-encointer-faucet = { default-features = false, version = "5.0.0" } +pallet-encointer-reputation-commitments = { default-features = false, version = "5.0.0" } +pallet-encointer-scheduler = { default-features = false, version = "5.0.0" } # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "25.0.0" } -frame-executive = { default-features = false, version = "25.0.0" } -frame-support = { default-features = false, version = "25.0.0" } -frame-system = { default-features = false, version = "25.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "25.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "23.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.31.0" } -pallet-asset-tx-payment = { default-features = false, version = "25.0.0" } -pallet-aura = { default-features = false, version = "24.0.0" } -pallet-balances = { default-features = false, version = "25.0.0" } -pallet-collective = { default-features = false, version = "25.0.0" } -pallet-insecure-randomness-collective-flip = { default-features = false, version = "13.0.0" } -pallet-membership = { default-features = false, version = "25.0.0" } -pallet-proxy = { default-features = false, version = "25.0.0" } -pallet-scheduler = { default-features = false, version = "26.0.0" } -pallet-timestamp = { default-features = false, version = "24.0.0" } -pallet-transaction-payment = { default-features = false, version = "25.0.0" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "25.0.0" } -pallet-treasury = { default-features = false, version = "24.0.0" } -pallet-utility = { default-features = false, version = "25.0.0" } -sp-api = { default-features = false, version = "23.0.0" } -sp-block-builder = { default-features = false, version = "23.0.0" } -sp-consensus-aura = { default-features = false, version = "0.29.0" } -sp-core = { default-features = false, version = "25.0.0" } -sp-inherents = { default-features = false, version = "23.0.0" } -sp-offchain = { default-features = false, version = "23.0.0" } -sp-runtime = { default-features = false, version = "28.0.0" } -sp-session = { default-features = false, version = "24.0.0" } -sp-std = { default-features = false, version = "12.0.0" } -sp-transaction-pool = { default-features = false, version = "23.0.0" } -sp-version = { default-features = false, version = "26.0.0" } -sp-genesis-builder = { default-features = false , version = "0.4.0" } +frame-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-executive = { default-features = false, version = "28.0.0" } +frame-support = { default-features = false, version = "28.0.0" } +frame-system = { default-features = false, version = "28.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "26.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.34.0" } +pallet-asset-tx-payment = { default-features = false, version = "28.0.0" } +pallet-aura = { default-features = false, version = "27.0.0" } +pallet-balances = { default-features = false, version = "28.0.0" } +pallet-collective = { default-features = false, version = "28.0.0" } +pallet-insecure-randomness-collective-flip = { default-features = false, version = "16.0.0" } +pallet-membership = { default-features = false, version = "28.0.0" } +pallet-message-queue = { default-features = false, version = "31.0.0" } +pallet-proxy = { default-features = false, version = "28.0.0" } +pallet-scheduler = { default-features = false, version = "29.0.0" } +pallet-timestamp = { default-features = false, version = "27.0.0" } +pallet-transaction-payment = { default-features = false, version = "28.0.0" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, version = "28.0.0" } +pallet-treasury = { default-features = false, version = "27.0.0" } +pallet-utility = { default-features = false, version = "28.0.0" } +sp-api = { default-features = false, version = "26.0.0" } +sp-block-builder = { default-features = false, version = "26.0.0" } +sp-consensus-aura = { default-features = false, version = "0.32.0" } +sp-core = { default-features = false, version = "28.0.0" } +sp-inherents = { default-features = false, version = "26.0.0" } +sp-offchain = { default-features = false, version = "26.0.0" } +sp-runtime = { default-features = false, version = "31.0.0" } +sp-session = { default-features = false, version = "27.0.0" } +sp-std = { default-features = false, version = "14.0.0" } +sp-transaction-pool = { default-features = false, version = "26.0.0" } +sp-version = { default-features = false, version = "29.0.0" } +sp-genesis-builder = { default-features = false, version = "0.7.0" } # Polkadot dependencies -pallet-xcm = { default-features = false, version = "4.0.0" } -polkadot-parachain-primitives = { default-features = false, version = "3.0.0" } -polkadot-runtime-common = { default-features = false, version = "4.0.0" } -xcm = { package = "staging-xcm", default-features = false, version = "4.0.0" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "4.0.0" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "4.0.2" } +pallet-xcm = { default-features = false, version = "7.0.0" } +polkadot-parachain-primitives = { default-features = false, version = "6.0.0" } +polkadot-runtime-common = { default-features = false, version = "7.0.0" } +xcm = { package = "staging-xcm", default-features = false, version = "7.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "7.0.0" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "7.0.0" } # Cumulus dependencies -cumulus-pallet-aura-ext = { default-features = false, version = "0.4.0" } -cumulus-pallet-dmp-queue = { default-features = false, version = "0.4.0" } +cumulus-pallet-aura-ext = { default-features = false, version = "0.7.0" } +cumulus-pallet-dmp-queue = { default-features = false, version = "0.7.0" } cumulus-pallet-parachain-system = { default-features = false, features = [ "parameterized-consensus-hook", -], version = "0.4.0" } -cumulus-pallet-xcm = { default-features = false, version = "0.4.0" } -cumulus-pallet-xcmp-queue = { default-features = false, version = "0.4.0" } -cumulus-primitives-core = { default-features = false, version = "0.4.0" } -cumulus-primitives-timestamp = { default-features = false, version = "0.4.0" } -cumulus-primitives-utility = { default-features = false, version = "0.4.0" } -parachain-info = { package = "staging-parachain-info", default-features = false, version = "0.4.0" } -parachains-common = { default-features = false, version = "4.0.0" } +], version = "0.7.0" } +cumulus-pallet-xcm = { default-features = false, version = "0.7.0" } +cumulus-pallet-xcmp-queue = { default-features = false, version = "0.7.0" } +cumulus-primitives-core = { default-features = false, version = "0.7.0" } +cumulus-primitives-utility = { default-features = false, version = "0.7.0" } +parachain-info = { package = "staging-parachain-info", default-features = false, version = "0.7.0" } +parachains-common = { default-features = false, version = "7.0.0" } +system-parachains-constants = { path = "../constants", default-features = false } +polkadot-core-primitives = { default-features = false, version = "7.0.0" } +polkadot-primitives = { default-features = false, version = "7.0.0" } +# Used for runtime benchmarking -# TODO: Encointer pallets does not have compatible `polkadot-sdk` versions, -# so we need to copy all the stuff from `system-parachains-constants` and `kusama-runtime-constants`. -#system-parachains-constants = { path = "../constants", default-features = false } -#kusama-runtime-constants = { path = "../../relay/kusama/constants", default-features = false} -polkadot-core-primitives = { default-features = false, version = "4.0.0"} -polkadot-primitives = { default-features = false , version = "4.0.0" } [build-dependencies] -substrate-wasm-builder = { optional = true, version = "14.0.0" } +substrate-wasm-builder = { optional = true, version = "17.0.0" } [dev-dependencies] -system-parachains-constants = { path = "../constants" } -kusama-runtime-constants = { path = "../../relay/kusama/constants" } +kusama-runtime-constants = { path = "../../relay/kusama/constants", default-features = false } [features] default = ["std"] runtime-benchmarks = [ + "cumulus-pallet-dmp-queue/runtime-benchmarks", "cumulus-pallet-xcmp-queue/runtime-benchmarks", "cumulus-pallet-parachain-system/runtime-benchmarks", "frame-benchmarking/runtime-benchmarks", @@ -123,6 +121,7 @@ runtime-benchmarks = [ "pallet-encointer-faucet/runtime-benchmarks", "pallet-encointer-reputation-commitments/runtime-benchmarks", "pallet-encointer-scheduler/runtime-benchmarks", + "pallet-message-queue/runtime-benchmarks", "pallet-membership/runtime-benchmarks", "pallet-proxy/runtime-benchmarks", "pallet-timestamp/runtime-benchmarks", @@ -142,7 +141,6 @@ std = [ "cumulus-pallet-xcm/std", "cumulus-pallet-xcmp-queue/std", "cumulus-primitives-core/std", - "cumulus-primitives-timestamp/std", "cumulus-primitives-utility/std", "encointer-balances-tx-payment-rpc-runtime-api/std", "encointer-balances-tx-payment/std", @@ -153,7 +151,6 @@ std = [ "frame-system-rpc-runtime-api/std", "frame-system/std", "frame-try-runtime/std", -# "kusama-runtime-constants/std", "log/std", "pallet-asset-tx-payment/std", "pallet-aura/std", @@ -170,6 +167,7 @@ std = [ "pallet-encointer-reputation-commitments/std", "pallet-encointer-scheduler/std", "pallet-insecure-randomness-collective-flip/std", + "pallet-message-queue/std", "pallet-membership/std", "pallet-proxy/std", "pallet-timestamp/std", @@ -180,8 +178,6 @@ std = [ "pallet-xcm/std", "parachain-info/std", "parachains-common/std", - "polkadot-core-primitives/std", - "polkadot-primitives/std", "scale-info/std", "sp-api/std", "sp-block-builder/std", @@ -195,7 +191,6 @@ std = [ "sp-std/std", "sp-transaction-pool/std", "sp-version/std", -# "system-parachains-constants/std", "substrate-wasm-builder", "xcm-builder/std", "xcm-executor/std", @@ -224,6 +219,7 @@ try-runtime = [ "pallet-encointer-reputation-commitments/try-runtime", "pallet-encointer-scheduler/try-runtime", "pallet-insecure-randomness-collective-flip/try-runtime", + "pallet-message-queue/try-runtime", "pallet-membership/try-runtime", "pallet-proxy/try-runtime", "pallet-scheduler/try-runtime", @@ -235,9 +231,9 @@ try-runtime = [ "parachain-info/try-runtime", ] -experimental = [ "pallet-aura/experimental" ] +experimental = ["pallet-aura/experimental"] # A feature that should be enabled when the runtime should be built for on-chain # deployment. This will disable stuff that shouldn't be part of the on-chain wasm # to make it smaller, like logging for example. -on-chain-release-build = [ "sp-api/disable-logging" ] +on-chain-release-build = ["sp-api/disable-logging"] diff --git a/system-parachains/encointer/src/lib.rs b/system-parachains/encointer/src/lib.rs index eb04d4753d..4a68f33fce 100644 --- a/system-parachains/encointer/src/lib.rs +++ b/system-parachains/encointer/src/lib.rs @@ -37,6 +37,7 @@ mod weights; pub mod xcm_config; use codec::{Decode, Encode, MaxEncodedLen}; use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases; +use cumulus_primitives_core::{AggregateMessageOrigin, ParaId}; use deal_with_fees::FeesToTreasury; use encointer_balances_tx_payment::{AssetBalanceOf, AssetIdOf, BalanceToCommunityBalance}; pub use encointer_primitives::{ @@ -47,6 +48,9 @@ pub use encointer_primitives::{ communities::{CommunityIdentifier, Location}, scheduler::CeremonyPhaseType, }; +use frame_support::traits::TransformOrigin; +use parachains_common::message_queue::{NarrowOriginToSibling, ParaIdToSibling}; + use frame_support::{ construct_runtime, dispatch::DispatchClass, @@ -101,8 +105,7 @@ use xcm::{ v3::AssetId as XcmAssetId, }; -use xcm_config::{KsmLocation, XcmConfig, XcmOriginToTransactDispatchOrigin}; -use xcm_executor::XcmExecutor; +use xcm_config::{KsmLocation, XcmOriginToTransactDispatchOrigin}; /// A type to hold UTC unix epoch [ms] pub type Moment = u64; @@ -254,6 +257,7 @@ impl frame_system::Config for Runtime { type BlockLength = RuntimeBlockLength; type AccountId = AccountId; type RuntimeCall = RuntimeCall; + type RuntimeTask = RuntimeTask; type Lookup = AccountIdLookup; type Nonce = Nonce; type Hash = Hash; @@ -411,13 +415,14 @@ impl pallet_scheduler::Config for Runtime { parameter_types! { pub const ReservedXcmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT.saturating_div(4); pub const ReservedDmpWeight: Weight = MAXIMUM_BLOCK_WEIGHT.saturating_div(4); + pub const RelayOrigin: AggregateMessageOrigin = AggregateMessageOrigin::Parent; } impl cumulus_pallet_parachain_system::Config for Runtime { type RuntimeEvent = RuntimeEvent; type OnSystemEvent = (); type SelfParaId = parachain_info::Pallet; - type DmpMessageHandler = DmpQueue; + type DmpQueue = frame_support::traits::EnqueueWithOrigin; type ReservedDmpWeight = ReservedDmpWeight; type OutboundXcmpMessageSource = XcmpQueue; type XcmpMessageHandler = XcmpQueue; @@ -429,6 +434,7 @@ impl cumulus_pallet_parachain_system::Config for Runtime { BLOCK_PROCESSING_VELOCITY, UNINCLUDED_SEGMENT_CAPACITY, >; + type WeightInfo = weights::cumulus_pallet_parachain_system::WeightInfo; } impl pallet_insecure_randomness_collective_flip::Config for Runtime {} @@ -455,10 +461,10 @@ pub type PriceForSiblingParachainDelivery = polkadot_runtime_common::xcm_sender: impl cumulus_pallet_xcmp_queue::Config for Runtime { type RuntimeEvent = RuntimeEvent; - type XcmExecutor = XcmExecutor; type ChannelInfo = ParachainSystem; type VersionWrapper = PolkadotXcm; - type ExecuteOverweightOrigin = EnsureRoot; + type XcmpQueue = TransformOrigin; + type MaxInboundSuspended = sp_core::ConstU32<1_000>; type ControllerOrigin = EitherOfDiverse< EnsureRoot, EnsureXcm>, @@ -471,8 +477,34 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { // TODO: remove dmp with 1.3.0 (https://github.com/polkadot-fellows/runtimes/issues/186) impl cumulus_pallet_dmp_queue::Config for Runtime { type RuntimeEvent = RuntimeEvent; - type XcmExecutor = XcmExecutor; - type ExecuteOverweightOrigin = EnsureRoot; + type WeightInfo = weights::cumulus_pallet_dmp_queue::WeightInfo; + type DmpSink = frame_support::traits::EnqueueWithOrigin; +} + +parameter_types! { + pub MessageQueueServiceWeight: Weight = Perbill::from_percent(35) * RuntimeBlockWeights::get().max_block; +} + +impl pallet_message_queue::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type WeightInfo = weights::pallet_message_queue::WeightInfo; + #[cfg(feature = "runtime-benchmarks")] + type MessageProcessor = pallet_message_queue::mock_helpers::NoopMessageProcessor< + cumulus_primitives_core::AggregateMessageOrigin, + >; + #[cfg(not(feature = "runtime-benchmarks"))] + type MessageProcessor = xcm_builder::ProcessXcmMessage< + AggregateMessageOrigin, + xcm_executor::XcmExecutor, + RuntimeCall, + >; + type Size = u32; + // The XCMP queue pallet is only ever able to handle the `Sibling(ParaId)` origin: + type QueueChangeHandler = NarrowOriginToSibling; + type QueuePausedQuery = NarrowOriginToSibling; + type HeapSize = sp_core::ConstU32<{ 64 * 1024 }>; + type MaxStale = sp_core::ConstU32<8>; + type ServiceWeight = MessageQueueServiceWeight; } parameter_types! { @@ -631,6 +663,7 @@ construct_runtime! { CumulusXcm: cumulus_pallet_xcm = 32, // TODO: remove dmp with 1.3.0 (https://github.com/polkadot-fellows/runtimes/issues/186) DmpQueue: cumulus_pallet_dmp_queue = 33, + MessageQueue: pallet_message_queue = 35, // Handy utilities. Utility: pallet_utility = 40, @@ -693,6 +726,7 @@ pub type Migrations = ( pallet_balances::migration::ResetInactive, //then apply the proper migration as we should have done earlier pallet_balances::migration::MigrateToTrackInactive, + cumulus_pallet_xcmp_queue::migration::v4::MigrationToV4, ); /// Executive: handles dispatch to the various modules. @@ -711,6 +745,7 @@ mod benches { [frame_system, SystemBench::] [pallet_balances, Balances] [pallet_collective, Collective] + [pallet_message_queue, MessageQueue] [pallet_membership, Membership] [pallet_timestamp, Timestamp] // todo: treasury will be removed in separate PR, so no need to fix broken benchmarks: https://github.com/polkadot-fellows/runtimes/issues/176 @@ -724,6 +759,8 @@ mod benches { [pallet_encointer_faucet, EncointerFaucet] [pallet_encointer_reputation_commitments, EncointerReputationCommitments] [pallet_encointer_scheduler, EncointerScheduler] + [cumulus_pallet_dmp_queue, DmpQueue] + [cumulus_pallet_parachain_system, ParachainSystem] [cumulus_pallet_xcmp_queue, XcmpQueue] ); } @@ -993,6 +1030,25 @@ cumulus_pallet_parachain_system::register_validate_block! { BlockExecutor = cumulus_pallet_aura_ext::BlockExecutor::, } +/// The function is dedicated to the `chain-spec-generator`. Yes, it contains some duplicated code, +/// but it avoids potential collisions caused by different versions of crates. +#[cfg(feature = "std")] +pub fn aura_config_for_chain_spec(seeds: &[&str]) -> AuraConfig { + use sp_core::{ + crypto::{Pair, Public}, + sr25519, + }; + fn get_from_seed(seed: &str) -> ::Public { + TPublic::Pair::from_string(&format!("//{}", seed), None) + .expect("static values are valid; qed") + .public() + } + + AuraConfig { + authorities: seeds.iter().map(|s| get_from_seed::(s).into()).collect(), + } +} + #[cfg(test)] mod multiplier_tests { use super::*; @@ -1070,8 +1126,9 @@ fn test_constants_compatiblity() { ); } -// TODO: Encointer pallets does not have compatible `polkadot-sdk` versions, -// so we cannot easily reuse `system-parachains-constants` module. +// The Encointer pallets do not have compatible versions with `polkadot-sdk`, making it difficult +// for us to reuse the `system-parachains-constants` module. Therefore, we have copies of it here +// with `test_constants_compatiblity`. mod system_parachains_constants { use super::*; use frame_support::weights::constants::WEIGHT_REF_TIME_PER_SECOND; @@ -1223,8 +1280,6 @@ mod system_parachains_constants { } } - // TODO: Encointer pallets does not have compatible `polkadot-sdk` versions, - // so we cannot easily reuse `kusama-runtime-constants` module. pub(crate) mod kusama_runtime_constants { /// Money matters. pub mod currency { diff --git a/system-parachains/encointer/src/weights/cumulus_pallet_dmp_queue.rs b/system-parachains/encointer/src/weights/cumulus_pallet_dmp_queue.rs new file mode 100644 index 0000000000..cc41dcd6cb --- /dev/null +++ b/system-parachains/encointer/src/weights/cumulus_pallet_dmp_queue.rs @@ -0,0 +1,131 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Cumulus. + +// Cumulus is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Cumulus is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Cumulus. If not, see . + +//! Autogenerated weights for `cumulus_pallet_dmp_queue` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2023-10-31, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `runner-yprdrvc7-project-674-concurrent-0`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("asset-hub-kusama-dev")`, DB CACHE: 1024 + +// Executed Command: +// target/production/polkadot-parachain +// benchmark +// pallet +// --steps=50 +// --repeat=20 +// --extrinsic=* +// --wasm-execution=compiled +// --heap-pages=4096 +// --json-file=/builds/parity/mirrors/polkadot-sdk/.git/.artifacts/bench.json +// --pallet=cumulus_pallet_dmp_queue +// --chain=asset-hub-kusama-dev +// --header=./cumulus/file_header.txt +// --output=./cumulus/parachains/runtimes/assets/asset-hub-kusama/src/weights/ + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] +#![allow(missing_docs)] + +use frame_support::{traits::Get, weights::Weight}; +use core::marker::PhantomData; + +/// Weight functions for `cumulus_pallet_dmp_queue`. +pub struct WeightInfo(PhantomData); +impl cumulus_pallet_dmp_queue::WeightInfo for WeightInfo { + /// Storage: `DmpQueue::MigrationStatus` (r:1 w:1) + /// Proof: `DmpQueue::MigrationStatus` (`max_values`: Some(1), `max_size`: Some(1028), added: 1523, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca754904d6d8c6fe06c4e5965f9b8397421` (r:1 w:0) + /// Proof: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca754904d6d8c6fe06c4e5965f9b8397421` (r:1 w:0) + /// Storage: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca7d95d3e948effbeccff2de2c182672836` (r:1 w:1) + /// Proof: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca7d95d3e948effbeccff2de2c182672836` (r:1 w:1) + /// Storage: `MessageQueue::BookStateFor` (r:1 w:1) + /// Proof: `MessageQueue::BookStateFor` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::ServiceHead` (r:1 w:1) + /// Proof: `MessageQueue::ServiceHead` (`max_values`: Some(1), `max_size`: Some(5), added: 500, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::Pages` (r:0 w:1) + /// Proof: `MessageQueue::Pages` (`max_values`: None, `max_size`: Some(65585), added: 68060, mode: `MaxEncodedLen`) + fn on_idle_good_msg() -> Weight { + // Proof Size summary in bytes: + // Measured: `65696` + // Estimated: `69161` + // Minimum execution time: 124_651_000 picoseconds. + Weight::from_parts(127_857_000, 0) + .saturating_add(Weight::from_parts(0, 69161)) + .saturating_add(T::DbWeight::get().reads(5)) + .saturating_add(T::DbWeight::get().writes(5)) + } + /// Storage: `DmpQueue::MigrationStatus` (r:1 w:1) + /// Proof: `DmpQueue::MigrationStatus` (`max_values`: Some(1), `max_size`: Some(1028), added: 1523, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca754904d6d8c6fe06c4e5965f9b8397421` (r:1 w:0) + /// Proof: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca754904d6d8c6fe06c4e5965f9b8397421` (r:1 w:0) + /// Storage: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca7d95d3e948effbeccff2de2c182672836` (r:1 w:1) + /// Proof: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca7d95d3e948effbeccff2de2c182672836` (r:1 w:1) + fn on_idle_large_msg() -> Weight { + // Proof Size summary in bytes: + // Measured: `65659` + // Estimated: `69124` + // Minimum execution time: 65_684_000 picoseconds. + Weight::from_parts(68_039_000, 0) + .saturating_add(Weight::from_parts(0, 69124)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(2)) + } + /// Storage: `DmpQueue::MigrationStatus` (r:1 w:1) + /// Proof: `DmpQueue::MigrationStatus` (`max_values`: Some(1), `max_size`: Some(1028), added: 1523, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca754904d6d8c6fe06c4e5965f9b8397421` (r:1 w:0) + /// Proof: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca754904d6d8c6fe06c4e5965f9b8397421` (r:1 w:0) + /// Storage: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca70f923ef3252d0166429d36d20ed665a8` (r:1 w:1) + /// Proof: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca70f923ef3252d0166429d36d20ed665a8` (r:1 w:1) + /// Storage: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca772275f64c354954352b71eea39cfaca2` (r:1 w:1) + /// Proof: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca772275f64c354954352b71eea39cfaca2` (r:1 w:1) + /// Storage: `MessageQueue::BookStateFor` (r:1 w:1) + /// Proof: `MessageQueue::BookStateFor` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::ServiceHead` (r:1 w:1) + /// Proof: `MessageQueue::ServiceHead` (`max_values`: Some(1), `max_size`: Some(5), added: 500, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::Pages` (r:0 w:1) + /// Proof: `MessageQueue::Pages` (`max_values`: None, `max_size`: Some(65585), added: 68060, mode: `MaxEncodedLen`) + fn on_idle_overweight_good_msg() -> Weight { + // Proof Size summary in bytes: + // Measured: `65726` + // Estimated: `69191` + // Minimum execution time: 117_657_000 picoseconds. + Weight::from_parts(122_035_000, 0) + .saturating_add(Weight::from_parts(0, 69191)) + .saturating_add(T::DbWeight::get().reads(6)) + .saturating_add(T::DbWeight::get().writes(6)) + } + /// Storage: `DmpQueue::MigrationStatus` (r:1 w:1) + /// Proof: `DmpQueue::MigrationStatus` (`max_values`: Some(1), `max_size`: Some(1028), added: 1523, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca754904d6d8c6fe06c4e5965f9b8397421` (r:1 w:0) + /// Proof: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca754904d6d8c6fe06c4e5965f9b8397421` (r:1 w:0) + /// Storage: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca70f923ef3252d0166429d36d20ed665a8` (r:1 w:1) + /// Proof: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca70f923ef3252d0166429d36d20ed665a8` (r:1 w:1) + /// Storage: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca772275f64c354954352b71eea39cfaca2` (r:1 w:1) + /// Proof: UNKNOWN KEY `0xcd5c1f6df63bc97f4a8ce37f14a50ca772275f64c354954352b71eea39cfaca2` (r:1 w:1) + fn on_idle_overweight_large_msg() -> Weight { + // Proof Size summary in bytes: + // Measured: `65689` + // Estimated: `69154` + // Minimum execution time: 59_799_000 picoseconds. + Weight::from_parts(61_354_000, 0) + .saturating_add(Weight::from_parts(0, 69154)) + .saturating_add(T::DbWeight::get().reads(4)) + .saturating_add(T::DbWeight::get().writes(3)) + } +} diff --git a/system-parachains/encointer/src/weights/cumulus_pallet_parachain_system.rs b/system-parachains/encointer/src/weights/cumulus_pallet_parachain_system.rs new file mode 100644 index 0000000000..c1e5c6a742 --- /dev/null +++ b/system-parachains/encointer/src/weights/cumulus_pallet_parachain_system.rs @@ -0,0 +1,80 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Autogenerated weights for `cumulus_pallet_parachain_system` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2023-03-28, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `i9`, CPU: `13th Gen Intel(R) Core(TM) i9-13900K` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 + +// Executed Command: +// ./target/release/polkadot-parachain +// benchmark +// pallet +// --chain +// statemine-dev +// --pallet +// cumulus_pallet_parachain_system +// --extrinsic +// * +// --execution +// wasm +// --wasm-execution +// compiled +// --output +// parachains/runtimes/assets/statemine/src/weights +// --steps +// 50 +// --repeat +// 20 + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `cumulus_pallet_parachain_system`. +pub struct WeightInfo(PhantomData); +impl cumulus_pallet_parachain_system::WeightInfo for WeightInfo { + /// Storage: ParachainSystem LastDmqMqcHead (r:1 w:1) + /// Proof Skipped: ParachainSystem LastDmqMqcHead (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: ParachainSystem ReservedDmpWeightOverride (r:1 w:0) + /// Proof Skipped: ParachainSystem ReservedDmpWeightOverride (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: MessageQueue BookStateFor (r:1 w:1) + /// Proof: MessageQueue BookStateFor (max_values: None, max_size: Some(52), added: 2527, mode: MaxEncodedLen) + /// Storage: MessageQueue ServiceHead (r:1 w:1) + /// Proof: MessageQueue ServiceHead (max_values: Some(1), max_size: Some(5), added: 500, mode: MaxEncodedLen) + /// Storage: ParachainSystem ProcessedDownwardMessages (r:0 w:1) + /// Proof Skipped: ParachainSystem ProcessedDownwardMessages (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: MessageQueue Pages (r:0 w:16) + /// Proof: MessageQueue Pages (max_values: None, max_size: Some(65585), added: 68060, mode: MaxEncodedLen) + /// The range of component `n` is `[0, 1000]`. + fn enqueue_inbound_downward_messages(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `12` + // Estimated: `8013` + // Minimum execution time: 1_622_000 picoseconds. + Weight::from_parts(1_709_000, 0) + .saturating_add(Weight::from_parts(0, 8013)) + // Standard Error: 22_138 + .saturating_add(Weight::from_parts(23_923_169, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(4)) + .saturating_add(T::DbWeight::get().writes(4)) + } +} diff --git a/system-parachains/encointer/src/weights/cumulus_pallet_xcmp_queue.rs b/system-parachains/encointer/src/weights/cumulus_pallet_xcmp_queue.rs index f10766cb91..d669fa0489 100644 --- a/system-parachains/encointer/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/system-parachains/encointer/src/weights/cumulus_pallet_xcmp_queue.rs @@ -1,25 +1,40 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . //! Autogenerated weights for `cumulus_pallet_xcmp_queue` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-07-31, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-12-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `caribe`, CPU: `12th Gen Intel(R) Core(TM) i7-1260P` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("encointer-rococo-local-dev"), DB CACHE: 1024 +//! HOSTNAME: `ggwpez-ref-hw`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("../asset-hub-kusama-chain-spec.json")`, DB CACHE: 1024 // Executed Command: -// target/release/encointer-collator +// ./target/production/polkadot // benchmark // pallet -// --chain=encointer-rococo-local-dev +// --chain=../asset-hub-kusama-chain-spec.json // --steps=50 // --repeat=20 // --pallet=cumulus_pallet_xcmp_queue // --extrinsic=* -// --execution=wasm // --wasm-execution=compiled // --heap-pages=4096 -// --output=polkadot-parachains/encointer-runtime/src/weights/cumulus_pallet_xcmp_queue.rs +// --output=./asset-hub-kusama-weights +// --header=./file_header.txt #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -32,28 +47,104 @@ use core::marker::PhantomData; /// Weight functions for `cumulus_pallet_xcmp_queue`. pub struct WeightInfo(PhantomData); impl cumulus_pallet_xcmp_queue::WeightInfo for WeightInfo { - /// Storage: XcmpQueue QueueConfig (r:1 w:1) - /// Proof Skipped: XcmpQueue QueueConfig (max_values: Some(1), max_size: None, mode: Measured) + /// Storage: `XcmpQueue::QueueConfig` (r:1 w:1) + /// Proof: `XcmpQueue::QueueConfig` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) fn set_config_with_u32() -> Weight { // Proof Size summary in bytes: - // Measured: `42` - // Estimated: `1527` - // Minimum execution time: 4_338_000 picoseconds. - Weight::from_parts(4_474_000, 0) - .saturating_add(Weight::from_parts(0, 1527)) + // Measured: `76` + // Estimated: `1561` + // Minimum execution time: 5_027_000 picoseconds. + Weight::from_parts(5_194_000, 0) + .saturating_add(Weight::from_parts(0, 1561)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } - /// Storage: XcmpQueue QueueConfig (r:1 w:1) - /// Proof Skipped: XcmpQueue QueueConfig (max_values: Some(1), max_size: None, mode: Measured) - fn set_config_with_weight() -> Weight { + /// Storage: `XcmpQueue::QueueConfig` (r:1 w:0) + /// Proof: `XcmpQueue::QueueConfig` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `MessageQueue::BookStateFor` (r:1 w:1) + /// Proof: `MessageQueue::BookStateFor` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::ServiceHead` (r:1 w:1) + /// Proof: `MessageQueue::ServiceHead` (`max_values`: Some(1), `max_size`: Some(5), added: 500, mode: `MaxEncodedLen`) + /// Storage: `XcmpQueue::InboundXcmpSuspended` (r:1 w:0) + /// Proof: `XcmpQueue::InboundXcmpSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `MessageQueue::Pages` (r:0 w:1) + /// Proof: `MessageQueue::Pages` (`max_values`: None, `max_size`: Some(65585), added: 68060, mode: `MaxEncodedLen`) + fn enqueue_xcmp_message() -> Weight { + // Proof Size summary in bytes: + // Measured: `118` + // Estimated: `3517` + // Minimum execution time: 15_000_000 picoseconds. + Weight::from_parts(16_000_000, 0) + .saturating_add(Weight::from_parts(0, 3517)) + .saturating_add(T::DbWeight::get().reads(4)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `XcmpQueue::OutboundXcmpStatus` (r:1 w:1) + /// Proof: `XcmpQueue::OutboundXcmpStatus` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + fn suspend_channel() -> Weight { // Proof Size summary in bytes: - // Measured: `42` - // Estimated: `1527` - // Minimum execution time: 4_285_000 picoseconds. - Weight::from_parts(4_439_000, 0) - .saturating_add(Weight::from_parts(0, 1527)) + // Measured: `76` + // Estimated: `1561` + // Minimum execution time: 3_000_000 picoseconds. + Weight::from_parts(3_000_000, 0) + .saturating_add(Weight::from_parts(0, 1561)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } + /// Storage: `XcmpQueue::OutboundXcmpStatus` (r:1 w:1) + /// Proof: `XcmpQueue::OutboundXcmpStatus` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + fn resume_channel() -> Weight { + // Proof Size summary in bytes: + // Measured: `111` + // Estimated: `1596` + // Minimum execution time: 4_000_000 picoseconds. + Weight::from_parts(5_000_000, 0) + .saturating_add(Weight::from_parts(0, 1596)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + fn take_first_concatenated_xcm() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 44_000_000 picoseconds. + Weight::from_parts(45_000_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + } + /// Storage: UNKNOWN KEY `0x7b3237373ffdfeb1cab4222e3b520d6b345d8e88afa015075c945637c07e8f20` (r:1 w:1) + /// Proof: UNKNOWN KEY `0x7b3237373ffdfeb1cab4222e3b520d6b345d8e88afa015075c945637c07e8f20` (r:1 w:1) + /// Storage: `XcmpQueue::InboundXcmpMessages` (r:1 w:1) + /// Proof: `XcmpQueue::InboundXcmpMessages` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `MessageQueue::BookStateFor` (r:1 w:1) + /// Proof: `MessageQueue::BookStateFor` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `MessageQueue::ServiceHead` (r:1 w:1) + /// Proof: `MessageQueue::ServiceHead` (`max_values`: Some(1), `max_size`: Some(5), added: 500, mode: `MaxEncodedLen`) + /// Storage: `XcmpQueue::QueueConfig` (r:1 w:0) + /// Proof: `XcmpQueue::QueueConfig` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `XcmpQueue::InboundXcmpSuspended` (r:1 w:0) + /// Proof: `XcmpQueue::InboundXcmpSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `MessageQueue::Pages` (r:0 w:1) + /// Proof: `MessageQueue::Pages` (`max_values`: None, `max_size`: Some(65585), added: 68060, mode: `MaxEncodedLen`) + fn on_idle_good_msg() -> Weight { + // Proof Size summary in bytes: + // Measured: `65747` + // Estimated: `69212` + // Minimum execution time: 62_000_000 picoseconds. + Weight::from_parts(66_000_000, 0) + .saturating_add(Weight::from_parts(0, 69212)) + .saturating_add(T::DbWeight::get().reads(6)) + .saturating_add(T::DbWeight::get().writes(5)) + } + /// Storage: UNKNOWN KEY `0x7b3237373ffdfeb1cab4222e3b520d6b345d8e88afa015075c945637c07e8f20` (r:1 w:1) + /// Proof: UNKNOWN KEY `0x7b3237373ffdfeb1cab4222e3b520d6b345d8e88afa015075c945637c07e8f20` (r:1 w:1) + fn on_idle_large_msg() -> Weight { + // Proof Size summary in bytes: + // Measured: `65710` + // Estimated: `69175` + // Minimum execution time: 42_000_000 picoseconds. + Weight::from_parts(43_000_000, 0) + .saturating_add(Weight::from_parts(0, 69175)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(2)) + } } diff --git a/system-parachains/encointer/src/weights/frame_system.rs b/system-parachains/encointer/src/weights/frame_system.rs index ee7995b4ac..3bbf793fb2 100644 --- a/system-parachains/encointer/src/weights/frame_system.rs +++ b/system-parachains/encointer/src/weights/frame_system.rs @@ -17,22 +17,24 @@ //! Autogenerated weights for `frame_system` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-09-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2023-12-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `a3dce7bd4066`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` -//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("spec-asset-hub-kusama.json")`, DB CACHE: 1024 +//! HOSTNAME: `ggwpez-ref-hw`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("../asset-hub-kusama-chain-spec.json")`, DB CACHE: 1024 // Executed Command: -// /builds/polkadot-sdk/target/production/polkadot-parachain +// ./target/production/polkadot // benchmark // pallet -// --chain=spec-asset-hub-kusama.json +// --chain=../asset-hub-kusama-chain-spec.json +// --steps=50 +// --repeat=20 // --pallet=frame_system -// --extrinsic= -// --output=/builds/runtimes/system-parachains/asset-hubs/asset-hub-kusama/src/weights -// --header=/builds/bench/header.txt -// --no-median-slopes -// --no-min-squares +// --extrinsic=* +// --wasm-execution=compiled +// --heap-pages=4096 +// --output=./asset-hub-kusama-weights +// --header=./file_header.txt #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -50,22 +52,22 @@ impl frame_system::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_815_000 picoseconds. - Weight::from_parts(1_241_063, 0) + // Minimum execution time: 1_782_000 picoseconds. + Weight::from_parts(844_700, 0) .saturating_add(Weight::from_parts(0, 0)) // Standard Error: 0 - .saturating_add(Weight::from_parts(387, 0).saturating_mul(b.into())) + .saturating_add(Weight::from_parts(389, 0).saturating_mul(b.into())) } /// The range of component `b` is `[0, 3932160]`. fn remark_with_event(b: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_962_000 picoseconds. - Weight::from_parts(128_782_669, 0) + // Minimum execution time: 5_246_000 picoseconds. + Weight::from_parts(50_763_605, 0) .saturating_add(Weight::from_parts(0, 0)) - // Standard Error: 10 - .saturating_add(Weight::from_parts(1_587, 0).saturating_mul(b.into())) + // Standard Error: 7 + .saturating_add(Weight::from_parts(1_682, 0).saturating_mul(b.into())) } /// Storage: `System::Digest` (r:1 w:1) /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) @@ -75,8 +77,8 @@ impl frame_system::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 3_517_000 picoseconds. - Weight::from_parts(3_750_000, 0) + // Minimum execution time: 3_158_000 picoseconds. + Weight::from_parts(3_329_000, 0) .saturating_add(Weight::from_parts(0, 1485)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(2)) @@ -97,8 +99,8 @@ impl frame_system::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `164` // Estimated: `1649` - // Minimum execution time: 97_863_204_000 picoseconds. - Weight::from_parts(101_385_669_000, 0) + // Minimum execution time: 112_475_580_000 picoseconds. + Weight::from_parts(118_917_296_000, 0) .saturating_add(Weight::from_parts(0, 1649)) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(3)) @@ -110,11 +112,11 @@ impl frame_system::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_919_000 picoseconds. - Weight::from_parts(2_055_000, 0) + // Minimum execution time: 1_913_000 picoseconds. + Weight::from_parts(1_956_000, 0) .saturating_add(Weight::from_parts(0, 0)) - // Standard Error: 2_130 - .saturating_add(Weight::from_parts(718_734, 0).saturating_mul(i.into())) + // Standard Error: 2_072 + .saturating_add(Weight::from_parts(803_678, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into()))) } /// Storage: `Skipped::Metadata` (r:0 w:0) @@ -124,11 +126,11 @@ impl frame_system::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_943_000 picoseconds. - Weight::from_parts(2_123_000, 0) + // Minimum execution time: 1_948_000 picoseconds. + Weight::from_parts(2_011_000, 0) .saturating_add(Weight::from_parts(0, 0)) - // Standard Error: 931 - .saturating_add(Weight::from_parts(541_111, 0).saturating_mul(i.into())) + // Standard Error: 1_108 + .saturating_add(Weight::from_parts(578_044, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(i.into()))) } /// Storage: `Skipped::Metadata` (r:0 w:0) @@ -138,13 +140,40 @@ impl frame_system::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + p * (69 ±0)` // Estimated: `86 + p * (70 ±0)` - // Minimum execution time: 3_533_000 picoseconds. - Weight::from_parts(3_617_000, 0) + // Minimum execution time: 3_632_000 picoseconds. + Weight::from_parts(3_737_000, 0) .saturating_add(Weight::from_parts(0, 86)) - // Standard Error: 1_337 - .saturating_add(Weight::from_parts(1_236_860, 0).saturating_mul(p.into())) + // Standard Error: 1_915 + .saturating_add(Weight::from_parts(1_196_737, 0).saturating_mul(p.into())) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(p.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) } + /// Storage: `System::AuthorizedUpgrade` (r:0 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + fn authorize_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 33_027_000 picoseconds. + Weight::from_parts(33_027_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `System::AuthorizedUpgrade` (r:1 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:1) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + fn apply_authorized_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `22` + // Estimated: `1518` + // Minimum execution time: 118_101_992_000 picoseconds. + Weight::from_parts(118_101_992_000, 0) + .saturating_add(Weight::from_parts(0, 1518)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } } diff --git a/system-parachains/encointer/src/weights/mod.rs b/system-parachains/encointer/src/weights/mod.rs index b0f75efdc0..ec61f38ee0 100644 --- a/system-parachains/encointer/src/weights/mod.rs +++ b/system-parachains/encointer/src/weights/mod.rs @@ -20,6 +20,8 @@ #![allow(clippy::all)] pub mod block_weights; +pub mod cumulus_pallet_dmp_queue; +pub mod cumulus_pallet_parachain_system; pub mod cumulus_pallet_xcmp_queue; pub mod extrinsic_weights; pub mod frame_system; @@ -33,6 +35,7 @@ pub mod pallet_encointer_faucet; pub mod pallet_encointer_reputation_commitments; pub mod pallet_encointer_scheduler; pub mod pallet_membership; +pub mod pallet_message_queue; pub mod pallet_proxy; pub mod pallet_timestamp; pub mod pallet_treasury; diff --git a/system-parachains/encointer/src/weights/pallet_message_queue.rs b/system-parachains/encointer/src/weights/pallet_message_queue.rs new file mode 100644 index 0000000000..45531ccfa7 --- /dev/null +++ b/system-parachains/encointer/src/weights/pallet_message_queue.rs @@ -0,0 +1,179 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Autogenerated weights for `pallet_message_queue` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2023-03-24, STEPS: `2`, REPEAT: `1`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `i9`, CPU: `13th Gen Intel(R) Core(TM) i9-13900K` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("statemine-dev"), DB CACHE: 1024 + +// Executed Command: +// ./target/release/polkadot-parachain +// benchmark +// pallet +// --chain +// statemine-dev +// --pallet +// pallet_message_queue +// --extrinsic +// * +// --execution +// wasm +// --wasm-execution +// compiled +// --output +// parachains/runtimes/assets/statemine/src/weights + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_message_queue`. +pub struct WeightInfo(PhantomData); +impl pallet_message_queue::WeightInfo for WeightInfo { + /// Storage: MessageQueue ServiceHead (r:1 w:0) + /// Proof: MessageQueue ServiceHead (max_values: Some(1), max_size: Some(5), added: 500, mode: MaxEncodedLen) + /// Storage: MessageQueue BookStateFor (r:2 w:2) + /// Proof: MessageQueue BookStateFor (max_values: None, max_size: Some(52), added: 2527, mode: MaxEncodedLen) + fn ready_ring_knit() -> Weight { + // Proof Size summary in bytes: + // Measured: `189` + // Estimated: `7534` + // Minimum execution time: 13_668_000 picoseconds. + Weight::from_parts(13_668_000, 0) + .saturating_add(Weight::from_parts(0, 7534)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(2)) + } + /// Storage: MessageQueue BookStateFor (r:2 w:2) + /// Proof: MessageQueue BookStateFor (max_values: None, max_size: Some(52), added: 2527, mode: MaxEncodedLen) + /// Storage: MessageQueue ServiceHead (r:1 w:1) + /// Proof: MessageQueue ServiceHead (max_values: Some(1), max_size: Some(5), added: 500, mode: MaxEncodedLen) + fn ready_ring_unknit() -> Weight { + // Proof Size summary in bytes: + // Measured: `184` + // Estimated: `7534` + // Minimum execution time: 11_106_000 picoseconds. + Weight::from_parts(11_106_000, 0) + .saturating_add(Weight::from_parts(0, 7534)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: MessageQueue BookStateFor (r:1 w:1) + /// Proof: MessageQueue BookStateFor (max_values: None, max_size: Some(52), added: 2527, mode: MaxEncodedLen) + fn service_queue_base() -> Weight { + // Proof Size summary in bytes: + // Measured: `6` + // Estimated: `3517` + // Minimum execution time: 4_921_000 picoseconds. + Weight::from_parts(4_921_000, 0) + .saturating_add(Weight::from_parts(0, 3517)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: MessageQueue Pages (r:1 w:1) + /// Proof: MessageQueue Pages (max_values: None, max_size: Some(65585), added: 68060, mode: MaxEncodedLen) + fn service_page_base_completion() -> Weight { + // Proof Size summary in bytes: + // Measured: `72` + // Estimated: `69050` + // Minimum execution time: 6_879_000 picoseconds. + Weight::from_parts(6_879_000, 0) + .saturating_add(Weight::from_parts(0, 69050)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: MessageQueue Pages (r:1 w:1) + /// Proof: MessageQueue Pages (max_values: None, max_size: Some(65585), added: 68060, mode: MaxEncodedLen) + fn service_page_base_no_completion() -> Weight { + // Proof Size summary in bytes: + // Measured: `72` + // Estimated: `69050` + // Minimum execution time: 7_564_000 picoseconds. + Weight::from_parts(7_564_000, 0) + .saturating_add(Weight::from_parts(0, 69050)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + fn service_page_item() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 59_963_000 picoseconds. + Weight::from_parts(59_963_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + } + /// Storage: MessageQueue ServiceHead (r:1 w:1) + /// Proof: MessageQueue ServiceHead (max_values: Some(1), max_size: Some(5), added: 500, mode: MaxEncodedLen) + /// Storage: MessageQueue BookStateFor (r:1 w:0) + /// Proof: MessageQueue BookStateFor (max_values: None, max_size: Some(52), added: 2527, mode: MaxEncodedLen) + fn bump_service_head() -> Weight { + // Proof Size summary in bytes: + // Measured: `99` + // Estimated: `5007` + // Minimum execution time: 7_200_000 picoseconds. + Weight::from_parts(7_200_000, 0) + .saturating_add(Weight::from_parts(0, 5007)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: MessageQueue BookStateFor (r:1 w:1) + /// Proof: MessageQueue BookStateFor (max_values: None, max_size: Some(52), added: 2527, mode: MaxEncodedLen) + /// Storage: MessageQueue Pages (r:1 w:1) + /// Proof: MessageQueue Pages (max_values: None, max_size: Some(65585), added: 68060, mode: MaxEncodedLen) + fn reap_page() -> Weight { + // Proof Size summary in bytes: + // Measured: `65667` + // Estimated: `72567` + // Minimum execution time: 41_366_000 picoseconds. + Weight::from_parts(41_366_000, 0) + .saturating_add(Weight::from_parts(0, 72567)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(2)) + } + /// Storage: MessageQueue BookStateFor (r:1 w:1) + /// Proof: MessageQueue BookStateFor (max_values: None, max_size: Some(52), added: 2527, mode: MaxEncodedLen) + /// Storage: MessageQueue Pages (r:1 w:1) + /// Proof: MessageQueue Pages (max_values: None, max_size: Some(65585), added: 68060, mode: MaxEncodedLen) + fn execute_overweight_page_removed() -> Weight { + // Proof Size summary in bytes: + // Measured: `65667` + // Estimated: `72567` + // Minimum execution time: 60_538_000 picoseconds. + Weight::from_parts(60_538_000, 0) + .saturating_add(Weight::from_parts(0, 72567)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(2)) + } + /// Storage: MessageQueue BookStateFor (r:1 w:1) + /// Proof: MessageQueue BookStateFor (max_values: None, max_size: Some(52), added: 2527, mode: MaxEncodedLen) + /// Storage: MessageQueue Pages (r:1 w:1) + /// Proof: MessageQueue Pages (max_values: None, max_size: Some(65585), added: 68060, mode: MaxEncodedLen) + fn execute_overweight_page_updated() -> Weight { + // Proof Size summary in bytes: + // Measured: `65667` + // Estimated: `72567` + // Minimum execution time: 73_665_000 picoseconds. + Weight::from_parts(73_665_000, 0) + .saturating_add(Weight::from_parts(0, 72567)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(2)) + } +} diff --git a/system-parachains/encointer/src/xcm_config.rs b/system-parachains/encointer/src/xcm_config.rs index 8cb8dd0785..2d9c069773 100644 --- a/system-parachains/encointer/src/xcm_config.rs +++ b/system-parachains/encointer/src/xcm_config.rs @@ -34,12 +34,12 @@ use sp_core::ConstU32; use xcm::latest::prelude::*; use xcm_builder::{ AccountId32Aliases, AllowKnownQueryResponses, AllowSubscriptionsFrom, - AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, CurrencyAdapter, - DenyReserveTransferToRelayChain, DenyThenTry, DescribeTerminus, EnsureXcmOrigin, - FixedWeightBounds, FrameTransactionalProcessor, HashedDescription, IsConcrete, NativeAsset, - ParentAsSuperuser, ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative, - SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, - SovereignSignedViaLocation, TakeWeightCredit, TrailingSetTopicAsId, UsingComponents, + AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, DenyReserveTransferToRelayChain, + DenyThenTry, DescribeTerminus, EnsureXcmOrigin, FixedWeightBounds, FrameTransactionalProcessor, + FungibleAdapter, HashedDescription, IsConcrete, NativeAsset, ParentAsSuperuser, ParentIsPreset, + RelayChainAsNative, SiblingParachainAsNative, SiblingParachainConvertsVia, + SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, + TrailingSetTopicAsId, UsingComponents, }; use xcm_executor::XcmExecutor; @@ -68,7 +68,7 @@ pub type LocationToAccountId = ( ); /// Means for transacting the native currency on this chain. -pub type CurrencyTransactor = CurrencyAdapter< +pub type FungibleTransactor = FungibleAdapter< // Use this currency: Balances, // Use this currency when it is a fungible asset matching the given location or name: @@ -148,17 +148,21 @@ impl frame_support::traits::Contains for SafeCallFilter { parameter_types! { pub const MaxAssetsIntoHolding: u32 = 64; - pub const RelayLocation: MultiLocation = MultiLocation::parent(); + pub const KsmRelayLocation: MultiLocation = MultiLocation::parent(); } + +/// Cases where a remote origin is accepted as trusted Teleporter for a given asset: +/// - KSM with the parent Relay Chain and sibling parachains. +pub type TrustedTeleporters = ConcreteAssetFromSystem; + pub struct XcmConfig; impl xcm_executor::Config for XcmConfig { type RuntimeCall = RuntimeCall; type XcmSender = XcmRouter; - type AssetTransactor = CurrencyTransactor; + type AssetTransactor = FungibleTransactor; type OriginConverter = XcmOriginToTransactDispatchOrigin; type IsReserve = NativeAsset; - /// Only allow teleportation of KSM with other system locations. - type IsTeleporter = ConcreteAssetFromSystem; + type IsTeleporter = TrustedTeleporters; type UniversalLocation = UniversalLocation; type Barrier = Barrier; type Weigher = FixedWeightBounds; @@ -224,8 +228,6 @@ impl pallet_xcm::Config for Runtime { type SovereignAccountOf = LocationToAccountId; type MaxLockers = ConstU32<8>; type WeightInfo = pallet_xcm::TestWeightInfo; - #[cfg(feature = "runtime-benchmarks")] - type ReachableDest = ReachableDest; type AdminOrigin = EnsureRoot; type UniversalLocation = UniversalLocation; type MaxRemoteLockConsumers = ConstU32<0>; diff --git a/system-parachains/gluttons/glutton-kusama/Cargo.toml b/system-parachains/gluttons/glutton-kusama/Cargo.toml index 771d80d7e8..2adfb25a53 100644 --- a/system-parachains/gluttons/glutton-kusama/Cargo.toml +++ b/system-parachains/gluttons/glutton-kusama/Cargo.toml @@ -13,44 +13,44 @@ codec = { package = "parity-scale-codec", version = "3.6.9", default-features = scale-info = { version = "2.10.0", default-features = false, features = ["derive"] } # Substrate -frame-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-executive = { default-features = false, version = "27.0.0" } -frame-support = { default-features = false, version = "27.0.0" } -frame-system = { default-features = false, version = "27.0.0" } -frame-system-rpc-runtime-api = { default-features = false, version = "25.0.0" } -frame-system-benchmarking = { default-features = false, optional = true, version = "27.0.0" } -frame-try-runtime = { default-features = false, optional = true, version = "0.33.0" } -pallet-glutton = { default-features = false, optional = true, version = "13.0.0" } -pallet-message-queue = { default-features = false , version = "30.0.0" } -pallet-sudo = { default-features = false, optional = true, version = "27.0.0" } -sp-api = { default-features = false, version = "25.0.0" } -sp-block-builder = { default-features = false, version = "25.0.0" } -sp-core = { default-features = false, version = "27.0.0" } -sp-genesis-builder = { default-features = false , version = "0.6.0" } -sp-inherents = { default-features = false, version = "25.0.0" } -sp-offchain = { default-features = false, version = "25.0.0" } -sp-runtime = { default-features = false, version = "30.0.1" } -sp-session = { default-features = false, version = "26.0.0" } -sp-std = { default-features = false, version = "13.0.0" } -sp-storage = { default-features = false, version = "18.0.0" } -sp-transaction-pool = { default-features = false, version = "25.0.0" } -sp-version = { default-features = false, version = "28.0.0" } +frame-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-executive = { default-features = false, version = "28.0.0" } +frame-support = { default-features = false, version = "28.0.0" } +frame-system = { default-features = false, version = "28.0.0" } +frame-system-rpc-runtime-api = { default-features = false, version = "26.0.0" } +frame-system-benchmarking = { default-features = false, optional = true, version = "28.0.0" } +frame-try-runtime = { default-features = false, optional = true, version = "0.34.0" } +pallet-glutton = { default-features = false, optional = true, version = "14.0.0" } +pallet-message-queue = { default-features = false , version = "31.0.0" } +pallet-sudo = { default-features = false, optional = true, version = "28.0.0" } +sp-api = { default-features = false, version = "26.0.0" } +sp-block-builder = { default-features = false, version = "26.0.0" } +sp-core = { default-features = false, version = "28.0.0" } +sp-genesis-builder = { default-features = false , version = "0.7.0" } +sp-inherents = { default-features = false, version = "26.0.0" } +sp-offchain = { default-features = false, version = "26.0.0" } +sp-runtime = { default-features = false, version = "31.0.1" } +sp-session = { default-features = false, version = "27.0.0" } +sp-std = { default-features = false, version = "14.0.0" } +sp-storage = { default-features = false, version = "19.0.0" } +sp-transaction-pool = { default-features = false, version = "26.0.0" } +sp-version = { default-features = false, version = "29.0.0" } # Polkadot -xcm = { package = "staging-xcm", default-features = false, version = "6.0.0" } -xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "6.0.2" } -xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "6.0.2" } +xcm = { package = "staging-xcm", default-features = false, version = "7.0.0" } +xcm-builder = { package = "staging-xcm-builder", default-features = false, version = "7.0.3" } +xcm-executor = { package = "staging-xcm-executor", default-features = false, version = "7.0.3" } # Cumulus -cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.6.0" } -cumulus-pallet-xcm = { default-features = false , version = "0.6.0" } -cumulus-primitives-core = { default-features = false , version = "0.6.0" } -parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.6.0" } -parachains-common = { default-features = false , version = "6.0.0" } +cumulus-pallet-parachain-system = { default-features = false, features = ["parameterized-consensus-hook",] , version = "0.7.0" } +cumulus-pallet-xcm = { default-features = false , version = "0.7.0" } +cumulus-primitives-core = { default-features = false , version = "0.7.0" } +parachain-info = { package = "staging-parachain-info", default-features = false , version = "0.7.0" } +parachains-common = { default-features = false , version = "7.0.0" } system-parachains-constants = { path = "../../constants", default-features = false } [build-dependencies] -substrate-wasm-builder = { version = "16.0.0" } +substrate-wasm-builder = { version = "17.0.0" } [features] default = [ "std" ] diff --git a/system-parachains/gluttons/glutton-kusama/src/lib.rs b/system-parachains/gluttons/glutton-kusama/src/lib.rs index 8bdd8e08b1..6fa8bfe0b5 100644 --- a/system-parachains/gluttons/glutton-kusama/src/lib.rs +++ b/system-parachains/gluttons/glutton-kusama/src/lib.rs @@ -149,6 +149,7 @@ impl frame_system::Config for Runtime { type Hashing = BlakeTwo256; type Block = Block; type RuntimeEvent = RuntimeEvent; + type RuntimeTask = RuntimeTask; type RuntimeOrigin = RuntimeOrigin; type BlockHashCount = BlockHashCount; type Version = Version; @@ -158,7 +159,7 @@ impl frame_system::Config for Runtime { type OnKilledAccount = (); type DbWeight = (); type BaseCallFilter = frame_support::traits::Everything; - type SystemWeightInfo = (); + type SystemWeightInfo = weights::frame_system::WeightInfo; type BlockWeights = RuntimeBlockWeights; type BlockLength = RuntimeBlockLength; type SS58Prefix = SS58Prefix; diff --git a/system-parachains/gluttons/glutton-kusama/src/weights/frame_system.rs b/system-parachains/gluttons/glutton-kusama/src/weights/frame_system.rs index 36c4abc400..4f81cc322d 100644 --- a/system-parachains/gluttons/glutton-kusama/src/weights/frame_system.rs +++ b/system-parachains/gluttons/glutton-kusama/src/weights/frame_system.rs @@ -152,4 +152,31 @@ impl frame_system::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(p.into()))) .saturating_add(Weight::from_parts(0, 70).saturating_mul(p.into())) } + /// Storage: `System::AuthorizedUpgrade` (r:0 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + fn authorize_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 33_027_000 picoseconds. + Weight::from_parts(33_027_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `System::AuthorizedUpgrade` (r:1 w:1) + /// Proof: `System::AuthorizedUpgrade` (`max_values`: Some(1), `max_size`: Some(33), added: 528, mode: `MaxEncodedLen`) + /// Storage: `System::Digest` (r:1 w:1) + /// Proof: `System::Digest` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + /// Proof: UNKNOWN KEY `0x3a636f6465` (r:0 w:1) + fn apply_authorized_upgrade() -> Weight { + // Proof Size summary in bytes: + // Measured: `22` + // Estimated: `1518` + // Minimum execution time: 118_101_992_000 picoseconds. + Weight::from_parts(118_101_992_000, 0) + .saturating_add(Weight::from_parts(0, 1518)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } } diff --git a/system-parachains/gluttons/glutton-kusama/src/weights/mod.rs b/system-parachains/gluttons/glutton-kusama/src/weights/mod.rs index 01562897d3..e080eba04f 100644 --- a/system-parachains/gluttons/glutton-kusama/src/weights/mod.rs +++ b/system-parachains/gluttons/glutton-kusama/src/weights/mod.rs @@ -15,5 +15,6 @@ // along with Cumulus. If not, see . pub mod cumulus_pallet_parachain_system; +pub mod frame_system; pub mod pallet_glutton; pub mod pallet_message_queue;