diff --git a/Cargo.lock b/Cargo.lock index 640ca1ca3222..162bd76a76c0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -523,7 +523,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "hash-db", "log", @@ -2531,7 +2531,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", ] @@ -2554,7 +2554,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "frame-support-procedural", @@ -2579,7 +2579,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "Inflector", "array-bytes", @@ -2626,7 +2626,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2637,7 +2637,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2654,7 +2654,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "frame-system", @@ -2683,7 +2683,7 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-recursion", "futures", @@ -2704,7 +2704,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "bitflags", "environmental", @@ -2739,7 +2739,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "Inflector", "cfg-expr", @@ -2756,7 +2756,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2768,7 +2768,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "proc-macro2", "quote", @@ -2778,7 +2778,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-executive", @@ -2805,7 +2805,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "frame-system", @@ -2817,7 +2817,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "cfg-if", "frame-support", @@ -2836,7 +2836,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -2851,7 +2851,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "sp-api", @@ -2860,7 +2860,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "parity-scale-codec", @@ -3042,7 +3042,7 @@ dependencies = [ [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "chrono", "frame-election-provider-support", @@ -4988,7 +4988,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "futures", "log", @@ -5007,7 +5007,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "anyhow", "jsonrpsee", @@ -5590,7 +5590,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -5605,7 +5605,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "frame-system", @@ -5621,7 +5621,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "frame-system", @@ -5635,7 +5635,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -5659,7 +5659,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5679,7 +5679,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-election-provider-support", "frame-remote-externalities", @@ -5698,7 +5698,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -5713,7 +5713,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "frame-system", @@ -5732,7 +5732,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -5756,7 +5756,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -5774,7 +5774,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -5793,7 +5793,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -5810,7 +5810,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5827,7 +5827,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -5845,7 +5845,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5868,7 +5868,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5881,7 +5881,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -5899,7 +5899,7 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "docify", "frame-benchmarking", @@ -5918,7 +5918,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -5941,7 +5941,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5957,7 +5957,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -5977,7 +5977,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -5994,7 +5994,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6011,7 +6011,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6030,7 +6030,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6047,7 +6047,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6063,7 +6063,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6079,7 +6079,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "frame-system", @@ -6096,7 +6096,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6116,7 +6116,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -6127,7 +6127,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "frame-system", @@ -6144,7 +6144,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6168,7 +6168,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6185,7 +6185,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6200,7 +6200,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6218,7 +6218,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6233,7 +6233,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "assert_matches", "frame-benchmarking", @@ -6252,7 +6252,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6269,7 +6269,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "frame-system", @@ -6290,7 +6290,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6306,7 +6306,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "frame-system", @@ -6320,7 +6320,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -6343,7 +6343,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6354,7 +6354,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "log", "sp-arithmetic", @@ -6363,7 +6363,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "sp-api", @@ -6372,7 +6372,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6389,7 +6389,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6404,7 +6404,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6422,7 +6422,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6441,7 +6441,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-support", "frame-system", @@ -6457,7 +6457,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6473,7 +6473,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6485,7 +6485,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6502,7 +6502,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6517,7 +6517,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6533,7 +6533,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -6548,7 +6548,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-benchmarking", "frame-support", @@ -9675,7 +9675,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "log", "sp-core", @@ -9686,7 +9686,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "futures", @@ -9715,7 +9715,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "futures", "futures-timer", @@ -9738,7 +9738,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9753,7 +9753,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -9772,7 +9772,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9783,7 +9783,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "chrono", @@ -9823,7 +9823,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "fnv", "futures", @@ -9850,7 +9850,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "hash-db", "kvdb", @@ -9876,7 +9876,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "futures", @@ -9901,7 +9901,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "fork-tree", @@ -9937,7 +9937,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "futures", "jsonrpsee", @@ -9959,7 +9959,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "async-channel", @@ -9995,7 +9995,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "futures", "jsonrpsee", @@ -10014,7 +10014,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "fork-tree", "parity-scale-codec", @@ -10027,7 +10027,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "ahash 0.8.2", "array-bytes", @@ -10067,7 +10067,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "finality-grandpa", "futures", @@ -10087,7 +10087,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "futures", @@ -10110,7 +10110,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "lru 0.10.0", "parity-scale-codec", @@ -10132,7 +10132,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -10144,7 +10144,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "anyhow", "cfg-if", @@ -10162,7 +10162,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "ansi_term", "futures", @@ -10178,7 +10178,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -10192,7 +10192,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "async-channel", @@ -10238,7 +10238,7 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-channel", "cid", @@ -10259,7 +10259,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "async-trait", @@ -10286,7 +10286,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "ahash 0.8.2", "futures", @@ -10304,7 +10304,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "async-channel", @@ -10326,7 +10326,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "async-channel", @@ -10360,7 +10360,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "futures", @@ -10378,7 +10378,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "bytes", @@ -10408,7 +10408,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10417,7 +10417,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "futures", "jsonrpsee", @@ -10448,7 +10448,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10467,7 +10467,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "http", "jsonrpsee", @@ -10482,7 +10482,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "futures", @@ -10508,7 +10508,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "directories", @@ -10574,7 +10574,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "log", "parity-scale-codec", @@ -10585,7 +10585,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "clap 4.2.5", "fs4", @@ -10601,7 +10601,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10620,7 +10620,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "futures", "libc", @@ -10639,7 +10639,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "chrono", "futures", @@ -10658,7 +10658,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "ansi_term", "atty", @@ -10689,7 +10689,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10700,14 +10700,13 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "futures", "futures-timer", "linked-hash-map", "log", - "num-traits", "parity-scale-codec", "parking_lot 0.12.1", "sc-client-api", @@ -10727,7 +10726,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "futures", @@ -10743,7 +10742,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-channel", "futures", @@ -11291,7 +11290,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "hash-db", "log", @@ -11311,7 +11310,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "Inflector", "blake2", @@ -11325,7 +11324,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "23.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "scale-info", @@ -11338,7 +11337,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "16.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "integer-sqrt", "num-traits", @@ -11352,7 +11351,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "scale-info", @@ -11365,7 +11364,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "sp-api", @@ -11377,7 +11376,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "futures", "log", @@ -11395,7 +11394,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "futures", @@ -11410,7 +11409,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "parity-scale-codec", @@ -11428,7 +11427,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "parity-scale-codec", @@ -11449,7 +11448,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "lazy_static", "parity-scale-codec", @@ -11468,7 +11467,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "finality-grandpa", "log", @@ -11486,7 +11485,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "scale-info", @@ -11498,7 +11497,7 @@ dependencies = [ [[package]] name = "sp-core" version = "21.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "bitflags", @@ -11542,7 +11541,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "9.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "blake2b_simd", "byteorder", @@ -11556,7 +11555,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "9.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "proc-macro2", "quote", @@ -11567,7 +11566,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -11576,7 +11575,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "proc-macro2", "quote", @@ -11586,7 +11585,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.19.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "environmental", "parity-scale-codec", @@ -11597,7 +11596,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11612,7 +11611,7 @@ dependencies = [ [[package]] name = "sp-io" version = "23.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "bytes", "ed25519", @@ -11638,7 +11637,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "24.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "lazy_static", "sp-core", @@ -11649,7 +11648,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.27.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "futures", "parity-scale-codec", @@ -11663,7 +11662,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "thiserror", "zstd 0.12.3+zstd.1.5.2", @@ -11672,7 +11671,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -11683,7 +11682,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -11701,7 +11700,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "scale-info", @@ -11715,7 +11714,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "sp-api", "sp-core", @@ -11725,7 +11724,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "backtrace", "lazy_static", @@ -11735,7 +11734,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "rustc-hash", "serde", @@ -11745,7 +11744,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "24.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "either", "hash256-std-hasher", @@ -11767,7 +11766,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "17.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11785,7 +11784,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "11.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "Inflector", "proc-macro-crate", @@ -11797,7 +11796,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "scale-info", @@ -11811,7 +11810,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "scale-info", @@ -11824,7 +11823,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.28.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "hash-db", "log", @@ -11844,7 +11843,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "log", "parity-scale-codec", @@ -11862,12 +11861,12 @@ dependencies = [ [[package]] name = "sp-std" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" [[package]] name = "sp-storage" version = "13.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11880,7 +11879,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "futures-timer", @@ -11895,7 +11894,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "10.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "sp-std", @@ -11907,7 +11906,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "sp-api", "sp-runtime", @@ -11916,7 +11915,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "log", @@ -11932,7 +11931,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "22.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "ahash 0.8.2", "hash-db", @@ -11955,7 +11954,7 @@ dependencies = [ [[package]] name = "sp-version" version = "22.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11972,7 +11971,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11983,7 +11982,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "14.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -11996,7 +11995,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "20.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "parity-scale-codec", "scale-info", @@ -12237,7 +12236,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "platforms", ] @@ -12245,7 +12244,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -12264,7 +12263,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "hyper", "log", @@ -12276,7 +12275,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "jsonrpsee", @@ -12289,7 +12288,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "jsonrpsee", "log", @@ -12308,7 +12307,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "array-bytes", "async-trait", @@ -12334,7 +12333,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "futures", "substrate-test-utils-derive", @@ -12344,7 +12343,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -12355,7 +12354,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "ansi_term", "build-helper", @@ -13200,7 +13199,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2577379be50ec2738174d70740c6c3a8d8eb815b" +source = "git+https://github.com/paritytech/substrate?branch=master#715b24690dd4c16d45b0b593392e8913dde96146" dependencies = [ "async-trait", "clap 4.2.5", diff --git a/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs b/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs index 844b2f68795e..82d28a7f63c9 100644 --- a/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs +++ b/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs @@ -24,7 +24,7 @@ use frame_support::{ use sp_runtime::traits::{Bounded, Zero}; use sp_std::{prelude::*, vec}; use xcm::latest::prelude::*; -use xcm_executor::traits::{Convert, TransactAsset}; +use xcm_executor::traits::{ConvertLocation, TransactAsset}; benchmarks_instance_pallet! { where_clause { where @@ -75,7 +75,7 @@ benchmarks_instance_pallet! { // this xcm doesn't use holding let dest_location = T::valid_destination()?; - let dest_account = T::AccountIdConverter::convert(dest_location.clone()).unwrap(); + let dest_account = T::AccountIdConverter::convert_location(&dest_location).unwrap(); >::deposit_asset( &asset, @@ -101,7 +101,7 @@ benchmarks_instance_pallet! { transfer_reserve_asset { let (sender_account, sender_location) = account_and_location::(1); let dest_location = T::valid_destination()?; - let dest_account = T::AccountIdConverter::convert(dest_location.clone()).unwrap(); + let dest_account = T::AccountIdConverter::convert_location(&dest_location).unwrap(); let asset = T::get_multi_asset(); >::deposit_asset( @@ -171,7 +171,7 @@ benchmarks_instance_pallet! { // our dest must have no balance initially. let dest_location = T::valid_destination()?; - let dest_account = T::AccountIdConverter::convert(dest_location.clone()).unwrap(); + let dest_account = T::AccountIdConverter::convert_location(&dest_location).unwrap(); assert!(T::TransactAsset::balance(&dest_account).is_zero()); let mut executor = new_executor::(Default::default()); @@ -197,7 +197,7 @@ benchmarks_instance_pallet! { // our dest must have no balance initially. let dest_location = T::valid_destination()?; - let dest_account = T::AccountIdConverter::convert(dest_location.clone()).unwrap(); + let dest_account = T::AccountIdConverter::convert_location(&dest_location).unwrap(); assert!(T::TransactAsset::balance(&dest_account).is_zero()); let mut executor = new_executor::(Default::default()); diff --git a/xcm/pallet-xcm-benchmarks/src/lib.rs b/xcm/pallet-xcm-benchmarks/src/lib.rs index ba6541d373de..c6a963435953 100644 --- a/xcm/pallet-xcm-benchmarks/src/lib.rs +++ b/xcm/pallet-xcm-benchmarks/src/lib.rs @@ -22,7 +22,7 @@ use codec::Encode; use frame_benchmarking::{account, BenchmarkError}; use sp_std::prelude::*; use xcm::latest::prelude::*; -use xcm_executor::{traits::Convert, Config as XcmConfig}; +use xcm_executor::{traits::ConvertLocation, Config as XcmConfig}; pub mod fungible; pub mod generic; @@ -39,7 +39,7 @@ pub trait Config: frame_system::Config { type XcmConfig: XcmConfig; /// A converter between a multi-location to a sovereign account. - type AccountIdConverter: Convert; + type AccountIdConverter: ConvertLocation; /// Does any necessary setup to create a valid destination for XCM messages. /// Returns that destination's multi-location to be used in benchmarks. @@ -104,7 +104,7 @@ fn account_id_junction(index: u32) -> Junction { pub fn account_and_location(index: u32) -> (T::AccountId, MultiLocation) { let location: MultiLocation = account_id_junction::(index).into(); - let account = T::AccountIdConverter::convert(location.clone()).unwrap(); + let account = T::AccountIdConverter::convert_location(&location).unwrap(); (account, location) } diff --git a/xcm/pallet-xcm-benchmarks/src/mock.rs b/xcm/pallet-xcm-benchmarks/src/mock.rs index 5cb7dc8f4df5..e02c5bf08615 100644 --- a/xcm/pallet-xcm-benchmarks/src/mock.rs +++ b/xcm/pallet-xcm-benchmarks/src/mock.rs @@ -47,18 +47,14 @@ impl xcm_executor::traits::OnResponse for DevNull { } pub struct AccountIdConverter; -impl xcm_executor::traits::Convert for AccountIdConverter { - fn convert(ml: MultiLocation) -> Result { +impl xcm_executor::traits::ConvertLocation for AccountIdConverter { + fn convert_location(ml: &MultiLocation) -> Option { match ml { MultiLocation { parents: 0, interior: X1(Junction::AccountId32 { id, .. }) } => - Ok(::decode(&mut &*id.to_vec()).unwrap()), - _ => Err(ml), + Some(::decode(&mut &*id.to_vec()).unwrap()), + _ => None, } } - - fn reverse(acc: u64) -> Result { - Err(acc) - } } parameter_types! { diff --git a/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index 61243c7d682b..c53c9119bbd2 100644 --- a/xcm/pallet-xcm/src/lib.rs +++ b/xcm/pallet-xcm/src/lib.rs @@ -40,7 +40,7 @@ use sp_runtime::{ }; use sp_std::{boxed::Box, marker::PhantomData, prelude::*, result::Result, vec}; use xcm::{latest::QueryResponseInfo, prelude::*}; -use xcm_executor::traits::{Convert, ConvertOrigin, Properties}; +use xcm_executor::traits::{ConvertOrigin, Properties}; use frame_support::{ dispatch::{Dispatchable, GetDispatchInfo}, @@ -52,8 +52,8 @@ use frame_system::pallet_prelude::*; pub use pallet::*; use xcm_executor::{ traits::{ - CheckSuspension, ClaimAssets, DropAssets, MatchesFungible, OnResponse, QueryHandler, - QueryResponseStatus, VersionChangeNotifier, WeightBounds, + CheckSuspension, ClaimAssets, ConvertLocation, DropAssets, MatchesFungible, OnResponse, + QueryHandler, QueryResponseStatus, VersionChangeNotifier, WeightBounds, }, Assets, }; @@ -247,7 +247,7 @@ pub mod pallet { type TrustedLockers: ContainsPair; /// How to get an `AccountId` value from a `MultiLocation`, useful for handling asset locks. - type SovereignAccountOf: Convert; + type SovereignAccountOf: ConvertLocation; /// The maximum number of local XCM locks that a single account may have. type MaxLockers: Get; @@ -1750,7 +1750,7 @@ impl xcm_executor::traits::AssetLock for Pallet { owner: MultiLocation, ) -> Result, xcm_executor::traits::LockError> { use xcm_executor::traits::LockError::*; - let sovereign_account = T::SovereignAccountOf::convert_ref(&owner).map_err(|_| BadOwner)?; + let sovereign_account = T::SovereignAccountOf::convert_location(&owner).ok_or(BadOwner)?; let amount = T::CurrencyMatcher::matches_fungible(&asset).ok_or(UnknownAsset)?; ensure!(T::Currency::free_balance(&sovereign_account) >= amount, AssetNotOwned); let locks = LockedFungibles::::get(&sovereign_account).unwrap_or_default(); @@ -1765,7 +1765,7 @@ impl xcm_executor::traits::AssetLock for Pallet { owner: MultiLocation, ) -> Result, xcm_executor::traits::LockError> { use xcm_executor::traits::LockError::*; - let sovereign_account = T::SovereignAccountOf::convert_ref(&owner).map_err(|_| BadOwner)?; + let sovereign_account = T::SovereignAccountOf::convert_location(&owner).ok_or(BadOwner)?; let amount = T::CurrencyMatcher::matches_fungible(&asset).ok_or(UnknownAsset)?; ensure!(T::Currency::free_balance(&sovereign_account) >= amount, AssetNotOwned); let locks = LockedFungibles::::get(&sovereign_account).unwrap_or_default(); @@ -1787,7 +1787,7 @@ impl xcm_executor::traits::AssetLock for Pallet { NonFungible(_) => return Err(Unimplemented), }; owner.remove_network_id(); - let account = T::SovereignAccountOf::convert_ref(&owner).map_err(|_| BadOwner)?; + let account = T::SovereignAccountOf::convert_location(&owner).ok_or(BadOwner)?; let locker = locker.into(); let owner = owner.into(); let id: VersionedAssetId = asset.id.into(); @@ -1815,7 +1815,7 @@ impl xcm_executor::traits::AssetLock for Pallet { NonFungible(_) => return Err(Unimplemented), }; owner.remove_network_id(); - let sovereign_account = T::SovereignAccountOf::convert_ref(&owner).map_err(|_| BadOwner)?; + let sovereign_account = T::SovereignAccountOf::convert_location(&owner).ok_or(BadOwner)?; let locker = locker.into(); let owner = owner.into(); let id: VersionedAssetId = asset.id.into(); diff --git a/xcm/xcm-builder/src/asset_conversion.rs b/xcm/xcm-builder/src/asset_conversion.rs index 5db425a75b8b..583231d792dd 100644 --- a/xcm/xcm-builder/src/asset_conversion.rs +++ b/xcm/xcm-builder/src/asset_conversion.rs @@ -17,9 +17,10 @@ //! Adapters to work with `frame_support::traits::tokens::fungibles` through XCM. use frame_support::traits::{Contains, Get}; -use sp_std::{borrow::Borrow, marker::PhantomData, prelude::*, result}; +use sp_runtime::traits::MaybeEquivalence; +use sp_std::{marker::PhantomData, prelude::*, result}; use xcm::latest::prelude::*; -use xcm_executor::traits::{Convert, Error as MatchError, MatchesFungibles, MatchesNonFungibles}; +use xcm_executor::traits::{Error as MatchError, MatchesFungibles, MatchesNonFungibles}; /// Converter struct implementing `AssetIdConversion` converting a numeric asset ID (must be `TryFrom/TryInto`) into /// a `GeneralIndex` junction, prefixed by some `MultiLocation` value. The `MultiLocation` value will typically be a @@ -27,12 +28,15 @@ use xcm_executor::traits::{Convert, Error as MatchError, MatchesFungibles, Match pub struct AsPrefixedGeneralIndex( PhantomData<(Prefix, AssetId, ConvertAssetId)>, ); -impl, AssetId: Clone, ConvertAssetId: Convert> - Convert for AsPrefixedGeneralIndex +impl< + Prefix: Get, + AssetId: Clone, + ConvertAssetId: MaybeEquivalence, + > MaybeEquivalence + for AsPrefixedGeneralIndex { - fn convert_ref(id: impl Borrow) -> result::Result { + fn convert(id: &MultiLocation) -> Option { let prefix = Prefix::get(); - let id = id.borrow(); if prefix.parent_count() != id.parent_count() || prefix .interior() @@ -40,18 +44,18 @@ impl, AssetId: Clone, ConvertAssetId: Convert ConvertAssetId::convert_ref(id), - _ => Err(()), + Some(Junction::GeneralIndex(id)) => ConvertAssetId::convert(id), + _ => None, } } - fn reverse_ref(what: impl Borrow) -> result::Result { + fn convert_back(what: &AssetId) -> Option { let mut location = Prefix::get(); - let id = ConvertAssetId::reverse_ref(what)?; - location.push_interior(Junction::GeneralIndex(id)).map_err(|_| ())?; - Ok(location) + let id = ConvertAssetId::convert_back(what)?; + location.push_interior(Junction::GeneralIndex(id)).ok()?; + Some(location) } } @@ -61,8 +65,8 @@ pub struct ConvertedConcreteId( impl< AssetId: Clone, Balance: Clone, - ConvertAssetId: Convert, - ConvertBalance: Convert, + ConvertAssetId: MaybeEquivalence, + ConvertBalance: MaybeEquivalence, > MatchesFungibles for ConvertedConcreteId { @@ -71,18 +75,17 @@ impl< (Fungible(ref amount), Concrete(ref id)) => (amount, id), _ => return Err(MatchError::AssetNotHandled), }; - let what = - ConvertAssetId::convert_ref(id).map_err(|_| MatchError::AssetIdConversionFailed)?; - let amount = ConvertBalance::convert_ref(amount) - .map_err(|_| MatchError::AmountToBalanceConversionFailed)?; + let what = ConvertAssetId::convert(id).ok_or(MatchError::AssetIdConversionFailed)?; + let amount = + ConvertBalance::convert(amount).ok_or(MatchError::AmountToBalanceConversionFailed)?; Ok((what, amount)) } } impl< ClassId: Clone, InstanceId: Clone, - ConvertClassId: Convert, - ConvertInstanceId: Convert, + ConvertClassId: MaybeEquivalence, + ConvertInstanceId: MaybeEquivalence, > MatchesNonFungibles for ConvertedConcreteId { @@ -91,10 +94,9 @@ impl< (NonFungible(ref instance), Concrete(ref class)) => (instance, class), _ => return Err(MatchError::AssetNotHandled), }; - let what = - ConvertClassId::convert_ref(class).map_err(|_| MatchError::AssetIdConversionFailed)?; - let instance = ConvertInstanceId::convert_ref(instance) - .map_err(|_| MatchError::InstanceConversionFailed)?; + let what = ConvertClassId::convert(class).ok_or(MatchError::AssetIdConversionFailed)?; + let instance = + ConvertInstanceId::convert(instance).ok_or(MatchError::InstanceConversionFailed)?; Ok((what, instance)) } } @@ -105,8 +107,8 @@ pub struct ConvertedAbstractId( impl< AssetId: Clone, Balance: Clone, - ConvertAssetId: Convert<[u8; 32], AssetId>, - ConvertBalance: Convert, + ConvertAssetId: MaybeEquivalence<[u8; 32], AssetId>, + ConvertBalance: MaybeEquivalence, > MatchesFungibles for ConvertedAbstractId { @@ -115,18 +117,17 @@ impl< (Fungible(ref amount), Abstract(ref id)) => (amount, id), _ => return Err(MatchError::AssetNotHandled), }; - let what = - ConvertAssetId::convert_ref(id).map_err(|_| MatchError::AssetIdConversionFailed)?; - let amount = ConvertBalance::convert_ref(amount) - .map_err(|_| MatchError::AmountToBalanceConversionFailed)?; + let what = ConvertAssetId::convert(id).ok_or(MatchError::AssetIdConversionFailed)?; + let amount = + ConvertBalance::convert(amount).ok_or(MatchError::AmountToBalanceConversionFailed)?; Ok((what, amount)) } } impl< ClassId: Clone, InstanceId: Clone, - ConvertClassId: Convert<[u8; 32], ClassId>, - ConvertInstanceId: Convert, + ConvertClassId: MaybeEquivalence<[u8; 32], ClassId>, + ConvertInstanceId: MaybeEquivalence, > MatchesNonFungibles for ConvertedAbstractId { @@ -135,10 +136,9 @@ impl< (NonFungible(ref instance), Abstract(ref class)) => (instance, class), _ => return Err(MatchError::AssetNotHandled), }; - let what = - ConvertClassId::convert_ref(class).map_err(|_| MatchError::AssetIdConversionFailed)?; - let instance = ConvertInstanceId::convert_ref(instance) - .map_err(|_| MatchError::InstanceConversionFailed)?; + let what = ConvertClassId::convert(class).ok_or(MatchError::AssetIdConversionFailed)?; + let instance = + ConvertInstanceId::convert(instance).ok_or(MatchError::InstanceConversionFailed)?; Ok((what, instance)) } } @@ -155,8 +155,8 @@ impl< AssetId: Clone, Balance: Clone, MatchAssetId: Contains, - ConvertAssetId: Convert, - ConvertBalance: Convert, + ConvertAssetId: MaybeEquivalence, + ConvertBalance: MaybeEquivalence, > MatchesFungibles for MatchedConvertedConcreteId { @@ -165,10 +165,9 @@ impl< (Fungible(ref amount), Concrete(ref id)) if MatchAssetId::contains(id) => (amount, id), _ => return Err(MatchError::AssetNotHandled), }; - let what = - ConvertAssetId::convert_ref(id).map_err(|_| MatchError::AssetIdConversionFailed)?; - let amount = ConvertBalance::convert_ref(amount) - .map_err(|_| MatchError::AmountToBalanceConversionFailed)?; + let what = ConvertAssetId::convert(id).ok_or(MatchError::AssetIdConversionFailed)?; + let amount = + ConvertBalance::convert(amount).ok_or(MatchError::AmountToBalanceConversionFailed)?; Ok((what, amount)) } } @@ -176,8 +175,8 @@ impl< ClassId: Clone, InstanceId: Clone, MatchClassId: Contains, - ConvertClassId: Convert, - ConvertInstanceId: Convert, + ConvertClassId: MaybeEquivalence, + ConvertInstanceId: MaybeEquivalence, > MatchesNonFungibles for MatchedConvertedConcreteId { @@ -187,10 +186,9 @@ impl< (instance, class), _ => return Err(MatchError::AssetNotHandled), }; - let what = - ConvertClassId::convert_ref(class).map_err(|_| MatchError::AssetIdConversionFailed)?; - let instance = ConvertInstanceId::convert_ref(instance) - .map_err(|_| MatchError::InstanceConversionFailed)?; + let what = ConvertClassId::convert(class).ok_or(MatchError::AssetIdConversionFailed)?; + let instance = + ConvertInstanceId::convert(instance).ok_or(MatchError::InstanceConversionFailed)?; Ok((what, instance)) } } @@ -286,13 +284,13 @@ mod tests { // ConvertedConcreteId cfg struct ClassInstanceIdConverter; - impl Convert for ClassInstanceIdConverter { - fn convert_ref(value: impl Borrow) -> Result { - value.borrow().clone().try_into().map_err(|_| ()) + impl MaybeEquivalence for ClassInstanceIdConverter { + fn convert(value: &AssetInstance) -> Option { + value.clone().try_into().ok() } - fn reverse_ref(value: impl Borrow) -> Result { - Ok(AssetInstance::from(value.borrow().clone())) + fn convert_back(value: &ClassInstanceId) -> Option { + Some(AssetInstance::from(value.clone())) } } diff --git a/xcm/xcm-builder/src/currency_adapter.rs b/xcm/xcm-builder/src/currency_adapter.rs index 2c83049c879c..32db840858a9 100644 --- a/xcm/xcm-builder/src/currency_adapter.rs +++ b/xcm/xcm-builder/src/currency_adapter.rs @@ -22,7 +22,7 @@ use sp_runtime::traits::CheckedSub; use sp_std::{marker::PhantomData, result}; use xcm::latest::{Error as XcmError, MultiAsset, MultiLocation, Result, XcmContext}; use xcm_executor::{ - traits::{Convert, MatchesFungible, TransactAsset}, + traits::{ConvertLocation, MatchesFungible, TransactAsset}, Assets, }; @@ -64,7 +64,7 @@ impl From for XcmError { /// pub CheckingAccount: AccountId = PalletId(*b"checking").into_account_truncating(); /// } /// -/// /// Some items that implement `Convert`. Can be more, but for now we just assume we accept +/// /// Some items that implement `ConvertLocation`. Can be more, but for now we just assume we accept /// /// messages from the parent (relay chain). /// pub type LocationConverter = (ParentIsPreset); /// @@ -92,7 +92,7 @@ pub struct CurrencyAdapter, Matcher: MatchesFungible, - AccountIdConverter: Convert, + AccountIdConverter: ConvertLocation, AccountId: Clone, // can't get away without it since Currency is generic over it. CheckedAccount: Get>, > CurrencyAdapter @@ -133,7 +133,7 @@ impl< impl< Currency: frame_support::traits::Currency, Matcher: MatchesFungible, - AccountIdConverter: Convert, + AccountIdConverter: ConvertLocation, AccountId: Clone, // can't get away without it since Currency is generic over it. CheckedAccount: Get>, > TransactAsset @@ -196,7 +196,7 @@ impl< // Check we handle this asset. let amount = Matcher::matches_fungible(&what).ok_or(Error::AssetNotHandled)?; let who = - AccountIdConverter::convert_ref(who).map_err(|()| Error::AccountIdConversionFailed)?; + AccountIdConverter::convert_location(who).ok_or(Error::AccountIdConversionFailed)?; let _imbalance = Currency::deposit_creating(&who, amount); Ok(()) } @@ -210,7 +210,7 @@ impl< // Check we handle this asset. let amount = Matcher::matches_fungible(what).ok_or(Error::AssetNotHandled)?; let who = - AccountIdConverter::convert_ref(who).map_err(|()| Error::AccountIdConversionFailed)?; + AccountIdConverter::convert_location(who).ok_or(Error::AccountIdConversionFailed)?; Currency::withdraw(&who, amount, WithdrawReasons::TRANSFER, AllowDeath) .map_err(|e| XcmError::FailedToTransactAsset(e.into()))?; Ok(what.clone().into()) @@ -225,9 +225,9 @@ impl< log::trace!(target: "xcm::currency_adapter", "internal_transfer_asset asset: {:?}, from: {:?}, to: {:?}", asset, from, to); let amount = Matcher::matches_fungible(asset).ok_or(Error::AssetNotHandled)?; let from = - AccountIdConverter::convert_ref(from).map_err(|()| Error::AccountIdConversionFailed)?; + AccountIdConverter::convert_location(from).ok_or(Error::AccountIdConversionFailed)?; let to = - AccountIdConverter::convert_ref(to).map_err(|()| Error::AccountIdConversionFailed)?; + AccountIdConverter::convert_location(to).ok_or(Error::AccountIdConversionFailed)?; Currency::transfer(&from, &to, amount, AllowDeath) .map_err(|e| XcmError::FailedToTransactAsset(e.into()))?; Ok(asset.clone().into()) diff --git a/xcm/xcm-builder/src/fungibles_adapter.rs b/xcm/xcm-builder/src/fungibles_adapter.rs index d2fdf28c760f..bcb0e9c870b3 100644 --- a/xcm/xcm-builder/src/fungibles_adapter.rs +++ b/xcm/xcm-builder/src/fungibles_adapter.rs @@ -24,7 +24,7 @@ use frame_support::traits::{ }; use sp_std::{marker::PhantomData, prelude::*, result}; use xcm::latest::prelude::*; -use xcm_executor::traits::{Convert, Error as MatchError, MatchesFungibles, TransactAsset}; +use xcm_executor::traits::{ConvertLocation, Error as MatchError, MatchesFungibles, TransactAsset}; /// `TransactAsset` implementation to convert a `fungibles` implementation to become usable in XCM. pub struct FungiblesTransferAdapter( @@ -33,7 +33,7 @@ pub struct FungiblesTransferAdapter, Matcher: MatchesFungibles, - AccountIdConverter: Convert, + AccountIdConverter: ConvertLocation, AccountId: Clone, // can't get away without it since Currency is generic over it. > TransactAsset for FungiblesTransferAdapter { @@ -50,10 +50,10 @@ impl< ); // Check we handle this asset. let (asset_id, amount) = Matcher::matches_fungibles(what)?; - let source = AccountIdConverter::convert_ref(from) - .map_err(|()| MatchError::AccountIdConversionFailed)?; - let dest = AccountIdConverter::convert_ref(to) - .map_err(|()| MatchError::AccountIdConversionFailed)?; + let source = AccountIdConverter::convert_location(from) + .ok_or(MatchError::AccountIdConversionFailed)?; + let dest = AccountIdConverter::convert_location(to) + .ok_or(MatchError::AccountIdConversionFailed)?; Assets::transfer(asset_id, &source, &dest, amount, Preserve) .map_err(|e| XcmError::FailedToTransactAsset(e.into()))?; Ok(what.clone().into()) @@ -149,7 +149,7 @@ pub struct FungiblesMutateAdapter< impl< Assets: fungibles::Mutate, Matcher: MatchesFungibles, - AccountIdConverter: Convert, + AccountIdConverter: ConvertLocation, AccountId: Clone, // can't get away without it since Currency is generic over it. CheckAsset: AssetChecking, CheckingAccount: Get, @@ -184,7 +184,7 @@ impl< impl< Assets: fungibles::Mutate, Matcher: MatchesFungibles, - AccountIdConverter: Convert, + AccountIdConverter: ConvertLocation, AccountId: Clone, // can't get away without it since Currency is generic over it. CheckAsset: AssetChecking, CheckingAccount: Get, @@ -282,8 +282,8 @@ impl< ); // Check we handle this asset. let (asset_id, amount) = Matcher::matches_fungibles(what)?; - let who = AccountIdConverter::convert_ref(who) - .map_err(|()| MatchError::AccountIdConversionFailed)?; + let who = AccountIdConverter::convert_location(who) + .ok_or(MatchError::AccountIdConversionFailed)?; Assets::mint_into(asset_id, &who, amount) .map_err(|e| XcmError::FailedToTransactAsset(e.into()))?; Ok(()) @@ -301,8 +301,8 @@ impl< ); // Check we handle this asset. let (asset_id, amount) = Matcher::matches_fungibles(what)?; - let who = AccountIdConverter::convert_ref(who) - .map_err(|()| MatchError::AccountIdConversionFailed)?; + let who = AccountIdConverter::convert_location(who) + .ok_or(MatchError::AccountIdConversionFailed)?; Assets::burn_from(asset_id, &who, amount, Exact, Polite) .map_err(|e| XcmError::FailedToTransactAsset(e.into()))?; Ok(what.clone().into()) @@ -320,7 +320,7 @@ pub struct FungiblesAdapter< impl< Assets: fungibles::Mutate, Matcher: MatchesFungibles, - AccountIdConverter: Convert, + AccountIdConverter: ConvertLocation, AccountId: Clone, // can't get away without it since Currency is generic over it. CheckAsset: AssetChecking, CheckingAccount: Get, diff --git a/xcm/xcm-builder/src/lib.rs b/xcm/xcm-builder/src/lib.rs index 124e83d3c338..5ad7cc025029 100644 --- a/xcm/xcm-builder/src/lib.rs +++ b/xcm/xcm-builder/src/lib.rs @@ -27,10 +27,14 @@ mod tests; pub mod test_utils; mod location_conversion; +#[allow(deprecated)] +pub use location_conversion::ForeignChainAliasAccount; pub use location_conversion::{ Account32Hash, AccountId32Aliases, AccountKey20Aliases, AliasesIntoAccountId32, - ChildParachainConvertsVia, GlobalConsensusParachainConvertsFor, ParentIsPreset, - SiblingParachainConvertsVia, + ChildParachainConvertsVia, DescribeAccountId32Terminal, DescribeAccountIdTerminal, + DescribeAccountKey20Terminal, DescribeAllTerminal, DescribeFamily, DescribeLocation, + DescribePalletTerminal, DescribeTerminus, GlobalConsensusParachainConvertsFor, + HashedDescription, ParentIsPreset, SiblingParachainConvertsVia, }; mod origin_conversion; diff --git a/xcm/xcm-builder/src/location_conversion.rs b/xcm/xcm-builder/src/location_conversion.rs index a5e6b55824e8..dc327c08d067 100644 --- a/xcm/xcm-builder/src/location_conversion.rs +++ b/xcm/xcm-builder/src/location_conversion.rs @@ -16,12 +16,155 @@ use crate::universal_exports::ensure_is_remote; use frame_support::traits::Get; -use parity_scale_codec::{Decode, Encode}; +use parity_scale_codec::{Compact, Decode, Encode}; use sp_io::hashing::blake2_256; -use sp_runtime::traits::{AccountIdConversion, TrailingZeroInput}; -use sp_std::{borrow::Borrow, marker::PhantomData}; +use sp_runtime::traits::{AccountIdConversion, Convert, TrailingZeroInput}; +use sp_std::{marker::PhantomData, prelude::*}; use xcm::latest::prelude::*; -use xcm_executor::traits::Convert; +use xcm_executor::traits::ConvertLocation; + +/// Means of converting a location into a stable and unique descriptive identifier. +pub trait DescribeLocation { + /// Create a description of the given `location` if possible. No two locations should have the + /// same descriptor. + fn describe_location(location: &MultiLocation) -> Option>; +} + +#[impl_trait_for_tuples::impl_for_tuples(30)] +impl DescribeLocation for Tuple { + fn describe_location(l: &MultiLocation) -> Option> { + for_tuples!( #( + match Tuple::describe_location(l) { + Some(result) => return Some(result), + None => {}, + } + )* ); + None + } +} + +pub struct DescribeTerminus; +impl DescribeLocation for DescribeTerminus { + fn describe_location(l: &MultiLocation) -> Option> { + match (l.parents, &l.interior) { + (0, Here) => Some(Vec::new()), + _ => return None, + } + } +} + +pub struct DescribePalletTerminal; +impl DescribeLocation for DescribePalletTerminal { + fn describe_location(l: &MultiLocation) -> Option> { + match (l.parents, &l.interior) { + (0, X1(PalletInstance(i))) => + Some((b"Pallet", Compact::::from(*i as u32)).encode()), + _ => return None, + } + } +} + +pub struct DescribeAccountId32Terminal; +impl DescribeLocation for DescribeAccountId32Terminal { + fn describe_location(l: &MultiLocation) -> Option> { + match (l.parents, &l.interior) { + (0, X1(AccountId32 { id, .. })) => Some((b"AccountId32", id).encode()), + _ => return None, + } + } +} + +pub struct DescribeAccountKey20Terminal; +impl DescribeLocation for DescribeAccountKey20Terminal { + fn describe_location(l: &MultiLocation) -> Option> { + match (l.parents, &l.interior) { + (0, X1(AccountKey20 { key, .. })) => Some((b"AccountKey20", key).encode()), + _ => return None, + } + } +} + +pub type DescribeAccountIdTerminal = (DescribeAccountId32Terminal, DescribeAccountKey20Terminal); + +pub type DescribeAllTerminal = ( + DescribeTerminus, + DescribePalletTerminal, + DescribeAccountId32Terminal, + DescribeAccountKey20Terminal, +); + +pub struct DescribeFamily(PhantomData); +impl DescribeLocation for DescribeFamily { + fn describe_location(l: &MultiLocation) -> Option> { + match (l.parents, l.interior.first()) { + (0, Some(Parachain(index))) => { + let tail = l.interior.split_first().0; + let interior = Suffix::describe_location(&tail.into())?; + Some((b"ChildChain", Compact::::from(*index), interior).encode()) + }, + (1, Some(Parachain(index))) => { + let tail = l.interior.split_first().0; + let interior = Suffix::describe_location(&tail.into())?; + Some((b"SiblingChain", Compact::::from(*index), interior).encode()) + }, + (1, _) => { + let tail = l.interior.into(); + let interior = Suffix::describe_location(&tail)?; + Some((b"ParentChain", interior).encode()) + }, + _ => return None, + } + } +} + +pub struct HashedDescription(PhantomData<(AccountId, Describe)>); +impl + Clone, Describe: DescribeLocation> ConvertLocation + for HashedDescription +{ + fn convert_location(value: &MultiLocation) -> Option { + Some(blake2_256(&Describe::describe_location(value)?).into()) + } +} + +/// This is a describer for legacy support of the `ForeignChainAliasAccount` preimage. New chains +/// are recommended to use the more extensible `HashedDescription` type. +pub struct LegacyDescribeForeignChainAccount; +impl DescribeLocation for LegacyDescribeForeignChainAccount { + fn describe_location(location: &MultiLocation) -> Option> { + Some(match location { + // Used on the relay chain for sending paras that use 32 byte accounts + MultiLocation { + parents: 0, + interior: X2(Parachain(para_id), AccountId32 { id, .. }), + } => LegacyDescribeForeignChainAccount::from_para_32(para_id, id, 0), + + // Used on the relay chain for sending paras that use 20 byte accounts + MultiLocation { + parents: 0, + interior: X2(Parachain(para_id), AccountKey20 { key, .. }), + } => LegacyDescribeForeignChainAccount::from_para_20(para_id, key, 0), + + // Used on para-chain for sending paras that use 32 byte accounts + MultiLocation { + parents: 1, + interior: X2(Parachain(para_id), AccountId32 { id, .. }), + } => LegacyDescribeForeignChainAccount::from_para_32(para_id, id, 1), + + // Used on para-chain for sending paras that use 20 byte accounts + MultiLocation { + parents: 1, + interior: X2(Parachain(para_id), AccountKey20 { key, .. }), + } => LegacyDescribeForeignChainAccount::from_para_20(para_id, key, 1), + + // Used on para-chain for sending from the relay chain + MultiLocation { parents: 1, interior: X1(AccountId32 { id, .. }) } => + LegacyDescribeForeignChainAccount::from_relay_32(id, 1), + + // No other conversions provided + _ => return None, + }) + } +} /// Prefix for generating alias account for accounts coming /// from chains that use 32 byte long representations. @@ -35,6 +178,39 @@ pub const FOREIGN_CHAIN_PREFIX_PARA_20: [u8; 37] = *b"ForeignChainAliasAccountPr /// from the relay chain using 32 byte long representations. pub const FOREIGN_CHAIN_PREFIX_RELAY: [u8; 36] = *b"ForeignChainAliasAccountPrefix_Relay"; +impl LegacyDescribeForeignChainAccount { + fn from_para_32(para_id: &u32, id: &[u8; 32], parents: u8) -> Vec { + (FOREIGN_CHAIN_PREFIX_PARA_32, para_id, id, parents).encode() + } + + fn from_para_20(para_id: &u32, id: &[u8; 20], parents: u8) -> Vec { + (FOREIGN_CHAIN_PREFIX_PARA_20, para_id, id, parents).encode() + } + + fn from_relay_32(id: &[u8; 32], parents: u8) -> Vec { + (FOREIGN_CHAIN_PREFIX_RELAY, id, parents).encode() + } +} + +/// This is deprecated in favour of the more modular `HashedDescription` converter. If +/// your chain has previously used this, then you can retain backwards compatibility using +/// `HashedDescription` and a tuple with `LegacyDescribeForeignChainAccount` as the first +/// element. For example: +/// +/// ```nocompile +/// pub type LocationToAccount = HashedDescription< +/// // Legacy conversion - MUST BE FIRST! +/// LegacyDescribeForeignChainAccount, +/// // Other conversions +/// DescribeTerminus, +/// DescribePalletTerminal, +/// >; +/// ``` +/// +/// This type is equivalent to the above but without any other conversions. +/// +/// ### Old documentation +/// /// This converter will for a given `AccountId32`/`AccountKey20` /// always generate the same "remote" account for a specific /// sending chain. @@ -68,145 +244,58 @@ pub const FOREIGN_CHAIN_PREFIX_RELAY: [u8; 36] = *b"ForeignChainAliasAccountPref /// /// Note that the alias accounts have overlaps but never on the same /// chain when the sender comes from different chains. -pub struct ForeignChainAliasAccount(PhantomData); -impl + Clone> Convert - for ForeignChainAliasAccount -{ - fn convert_ref(location: impl Borrow) -> Result { - let entropy = match location.borrow() { - // Used on the relay chain for sending paras that use 32 byte accounts - MultiLocation { - parents: 0, - interior: X2(Parachain(para_id), AccountId32 { id, .. }), - } => ForeignChainAliasAccount::::from_para_32(para_id, id, 0), - - // Used on the relay chain for sending paras that use 20 byte accounts - MultiLocation { - parents: 0, - interior: X2(Parachain(para_id), AccountKey20 { key, .. }), - } => ForeignChainAliasAccount::::from_para_20(para_id, key, 0), - - // Used on para-chain for sending paras that use 32 byte accounts - MultiLocation { - parents: 1, - interior: X2(Parachain(para_id), AccountId32 { id, .. }), - } => ForeignChainAliasAccount::::from_para_32(para_id, id, 1), - - // Used on para-chain for sending paras that use 20 byte accounts - MultiLocation { - parents: 1, - interior: X2(Parachain(para_id), AccountKey20 { key, .. }), - } => ForeignChainAliasAccount::::from_para_20(para_id, key, 1), - - // Used on para-chain for sending from the relay chain - MultiLocation { parents: 1, interior: X1(AccountId32 { id, .. }) } => - ForeignChainAliasAccount::::from_relay_32(id, 1), - - // No other conversions provided - _ => return Err(()), - }; - - Ok(entropy.into()) - } - - fn reverse_ref(_: impl Borrow) -> Result { - Err(()) - } -} - -impl ForeignChainAliasAccount { - fn from_para_32(para_id: &u32, id: &[u8; 32], parents: u8) -> [u8; 32] { - (FOREIGN_CHAIN_PREFIX_PARA_32, para_id, id, parents).using_encoded(blake2_256) - } - - fn from_para_20(para_id: &u32, id: &[u8; 20], parents: u8) -> [u8; 32] { - (FOREIGN_CHAIN_PREFIX_PARA_20, para_id, id, parents).using_encoded(blake2_256) - } - - fn from_relay_32(id: &[u8; 32], parents: u8) -> [u8; 32] { - (FOREIGN_CHAIN_PREFIX_RELAY, id, parents).using_encoded(blake2_256) - } -} +#[deprecated = "Use `HashedDescription` instead"] +pub type ForeignChainAliasAccount = + HashedDescription; pub struct Account32Hash(PhantomData<(Network, AccountId)>); impl>, AccountId: From<[u8; 32]> + Into<[u8; 32]> + Clone> - Convert for Account32Hash + ConvertLocation for Account32Hash { - fn convert_ref(location: impl Borrow) -> Result { - Ok(("multiloc", location.borrow()).using_encoded(blake2_256).into()) - } - - fn reverse_ref(_: impl Borrow) -> Result { - Err(()) + fn convert_location(location: &MultiLocation) -> Option { + Some(("multiloc", location).using_encoded(blake2_256).into()) } } /// A [`MultiLocation`] consisting of a single `Parent` [`Junction`] will be converted to the /// parent `AccountId`. pub struct ParentIsPreset(PhantomData); -impl Convert - for ParentIsPreset -{ - fn convert_ref(location: impl Borrow) -> Result { - if location.borrow().contains_parents_only(1) { - Ok(b"Parent" - .using_encoded(|b| AccountId::decode(&mut TrailingZeroInput::new(b))) - .expect("infinite length input; no invalid inputs for type; qed")) - } else { - Err(()) - } - } - - fn reverse_ref(who: impl Borrow) -> Result { - let parent_account = b"Parent" - .using_encoded(|b| AccountId::decode(&mut TrailingZeroInput::new(b))) - .expect("infinite length input; no invalid inputs for type; qed"); - if who.borrow() == &parent_account { - Ok(Parent.into()) +impl ConvertLocation for ParentIsPreset { + fn convert_location(location: &MultiLocation) -> Option { + if location.contains_parents_only(1) { + Some( + b"Parent" + .using_encoded(|b| AccountId::decode(&mut TrailingZeroInput::new(b))) + .expect("infinite length input; no invalid inputs for type; qed"), + ) } else { - Err(()) + None } } } pub struct ChildParachainConvertsVia(PhantomData<(ParaId, AccountId)>); impl + Into + AccountIdConversion, AccountId: Clone> - Convert for ChildParachainConvertsVia + ConvertLocation for ChildParachainConvertsVia { - fn convert_ref(location: impl Borrow) -> Result { - match location.borrow() { + fn convert_location(location: &MultiLocation) -> Option { + match location { MultiLocation { parents: 0, interior: X1(Parachain(id)) } => - Ok(ParaId::from(*id).into_account_truncating()), - _ => Err(()), - } - } - - fn reverse_ref(who: impl Borrow) -> Result { - if let Some(id) = ParaId::try_from_account(who.borrow()) { - Ok(Parachain(id.into()).into()) - } else { - Err(()) + Some(ParaId::from(*id).into_account_truncating()), + _ => None, } } } pub struct SiblingParachainConvertsVia(PhantomData<(ParaId, AccountId)>); impl + Into + AccountIdConversion, AccountId: Clone> - Convert for SiblingParachainConvertsVia + ConvertLocation for SiblingParachainConvertsVia { - fn convert_ref(location: impl Borrow) -> Result { - match location.borrow() { + fn convert_location(location: &MultiLocation) -> Option { + match location { MultiLocation { parents: 1, interior: X1(Parachain(id)) } => - Ok(ParaId::from(*id).into_account_truncating()), - _ => Err(()), - } - } - - fn reverse_ref(who: impl Borrow) -> Result { - if let Some(id) = ParaId::try_from_account(who.borrow()) { - Ok(MultiLocation::new(1, X1(Parachain(id.into())))) - } else { - Err(()) + Some(ParaId::from(*id).into_account_truncating()), + _ => None, } } } @@ -214,21 +303,17 @@ impl + Into + AccountIdConversion, AccountId: /// Extracts the `AccountId32` from the passed `location` if the network matches. pub struct AccountId32Aliases(PhantomData<(Network, AccountId)>); impl>, AccountId: From<[u8; 32]> + Into<[u8; 32]> + Clone> - Convert for AccountId32Aliases + ConvertLocation for AccountId32Aliases { - fn convert(location: MultiLocation) -> Result { - let id = match location { + fn convert_location(location: &MultiLocation) -> Option { + let id = match *location { MultiLocation { parents: 0, interior: X1(AccountId32 { id, network: None }) } => id, MultiLocation { parents: 0, interior: X1(AccountId32 { id, network }) } if network == Network::get() => id, - _ => return Err(location), + _ => return None, }; - Ok(id.into()) - } - - fn reverse(who: AccountId) -> Result { - Ok(AccountId32 { id: who.into(), network: Network::get() }.into()) + Some(id.into()) } } @@ -237,8 +322,7 @@ impl>, AccountId: From<[u8; 32]> + Into<[u8; 32]> /// network (provided by `Network`) and the `AccountId`'s `[u8; 32]` datum for the `id`. pub struct AliasesIntoAccountId32(PhantomData<(Network, AccountId)>); impl<'a, Network: Get>, AccountId: Clone + Into<[u8; 32]> + Clone> - sp_runtime::traits::Convert<&'a AccountId, MultiLocation> - for AliasesIntoAccountId32 + Convert<&'a AccountId, MultiLocation> for AliasesIntoAccountId32 { fn convert(who: &AccountId) -> MultiLocation { AccountId32 { network: Network::get(), id: who.clone().into() }.into() @@ -247,22 +331,17 @@ impl<'a, Network: Get>, AccountId: Clone + Into<[u8; 32]> + Cl pub struct AccountKey20Aliases(PhantomData<(Network, AccountId)>); impl>, AccountId: From<[u8; 20]> + Into<[u8; 20]> + Clone> - Convert for AccountKey20Aliases + ConvertLocation for AccountKey20Aliases { - fn convert(location: MultiLocation) -> Result { - let key = match location { + fn convert_location(location: &MultiLocation) -> Option { + let key = match *location { MultiLocation { parents: 0, interior: X1(AccountKey20 { key, network: None }) } => key, MultiLocation { parents: 0, interior: X1(AccountKey20 { key, network }) } if network == Network::get() => key, - _ => return Err(location), + _ => return None, }; - Ok(key.into()) - } - - fn reverse(who: AccountId) -> Result { - let j = AccountKey20 { key: who.into(), network: Network::get() }; - Ok(j.into()) + Some(key.into()) } } @@ -285,31 +364,24 @@ pub struct GlobalConsensusParachainConvertsFor( PhantomData<(UniversalLocation, AccountId)>, ); impl, AccountId: From<[u8; 32]> + Clone> - Convert - for GlobalConsensusParachainConvertsFor + ConvertLocation for GlobalConsensusParachainConvertsFor { - fn convert_ref(location: impl Borrow) -> Result { + fn convert_location(location: &MultiLocation) -> Option { let universal_source = UniversalLocation::get(); log::trace!( target: "xcm::location_conversion", "GlobalConsensusParachainConvertsFor universal_source: {:?}, location: {:?}", - universal_source, location.borrow(), + universal_source, location, ); - let devolved = ensure_is_remote(universal_source, *location.borrow()).map_err(|_| ())?; + let devolved = ensure_is_remote(universal_source, *location).ok()?; let (remote_network, remote_location) = devolved; match remote_location { X1(Parachain(remote_network_para_id)) => - Ok(AccountId::from(Self::from_params(&remote_network, &remote_network_para_id))), - _ => Err(()), + Some(AccountId::from(Self::from_params(&remote_network, &remote_network_para_id))), + _ => None, } } - - fn reverse_ref(_: impl Borrow) -> Result { - // if this is ever be needed, we could implement some kind of guessing, if we have - // configuration for supported networkId+paraId - Err(()) - } } impl GlobalConsensusParachainConvertsFor @@ -323,6 +395,9 @@ impl mod tests { use super::*; + pub type ForeignChainAliasAccount = + HashedDescription; + use frame_support::parameter_types; use xcm::latest::Junction; @@ -441,11 +516,11 @@ mod tests { for (location, expected_result) in test_data { let result = - GlobalConsensusParachainConvertsFor::::convert_ref( + GlobalConsensusParachainConvertsFor::::convert_location( &location, ); match result { - Ok(account) => { + Some(account) => { assert_eq!( true, expected_result, "expected_result: {}, but conversion passed: {:?}, location: {:?}", @@ -465,7 +540,7 @@ mod tests { ) } }, - Err(_) => { + None => { assert_eq!( false, expected_result, "expected_result: {} - but conversion failed, location: {:?}", @@ -477,23 +552,23 @@ mod tests { // all success let res_gc_a_p1000 = - GlobalConsensusParachainConvertsFor::::convert_ref( - MultiLocation::new(2, X2(GlobalConsensus(ByGenesis([3; 32])), Parachain(1000))), + GlobalConsensusParachainConvertsFor::::convert_location( + &MultiLocation::new(2, X2(GlobalConsensus(ByGenesis([3; 32])), Parachain(1000))), ) .expect("conversion is ok"); let res_gc_a_p1001 = - GlobalConsensusParachainConvertsFor::::convert_ref( - MultiLocation::new(2, X2(GlobalConsensus(ByGenesis([3; 32])), Parachain(1001))), + GlobalConsensusParachainConvertsFor::::convert_location( + &MultiLocation::new(2, X2(GlobalConsensus(ByGenesis([3; 32])), Parachain(1001))), ) .expect("conversion is ok"); let res_gc_b_p1000 = - GlobalConsensusParachainConvertsFor::::convert_ref( - MultiLocation::new(2, X2(GlobalConsensus(ByGenesis([4; 32])), Parachain(1000))), + GlobalConsensusParachainConvertsFor::::convert_location( + &MultiLocation::new(2, X2(GlobalConsensus(ByGenesis([4; 32])), Parachain(1000))), ) .expect("conversion is ok"); let res_gc_b_p1001 = - GlobalConsensusParachainConvertsFor::::convert_ref( - MultiLocation::new(2, X2(GlobalConsensus(ByGenesis([4; 32])), Parachain(1001))), + GlobalConsensusParachainConvertsFor::::convert_location( + &MultiLocation::new(2, X2(GlobalConsensus(ByGenesis([4; 32])), Parachain(1001))), ) .expect("conversion is ok"); assert_ne!(res_gc_a_p1000, res_gc_a_p1001); @@ -510,7 +585,7 @@ mod tests { parents: 1, interior: X2(Parachain(1), AccountId32 { network: None, id: [0u8; 32] }), }; - let rem_1 = ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(); + let rem_1 = ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(); assert_eq!( [ @@ -528,13 +603,13 @@ mod tests { ), }; - assert_eq!(ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(), rem_1); + assert_eq!(ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(), rem_1); let mul = MultiLocation { parents: 1, interior: X2(Parachain(2), AccountId32 { network: None, id: [0u8; 32] }), }; - let rem_2 = ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(); + let rem_2 = ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(); assert_eq!( [ @@ -553,7 +628,7 @@ mod tests { parents: 1, interior: X2(Parachain(1), AccountKey20 { network: None, key: [0u8; 20] }), }; - let rem_1 = ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(); + let rem_1 = ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(); assert_eq!( [ @@ -571,13 +646,13 @@ mod tests { ), }; - assert_eq!(ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(), rem_1); + assert_eq!(ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(), rem_1); let mul = MultiLocation { parents: 1, interior: X2(Parachain(2), AccountKey20 { network: None, key: [0u8; 20] }), }; - let rem_2 = ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(); + let rem_2 = ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(); assert_eq!( [ @@ -596,7 +671,7 @@ mod tests { parents: 1, interior: X1(AccountId32 { network: None, id: [0u8; 32] }), }; - let rem_1 = ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(); + let rem_1 = ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(); assert_eq!( [ @@ -611,13 +686,13 @@ mod tests { interior: X1(AccountId32 { network: Some(NetworkId::Polkadot), id: [0u8; 32] }), }; - assert_eq!(ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(), rem_1); + assert_eq!(ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(), rem_1); let mul = MultiLocation { parents: 1, interior: X1(AccountId32 { network: None, id: [1u8; 32] }), }; - let rem_2 = ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(); + let rem_2 = ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(); assert_eq!( [ @@ -636,7 +711,7 @@ mod tests { parents: 0, interior: X2(Parachain(1), AccountKey20 { network: None, key: [0u8; 20] }), }; - let rem_1 = ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(); + let rem_1 = ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(); assert_eq!( [ @@ -650,7 +725,7 @@ mod tests { parents: 0, interior: X2(Parachain(2), AccountKey20 { network: None, key: [0u8; 20] }), }; - let rem_2 = ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(); + let rem_2 = ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(); assert_eq!( [ @@ -669,7 +744,7 @@ mod tests { parents: 0, interior: X2(Parachain(1), AccountId32 { network: None, id: [0u8; 32] }), }; - let rem_1 = ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(); + let rem_1 = ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(); assert_eq!( [ @@ -687,13 +762,13 @@ mod tests { ), }; - assert_eq!(ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(), rem_1); + assert_eq!(ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(), rem_1); let mul = MultiLocation { parents: 0, interior: X2(Parachain(2), AccountId32 { network: None, id: [0u8; 32] }), }; - let rem_2 = ForeignChainAliasAccount::<[u8; 32]>::convert(mul).unwrap(); + let rem_2 = ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).unwrap(); assert_eq!( [ @@ -712,6 +787,6 @@ mod tests { parents: 1, interior: X1(AccountKey20 { network: None, key: [0u8; 20] }), }; - assert!(ForeignChainAliasAccount::<[u8; 32]>::convert(mul).is_err()); + assert!(ForeignChainAliasAccount::<[u8; 32]>::convert_location(&mul).is_none()); } } diff --git a/xcm/xcm-builder/src/nonfungibles_adapter.rs b/xcm/xcm-builder/src/nonfungibles_adapter.rs index 0becb2608b46..6cf5980df0e9 100644 --- a/xcm/xcm-builder/src/nonfungibles_adapter.rs +++ b/xcm/xcm-builder/src/nonfungibles_adapter.rs @@ -23,7 +23,9 @@ use frame_support::{ }; use sp_std::{marker::PhantomData, prelude::*, result}; use xcm::latest::prelude::*; -use xcm_executor::traits::{Convert, Error as MatchError, MatchesNonFungibles, TransactAsset}; +use xcm_executor::traits::{ + ConvertLocation, Error as MatchError, MatchesNonFungibles, TransactAsset, +}; const LOG_TARGET: &str = "xcm::nonfungibles_adapter"; @@ -33,7 +35,7 @@ pub struct NonFungiblesTransferAdapter, Matcher: MatchesNonFungibles, - AccountIdConverter: Convert, + AccountIdConverter: ConvertLocation, AccountId: Clone, // can't get away without it since Currency is generic over it. > TransactAsset for NonFungiblesTransferAdapter { @@ -53,8 +55,8 @@ impl< ); // Check we handle this asset. let (class, instance) = Matcher::matches_nonfungibles(what)?; - let destination = AccountIdConverter::convert_ref(to) - .map_err(|()| MatchError::AccountIdConversionFailed)?; + let destination = AccountIdConverter::convert_location(to) + .ok_or(MatchError::AccountIdConversionFailed)?; Assets::transfer(&class, &instance, &destination) .map_err(|e| XcmError::FailedToTransactAsset(e.into()))?; Ok(what.clone().into()) @@ -73,7 +75,7 @@ pub struct NonFungiblesMutateAdapter< impl< Assets: nonfungibles::Mutate, Matcher: MatchesNonFungibles, - AccountIdConverter: Convert, + AccountIdConverter: ConvertLocation, AccountId: Clone + Eq, // can't get away without it since Currency is generic over it. CheckAsset: AssetChecking, CheckingAccount: Get>, @@ -115,7 +117,7 @@ impl< impl< Assets: nonfungibles::Mutate, Matcher: MatchesNonFungibles, - AccountIdConverter: Convert, + AccountIdConverter: ConvertLocation, AccountId: Clone + Eq, // can't get away without it since Currency is generic over it. CheckAsset: AssetChecking, CheckingAccount: Get>, @@ -215,8 +217,8 @@ impl< ); // Check we handle this asset. let (class, instance) = Matcher::matches_nonfungibles(what)?; - let who = AccountIdConverter::convert_ref(who) - .map_err(|()| MatchError::AccountIdConversionFailed)?; + let who = AccountIdConverter::convert_location(who) + .ok_or(MatchError::AccountIdConversionFailed)?; Assets::mint_into(&class, &instance, &who) .map_err(|e| XcmError::FailedToTransactAsset(e.into())) } @@ -234,8 +236,8 @@ impl< maybe_context, ); // Check we handle this asset. - let who = AccountIdConverter::convert_ref(who) - .map_err(|()| MatchError::AccountIdConversionFailed)?; + let who = AccountIdConverter::convert_location(who) + .ok_or(MatchError::AccountIdConversionFailed)?; let (class, instance) = Matcher::matches_nonfungibles(what)?; Assets::burn(&class, &instance, Some(&who)) .map_err(|e| XcmError::FailedToTransactAsset(e.into()))?; @@ -254,7 +256,7 @@ pub struct NonFungiblesAdapter< impl< Assets: nonfungibles::Mutate + nonfungibles::Transfer, Matcher: MatchesNonFungibles, - AccountIdConverter: Convert, + AccountIdConverter: ConvertLocation, AccountId: Clone + Eq, // can't get away without it since Currency is generic over it. CheckAsset: AssetChecking, CheckingAccount: Get>, diff --git a/xcm/xcm-builder/src/origin_conversion.rs b/xcm/xcm-builder/src/origin_conversion.rs index 22a79d0f8028..0810b1ce2f8b 100644 --- a/xcm/xcm-builder/src/origin_conversion.rs +++ b/xcm/xcm-builder/src/origin_conversion.rs @@ -19,18 +19,17 @@ use frame_support::traits::{EnsureOrigin, Get, GetBacking, OriginTrait}; use frame_system::RawOrigin as SystemRawOrigin; use polkadot_parachain::primitives::IsSystem; +use sp_runtime::traits::TryConvert; use sp_std::marker::PhantomData; use xcm::latest::{BodyId, BodyPart, Junction, Junctions::*, MultiLocation, NetworkId, OriginKind}; -use xcm_executor::traits::{Convert, ConvertOrigin}; +use xcm_executor::traits::{ConvertLocation, ConvertOrigin}; /// Sovereign accounts use the system's `Signed` origin with an account ID derived from the `LocationConverter`. pub struct SovereignSignedViaLocation( PhantomData<(LocationConverter, RuntimeOrigin)>, ); -impl< - LocationConverter: Convert, - RuntimeOrigin: OriginTrait, - > ConvertOrigin for SovereignSignedViaLocation +impl, RuntimeOrigin: OriginTrait> + ConvertOrigin for SovereignSignedViaLocation where RuntimeOrigin::AccountId: Clone, { @@ -45,7 +44,7 @@ where origin, kind, ); if let OriginKind::SovereignAccount = kind { - let location = LocationConverter::convert(origin)?; + let location = LocationConverter::convert_location(&origin).ok_or(origin)?; Ok(RuntimeOrigin::signed(location).into()) } else { Err(origin) @@ -244,14 +243,14 @@ where /// `EnsureOrigin` barrier to convert from dispatch origin to XCM origin, if one exists. pub struct EnsureXcmOrigin(PhantomData<(RuntimeOrigin, Conversion)>); -impl> +impl> EnsureOrigin for EnsureXcmOrigin where RuntimeOrigin::PalletsOrigin: PartialEq, { type Success = MultiLocation; fn try_origin(o: RuntimeOrigin) -> Result { - let o = match Conversion::convert(o) { + let o = match Conversion::try_convert(o) { Ok(location) => return Ok(location), Err(o) => o, }; @@ -281,12 +280,13 @@ impl< RuntimeOrigin: OriginTrait + Clone, AccountId: Into<[u8; 32]>, Network: Get>, - > Convert for SignedToAccountId32 + > TryConvert + for SignedToAccountId32 where RuntimeOrigin::PalletsOrigin: From> + TryInto, Error = RuntimeOrigin::PalletsOrigin>, { - fn convert(o: RuntimeOrigin) -> Result { + fn try_convert(o: RuntimeOrigin) -> Result { o.try_with_caller(|caller| match caller.try_into() { Ok(SystemRawOrigin::Signed(who)) => Ok(Junction::AccountId32 { network: Network::get(), id: who.into() }.into()), @@ -305,12 +305,12 @@ pub struct BackingToPlurality( PhantomData<(RuntimeOrigin, COrigin, Body)>, ); impl> - Convert for BackingToPlurality + TryConvert for BackingToPlurality where RuntimeOrigin::PalletsOrigin: From + TryInto, { - fn convert(o: RuntimeOrigin) -> Result { + fn try_convert(o: RuntimeOrigin) -> Result { o.try_with_caller(|caller| match caller.try_into() { Ok(co) => match co.get_backing() { Some(backing) => Ok(Junction::Plurality { @@ -331,10 +331,10 @@ pub struct OriginToPluralityVoice( PhantomData<(RuntimeOrigin, EnsureBodyOrigin, Body)>, ); impl, Body: Get> - Convert + TryConvert for OriginToPluralityVoice { - fn convert(o: RuntimeOrigin) -> Result { + fn try_convert(o: RuntimeOrigin) -> Result { match EnsureBodyOrigin::try_origin(o) { Ok(_) => Ok(Junction::Plurality { id: Body::get(), part: BodyPart::Voice }.into()), Err(o) => Err(o), diff --git a/xcm/xcm-executor/src/traits/conversion.rs b/xcm/xcm-executor/src/traits/conversion.rs index c33269a6566f..2f584a900f69 100644 --- a/xcm/xcm-executor/src/traits/conversion.rs +++ b/xcm/xcm-executor/src/traits/conversion.rs @@ -15,122 +15,26 @@ // along with Polkadot. If not, see . use frame_support::traits::{Contains, OriginTrait}; -use parity_scale_codec::{Decode, Encode}; use sp_runtime::{traits::Dispatchable, DispatchErrorWithPostInfo}; -use sp_std::{borrow::Borrow, marker::PhantomData, prelude::*, result::Result}; +use sp_std::{marker::PhantomData, result::Result}; use xcm::latest::prelude::*; -/// Generic third-party conversion trait. Use this when you don't want to force the user to use default -/// implementations of `From` and `Into` for the types you wish to convert between. -/// -/// One of `convert`/`convert_ref` and `reverse`/`reverse_ref` MUST be implemented. If possible, implement -/// `convert_ref`, since this will never result in a clone. Use `convert` when you definitely need to consume -/// the source value. -/// -/// Can be amalgamated into tuples. If any of the tuple elements converts into `Ok(_)` it short circuits. Otherwise returns -/// the `Err(_)` of the last failing conversion (or `Err(())` for ref conversions). -pub trait Convert { - /// Convert from `value` (of type `A`) into an equivalent value of type `B`, `Err` if not possible. - fn convert(value: A) -> Result { - Self::convert_ref(&value).map_err(|_| value) - } - fn convert_ref(value: impl Borrow) -> Result { - Self::convert(value.borrow().clone()).map_err(|_| ()) - } - /// Convert from `value` (of type `B`) into an equivalent value of type `A`, `Err` if not possible. - fn reverse(value: B) -> Result { - Self::reverse_ref(&value).map_err(|_| value) - } - fn reverse_ref(value: impl Borrow) -> Result { - Self::reverse(value.borrow().clone()).map_err(|_| ()) - } +/// Means of converting a location into an account identifier. +pub trait ConvertLocation { + /// Convert the `location` into `Some` account ID, or `None` if not possible. + fn convert_location(location: &MultiLocation) -> Option; } #[impl_trait_for_tuples::impl_for_tuples(30)] -impl Convert for Tuple { - fn convert(value: A) -> Result { - for_tuples!( #( - let value = match Tuple::convert(value) { - Ok(result) => return Ok(result), - Err(v) => v, - }; - )* ); - Err(value) - } - fn reverse(value: B) -> Result { - for_tuples!( #( - let value = match Tuple::reverse(value) { - Ok(result) => return Ok(result), - Err(v) => v, - }; - )* ); - Err(value) - } - fn convert_ref(value: impl Borrow) -> Result { - let value = value.borrow(); - for_tuples!( #( - match Tuple::convert_ref(value) { - Ok(result) => return Ok(result), - Err(_) => (), - } - )* ); - Err(()) - } - fn reverse_ref(value: impl Borrow) -> Result { - let value = value.borrow(); +impl ConvertLocation for Tuple { + fn convert_location(l: &MultiLocation) -> Option { for_tuples!( #( - match Tuple::reverse_ref(value.clone()) { - Ok(result) => return Ok(result), - Err(_) => (), + match Tuple::convert_location(l) { + Some(result) => return Some(result), + None => {}, } )* ); - Err(()) - } -} - -/// Simple pass-through which implements `BytesConversion` while not doing any conversion. -pub struct Identity; -impl Convert for Identity { - fn convert(value: T) -> Result { - Ok(value) - } - fn reverse(value: T) -> Result { - Ok(value) - } -} - -/// Implementation of `Convert` trait using `TryFrom`. -pub struct JustTry; -impl + Clone, Dest: TryFrom + Clone> Convert - for JustTry -{ - fn convert(value: Source) -> Result { - Dest::try_from(value.clone()).map_err(|_| value) - } - fn reverse(value: Dest) -> Result { - Source::try_from(value.clone()).map_err(|_| value) - } -} - -/// Implementation of `Convert<_, Vec>` using the parity scale codec. -pub struct Encoded; -impl Convert> for Encoded { - fn convert_ref(value: impl Borrow) -> Result, ()> { - Ok(value.borrow().encode()) - } - fn reverse_ref(bytes: impl Borrow>) -> Result { - T::decode(&mut &bytes.borrow()[..]).map_err(|_| ()) - } -} - -/// Implementation of `Convert, _>` using the parity scale codec. -pub struct Decoded; -impl Convert, T> for Decoded { - fn convert_ref(bytes: impl Borrow>) -> Result { - T::decode(&mut &bytes.borrow()[..]).map_err(|_| ()) - } - fn reverse_ref(value: impl Borrow) -> Result, ()> { - Ok(value.borrow().encode()) + None } } diff --git a/xcm/xcm-executor/src/traits/mod.rs b/xcm/xcm-executor/src/traits/mod.rs index cac9c73ee277..a9439968fa6c 100644 --- a/xcm/xcm-executor/src/traits/mod.rs +++ b/xcm/xcm-executor/src/traits/mod.rs @@ -17,9 +17,7 @@ //! Various traits used in configuring the executor. mod conversion; -pub use conversion::{ - CallDispatcher, Convert, ConvertOrigin, Decoded, Encoded, Identity, JustTry, WithOriginFilter, -}; +pub use conversion::{CallDispatcher, ConvertLocation, ConvertOrigin, WithOriginFilter}; mod drop_assets; pub use drop_assets::{ClaimAssets, DropAssets}; mod asset_lock; @@ -44,14 +42,17 @@ pub use should_execute::{CheckSuspension, Properties, ShouldExecute}; mod transact_asset; pub use transact_asset::TransactAsset; mod weight; +#[deprecated = "Use `sp_runtime::traits::` instead"] +pub use sp_runtime::traits::{Identity, TryConvertInto as JustTry}; pub use weight::{WeightBounds, WeightTrader}; pub mod prelude { pub use super::{ - export_xcm, validate_export, AssetExchange, AssetLock, ClaimAssets, Convert, ConvertOrigin, - Decoded, DropAssets, Enact, Encoded, Error, ExportXcm, FeeManager, FeeReason, Identity, - JustTry, LockError, MatchesFungible, MatchesFungibles, MatchesNonFungible, - MatchesNonFungibles, OnResponse, ShouldExecute, TransactAsset, VersionChangeNotifier, - WeightBounds, WeightTrader, WithOriginFilter, + export_xcm, validate_export, AssetExchange, AssetLock, ClaimAssets, ConvertOrigin, + DropAssets, Enact, Error, ExportXcm, FeeManager, FeeReason, LockError, MatchesFungible, + MatchesFungibles, MatchesNonFungible, MatchesNonFungibles, OnResponse, ShouldExecute, + TransactAsset, VersionChangeNotifier, WeightBounds, WeightTrader, WithOriginFilter, }; + #[allow(deprecated)] + pub use super::{Identity, JustTry}; } diff --git a/xcm/xcm-simulator/example/src/lib.rs b/xcm/xcm-simulator/example/src/lib.rs index bd5ebb0b472f..704d24c3fc71 100644 --- a/xcm/xcm-simulator/example/src/lib.rs +++ b/xcm/xcm-simulator/example/src/lib.rs @@ -19,7 +19,7 @@ mod relay_chain; use frame_support::sp_tracing; use xcm::prelude::*; -use xcm_executor::traits::Convert; +use xcm_executor::traits::ConvertLocation; use xcm_simulator::{decl_test_network, decl_test_parachain, decl_test_relay_chain, TestExt}; pub const ALICE: sp_runtime::AccountId32 = sp_runtime::AccountId32::new([0u8; 32]); @@ -67,27 +67,27 @@ decl_test_network! { pub fn parent_account_id() -> parachain::AccountId { let location = (Parent,); - parachain::LocationToAccountId::convert(location.into()).unwrap() + parachain::LocationToAccountId::convert_location(&location.into()).unwrap() } pub fn child_account_id(para: u32) -> relay_chain::AccountId { let location = (Parachain(para),); - relay_chain::LocationToAccountId::convert(location.into()).unwrap() + relay_chain::LocationToAccountId::convert_location(&location.into()).unwrap() } pub fn child_account_account_id(para: u32, who: sp_runtime::AccountId32) -> relay_chain::AccountId { let location = (Parachain(para), AccountId32 { network: None, id: who.into() }); - relay_chain::LocationToAccountId::convert(location.into()).unwrap() + relay_chain::LocationToAccountId::convert_location(&location.into()).unwrap() } pub fn sibling_account_account_id(para: u32, who: sp_runtime::AccountId32) -> parachain::AccountId { let location = (Parent, Parachain(para), AccountId32 { network: None, id: who.into() }); - parachain::LocationToAccountId::convert(location.into()).unwrap() + parachain::LocationToAccountId::convert_location(&location.into()).unwrap() } pub fn parent_account_account_id(who: sp_runtime::AccountId32) -> parachain::AccountId { let location = (Parent, AccountId32 { network: None, id: who.into() }); - parachain::LocationToAccountId::convert(location.into()).unwrap() + parachain::LocationToAccountId::convert_location(&location.into()).unwrap() } pub fn para_ext(para_id: u32) -> sp_io::TestExternalities { diff --git a/xcm/xcm-simulator/example/src/parachain.rs b/xcm/xcm-simulator/example/src/parachain.rs index 39a2e27470b2..504af0018698 100644 --- a/xcm/xcm-simulator/example/src/parachain.rs +++ b/xcm/xcm-simulator/example/src/parachain.rs @@ -47,7 +47,7 @@ use xcm_builder::{ SovereignSignedViaLocation, }; use xcm_executor::{ - traits::{Convert, JustTry}, + traits::{ConvertLocation, JustTry}, Config, XcmExecutor, }; @@ -160,7 +160,7 @@ impl EnsureOriginWithArg for ForeignCreators { if !a.starts_with(&origin_location) { return Err(o) } - SovereignAccountOf::convert(origin_location).map_err(|_| o) + SovereignAccountOf::convert_location(&origin_location).ok_or(o) } #[cfg(feature = "runtime-benchmarks")]