From 8171890f9b4f5bf3448a6651a4165893f1eec412 Mon Sep 17 00:00:00 2001 From: Branislav Kontur Date: Fri, 21 Jul 2023 23:53:51 +0200 Subject: [PATCH] Asset conversion nits (#2860) * [asset-conv] Unused Balances type * [asset-conv] native asset change * Dedicated `AssetBalance` type for `pallet_assets` instances * Improved local vs foreign asset handling + test for not allowing pool_assets in pool * Removed `into_multiasset_id` * Fix * Refactor * Fixed create_pool for benchmark with LocalAndForeignAssets (finally found it) * ".git/.scripts/commands/fmt/fmt.sh" * Revert * fmt * Migrates pools with `MultiLocation { parents: 0, interior: Here }` to `MultiLocation { parents: 1, interior: Here }` * Allow `set_storage` for `AllowMultiAssetPools` / `LiquidityWithdrawalFee` * Benchmarks work * Removed comment + more defensive migration * `T::Currency::transfer` -> `Balances::transfer_all` in migration * Change pool_id in migration * Update parachains/runtimes/assets/asset-hub-westend/src/lib.rs * Bump substrate (manually) * Bump polkadot * Fixes from polkadot + clippy * Fix for xcm-emulator tests (thank you Nacho) --------- Co-authored-by: command-bot <> Co-authored-by: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com> --- cumulus/Cargo.lock | 529 +++++++++--------- .../src/tests/reserve_transfer.rs | 2 +- .../src/tests/reserve_transfer.rs | 2 +- .../assets/asset-hub-westend/Cargo.toml | 1 + .../src/tests/reserve_transfer.rs | 2 +- .../asset-hub-westend/src/tests/swap.rs | 42 +- .../emulated/common/src/lib.rs | 1 + .../assets/asset-hub-kusama/src/lib.rs | 3 +- .../assets/asset-hub-polkadot/src/lib.rs | 2 + .../assets/asset-hub-westend/src/lib.rs | 150 ++++- .../asset-hub-westend/src/weights/mod.rs | 1 + .../src/weights/pallet_asset_conversion.rs | 157 ++++++ .../asset-hub-westend/src/xcm_config.rs | 45 +- .../assets/asset-hub-westend/tests/tests.rs | 44 +- .../runtimes/assets/common/Cargo.toml | 1 + .../assets/common/src/fungible_conversion.rs | 45 ++ .../common/src/local_and_foreign_assets.rs | 340 ++++++----- .../assets/test-utils/src/test_cases.rs | 3 + .../bridge-hubs/bridge-hub-kusama/src/lib.rs | 2 + .../bridge-hub-polkadot/src/lib.rs | 2 + .../bridge-hubs/bridge-hub-rococo/src/lib.rs | 2 + .../bridge-hubs/test-utils/src/test_cases.rs | 73 +-- .../parachains/runtimes/test-utils/src/lib.rs | 2 + .../runtimes/test-utils/src/test_cases.rs | 91 +++ cumulus/xcm/xcm-emulator/src/lib.rs | 4 +- 25 files changed, 1060 insertions(+), 486 deletions(-) create mode 100644 cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion.rs create mode 100644 cumulus/parachains/runtimes/test-utils/src/test_cases.rs diff --git a/cumulus/Cargo.lock b/cumulus/Cargo.lock index 521183e609..bb8fdf1c72 100644 --- a/cumulus/Cargo.lock +++ b/cumulus/Cargo.lock @@ -603,6 +603,7 @@ dependencies = [ name = "asset-hub-westend-integration-tests" version = "1.0.0" dependencies = [ + "assert_matches", "asset-hub-westend-runtime", "frame-support", "frame-system", @@ -738,6 +739,7 @@ version = "0.1.0" dependencies = [ "cumulus-primitives-core", "frame-support", + "impl-trait-for-tuples", "log", "pallet-asset-conversion", "pallet-asset-tx-payment", @@ -914,7 +916,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "hash-db", "log", @@ -4273,7 +4275,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", ] @@ -4296,7 +4298,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-support-procedural", @@ -4321,7 +4323,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "Inflector", "array-bytes", @@ -4369,7 +4371,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -4380,7 +4382,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -4397,7 +4399,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-system", @@ -4426,7 +4428,7 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-recursion", "futures", @@ -4447,7 +4449,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "aquamarine", "bitflags 1.3.2", @@ -4482,7 +4484,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "Inflector", "cfg-expr", @@ -4500,7 +4502,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -4512,7 +4514,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "proc-macro2", "quote", @@ -4522,7 +4524,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "cfg-if", "frame-support", @@ -4541,7 +4543,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -4556,7 +4558,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "sp-api", @@ -4565,7 +4567,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "parity-scale-codec", @@ -5751,7 +5753,7 @@ checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kusama-runtime" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bitvec", "frame-benchmarking", @@ -5851,7 +5853,7 @@ dependencies = [ [[package]] name = "kusama-runtime-constants" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "frame-support", "polkadot-primitives", @@ -6796,7 +6798,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "futures", "log", @@ -6815,7 +6817,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "anyhow", "jsonrpsee", @@ -7306,7 +7308,7 @@ dependencies = [ [[package]] name = "pallet-alliance" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "frame-benchmarking", @@ -7327,7 +7329,7 @@ dependencies = [ [[package]] name = "pallet-asset-conversion" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7345,7 +7347,7 @@ dependencies = [ [[package]] name = "pallet-asset-conversion-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-system", @@ -7360,7 +7362,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7378,7 +7380,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7393,7 +7395,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-system", @@ -7409,7 +7411,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-system", @@ -7425,7 +7427,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-system", @@ -7439,7 +7441,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7463,7 +7465,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7483,7 +7485,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7498,7 +7500,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-system", @@ -7517,7 +7519,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -7541,7 +7543,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7647,7 +7649,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7691,7 +7693,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7708,7 +7710,7 @@ dependencies = [ [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "bitflags 1.3.2", "environmental", @@ -7737,7 +7739,7 @@ dependencies = [ [[package]] name = "pallet-contracts-primitives" version = "24.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "bitflags 1.3.2", "parity-scale-codec", @@ -7750,7 +7752,7 @@ dependencies = [ [[package]] name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "proc-macro2", "quote", @@ -7760,7 +7762,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "assert_matches", "frame-benchmarking", @@ -7777,7 +7779,7 @@ dependencies = [ [[package]] name = "pallet-core-fellowship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7795,7 +7797,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7813,7 +7815,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7836,7 +7838,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7849,7 +7851,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7868,7 +7870,7 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "docify", "frame-benchmarking", @@ -7887,7 +7889,7 @@ dependencies = [ [[package]] name = "pallet-glutton" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "blake2", "frame-benchmarking", @@ -7905,7 +7907,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7928,7 +7930,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "enumflags2", "frame-benchmarking", @@ -7944,7 +7946,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7964,7 +7966,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -7981,7 +7983,7 @@ dependencies = [ [[package]] name = "pallet-insecure-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-system", @@ -7995,7 +7997,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8012,7 +8014,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8031,7 +8033,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8048,7 +8050,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8064,7 +8066,7 @@ dependencies = [ [[package]] name = "pallet-nft-fractionalization" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8081,7 +8083,7 @@ dependencies = [ [[package]] name = "pallet-nfts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "enumflags2", "frame-benchmarking", @@ -8099,7 +8101,7 @@ dependencies = [ [[package]] name = "pallet-nfts-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "pallet-nfts", @@ -8110,7 +8112,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8126,7 +8128,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-system", @@ -8143,7 +8145,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8163,7 +8165,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -8174,7 +8176,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-system", @@ -8191,7 +8193,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8230,7 +8232,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8247,7 +8249,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8262,7 +8264,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8280,7 +8282,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8295,7 +8297,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "assert_matches", "frame-benchmarking", @@ -8314,7 +8316,7 @@ dependencies = [ [[package]] name = "pallet-salary" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8332,7 +8334,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8349,7 +8351,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-system", @@ -8370,7 +8372,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8386,7 +8388,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8405,7 +8407,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8428,7 +8430,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -8439,7 +8441,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "log", "sp-arithmetic", @@ -8448,7 +8450,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "sp-api", @@ -8457,7 +8459,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8474,7 +8476,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8489,7 +8491,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8507,7 +8509,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8526,7 +8528,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-support", "frame-system", @@ -8542,7 +8544,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -8558,7 +8560,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -8570,7 +8572,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8587,7 +8589,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8602,7 +8604,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8618,7 +8620,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8633,7 +8635,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-benchmarking", "frame-support", @@ -8648,7 +8650,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bounded-collections", "frame-benchmarking", @@ -8669,7 +8671,7 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "frame-benchmarking", "frame-support", @@ -9286,7 +9288,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "futures", "futures-timer", @@ -9304,7 +9306,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "futures", "futures-timer", @@ -9319,7 +9321,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "derive_more", "fatality", @@ -9342,7 +9344,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "fatality", "futures", @@ -9363,7 +9365,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "clap", "frame-benchmarking-cli", @@ -9392,7 +9394,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "always-assert", "bitvec", @@ -9414,7 +9416,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "parity-scale-codec", "scale-info", @@ -9426,7 +9428,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "derive_more", "fatality", @@ -9451,7 +9453,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -9465,7 +9467,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "futures", "futures-timer", @@ -9485,7 +9487,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "always-assert", "async-trait", @@ -9508,7 +9510,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "futures", "parity-scale-codec", @@ -9526,7 +9528,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bitvec", "derive_more", @@ -9555,7 +9557,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bitvec", "futures", @@ -9577,7 +9579,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bitvec", "fatality", @@ -9596,7 +9598,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "futures", "polkadot-node-subsystem", @@ -9611,7 +9613,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "async-trait", "futures", @@ -9631,7 +9633,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "futures", "polkadot-node-metrics", @@ -9646,7 +9648,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "futures", "futures-timer", @@ -9663,7 +9665,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "fatality", "futures", @@ -9682,7 +9684,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "async-trait", "futures", @@ -9699,7 +9701,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bitvec", "fatality", @@ -9717,7 +9719,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "always-assert", "futures", @@ -9748,7 +9750,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "futures", "polkadot-node-primitives", @@ -9764,7 +9766,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-common" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "cpu-time", "futures", @@ -9788,7 +9790,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-execute-worker" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "cpu-time", "futures", @@ -9808,7 +9810,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-prepare-worker" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "futures", "libc", @@ -9831,7 +9833,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "futures", "lru 0.9.0", @@ -9846,7 +9848,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "lazy_static", "log", @@ -9864,7 +9866,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bs58", "futures", @@ -9883,7 +9885,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "async-channel", "async-trait", @@ -9906,7 +9908,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bounded-vec", "futures", @@ -9928,7 +9930,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -9938,7 +9940,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "async-trait", "futures", @@ -9956,7 +9958,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "async-trait", "derive_more", @@ -9980,7 +9982,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "async-trait", "derive_more", @@ -10013,7 +10015,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "async-trait", "futures", @@ -10036,7 +10038,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bounded-collections", "derive_more", @@ -10135,7 +10137,7 @@ dependencies = [ [[package]] name = "polkadot-performance-test" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "env_logger 0.9.0", "kusama-runtime", @@ -10153,7 +10155,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bitvec", "hex-literal 0.4.1", @@ -10179,7 +10181,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "jsonrpsee", "mmr-rpc", @@ -10211,7 +10213,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bitvec", "frame-benchmarking", @@ -10268,6 +10270,7 @@ dependencies = [ "pallet-vesting", "pallet-whitelist", "pallet-xcm", + "pallet-xcm-benchmarks", "parity-scale-codec", "polkadot-primitives", "polkadot-runtime-common", @@ -10306,7 +10309,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bitvec", "frame-benchmarking", @@ -10352,7 +10355,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-constants" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "frame-support", "polkadot-primitives", @@ -10366,7 +10369,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bs58", "parity-scale-codec", @@ -10378,7 +10381,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bitflags 1.3.2", "bitvec", @@ -10423,7 +10426,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "async-trait", "frame-benchmarking", @@ -10541,7 +10544,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "arrayvec 0.5.2", "fatality", @@ -10563,7 +10566,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -10573,7 +10576,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "frame-benchmarking", "parity-scale-codec", @@ -10601,7 +10604,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bitvec", "frame-election-provider-support", @@ -10662,7 +10665,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "frame-system", "futures", @@ -11453,7 +11456,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "binary-merkle-tree", "frame-benchmarking", @@ -11540,7 +11543,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "frame-support", "polkadot-primitives", @@ -11822,7 +11825,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "log", "sp-core", @@ -11833,7 +11836,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "futures", @@ -11861,7 +11864,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "futures", "futures-timer", @@ -11884,7 +11887,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -11899,7 +11902,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -11918,7 +11921,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11929,7 +11932,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "chrono", @@ -11968,7 +11971,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "fnv", "futures", @@ -11994,7 +11997,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "hash-db", "kvdb", @@ -12020,7 +12023,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "futures", @@ -12045,7 +12048,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "futures", @@ -12074,7 +12077,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "fork-tree", @@ -12110,7 +12113,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "futures", "jsonrpsee", @@ -12132,7 +12135,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "async-channel", @@ -12166,7 +12169,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "futures", "jsonrpsee", @@ -12185,7 +12188,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "fork-tree", "parity-scale-codec", @@ -12198,7 +12201,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "ahash 0.8.2", "array-bytes", @@ -12239,7 +12242,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "finality-grandpa", "futures", @@ -12259,7 +12262,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "futures", @@ -12282,7 +12285,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", @@ -12304,7 +12307,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -12316,7 +12319,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "anyhow", "cfg-if", @@ -12333,7 +12336,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "ansi_term", "futures", @@ -12349,7 +12352,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -12363,7 +12366,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "async-channel", @@ -12404,7 +12407,7 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-channel", "cid", @@ -12424,7 +12427,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "bitflags 1.3.2", @@ -12441,7 +12444,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "ahash 0.8.2", "futures", @@ -12459,7 +12462,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "async-channel", @@ -12480,7 +12483,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "async-channel", @@ -12514,7 +12517,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "futures", @@ -12532,7 +12535,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "bytes", @@ -12566,7 +12569,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -12575,7 +12578,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "futures", "jsonrpsee", @@ -12606,7 +12609,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -12625,7 +12628,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "http", "jsonrpsee", @@ -12640,7 +12643,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "futures", @@ -12666,7 +12669,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "directories", @@ -12730,7 +12733,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "log", "parity-scale-codec", @@ -12741,7 +12744,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "clap", "fs4", @@ -12755,7 +12758,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -12774,7 +12777,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "futures", "libc", @@ -12793,7 +12796,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "chrono", "futures", @@ -12812,7 +12815,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "ansi_term", "atty", @@ -12841,7 +12844,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -12852,7 +12855,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "futures", @@ -12878,7 +12881,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "futures", @@ -12894,7 +12897,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-channel", "futures", @@ -13375,7 +13378,7 @@ checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" [[package]] name = "slot-range-helper" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "enumn", "parity-scale-codec", @@ -13452,7 +13455,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "hash-db", "log", @@ -13473,7 +13476,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "Inflector", "blake2", @@ -13487,7 +13490,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "23.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -13500,7 +13503,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "16.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "integer-sqrt", "num-traits", @@ -13514,7 +13517,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -13527,7 +13530,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "sp-api", "sp-inherents", @@ -13538,7 +13541,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "futures", "log", @@ -13556,7 +13559,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "futures", @@ -13571,7 +13574,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "parity-scale-codec", @@ -13588,7 +13591,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "parity-scale-codec", @@ -13607,7 +13610,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "lazy_static", "parity-scale-codec", @@ -13626,7 +13629,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "finality-grandpa", "log", @@ -13644,7 +13647,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -13656,7 +13659,7 @@ dependencies = [ [[package]] name = "sp-core" version = "21.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "bitflags 1.3.2", @@ -13701,7 +13704,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "9.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "blake2b_simd", "byteorder", @@ -13714,7 +13717,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "9.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "quote", "sp-core-hashing", @@ -13724,7 +13727,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -13733,7 +13736,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "proc-macro2", "quote", @@ -13743,7 +13746,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.19.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "environmental", "parity-scale-codec", @@ -13754,7 +13757,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -13768,7 +13771,7 @@ dependencies = [ [[package]] name = "sp-io" version = "23.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "bytes", "ed25519", @@ -13793,7 +13796,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "24.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "lazy_static", "sp-core", @@ -13804,7 +13807,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.27.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", @@ -13816,7 +13819,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "thiserror", "zstd 0.12.3+zstd.1.5.2", @@ -13825,7 +13828,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -13836,7 +13839,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -13854,7 +13857,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -13868,7 +13871,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "sp-api", "sp-core", @@ -13878,7 +13881,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "backtrace", "lazy_static", @@ -13888,7 +13891,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "rustc-hash", "serde", @@ -13898,7 +13901,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "24.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "either", "hash256-std-hasher", @@ -13920,7 +13923,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "17.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -13938,7 +13941,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "11.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "Inflector", "proc-macro-crate", @@ -13950,7 +13953,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -13965,7 +13968,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -13979,7 +13982,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.28.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "hash-db", "log", @@ -14000,7 +14003,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "aes-gcm 0.10.2", "curve25519-dalek 3.2.0", @@ -14024,12 +14027,12 @@ dependencies = [ [[package]] name = "sp-std" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" [[package]] name = "sp-storage" version = "13.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "impl-serde", "parity-scale-codec", @@ -14042,7 +14045,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "parity-scale-codec", @@ -14055,7 +14058,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "10.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "sp-std", @@ -14067,7 +14070,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "sp-api", "sp-runtime", @@ -14076,7 +14079,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "parity-scale-codec", @@ -14091,7 +14094,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "22.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "ahash 0.8.2", "hash-db", @@ -14114,7 +14117,7 @@ dependencies = [ [[package]] name = "sp-version" version = "22.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "impl-serde", "parity-scale-codec", @@ -14131,7 +14134,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -14142,7 +14145,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "14.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -14155,7 +14158,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "20.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "parity-scale-codec", "scale-info", @@ -14353,12 +14356,12 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -14377,7 +14380,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "hyper", "log", @@ -14389,7 +14392,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "jsonrpsee", @@ -14402,7 +14405,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -14419,7 +14422,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "array-bytes", "async-trait", @@ -14445,7 +14448,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "futures", "substrate-test-utils-derive", @@ -14455,7 +14458,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -14466,7 +14469,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "ansi_term", "build-helper", @@ -14594,7 +14597,7 @@ checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" [[package]] name = "test-runtime-constants" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "frame-support", "polkadot-primitives", @@ -14996,7 +14999,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "coarsetime", "polkadot-node-jaeger", @@ -15008,7 +15011,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "expander 2.0.0", "proc-macro-crate", @@ -15138,7 +15141,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#696d09b3d1da1b2045fe46200df1d9f6d6d9d829" +source = "git+https://github.com/paritytech/substrate?branch=master#e076bdad1fefb5a0e2461acf7e2cab1192f3c9f3" dependencies = [ "async-trait", "clap", @@ -16064,7 +16067,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bitvec", "frame-benchmarking", @@ -16157,7 +16160,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "frame-support", "polkadot-primitives", @@ -16548,7 +16551,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "bounded-collections", "derivative", @@ -16564,7 +16567,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "frame-support", "frame-system", @@ -16618,7 +16621,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "environmental", "frame-benchmarking", @@ -16638,7 +16641,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "0.9.43" -source = "git+https://github.com/paritytech/polkadot?branch=master#a4936f1b7f846558340129a05bbb2a0f6b24f085" +source = "git+https://github.com/paritytech/polkadot?branch=master#e0ed7e862c8c8b6c75eda1731c449543642176ef" dependencies = [ "Inflector", "proc-macro2", diff --git a/cumulus/parachains/integration-tests/emulated/assets/asset-hub-kusama/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/assets/asset-hub-kusama/src/tests/reserve_transfer.rs index e1107ebb56..b1c5cbbd3b 100644 --- a/cumulus/parachains/integration-tests/emulated/assets/asset-hub-kusama/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/assets/asset-hub-kusama/src/tests/reserve_transfer.rs @@ -50,7 +50,7 @@ fn reserve_transfer_native_asset_from_relay_to_assets() { Kusama, vec![ RuntimeEvent::XcmPallet(pallet_xcm::Event::Attempted { outcome: Outcome::Complete(weight) }) => { - weight: weight_within_threshold((REF_TIME_THRESHOLD, PROOF_SIZE_THRESHOLD), Weight::from_parts(754_244_000, 0), *weight), + weight: weight_within_threshold((REF_TIME_THRESHOLD, PROOF_SIZE_THRESHOLD), Weight::from_parts(630_092_000, 6196), *weight), }, ] ); diff --git a/cumulus/parachains/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/reserve_transfer.rs index a880bc43b2..ffe9bac86d 100644 --- a/cumulus/parachains/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/assets/asset-hub-polkadot/src/tests/reserve_transfer.rs @@ -50,7 +50,7 @@ fn reserve_transfer_native_asset_from_relay_to_assets() { Polkadot, vec![ RuntimeEvent::XcmPallet(pallet_xcm::Event::Attempted { outcome: Outcome::Complete(weight) }) => { - weight: weight_within_threshold((REF_TIME_THRESHOLD, PROOF_SIZE_THRESHOLD), Weight::from_parts(2_000_000_000, 0), *weight), + weight: weight_within_threshold((REF_TIME_THRESHOLD, PROOF_SIZE_THRESHOLD), Weight::from_parts(686_043_000, 6196), *weight), }, ] ); diff --git a/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/Cargo.toml index 8d42392b4b..8e9b1dd660 100644 --- a/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/Cargo.toml +++ b/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/Cargo.toml @@ -7,6 +7,7 @@ description = "Asset Hub Westend runtime integration tests with xcm-emulator" [dependencies] codec = { package = "parity-scale-codec", version = "3.4.0", default-features = false } +assert_matches = "1.5.0" # Substrate sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/src/tests/reserve_transfer.rs index 8a0191a6fe..7ef76efdfe 100644 --- a/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/src/tests/reserve_transfer.rs +++ b/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/src/tests/reserve_transfer.rs @@ -50,7 +50,7 @@ fn reserve_transfer_native_asset_from_relay_to_assets() { Westend, vec![ RuntimeEvent::XcmPallet(pallet_xcm::Event::Attempted { outcome: Outcome::Complete(weight) }) => { - weight: weight_within_threshold((REF_TIME_THRESHOLD, PROOF_SIZE_THRESHOLD), Weight::from_parts(731_495_000, 0), *weight), + weight: weight_within_threshold((REF_TIME_THRESHOLD, PROOF_SIZE_THRESHOLD), Weight::from_parts(629_384_000, 6196), *weight), }, ] ); diff --git a/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/src/tests/swap.rs b/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/src/tests/swap.rs index 27d15b689b..fabdb9349e 100644 --- a/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/src/tests/swap.rs +++ b/cumulus/parachains/integration-tests/emulated/assets/asset-hub-westend/src/tests/swap.rs @@ -1,12 +1,13 @@ use crate::*; use frame_support::{instances::Instance2, BoundedVec}; +use sp_runtime::{DispatchError, ModuleError}; use xcm_emulator::Parachain; #[test] fn swap_locally_on_chain_using_local_assets() { const ASSET_ID: u32 = 1; - let asset_native = Box::new(MultiLocation { parents: 0, interior: Here }); + let asset_native = Box::new(asset_hub_westend_runtime::xcm_config::WestendLocation::get()); let asset_one = Box::new(MultiLocation { parents: 0, interior: X2(PalletInstance(50), GeneralIndex(ASSET_ID.into())), @@ -99,7 +100,7 @@ fn swap_locally_on_chain_using_foreign_assets() { use frame_support::weights::WeightToFee; const ASSET_ID: u32 = 1; - let asset_native = Box::new(MultiLocation { parents: 0, interior: Here }); + let asset_native = Box::new(asset_hub_westend_runtime::xcm_config::WestendLocation::get()); let foreign_asset1_at_asset_hub_westend = Box::new(MultiLocation { parents: 1, @@ -305,3 +306,40 @@ fn swap_locally_on_chain_using_foreign_assets() { )); }); } + +#[test] +fn cannot_create_pool_from_pool_assets() { + const ASSET_ID: u32 = 1; + + let asset_native = Box::new(asset_hub_westend_runtime::xcm_config::WestendLocation::get()); + let mut asset_one = asset_hub_westend_runtime::xcm_config::PoolAssetsPalletLocation::get(); + asset_one.append_with(GeneralIndex(ASSET_ID.into())).expect("pool assets"); + + AssetHubWestend::execute_with(|| { + let pool_owner_account_id = asset_hub_westend_runtime::AssetConversionOrigin::get(); + + assert_ok!(::PoolAssets::create( + ::RuntimeOrigin::signed(pool_owner_account_id.clone()), + ASSET_ID.into(), + pool_owner_account_id.clone().into(), + 1000, + )); + assert!(::PoolAssets::asset_exists(ASSET_ID)); + + assert_ok!(::PoolAssets::mint( + ::RuntimeOrigin::signed(pool_owner_account_id), + ASSET_ID.into(), + AssetHubWestendSender::get().into(), + 3_000_000_000_000, + )); + + assert_matches::assert_matches!( + ::AssetConversion::create_pool( + ::RuntimeOrigin::signed(AssetHubWestendSender::get()), + asset_native.clone(), + Box::new(asset_one), + ), + Err(DispatchError::Module(ModuleError{index: _, error: _, message})) => assert_eq!(message, Some("UnsupportedAsset")) + ); + }); +} diff --git a/cumulus/parachains/integration-tests/emulated/common/src/lib.rs b/cumulus/parachains/integration-tests/emulated/common/src/lib.rs index d88f1ddd3e..23b05a54c7 100644 --- a/cumulus/parachains/integration-tests/emulated/common/src/lib.rs +++ b/cumulus/parachains/integration-tests/emulated/common/src/lib.rs @@ -289,6 +289,7 @@ decl_test_parachains! { PolkadotXcm: asset_hub_westend_runtime::PolkadotXcm, Assets: asset_hub_westend_runtime::Assets, ForeignAssets: asset_hub_westend_runtime::ForeignAssets, + PoolAssets: asset_hub_westend_runtime::PoolAssets, AssetConversion: asset_hub_westend_runtime::AssetConversion, } }, diff --git a/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs index e17ea94686..08babe35e3 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs @@ -1139,7 +1139,7 @@ impl_runtime_apis! { MultiAsset { fun: Fungible(UNITS), id: Concrete(KsmLocation::get()) }, )); pub const CheckedAccount: Option<(AccountId, xcm_builder::MintLocation)> = None; - + pub const TrustedReserve: Option<(MultiLocation, MultiAsset)> = None; } impl pallet_xcm_benchmarks::fungible::Config for Runtime { @@ -1147,6 +1147,7 @@ impl_runtime_apis! { type CheckedAccount = CheckedAccount; type TrustedTeleporter = TrustedTeleporter; + type TrustedReserve = TrustedReserve; fn get_multi_asset() -> MultiAsset { MultiAsset { diff --git a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs index 4f1e80cdc0..7aee88a23a 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs @@ -1121,6 +1121,7 @@ impl_runtime_apis! { MultiAsset { fun: Fungible(UNITS), id: Concrete(DotLocation::get()) }, )); pub const CheckedAccount: Option<(AccountId, xcm_builder::MintLocation)> = None; + pub const TrustedReserve: Option<(MultiLocation, MultiAsset)> = None; } impl pallet_xcm_benchmarks::fungible::Config for Runtime { @@ -1128,6 +1129,7 @@ impl_runtime_apis! { type CheckedAccount = CheckedAccount; type TrustedTeleporter = TrustedTeleporter; + type TrustedReserve = TrustedReserve; fn get_multi_asset() -> MultiAsset { MultiAsset { diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs index 204179f4a9..eeefaee382 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs @@ -28,8 +28,13 @@ pub mod constants; mod weights; pub mod xcm_config; -use crate::xcm_config::{TrustBackedAssetsPalletLocation, UniversalLocation}; -use assets_common::local_and_foreign_assets::{LocalAndForeignAssets, MultiLocationConverter}; +use crate::xcm_config::{ + LocalAndForeignAssetsMultiLocationMatcher, TrustBackedAssetsPalletLocation, +}; +use assets_common::{ + local_and_foreign_assets::{LocalAndForeignAssets, MultiLocationConverter}, + AssetIdForTrustBackedAssetsConvert, +}; use codec::{Decode, Encode, MaxEncodedLen}; use constants::{currency::*, fee::WeightToFee}; use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; @@ -300,9 +305,13 @@ impl pallet_asset_conversion::Config for Runtime { type Balance = Balance; type HigherPrecisionBalance = sp_core::U256; type Currency = Balances; - type AssetBalance = ::Balance; + type AssetBalance = Balance; type AssetId = MultiLocation; - type Assets = LocalAndForeignAssets; + type Assets = LocalAndForeignAssets< + Assets, + AssetIdForTrustBackedAssetsConvert, + ForeignAssets, + >; type PoolAssets = PoolAssets; type PoolAssetId = u32; type PoolSetupFee = ConstU128<0>; // Asset class deposit fees are sufficient to prevent spam @@ -314,11 +323,12 @@ impl pallet_asset_conversion::Config for Runtime { type MaxSwapPathLength = ConstU32<4>; type MultiAssetId = Box; - type MultiAssetIdConverter = MultiLocationConverter; + type MultiAssetIdConverter = + MultiLocationConverter; type MintMinLiquidity = ConstU128<100>; - type WeightInfo = (); + type WeightInfo = weights::pallet_asset_conversion::WeightInfo; #[cfg(feature = "runtime-benchmarks")] type BenchmarkHelper = @@ -659,7 +669,11 @@ impl pallet_collator_selection::Config for Runtime { impl pallet_asset_conversion_tx_payment::Config for Runtime { type RuntimeEvent = RuntimeEvent; - type Fungibles = LocalAndForeignAssets; + type Fungibles = LocalAndForeignAssets< + Assets, + AssetIdForTrustBackedAssetsConvert, + ForeignAssets, + >; type OnChargeAssetTransaction = AssetConversionAdapter; } @@ -835,6 +849,8 @@ pub type Migrations = ( pallet_nfts::migration::v1::MigrateToV1, // unreleased pallet_collator_selection::migration::v1::MigrateToV1, + // unreleased + migrations::NativeAssetParents0ToParents1Migration, ); /// Executive: handles dispatch to the various modules. @@ -1240,7 +1256,7 @@ impl_runtime_apis! { MultiAsset { fun: Fungible(UNITS), id: Concrete(WestendLocation::get()) }, )); pub const CheckedAccount: Option<(AccountId, xcm_builder::MintLocation)> = None; - + pub const TrustedReserve: Option<(MultiLocation, MultiAsset)> = None; } impl pallet_xcm_benchmarks::fungible::Config for Runtime { @@ -1248,6 +1264,7 @@ impl_runtime_apis! { type CheckedAccount = CheckedAccount; type TrustedTeleporter = TrustedTeleporter; + type TrustedReserve = TrustedReserve; fn get_multi_asset() -> MultiAsset { MultiAsset { @@ -1360,3 +1377,120 @@ cumulus_pallet_parachain_system::register_validate_block! { BlockExecutor = cumulus_pallet_aura_ext::BlockExecutor::, CheckInherents = CheckInherents, } + +pub mod migrations { + use super::*; + use frame_support::{ + pallet_prelude::Get, + traits::{ + fungibles::{Inspect, Mutate}, + tokens::Preservation, + OnRuntimeUpgrade, OriginTrait, + }, + }; + use parachains_common::impls::AccountIdOf; + use sp_runtime::{traits::StaticLookup, Saturating}; + use xcm::latest::prelude::*; + + /// Temporary migration because of bug with native asset, it can be removed once applied on `AssetHubWestend`. + /// Migrates pools with `MultiLocation { parents: 0, interior: Here }` to `MultiLocation { parents: 1, interior: Here }` + pub struct NativeAssetParents0ToParents1Migration(sp_std::marker::PhantomData); + impl< + T: pallet_asset_conversion::Config< + MultiAssetId = Box, + AssetId = MultiLocation, + >, + > OnRuntimeUpgrade for NativeAssetParents0ToParents1Migration + where + ::PoolAssetId: Into, + AccountIdOf: Into<[u8; 32]>, + ::AccountId: + Into<<::RuntimeOrigin as OriginTrait>::AccountId>, + <::Lookup as StaticLookup>::Source: + From<::AccountId>, + sp_runtime::AccountId32: From<::AccountId>, + { + fn on_runtime_upgrade() -> Weight { + let invalid_native_asset = MultiLocation { parents: 0, interior: Here }; + let valid_native_asset = WestendLocation::get(); + + let mut reads: u64 = 1; + let mut writes: u64 = 0; + + // migrate pools with invalid native asset + let pools = pallet_asset_conversion::Pools::::iter().collect::>(); + reads.saturating_accrue(1); + for (old_pool_id, pool_info) in pools { + let old_pool_account = + pallet_asset_conversion::Pallet::::get_pool_account(&old_pool_id); + reads.saturating_accrue(1); + let pool_asset_id = pool_info.lp_token.clone(); + if old_pool_id.0.as_ref() != &invalid_native_asset { + // skip, if ok + continue + } + + // fix new account + let new_pool_id = pallet_asset_conversion::Pallet::::get_pool_id( + Box::new(valid_native_asset), + old_pool_id.1.clone(), + ); + let new_pool_account = + pallet_asset_conversion::Pallet::::get_pool_account(&new_pool_id); + frame_system::Pallet::::inc_providers(&new_pool_account); + reads.saturating_accrue(2); + writes.saturating_accrue(1); + + // move currency + let _ = Balances::transfer_all( + RuntimeOrigin::signed(sp_runtime::AccountId32::from(old_pool_account.clone())), + sp_runtime::AccountId32::from(new_pool_account.clone()).into(), + false, + ); + reads.saturating_accrue(2); + writes.saturating_accrue(2); + + // move LP token + let _ = T::PoolAssets::transfer( + pool_asset_id.clone(), + &old_pool_account, + &new_pool_account, + T::PoolAssets::balance(pool_asset_id.clone(), &old_pool_account), + Preservation::Expendable, + ); + reads.saturating_accrue(1); + writes.saturating_accrue(2); + + // change the ownership of LP token + let _ = pallet_assets::Pallet::::transfer_ownership( + RuntimeOrigin::signed(sp_runtime::AccountId32::from(old_pool_account.clone())), + pool_asset_id.into(), + sp_runtime::AccountId32::from(new_pool_account.clone()).into(), + ); + reads.saturating_accrue(1); + writes.saturating_accrue(2); + + // move LocalOrForeignAssets + let _ = T::Assets::transfer( + *old_pool_id.1.as_ref(), + &old_pool_account, + &new_pool_account, + T::Assets::balance(*old_pool_id.1.as_ref(), &old_pool_account), + Preservation::Expendable, + ); + reads.saturating_accrue(1); + writes.saturating_accrue(2); + + // dec providers for old account + let _ = frame_system::Pallet::::dec_providers(&old_pool_account); + writes.saturating_accrue(1); + + // change pool key + pallet_asset_conversion::Pools::::insert(new_pool_id, pool_info); + pallet_asset_conversion::Pools::::remove(old_pool_id); + } + + T::DbWeight::get().reads_writes(reads, writes) + } + } +} diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/mod.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/mod.rs index fe750e4e1c..955d469063 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/mod.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/mod.rs @@ -2,6 +2,7 @@ pub mod block_weights; pub mod cumulus_pallet_xcmp_queue; pub mod extrinsic_weights; pub mod frame_system; +pub mod pallet_asset_conversion; pub mod pallet_assets_foreign; pub mod pallet_assets_local; pub mod pallet_assets_pool; diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion.rs new file mode 100644 index 0000000000..6b81cfb7ff --- /dev/null +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion.rs @@ -0,0 +1,157 @@ +// 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 . + +//! Autogenerated weights for `pallet_asset_conversion` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2023-07-18, STEPS: `2`, REPEAT: `1`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `bkontur-ThinkPad-P14s-Gen-2i`, CPU: `11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz` +//! EXECUTION: ``, WASM-EXECUTION: `Compiled`, CHAIN: `Some("asset-hub-westend-dev")`, DB CACHE: 1024 + +// Executed Command: +// ./target/release/polkadot-parachain +// benchmark +// pallet +// --chain=asset-hub-westend-dev +// --wasm-execution=compiled +// --pallet=pallet_asset_conversion +// --no-storage-info +// --no-median-slopes +// --no-min-squares +// --extrinsic=* +// --steps=2 +// --repeat=1 +// --json +// --header=./file_header.txt +// --output=./parachains/runtimes/assets/asset-hub-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 `pallet_asset_conversion`. +pub struct WeightInfo(PhantomData); +impl pallet_asset_conversion::WeightInfo for WeightInfo { + /// Storage: `AssetConversion::Pools` (r:1 w:1) + /// Proof: `AssetConversion::Pools` (`max_values`: None, `max_size`: Some(1224), added: 3699, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0x76a2c49709deec21d9c05f96c1f47351` (r:1 w:0) + /// Proof: UNKNOWN KEY `0x76a2c49709deec21d9c05f96c1f47351` (r:1 w:0) + /// Storage: `System::Account` (r:2 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + /// Storage: `ForeignAssets::Account` (r:1 w:1) + /// Proof: `ForeignAssets::Account` (`max_values`: None, `max_size`: Some(732), added: 3207, mode: `MaxEncodedLen`) + /// Storage: `ForeignAssets::Asset` (r:1 w:1) + /// Proof: `ForeignAssets::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) + /// Storage: `AssetConversion::NextPoolAssetId` (r:1 w:1) + /// Proof: `AssetConversion::NextPoolAssetId` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) + /// Storage: `PoolAssets::Asset` (r:1 w:1) + /// Proof: `PoolAssets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `PoolAssets::Account` (r:1 w:1) + /// Proof: `PoolAssets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + fn create_pool() -> Weight { + // Proof Size summary in bytes: + // Measured: `480` + // Estimated: `6196` + // Minimum execution time: 115_870_000 picoseconds. + Weight::from_parts(115_870_000, 0) + .saturating_add(Weight::from_parts(0, 6196)) + .saturating_add(T::DbWeight::get().reads(9)) + .saturating_add(T::DbWeight::get().writes(7)) + } + /// Storage: `AssetConversion::Pools` (r:1 w:0) + /// Proof: `AssetConversion::Pools` (`max_values`: None, `max_size`: Some(1224), added: 3699, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + /// Storage: `ForeignAssets::Asset` (r:1 w:1) + /// Proof: `ForeignAssets::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) + /// Storage: `ForeignAssets::Account` (r:2 w:2) + /// Proof: `ForeignAssets::Account` (`max_values`: None, `max_size`: Some(732), added: 3207, mode: `MaxEncodedLen`) + /// Storage: `PoolAssets::Asset` (r:1 w:1) + /// Proof: `PoolAssets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `PoolAssets::Account` (r:2 w:2) + /// Proof: `PoolAssets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + fn add_liquidity() -> Weight { + // Proof Size summary in bytes: + // Measured: `1117` + // Estimated: `7404` + // Minimum execution time: 183_835_000 picoseconds. + Weight::from_parts(183_835_000, 0) + .saturating_add(Weight::from_parts(0, 7404)) + .saturating_add(T::DbWeight::get().reads(8)) + .saturating_add(T::DbWeight::get().writes(7)) + } + /// Storage: `AssetConversion::Pools` (r:1 w:0) + /// Proof: `AssetConversion::Pools` (`max_values`: None, `max_size`: Some(1224), added: 3699, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + /// Storage: `ForeignAssets::Asset` (r:1 w:1) + /// Proof: `ForeignAssets::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) + /// Storage: `ForeignAssets::Account` (r:2 w:2) + /// Proof: `ForeignAssets::Account` (`max_values`: None, `max_size`: Some(732), added: 3207, mode: `MaxEncodedLen`) + /// Storage: `PoolAssets::Asset` (r:1 w:1) + /// Proof: `PoolAssets::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0x2433d831722b1f4aeb1666953f1c0e77` (r:1 w:0) + /// Proof: UNKNOWN KEY `0x2433d831722b1f4aeb1666953f1c0e77` (r:1 w:0) + /// Storage: `PoolAssets::Account` (r:1 w:1) + /// Proof: `PoolAssets::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + fn remove_liquidity() -> Weight { + // Proof Size summary in bytes: + // Measured: `1106` + // Estimated: `7404` + // Minimum execution time: 166_533_000 picoseconds. + Weight::from_parts(166_533_000, 0) + .saturating_add(Weight::from_parts(0, 7404)) + .saturating_add(T::DbWeight::get().reads(8)) + .saturating_add(T::DbWeight::get().writes(6)) + } + /// Storage: `ForeignAssets::Asset` (r:2 w:2) + /// 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`) + /// 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 { + // Proof Size summary in bytes: + // Measured: `1148` + // Estimated: `13818` + // Minimum execution time: 206_165_000 picoseconds. + Weight::from_parts(206_165_000, 0) + .saturating_add(Weight::from_parts(0, 13818)) + .saturating_add(T::DbWeight::get().reads(8)) + .saturating_add(T::DbWeight::get().writes(8)) + } + /// Storage: `System::Account` (r:2 w:2) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`) + /// Storage: `ForeignAssets::Asset` (r:2 w:2) + /// 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 { + // Proof Size summary in bytes: + // Measured: `1148` + // Estimated: `13818` + // Minimum execution time: 208_694_000 picoseconds. + Weight::from_parts(208_694_000, 0) + .saturating_add(Weight::from_parts(0, 13818)) + .saturating_add(T::DbWeight::get().reads(8)) + .saturating_add(T::DbWeight::get().writes(8)) + } +} diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/xcm_config.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/xcm_config.rs index e3615705e2..e52512acfb 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/xcm_config.rs @@ -18,9 +18,12 @@ use super::{ ParachainSystem, PolkadotXcm, PoolAssets, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin, TrustBackedAssetsInstance, WeightToFee, XcmpQueue, }; -use crate::ForeignAssets; -use assets_common::matching::{ - FromSiblingParachain, IsForeignConcreteAsset, StartsWith, StartsWithExplicitGlobalConsensus, +use crate::{AllowMultiAssetPools, ForeignAssets, LiquidityWithdrawalFee}; +use assets_common::{ + local_and_foreign_assets::MatchesLocalAndForeignAssetsMultiLocation, + matching::{ + FromSiblingParachain, IsForeignConcreteAsset, StartsWith, StartsWithExplicitGlobalConsensus, + }, }; use frame_support::{ match_types, parameter_types, @@ -163,6 +166,25 @@ 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. @@ -217,6 +239,16 @@ impl Contains for SafeCallFilter { } } + // Allow to change dedicated storage items (called by governance-like) + match call { + RuntimeCall::System(frame_system::Call::set_storage { items }) + if items.iter().any(|(k, _)| { + k.eq(&AllowMultiAssetPools::key()) | k.eq(&LiquidityWithdrawalFee::key()) + }) => + return true, + _ => (), + }; + matches!( call, RuntimeCall::PolkadotXcm(pallet_xcm::Call::force_xcm_version { .. }) | @@ -540,7 +572,8 @@ pub struct BenchmarkMultiLocationConverter { } #[cfg(feature = "runtime-benchmarks")] -impl pallet_asset_conversion::BenchmarkHelper +impl + pallet_asset_conversion::BenchmarkHelper> for BenchmarkMultiLocationConverter where SelfParaId: Get, @@ -555,4 +588,8 @@ where ), } } + + fn multiasset_id(asset_id: u32) -> sp_std::boxed::Box { + sp_std::boxed::Box::new(Self::asset_id(asset_id)) + } } diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/tests/tests.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/tests/tests.rs index 4cfed8fed0..0114c6d817 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/tests/tests.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/tests/tests.rs @@ -28,7 +28,8 @@ use asset_hub_westend_runtime::{ AssetFeeAsExistentialDepositMultiplierFeeCharger, ForeignCreatorsSovereignAccountOf, WestendLocation, }, - MetadataDepositBase, MetadataDepositPerByte, RuntimeCall, RuntimeEvent, + AllowMultiAssetPools, LiquidityWithdrawalFee, MetadataDepositBase, MetadataDepositPerByte, + RuntimeCall, RuntimeEvent, }; use asset_test_utils::{CollatorSessionKeys, ExtBuilder, RuntimeHelper, XcmReceivedFrom}; use codec::{Decode, DecodeLimit, Encode}; @@ -39,7 +40,10 @@ use frame_support::{ weights::{Weight, WeightToFee as WeightToFeeT}, }; use parachains_common::{AccountId, AssetIdForTrustBackedAssets, AuraId, Balance}; -use sp_runtime::traits::MaybeEquivalence; +use sp_runtime::{ + traits::{CheckedAdd, CheckedSub, MaybeEquivalence}, + Permill, +}; use std::convert::Into; use xcm::{latest::prelude::*, VersionedXcm, MAX_XCM_DECODE_DEPTH}; use xcm_executor::{ @@ -652,3 +656,39 @@ fn plain_receive_teleported_asset_works() { assert_eq!(outcome.ensure_complete(), Ok(())); }) } + +#[test] +fn change_allow_multi_asset_pools_by_governance_works() { + asset_test_utils::test_cases::change_storage_constant_by_governance_works::< + Runtime, + AllowMultiAssetPools, + bool, + >( + collator_session_keys(), + 1000, + Box::new(|call| RuntimeCall::System(call).encode()), + || (AllowMultiAssetPools::key().to_vec(), AllowMultiAssetPools::get()), + |old_value| !old_value, + ) +} + +#[test] +fn change_liquidity_withdrawal_fee_by_governance_works() { + asset_test_utils::test_cases::change_storage_constant_by_governance_works::< + Runtime, + LiquidityWithdrawalFee, + Permill, + >( + collator_session_keys(), + 1000, + Box::new(|call| RuntimeCall::System(call).encode()), + || (LiquidityWithdrawalFee::key().to_vec(), LiquidityWithdrawalFee::get()), + |old_value| { + if let Some(new_value) = old_value.checked_add(&Permill::from_percent(2)) { + new_value + } else { + old_value.checked_sub(&Permill::from_percent(2)).unwrap() + } + }, + ) +} diff --git a/cumulus/parachains/runtimes/assets/common/Cargo.toml b/cumulus/parachains/runtimes/assets/common/Cargo.toml index 79937ec436..f7460aa709 100644 --- a/cumulus/parachains/runtimes/assets/common/Cargo.toml +++ b/cumulus/parachains/runtimes/assets/common/Cargo.toml @@ -9,6 +9,7 @@ description = "Assets common utilities" codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.9.0", default-features = false, features = ["derive"] } log = { version = "0.4.19", default-features = false } +impl-trait-for-tuples = "0.2.2" # Substrate frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } diff --git a/cumulus/parachains/runtimes/assets/common/src/fungible_conversion.rs b/cumulus/parachains/runtimes/assets/common/src/fungible_conversion.rs index 00f0c40d61..5aa5a69caa 100644 --- a/cumulus/parachains/runtimes/assets/common/src/fungible_conversion.rs +++ b/cumulus/parachains/runtimes/assets/common/src/fungible_conversion.rs @@ -37,6 +37,19 @@ where ) -> Result; } +/// Checks for `MultiLocation`. +pub trait MatchesMultiLocation: + MatchesFungibles +where + AssetId: Clone, + Balance: Clone, + MatchAssetId: Contains, + ConvertAssetId: MaybeEquivalence, + ConvertBalance: MaybeEquivalence, +{ + fn contains(location: &MultiLocation) -> bool; +} + impl< AssetId: Clone, Balance: Clone, @@ -82,6 +95,38 @@ impl< } } +impl< + AssetId: Clone, + Balance: Clone, + MatchAssetId: Contains, + ConvertAssetId: MaybeEquivalence, + ConvertBalance: MaybeEquivalence, + > MatchesMultiLocation + for MatchedConvertedConcreteId +{ + fn contains(location: &MultiLocation) -> bool { + MatchAssetId::contains(location) + } +} + +#[impl_trait_for_tuples::impl_for_tuples(30)] +impl< + AssetId: Clone, + Balance: Clone, + MatchAssetId: Contains, + ConvertAssetId: MaybeEquivalence, + ConvertBalance: MaybeEquivalence, + > MatchesMultiLocation for Tuple +{ + fn contains(location: &MultiLocation) -> bool { + for_tuples!( #( + match Tuple::contains(location) { o @ true => return o, _ => () } + )* ); + log::trace!(target: "xcm::contains", "did not match location: {:?}", &location); + false + } +} + /// Helper function to convert collections with [`(AssetId, Balance)`] to [`MultiAsset`] pub fn convert<'a, AssetId, Balance, ConvertAssetId, ConvertBalance, Converter>( items: impl Iterator, diff --git a/cumulus/parachains/runtimes/assets/common/src/local_and_foreign_assets.rs b/cumulus/parachains/runtimes/assets/common/src/local_and_foreign_assets.rs index f50cf1331a..72fd9e7a91 100644 --- a/cumulus/parachains/runtimes/assets/common/src/local_and_foreign_assets.rs +++ b/cumulus/parachains/runtimes/assets/common/src/local_and_foreign_assets.rs @@ -13,92 +13,81 @@ // See the License for the specific language governing permissions and // limitations under the License. -use crate::local_and_foreign_assets::fungibles::Inspect; -use cumulus_primitives_core::InteriorMultiLocation; use frame_support::{ pallet_prelude::DispatchError, traits::{ - fungibles::{ - self, Balanced, Create, HandleImbalanceDrop, Mutate as MutateFungible, Unbalanced, + fungibles::{Balanced, Create, HandleImbalanceDrop, Inspect, Mutate, Unbalanced}, + tokens::{ + DepositConsequence, Fortitude, Precision, Preservation, Provenance, WithdrawConsequence, }, - tokens::{DepositConsequence, Fortitude, Preservation, Provenance, WithdrawConsequence}, - AccountTouch, ContainsPair, Get, PalletInfoAccess, + AccountTouch, Contains, ContainsPair, Get, PalletInfoAccess, }, }; -use pallet_asset_conversion::MultiAssetIdConverter; -use parachains_common::{AccountId, AssetIdForTrustBackedAssets}; +use pallet_asset_conversion::{MultiAssetIdConversionResult, MultiAssetIdConverter}; +use parachains_common::AccountId; use sp_runtime::{traits::MaybeEquivalence, DispatchResult}; use sp_std::{boxed::Box, marker::PhantomData}; -use xcm::{latest::MultiLocation, opaque::lts::Junctions::Here}; -use xcm_builder::AsPrefixedGeneralIndex; -use xcm_executor::traits::JustTry; +use xcm::latest::MultiLocation; -/// Whether the multilocation refers to an asset in the local assets pallet or not, -/// and if return the asset id. -fn is_local>( - multilocation: MultiLocation, -) -> Option { - AsPrefixedGeneralIndex::::convert(&multilocation) +pub struct MultiLocationConverter, MultiLocationMatcher> { + _phantom: PhantomData<(NativeAssetLocation, MultiLocationMatcher)>, } -pub struct MultiLocationConverter> { - _phantom: PhantomData<(Balances, ParachainLocation)>, -} - -impl MultiAssetIdConverter, MultiLocation> - for MultiLocationConverter +impl + MultiAssetIdConverter, MultiLocation> + for MultiLocationConverter where - Balances: PalletInfoAccess, - ParachainLocation: Get, + NativeAssetLocation: Get, + MultiLocationMatcher: Contains, { fn get_native() -> Box { - Box::new(MultiLocation { parents: 0, interior: Here }) + Box::new(NativeAssetLocation::get()) } fn is_native(asset_id: &Box) -> bool { - let mut asset_id = asset_id.clone(); - asset_id.simplify(&ParachainLocation::get()); - *asset_id == *Self::get_native() + *asset_id == Self::get_native() } - fn try_convert(asset_id: &Box) -> Result { - let mut asset_id = asset_id.clone(); - asset_id.simplify(&ParachainLocation::get()); + fn try_convert( + asset_id: &Box, + ) -> MultiAssetIdConversionResult, MultiLocation> { if Self::is_native(&asset_id) { - // Otherwise it will try and touch the asset to create an account. - return Err(()) + return MultiAssetIdConversionResult::Native } - // Return simplified MultiLocation: - Ok(*asset_id) - } - fn into_multiasset_id(asset_id: &MultiLocation) -> Box { - let mut asset_id = *asset_id; - asset_id.simplify(&ParachainLocation::get()); - Box::new(asset_id) + if MultiLocationMatcher::contains(&asset_id) { + MultiAssetIdConversionResult::Converted(*asset_id.clone()) + } else { + MultiAssetIdConversionResult::Unsupported(asset_id.clone()) + } } } -pub struct LocalAndForeignAssets { - _phantom: PhantomData<(Assets, ForeignAssets, Location)>, +pub trait MatchesLocalAndForeignAssetsMultiLocation { + fn is_local(location: &MultiLocation) -> bool; + fn is_foreign(location: &MultiLocation) -> bool; } -impl Unbalanced - for LocalAndForeignAssets +pub struct LocalAndForeignAssets { + _phantom: PhantomData<(Assets, LocalAssetIdConverter, ForeignAssets)>, +} + +impl Unbalanced + for LocalAndForeignAssets where - Location: Get, - ForeignAssets: Inspect - + Unbalanced - + Balanced, Assets: Inspect + Unbalanced + Balanced + PalletInfoAccess, + LocalAssetIdConverter: MaybeEquivalence, + ForeignAssets: Inspect + + Unbalanced + + Balanced, { fn handle_dust(dust: frame_support::traits::fungibles::Dust) { let credit = dust.into_credit(); - if let Some(asset) = is_local::(credit.asset()) { + if let Some(asset) = LocalAssetIdConverter::convert(&credit.asset()) { Assets::handle_raw_dust(asset, credit.peek()); } else { ForeignAssets::handle_raw_dust(credit.asset(), credit.peek()); @@ -109,14 +98,11 @@ where } fn write_balance( - asset: >::AssetId, + asset: >::AssetId, who: &AccountId, - amount: >::Balance, - ) -> Result< - Option<>::Balance>, - sp_runtime::DispatchError, - > { - if let Some(asset) = is_local::(asset) { + amount: >::Balance, + ) -> Result>::Balance>, DispatchError> { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { Assets::write_balance(asset, who, amount) } else { ForeignAssets::write_balance(asset, who, amount) @@ -125,27 +111,55 @@ where /// Set the total issuance of `asset` to `amount`. fn set_total_issuance(asset: Self::AssetId, amount: Self::Balance) { - if let Some(asset) = is_local::(asset) { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { Assets::set_total_issuance(asset, amount) } else { ForeignAssets::set_total_issuance(asset, amount) } } + + fn decrease_balance( + asset: Self::AssetId, + who: &AccountId, + amount: Self::Balance, + precision: Precision, + preservation: Preservation, + force: Fortitude, + ) -> Result { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { + Assets::decrease_balance(asset, who, amount, precision, preservation, force) + } else { + ForeignAssets::decrease_balance(asset, who, amount, precision, preservation, force) + } + } + + fn increase_balance( + asset: Self::AssetId, + who: &AccountId, + amount: Self::Balance, + precision: Precision, + ) -> Result { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { + Assets::increase_balance(asset, who, amount, precision) + } else { + ForeignAssets::increase_balance(asset, who, amount, precision) + } + } } -impl Inspect - for LocalAndForeignAssets +impl Inspect + for LocalAndForeignAssets where - Location: Get, - ForeignAssets: Inspect, Assets: Inspect, + LocalAssetIdConverter: MaybeEquivalence, + ForeignAssets: Inspect, { type AssetId = MultiLocation; type Balance = u128; /// The total amount of issuance in the system. fn total_issuance(asset: Self::AssetId) -> Self::Balance { - if let Some(asset) = is_local::(asset) { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { Assets::total_issuance(asset) } else { ForeignAssets::total_issuance(asset) @@ -154,16 +168,27 @@ where /// The minimum balance any single account may have. fn minimum_balance(asset: Self::AssetId) -> Self::Balance { - if let Some(asset) = is_local::(asset) { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { Assets::minimum_balance(asset) } else { ForeignAssets::minimum_balance(asset) } } + fn total_balance( + asset: >::AssetId, + account: &AccountId, + ) -> >::Balance { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { + Assets::total_balance(asset, account) + } else { + ForeignAssets::total_balance(asset, account) + } + } + /// Get the `asset` balance of `who`. fn balance(asset: Self::AssetId, who: &AccountId) -> Self::Balance { - if let Some(asset) = is_local::(asset) { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { Assets::balance(asset, who) } else { ForeignAssets::balance(asset, who) @@ -177,7 +202,7 @@ where presevation: Preservation, fortitude: Fortitude, ) -> Self::Balance { - if let Some(asset) = is_local::(asset) { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { Assets::reducible_balance(asset, who, presevation, fortitude) } else { ForeignAssets::reducible_balance(asset, who, presevation, fortitude) @@ -196,7 +221,7 @@ where amount: Self::Balance, mint: Provenance, ) -> DepositConsequence { - if let Some(asset) = is_local::(asset) { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { Assets::can_deposit(asset, who, amount, mint) } else { ForeignAssets::can_deposit(asset, who, amount, mint) @@ -210,7 +235,7 @@ where who: &AccountId, amount: Self::Balance, ) -> WithdrawConsequence { - if let Some(asset) = is_local::(asset) { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { Assets::can_withdraw(asset, who, amount) } else { ForeignAssets::can_withdraw(asset, who, amount) @@ -219,36 +244,25 @@ where /// Returns `true` if an `asset` exists. fn asset_exists(asset: Self::AssetId) -> bool { - if let Some(asset) = is_local::(asset) { + if let Some(asset) = LocalAssetIdConverter::convert(&asset) { Assets::asset_exists(asset) } else { ForeignAssets::asset_exists(asset) } } - - fn total_balance( - asset: >::AssetId, - account: &AccountId, - ) -> >::Balance { - if let Some(asset) = is_local::(asset) { - Assets::total_balance(asset, account) - } else { - ForeignAssets::total_balance(asset, account) - } - } } -impl MutateFungible - for LocalAndForeignAssets +impl Mutate + for LocalAndForeignAssets where - Location: Get, - ForeignAssets: MutateFungible - + Inspect - + Balanced, - Assets: MutateFungible + Assets: Mutate + Inspect + Balanced + PalletInfoAccess, + LocalAssetIdConverter: MaybeEquivalence, + ForeignAssets: Mutate + + Inspect + + Balanced, { /// Transfer funds from one account into another. fn transfer( @@ -258,7 +272,7 @@ where amount: Self::Balance, keep_alive: Preservation, ) -> Result { - if let Some(asset_id) = is_local::(asset) { + if let Some(asset_id) = LocalAssetIdConverter::convert(&asset) { Assets::transfer(asset_id, source, dest, amount, keep_alive) } else { ForeignAssets::transfer(asset, source, dest, amount, keep_alive) @@ -266,12 +280,12 @@ where } } -impl Create - for LocalAndForeignAssets +impl Create + for LocalAndForeignAssets where - Location: Get, - ForeignAssets: Create + Inspect, Assets: Create + Inspect, + LocalAssetIdConverter: MaybeEquivalence, + ForeignAssets: Create + Inspect, { /// Create a new fungible asset. fn create( @@ -280,7 +294,7 @@ where is_sufficient: bool, min_balance: Self::Balance, ) -> DispatchResult { - if let Some(asset_id) = is_local::(asset_id) { + if let Some(asset_id) = LocalAssetIdConverter::convert(&asset_id) { Assets::create(asset_id, admin, is_sufficient, min_balance) } else { ForeignAssets::create(asset_id, admin, is_sufficient, min_balance) @@ -288,19 +302,19 @@ where } } -impl AccountTouch - for LocalAndForeignAssets +impl AccountTouch + for LocalAndForeignAssets where - Location: Get, - ForeignAssets: AccountTouch, Assets: AccountTouch, + LocalAssetIdConverter: MaybeEquivalence, + ForeignAssets: AccountTouch, { type Balance = u128; fn deposit_required( asset_id: MultiLocation, ) -> >::Balance { - if let Some(asset_id) = is_local::(asset_id) { + if let Some(asset_id) = LocalAssetIdConverter::convert(&asset_id) { Assets::deposit_required(asset_id) } else { ForeignAssets::deposit_required(asset_id) @@ -311,8 +325,8 @@ where asset_id: MultiLocation, who: AccountId, depositor: AccountId, - ) -> Result<(), sp_runtime::DispatchError> { - if let Some(asset_id) = is_local::(asset_id) { + ) -> Result<(), DispatchError> { + if let Some(asset_id) = LocalAssetIdConverter::convert(&asset_id) { Assets::touch(asset_id, who, depositor) } else { ForeignAssets::touch(asset_id, who, depositor) @@ -321,16 +335,16 @@ where } /// Implements [`ContainsPair`] trait for a pair of asset and account IDs. -impl ContainsPair - for LocalAndForeignAssets +impl ContainsPair + for LocalAndForeignAssets where - Location: Get, - ForeignAssets: ContainsPair, Assets: PalletInfoAccess + ContainsPair, + LocalAssetIdConverter: MaybeEquivalence, + ForeignAssets: ContainsPair, { /// Check if an account with the given asset ID and account address exists. fn contains(asset_id: &MultiLocation, who: &AccountId) -> bool { - if let Some(asset_id) = is_local::(*asset_id) { + if let Some(asset_id) = LocalAssetIdConverter::convert(asset_id) { Assets::contains(&asset_id, &who) } else { ForeignAssets::contains(&asset_id, &who) @@ -338,33 +352,33 @@ where } } -impl Balanced - for LocalAndForeignAssets +impl Balanced + for LocalAndForeignAssets where - Location: Get, - ForeignAssets: - Balanced + Inspect, Assets: Balanced + Inspect + PalletInfoAccess, -{ - type OnDropDebt = DebtDropIndirection; - type OnDropCredit = CreditDropIndirection; -} - -pub struct DebtDropIndirection { - _phantom: PhantomData>, -} - -impl HandleImbalanceDrop - for DebtDropIndirection -where - Location: Get, + LocalAssetIdConverter: MaybeEquivalence, ForeignAssets: Balanced + Inspect, +{ + type OnDropDebt = DebtDropIndirection; + type OnDropCredit = CreditDropIndirection; +} + +pub struct DebtDropIndirection { + _phantom: PhantomData>, +} + +impl HandleImbalanceDrop + for DebtDropIndirection +where Assets: Balanced + Inspect, + LocalAssetIdConverter: MaybeEquivalence, + ForeignAssets: + Balanced + Inspect, { fn handle(asset: MultiLocation, amount: u128) { - if let Some(asset_id) = is_local::(asset) { + if let Some(asset_id) = LocalAssetIdConverter::convert(&asset) { Assets::OnDropDebt::handle(asset_id, amount); } else { ForeignAssets::OnDropDebt::handle(asset, amount); @@ -372,23 +386,87 @@ where } } -pub struct CreditDropIndirection { - _phantom: PhantomData>, +pub struct CreditDropIndirection { + _phantom: PhantomData>, } -impl HandleImbalanceDrop - for CreditDropIndirection +impl HandleImbalanceDrop + for CreditDropIndirection where - Location: Get, + Assets: Balanced + Inspect, + LocalAssetIdConverter: MaybeEquivalence, ForeignAssets: Balanced + Inspect, - Assets: Balanced + Inspect, { fn handle(asset: MultiLocation, amount: u128) { - if let Some(asset_id) = is_local::(asset) { + if let Some(asset_id) = LocalAssetIdConverter::convert(&asset) { Assets::OnDropCredit::handle(asset_id, amount); } else { ForeignAssets::OnDropCredit::handle(asset, amount); } } } + +#[cfg(test)] +mod tests { + use crate::{ + local_and_foreign_assets::MultiLocationConverter, matching::StartsWith, + AssetIdForPoolAssetsConvert, AssetIdForTrustBackedAssetsConvert, + }; + use frame_support::traits::EverythingBut; + use pallet_asset_conversion::{MultiAssetIdConversionResult, MultiAssetIdConverter}; + use sp_runtime::traits::MaybeEquivalence; + use xcm::latest::prelude::*; + + #[test] + fn test_multi_location_converter_works() { + frame_support::parameter_types! { + pub const WestendLocation: MultiLocation = MultiLocation::parent(); + pub TrustBackedAssetsPalletLocation: MultiLocation = PalletInstance(50_u8).into(); + pub PoolAssetsPalletLocation: MultiLocation = PalletInstance(55_u8).into(); + } + + type C = MultiLocationConverter< + WestendLocation, + EverythingBut>, + >; + + let native_asset = WestendLocation::get(); + let local_asset = + AssetIdForTrustBackedAssetsConvert::::convert_back( + &123, + ) + .unwrap(); + let pool_asset = + AssetIdForPoolAssetsConvert::::convert_back(&456).unwrap(); + let foreign_asset1 = MultiLocation { parents: 1, interior: X1(Parachain(2222)) }; + let foreign_asset2 = MultiLocation { + parents: 2, + interior: X2(GlobalConsensus(ByGenesis([1; 32])), Parachain(2222)), + }; + + assert!(C::is_native(&Box::new(native_asset))); + assert!(!C::is_native(&Box::new(local_asset))); + assert!(!C::is_native(&Box::new(pool_asset))); + assert!(!C::is_native(&Box::new(foreign_asset1))); + assert!(!C::is_native(&Box::new(foreign_asset2))); + + assert_eq!(C::try_convert(&Box::new(native_asset)), MultiAssetIdConversionResult::Native); + assert_eq!( + C::try_convert(&Box::new(local_asset)), + MultiAssetIdConversionResult::Converted(local_asset) + ); + assert_eq!( + C::try_convert(&Box::new(pool_asset)), + MultiAssetIdConversionResult::Unsupported(Box::new(pool_asset)) + ); + assert_eq!( + C::try_convert(&Box::new(foreign_asset1)), + MultiAssetIdConversionResult::Converted(foreign_asset1) + ); + assert_eq!( + C::try_convert(&Box::new(foreign_asset2)), + MultiAssetIdConversionResult::Converted(foreign_asset2) + ); + } +} diff --git a/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs b/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs index 162239a8d2..375da28720 100644 --- a/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs +++ b/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs @@ -33,6 +33,9 @@ use sp_runtime::{ use xcm::latest::prelude::*; use xcm_executor::{traits::ConvertLocation, XcmExecutor}; +// Re-export test_case from `parachains-runtimes-test-utils` +pub use parachains_runtimes_test_utils::test_cases::change_storage_constant_by_governance_works; + /// Test-case makes sure that `Runtime` can receive native asset from relay chain /// and can teleport it back and to the other parachains pub fn teleports_for_native_asset_works< diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-kusama/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-kusama/src/lib.rs index e7c8216e64..967aadf9dd 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-kusama/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-kusama/src/lib.rs @@ -688,6 +688,7 @@ impl_runtime_apis! { MultiAsset { fun: Fungible(UNITS), id: Concrete(KsmRelayLocation::get()) }, )); pub const CheckedAccount: Option<(AccountId, xcm_builder::MintLocation)> = None; + pub const TrustedReserve: Option<(MultiLocation, MultiAsset)> = None; } impl pallet_xcm_benchmarks::fungible::Config for Runtime { @@ -695,6 +696,7 @@ impl_runtime_apis! { type CheckedAccount = CheckedAccount; type TrustedTeleporter = TrustedTeleporter; + type TrustedReserve = TrustedReserve; fn get_multi_asset() -> MultiAsset { MultiAsset { diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-polkadot/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-polkadot/src/lib.rs index b82c3a461e..5c9c880ec9 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-polkadot/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-polkadot/src/lib.rs @@ -688,6 +688,7 @@ impl_runtime_apis! { MultiAsset { fun: Fungible(UNITS), id: Concrete(DotRelayLocation::get()) }, )); pub const CheckedAccount: Option<(AccountId, xcm_builder::MintLocation)> = None; + pub const TrustedReserve: Option<(MultiLocation, MultiAsset)> = None; } impl pallet_xcm_benchmarks::fungible::Config for Runtime { @@ -695,6 +696,7 @@ impl_runtime_apis! { type CheckedAccount = CheckedAccount; type TrustedTeleporter = TrustedTeleporter; + type TrustedReserve = TrustedReserve; fn get_multi_asset() -> MultiAsset { MultiAsset { diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs index c4bfa641db..6e1bb7aba2 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs @@ -956,6 +956,7 @@ impl_runtime_apis! { MultiAsset { fun: Fungible(UNITS), id: Concrete(RelayLocation::get()) }, )); pub const CheckedAccount: Option<(AccountId, xcm_builder::MintLocation)> = None; + pub const TrustedReserve: Option<(MultiLocation, MultiAsset)> = None; } impl pallet_xcm_benchmarks::fungible::Config for Runtime { @@ -963,6 +964,7 @@ impl_runtime_apis! { type CheckedAccount = CheckedAccount; type TrustedTeleporter = TrustedTeleporter; + type TrustedReserve = TrustedReserve; fn get_multi_asset() -> MultiAsset { MultiAsset { diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases.rs index 03be3f2861..ee9d413b7a 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases.rs @@ -54,6 +54,9 @@ use xcm_executor::XcmExecutor; // Re-export test_case from assets pub use asset_test_utils::include_teleports_for_native_asset_works; +// Re-export test_case from `parachains-runtimes-test-utils` +pub use parachains_runtimes_test_utils::test_cases::change_storage_constant_by_governance_works; + /// Test-case makes sure that `Runtime` can process bridging initialize via governance-like call pub fn initialize_bridge_by_governance_works( collator_session_key: CollatorSessionKeys, @@ -114,76 +117,6 @@ pub fn initialize_bridge_by_governance_works( }) } -/// Test-case makes sure that `Runtime` can change storage constant via governance-like call -pub fn change_storage_constant_by_governance_works( - collator_session_key: CollatorSessionKeys, - runtime_para_id: u32, - runtime_call_encode: Box) -> Vec>, - storage_constant_key_value: fn() -> (Vec, StorageConstantType), - new_storage_constant_value: fn(&StorageConstantType) -> StorageConstantType, -) where - Runtime: frame_system::Config - + pallet_balances::Config - + pallet_session::Config - + pallet_xcm::Config - + parachain_info::Config - + pallet_collator_selection::Config - + cumulus_pallet_dmp_queue::Config - + cumulus_pallet_parachain_system::Config, - ValidatorIdOf: From>, - StorageConstant: Get, - StorageConstantType: Encode + PartialEq + std::fmt::Debug, -{ - ExtBuilder::::default() - .with_collators(collator_session_key.collators()) - .with_session_keys(collator_session_key.session_keys()) - .with_para_id(runtime_para_id.into()) - .with_tracing() - .build() - .execute_with(|| { - let (storage_constant_key, storage_constant_init_value): ( - Vec, - StorageConstantType, - ) = storage_constant_key_value(); - - // check delivery reward constant before (not stored yet, just as default value is used) - assert_eq!(StorageConstant::get(), storage_constant_init_value); - assert_eq!(sp_io::storage::get(&storage_constant_key), None); - - let new_storage_constant_value = - new_storage_constant_value(&storage_constant_init_value); - assert_ne!(new_storage_constant_value, storage_constant_init_value); - - // encode `set_storage` call - let set_storage_call = - runtime_call_encode(frame_system::Call::::set_storage { - items: vec![( - storage_constant_key.clone(), - new_storage_constant_value.encode(), - )], - }); - - // estimate - storing just 1 value - use frame_system::WeightInfo; - let require_weight_at_most = - ::SystemWeightInfo::set_storage(1); - - // execute XCM with Transact to `set_storage` as governance does - assert_ok!(RuntimeHelper::::execute_as_governance( - set_storage_call, - require_weight_at_most - ) - .ensure_complete()); - - // check delivery reward constant after (stored) - assert_eq!(StorageConstant::get(), new_storage_constant_value); - assert_eq!( - sp_io::storage::get(&storage_constant_key), - Some(new_storage_constant_value.encode().into()) - ); - }) -} - /// Test-case makes sure that `Runtime` can handle xcm `ExportMessage`: /// Checks if received XCM messages is correctly added to the message outbound queue for delivery. /// For SystemParachains we expect unpaid execution. diff --git a/cumulus/parachains/runtimes/test-utils/src/lib.rs b/cumulus/parachains/runtimes/test-utils/src/lib.rs index 9328ac492d..5623ce4606 100644 --- a/cumulus/parachains/runtimes/test-utils/src/lib.rs +++ b/cumulus/parachains/runtimes/test-utils/src/lib.rs @@ -37,6 +37,8 @@ use xcm::{ }; use xcm_executor::{traits::TransactAsset, Assets}; +pub mod test_cases; + pub type BalanceOf = ::Balance; pub type AccountIdOf = ::AccountId; pub type ValidatorIdOf = ::ValidatorId; diff --git a/cumulus/parachains/runtimes/test-utils/src/test_cases.rs b/cumulus/parachains/runtimes/test-utils/src/test_cases.rs new file mode 100644 index 0000000000..7d5d9327c0 --- /dev/null +++ b/cumulus/parachains/runtimes/test-utils/src/test_cases.rs @@ -0,0 +1,91 @@ +// 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 . + +//! Module contains predefined test-case scenarios for `Runtime` with common functionality. + +use crate::{AccountIdOf, CollatorSessionKeys, ExtBuilder, RuntimeHelper, ValidatorIdOf}; +use codec::Encode; +use frame_support::{assert_ok, traits::Get}; + +/// Test-case makes sure that `Runtime` can change storage constant via governance-like call +pub fn change_storage_constant_by_governance_works( + collator_session_key: CollatorSessionKeys, + runtime_para_id: u32, + runtime_call_encode: Box) -> Vec>, + storage_constant_key_value: fn() -> (Vec, StorageConstantType), + new_storage_constant_value: fn(&StorageConstantType) -> StorageConstantType, +) where + Runtime: frame_system::Config + + pallet_balances::Config + + pallet_session::Config + + pallet_xcm::Config + + parachain_info::Config + + pallet_collator_selection::Config + + cumulus_pallet_dmp_queue::Config + + cumulus_pallet_parachain_system::Config, + ValidatorIdOf: From>, + StorageConstant: Get, + StorageConstantType: Encode + PartialEq + std::fmt::Debug, +{ + ExtBuilder::::default() + .with_collators(collator_session_key.collators()) + .with_session_keys(collator_session_key.session_keys()) + .with_para_id(runtime_para_id.into()) + .with_tracing() + .build() + .execute_with(|| { + let (storage_constant_key, storage_constant_init_value): ( + Vec, + StorageConstantType, + ) = storage_constant_key_value(); + + // check delivery reward constant before (not stored yet, just as default value is used) + assert_eq!(StorageConstant::get(), storage_constant_init_value); + assert_eq!(sp_io::storage::get(&storage_constant_key), None); + + let new_storage_constant_value = + new_storage_constant_value(&storage_constant_init_value); + assert_ne!(new_storage_constant_value, storage_constant_init_value); + + // encode `set_storage` call + let set_storage_call = + runtime_call_encode(frame_system::Call::::set_storage { + items: vec![( + storage_constant_key.clone(), + new_storage_constant_value.encode(), + )], + }); + + // estimate - storing just 1 value + use frame_system::WeightInfo; + let require_weight_at_most = + ::SystemWeightInfo::set_storage(1); + + // execute XCM with Transact to `set_storage` as governance does + assert_ok!(RuntimeHelper::::execute_as_governance( + set_storage_call, + require_weight_at_most + ) + .ensure_complete()); + + // check delivery reward constant after (stored) + assert_eq!(StorageConstant::get(), new_storage_constant_value); + assert_eq!( + sp_io::storage::get(&storage_constant_key), + Some(new_storage_constant_value.encode().into()) + ); + }) +} diff --git a/cumulus/xcm/xcm-emulator/src/lib.rs b/cumulus/xcm/xcm-emulator/src/lib.rs index e534d25a8c..0b5a6eec4a 100644 --- a/cumulus/xcm/xcm-emulator/src/lib.rs +++ b/cumulus/xcm/xcm-emulator/src/lib.rs @@ -1100,8 +1100,8 @@ pub mod helpers { pub fn within_threshold(threshold: u64, expected_value: u64, current_value: u64) -> bool { let margin = (current_value * threshold) / 100; - let lower_limit = expected_value - margin; - let upper_limit = expected_value + margin; + let lower_limit = expected_value.checked_sub(margin).unwrap_or(u64::MIN); + let upper_limit = expected_value.checked_add(margin).unwrap_or(u64::MAX); current_value >= lower_limit && current_value <= upper_limit }