diff --git a/Cargo.lock b/Cargo.lock
index 49971e44..d39b7370 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -229,7 +229,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -466,7 +466,7 @@ dependencies = [
"ark-ff",
"ark-serialize",
"ark-std",
- "ark-transcript",
+ "ark-transcript 0.0.2 (git+https://github.com/w3f/ring-vrf?rev=e9782f9)",
"digest 0.10.7",
"getrandom_or_panic",
"zeroize",
@@ -506,6 +506,20 @@ dependencies = [
"rayon",
]
+[[package]]
+name = "ark-transcript"
+version = "0.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "563084372d89271122bd743ef0a608179726f5fad0566008ba55bd0f756489b8"
+dependencies = [
+ "ark-ff",
+ "ark-serialize",
+ "ark-std",
+ "digest 0.10.7",
+ "rand_core 0.6.4",
+ "sha3",
+]
+
[[package]]
name = "ark-transcript"
version = "0.0.2"
@@ -764,7 +778,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -809,7 +823,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -937,7 +951,7 @@ dependencies = [
"regex",
"rustc-hash",
"shlex",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -1442,7 +1456,7 @@ dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -1502,7 +1516,7 @@ dependencies = [
[[package]]
name = "common"
version = "0.1.0"
-source = "git+https://github.com/w3f/ring-proof#665f5f51af5734c7b6d90b985dd6861d4c5b4752"
+source = "git+https://github.com/w3f/ring-proof#652286c32f96beb9ce7f5793f5e2c2c923f63b73"
dependencies = [
"ark-ec",
"ark-ff",
@@ -1511,8 +1525,7 @@ dependencies = [
"ark-std",
"fflonk",
"getrandom_or_panic",
- "merlin",
- "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
]
[[package]]
@@ -2155,7 +2168,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -2478,7 +2491,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -2518,7 +2531,7 @@ dependencies = [
"proc-macro2",
"quote",
"scratch",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -2535,7 +2548,7 @@ checksum = "35de3b547387863c8f82013c4f79f1c2162edee956383e4089e1d04c18c4f16c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -2629,7 +2642,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -2642,7 +2655,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustc_version",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -2731,7 +2744,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -2745,7 +2758,7 @@ dependencies = [
"ark-secret-scalar",
"ark-serialize",
"ark-std",
- "ark-transcript",
+ "ark-transcript 0.0.2 (git+https://github.com/w3f/ring-vrf?rev=e9782f9)",
"arrayvec 0.7.4",
"zeroize",
]
@@ -2771,7 +2784,7 @@ dependencies = [
"proc-macro2",
"quote",
"regex",
- "syn 2.0.74",
+ "syn 2.0.79",
"termcolor",
"toml 0.8.19",
"walkdir",
@@ -2976,7 +2989,7 @@ dependencies = [
"heck 0.4.1",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -2996,7 +3009,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -3007,7 +3020,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -3223,7 +3236,7 @@ dependencies = [
"prettyplease 0.2.20",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -3829,7 +3842,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -3952,7 +3965,7 @@ dependencies = [
"proc-macro2",
"quote",
"sp-crypto-hashing",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -3964,7 +3977,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -3974,7 +3987,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -4164,7 +4177,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -5018,7 +5031,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -6046,7 +6059,7 @@ dependencies = [
"macro_magic_core",
"macro_magic_macros",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -6060,7 +6073,7 @@ dependencies = [
"macro_magic_core_macros",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -6071,7 +6084,7 @@ checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -6082,7 +6095,7 @@ checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869"
dependencies = [
"macro_magic_core",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -6327,7 +6340,7 @@ dependencies = [
"cfg-if",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -6459,7 +6472,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
"synstructure 0.13.1",
]
@@ -6507,7 +6520,7 @@ checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -6816,7 +6829,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -6899,7 +6912,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -8112,7 +8125,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -8269,6 +8282,21 @@ dependencies = [
"sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.11.0)",
]
+[[package]]
+name = "pallet-uniques"
+version = "28.0.0"
+source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.11.0#8c8edacf8942298c3807a2e192860da9e7e4996a"
+dependencies = [
+ "frame-benchmarking",
+ "frame-support",
+ "frame-system",
+ "log",
+ "parity-scale-codec",
+ "scale-info",
+ "sp-runtime",
+ "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.11.0)",
+]
+
[[package]]
name = "pallet-utility"
version = "28.0.0"
@@ -8601,7 +8629,7 @@ dependencies = [
"pest_meta",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -8642,7 +8670,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -9812,7 +9840,7 @@ dependencies = [
"polkavm-common",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -9822,7 +9850,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429"
dependencies = [
"polkavm-derive-impl",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -10021,7 +10049,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e"
dependencies = [
"proc-macro2",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -10114,7 +10142,7 @@ checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -10160,7 +10188,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -10228,7 +10256,7 @@ dependencies = [
"itertools 0.12.1",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -10354,9 +10382,9 @@ dependencies = [
[[package]]
name = "quote"
-version = "1.0.36"
+version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
dependencies = [
"proc-macro2",
]
@@ -10562,7 +10590,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -10657,18 +10685,18 @@ dependencies = [
[[package]]
name = "ring"
version = "0.1.0"
-source = "git+https://github.com/w3f/ring-proof#665f5f51af5734c7b6d90b985dd6861d4c5b4752"
+source = "git+https://github.com/w3f/ring-proof#652286c32f96beb9ce7f5793f5e2c2c923f63b73"
dependencies = [
"ark-ec",
"ark-ff",
"ark-poly",
"ark-serialize",
"ark-std",
+ "ark-transcript 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"arrayvec 0.7.4",
"blake2 0.10.6",
"common",
"fflonk",
- "merlin",
]
[[package]]
@@ -11253,7 +11281,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -12256,7 +12284,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -12535,9 +12563,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
[[package]]
name = "serde"
-version = "1.0.208"
+version = "1.0.210"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2"
+checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
dependencies = [
"serde_derive",
]
@@ -12553,13 +12581,13 @@ dependencies = [
[[package]]
name = "serde_derive"
-version = "1.0.208"
+version = "1.0.210"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf"
+checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -13007,7 +13035,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -13243,7 +13271,7 @@ dependencies = [
[[package]]
name = "sp-crypto-ec-utils"
version = "0.10.0"
-source = "git+https://github.com/paritytech/polkadot-sdk#4780e3d07ff23a49e8f0a508138f83eb6e0d36c6"
+source = "git+https://github.com/paritytech/polkadot-sdk#8614dc0e055d06de4a3774ac1da0a422b33f34e2"
dependencies = [
"ark-bls12-377",
"ark-bls12-377-ext",
@@ -13280,7 +13308,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot
dependencies = [
"quote",
"sp-crypto-hashing",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -13299,17 +13327,17 @@ source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
name = "sp-debug-derive"
version = "14.0.0"
-source = "git+https://github.com/paritytech/polkadot-sdk#4780e3d07ff23a49e8f0a508138f83eb6e0d36c6"
+source = "git+https://github.com/paritytech/polkadot-sdk#8614dc0e055d06de4a3774ac1da0a422b33f34e2"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -13325,7 +13353,7 @@ dependencies = [
[[package]]
name = "sp-externalities"
version = "0.25.0"
-source = "git+https://github.com/paritytech/polkadot-sdk#4780e3d07ff23a49e8f0a508138f83eb6e0d36c6"
+source = "git+https://github.com/paritytech/polkadot-sdk#8614dc0e055d06de4a3774ac1da0a422b33f34e2"
dependencies = [
"environmental",
"parity-scale-codec",
@@ -13540,7 +13568,7 @@ dependencies = [
[[package]]
name = "sp-runtime-interface"
version = "24.0.0"
-source = "git+https://github.com/paritytech/polkadot-sdk#4780e3d07ff23a49e8f0a508138f83eb6e0d36c6"
+source = "git+https://github.com/paritytech/polkadot-sdk#8614dc0e055d06de4a3774ac1da0a422b33f34e2"
dependencies = [
"bytes",
"impl-trait-for-tuples",
@@ -13566,20 +13594,20 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
name = "sp-runtime-interface-proc-macro"
version = "17.0.0"
-source = "git+https://github.com/paritytech/polkadot-sdk#4780e3d07ff23a49e8f0a508138f83eb6e0d36c6"
+source = "git+https://github.com/paritytech/polkadot-sdk#8614dc0e055d06de4a3774ac1da0a422b33f34e2"
dependencies = [
"Inflector",
"expander 2.2.1",
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -13661,7 +13689,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot
[[package]]
name = "sp-std"
version = "14.0.0"
-source = "git+https://github.com/paritytech/polkadot-sdk#4780e3d07ff23a49e8f0a508138f83eb6e0d36c6"
+source = "git+https://github.com/paritytech/polkadot-sdk#8614dc0e055d06de4a3774ac1da0a422b33f34e2"
[[package]]
name = "sp-storage"
@@ -13678,7 +13706,7 @@ dependencies = [
[[package]]
name = "sp-storage"
version = "19.0.0"
-source = "git+https://github.com/paritytech/polkadot-sdk#4780e3d07ff23a49e8f0a508138f83eb6e0d36c6"
+source = "git+https://github.com/paritytech/polkadot-sdk#8614dc0e055d06de4a3774ac1da0a422b33f34e2"
dependencies = [
"impl-serde",
"parity-scale-codec",
@@ -13713,7 +13741,7 @@ dependencies = [
[[package]]
name = "sp-tracing"
version = "16.0.0"
-source = "git+https://github.com/paritytech/polkadot-sdk#4780e3d07ff23a49e8f0a508138f83eb6e0d36c6"
+source = "git+https://github.com/paritytech/polkadot-sdk#8614dc0e055d06de4a3774ac1da0a422b33f34e2"
dependencies = [
"parity-scale-codec",
"tracing",
@@ -13792,7 +13820,7 @@ dependencies = [
"parity-scale-codec",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -13810,8 +13838,9 @@ dependencies = [
[[package]]
name = "sp-wasm-interface"
version = "20.0.0"
-source = "git+https://github.com/paritytech/polkadot-sdk#4780e3d07ff23a49e8f0a508138f83eb6e0d36c6"
+source = "git+https://github.com/paritytech/polkadot-sdk#8614dc0e055d06de4a3774ac1da0a422b33f34e2"
dependencies = [
+ "anyhow",
"impl-trait-for-tuples",
"log",
"parity-scale-codec",
@@ -14192,7 +14221,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustversion",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -14343,9 +14372,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.74"
+version = "2.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7"
+checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
dependencies = [
"proc-macro2",
"quote",
@@ -14372,7 +14401,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -14476,7 +14505,7 @@ checksum = "e4c60d69f36615a077cc7663b9cb8e42275722d23e58a7fa3d2c7f2915d09d04"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -14487,7 +14516,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -14630,7 +14659,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -14825,7 +14854,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -14868,7 +14897,7 @@ dependencies = [
"proc-macro-crate 3.1.0",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -15319,7 +15348,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
"wasm-bindgen-shared",
]
@@ -15353,7 +15382,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -16259,7 +16288,56 @@ dependencies = [
"Inflector",
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
+]
+
+[[package]]
+name = "xcm-simulator"
+version = "7.0.0"
+source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.11.0#8c8edacf8942298c3807a2e192860da9e7e4996a"
+dependencies = [
+ "frame-support",
+ "parity-scale-codec",
+ "paste",
+ "polkadot-core-primitives",
+ "polkadot-parachain-primitives",
+ "polkadot-runtime-parachains",
+ "sp-io",
+ "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.11.0)",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
+]
+
+[[package]]
+name = "xcm-simulator-example"
+version = "7.0.0"
+dependencies = [
+ "cumulus-pallet-xcm",
+ "frame-support",
+ "frame-system",
+ "hex-literal",
+ "laos-primitives",
+ "log",
+ "pallet-balances",
+ "pallet-message-queue",
+ "pallet-uniques",
+ "pallet-xcm",
+ "parity-scale-codec",
+ "polkadot-core-primitives",
+ "polkadot-parachain-primitives",
+ "polkadot-runtime-parachains",
+ "scale-info",
+ "sp-core",
+ "sp-io",
+ "sp-runtime",
+ "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.11.0)",
+ "sp-tracing 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.11.0)",
+ "staging-parachain-info",
+ "staging-xcm",
+ "staging-xcm-builder",
+ "staging-xcm-executor",
+ "xcm-simulator",
]
[[package]]
@@ -16303,7 +16381,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
@@ -16323,7 +16401,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.74",
+ "syn 2.0.79",
]
[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index 7114892a..540f5be9 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,6 +3,7 @@ description = "The LAOS parachain node."
repository = "https://github.com/freeverseio/laos.git"
homepage = "https://www.laosfoundation.io"
authors = ["Freeverse"]
+edition = "2021"
version = "0.22.0"
[workspace]
@@ -14,6 +15,7 @@ members = [
"pallets/*",
"precompiles/*",
"primitives",
+ "xcm-simulator"
]
[workspace.dependencies]
@@ -59,6 +61,7 @@ sp-state-machine = { git = "https://github.com/paritytech/polkadot-sdk", branch
sp-consensus-slots = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
sp-weights ={ git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
sp-genesis-builder ={ git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
+sp-tracing ={ git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
# (native)
sp-blockchain = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0" }
@@ -123,6 +126,7 @@ pallet-membership = { git = "https://github.com/paritytech/polkadot-sdk", branch
pallet-transaction-payment = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
pallet-preimage = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
+pallet-uniques = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
pallet-vesting = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
pallet-proxy = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
frame-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
@@ -207,20 +211,12 @@ cumulus-pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", branc
xcm = { package = "staging-xcm", git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
xcm-builder = { package = "staging-xcm-builder", git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
xcm-executor = { package = "staging-xcm-executor", git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
+xcm-simulator = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0", default-features = false }
# (native)
polkadot-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0" }
polkadot-service = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.11.0" }
-# Orml
-# (wasm)
-# TODO This code has been commented out when upgrading polkadot-sdk from v1.1.0 to 1.6.0
-# because conflicts with orml-trait crate and currently XCM is not used. It should be
-# uncommented and fixed when XCM is used in the runtime.
-# orml-traits = { version = "0.7.0", default-features = false }
-# orml-xcm-support = { version = "0.7.0", default-features = false }
-# orml-xtokens = { version = "0.7.0", default-features = false }
-
# Other pallets
# (wasm)
substrate-fixed = { git = "https://github.com/encointer/substrate-fixed", default-features = false }
diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml
index 41d51ada..ba70b1f4 100644
--- a/primitives/Cargo.toml
+++ b/primitives/Cargo.toml
@@ -29,4 +29,5 @@ std = [
"fp-account/std",
"sp-consensus-aura/std",
"cumulus-primitives-core/std",
+ "parachains-common/std"
]
diff --git a/runtime/laos/Cargo.toml b/runtime/laos/Cargo.toml
index 90c68c26..74110597 100644
--- a/runtime/laos/Cargo.toml
+++ b/runtime/laos/Cargo.toml
@@ -114,12 +114,6 @@ precompile-utils = { workspace = true }
[dev-dependencies]
precompile-utils = { workspace = true, features = ["testing"] }
evm = { workspace = true }
-# TODO This code has been commented out when upgrading polkadot-sdk from v1.1.0 to 1.6.0
-# because conflicts with orml-trait crate and currently XCM is not used. It should be
-# uncommented and fixed when XCM is used in the runtime.
-# orml-traits = { workspace = true }
-# orml-xtokens = { workspace = true, features = ["std"] }
-# orml-xcm-support = { workspace = true, features = ["std"] }
polkadot-runtime-parachains = { workspace = true }
pallet-assets = { workspace = true }
test-utils = { workspace = true }
diff --git a/xcm-simulator/Cargo.toml b/xcm-simulator/Cargo.toml
new file mode 100644
index 00000000..1166f679
--- /dev/null
+++ b/xcm-simulator/Cargo.toml
@@ -0,0 +1,74 @@
+[package]
+name = "xcm-simulator-example"
+description = "Examples of xcm-simulator usage."
+authors.workspace = true
+edition.workspace = true
+version = "7.0.0"
+
+[dependencies]
+parity-scale-codec = { workspace = true }
+scale-info = { workspace = true }
+log = { workspace = true }
+hex-literal = { workspace = true }
+
+frame-system = { workspace = true }
+frame-support = { workspace = true }
+pallet-balances = { workspace = true, features = ["insecure_zero_ed"] }
+pallet-message-queue = { workspace = true }
+pallet-uniques = { workspace = true }
+sp-std = { workspace = true }
+sp-core = { workspace = true }
+sp-runtime = { workspace = true }
+sp-io = { workspace = true }
+sp-tracing = { workspace = true }
+
+xcm = { workspace = true }
+xcm-simulator = { workspace = true }
+xcm-executor = { workspace = true }
+xcm-builder = { workspace = true }
+pallet-xcm = { workspace = true }
+polkadot-core-primitives = { workspace = true }
+polkadot-runtime-parachains = { workspace = true }
+polkadot-parachain-primitives = { workspace = true }
+laos-primitives = { workspace = true }
+parachain-info = { workspace = true }
+cumulus-pallet-xcm = { workspace = true }
+
+
+[features]
+default = ["std"]
+std = [
+ "cumulus-pallet-xcm/std",
+ "parachain-info/std",
+ "laos-primitives/std",
+ "frame-system/std",
+ "frame-support/std",
+ "pallet-balances/std",
+ "pallet-message-queue/std",
+ "pallet-uniques/std",
+ "sp-std/std",
+ "sp-core/std",
+ "sp-runtime/std",
+ "sp-io/std",
+ "sp-tracing/std",
+ "xcm/std",
+ "xcm-executor/std",
+ "xcm-builder/std",
+ "pallet-xcm/std",
+ "polkadot-core-primitives/std",
+ "polkadot-runtime-parachains/std",
+ "polkadot-parachain-primitives/std"
+]
+runtime-benchmarks = [
+ "frame-support/runtime-benchmarks",
+ "frame-system/runtime-benchmarks",
+ "pallet-balances/runtime-benchmarks",
+ "pallet-message-queue/runtime-benchmarks",
+ "pallet-uniques/runtime-benchmarks",
+ "pallet-xcm/runtime-benchmarks",
+ "polkadot-parachain-primitives/runtime-benchmarks",
+ "polkadot-runtime-parachains/runtime-benchmarks",
+ "sp-runtime/runtime-benchmarks",
+ "xcm-builder/runtime-benchmarks",
+ "xcm-executor/runtime-benchmarks",
+]
\ No newline at end of file
diff --git a/xcm-simulator/src/laosish/configs/balances.rs b/xcm-simulator/src/laosish/configs/balances.rs
new file mode 100644
index 00000000..44de12f5
--- /dev/null
+++ b/xcm-simulator/src/laosish/configs/balances.rs
@@ -0,0 +1,51 @@
+// Copyright 2023-2024 Freeverse.io
+// This file is part of LAOS.
+
+// LAOS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// LAOS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with LAOS. If not, see .
+
+use crate::laosish::{
+ Balance, Runtime, RuntimeEvent, RuntimeFreezeReason, RuntimeHoldReason, System,
+};
+use frame_support::parameter_types;
+
+parameter_types! {
+ /// The minimum amount required to keep an account open, set to zero in this case.
+ ///
+ /// While it's generally advised to have this value greater than zero to avoid potential
+ /// DoS vectors, we set it to zero here due to specific concerns about relay attacks.
+ /// In such attacks, the reset of the nonce upon account deletion can be exploited.
+ /// By setting the ExistentialDeposit to zero, we prevent the scenario where an account's
+ /// balance drops to a level that would trigger its deletion and subsequent nonce reset.
+ pub const ExistentialDeposit: Balance = 0;
+ pub const MaxLocks: u32 = 50;
+ pub const MaxFreezes: u32 = 50;
+ pub const MaxHolds: u32 = 50;
+ pub const MaxReserves: u32 = 50;
+}
+
+impl pallet_balances::Config for Runtime {
+ type MaxLocks = MaxLocks;
+ type Balance = Balance;
+ type RuntimeEvent = RuntimeEvent;
+ type DustRemoval = ();
+ type ExistentialDeposit = ExistentialDeposit;
+ type AccountStore = System;
+ type MaxReserves = MaxReserves;
+ type ReserveIdentifier = [u8; 8];
+ type FreezeIdentifier = RuntimeFreezeReason;
+ type RuntimeFreezeReason = RuntimeFreezeReason;
+ type RuntimeHoldReason = RuntimeHoldReason;
+ type MaxFreezes = MaxFreezes;
+ type WeightInfo = pallet_balances::weights::SubstrateWeight; // See: https://github.com/freeverseio/laos/pull/533#issuecomment-2034913428
+}
diff --git a/xcm-simulator/src/laosish/configs/mod.rs b/xcm-simulator/src/laosish/configs/mod.rs
new file mode 100644
index 00000000..2d07fc85
--- /dev/null
+++ b/xcm-simulator/src/laosish/configs/mod.rs
@@ -0,0 +1,7 @@
+mod balances;
+mod system;
+pub mod xcm_config;
+
+use crate::laosish::Runtime;
+
+impl parachain_info::Config for Runtime {}
diff --git a/xcm-simulator/src/laosish/configs/system.rs b/xcm-simulator/src/laosish/configs/system.rs
new file mode 100644
index 00000000..e853005c
--- /dev/null
+++ b/xcm-simulator/src/laosish/configs/system.rs
@@ -0,0 +1,82 @@
+// Copyright 2023-2024 Freeverse.io
+// This file is part of LAOS.
+
+// LAOS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// LAOS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with LAOS. If not, see .
+
+use crate::laosish::{
+ AccountId, Balance, Block, PalletInfo, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin,
+ RuntimeTask,
+};
+use frame_support::{parameter_types, traits::Everything};
+use sp_runtime::traits::{BlakeTwo256, IdentityLookup};
+
+parameter_types! {
+ pub const SS58Prefix: u16 = 42;
+ pub const BlockHashCount: u32 = 256;
+}
+
+impl frame_system::Config for Runtime {
+ /// The identifier used to distinguish between accounts.
+ type AccountId = AccountId;
+ /// The aggregated dispatch type that is available for extrinsics.
+ type RuntimeCall = RuntimeCall;
+ /// The lookup mechanism to get account ID from whatever is passed in dispatchers.
+ type Lookup = IdentityLookup;
+ /// The block type
+ type Block = Block;
+ /// The type for hashing blocks and tries.
+ type Hash = laos_primitives::Hash;
+ /// The type for storing how many extrinsics an account has signed.
+ type Nonce = laos_primitives::Nonce;
+ /// The hashing algorithm used.
+ type Hashing = BlakeTwo256;
+ /// The ubiquitous event type.
+ type RuntimeEvent = RuntimeEvent;
+ /// The ubiquitous origin type.
+ type RuntimeOrigin = RuntimeOrigin;
+ /// The aggregated RuntimeTask type.
+ type RuntimeTask = RuntimeTask;
+ /// Maximum number of block number to block hash mappings to keep (oldest pruned first).
+ type BlockHashCount = BlockHashCount;
+ /// Runtime version.
+ type Version = ();
+ /// Converts a module to an index of this module in the runtime.
+ type PalletInfo = PalletInfo;
+ /// The data to be stored in an account.
+ type AccountData = pallet_balances::AccountData;
+ /// What to do if a new account is created.
+ type OnNewAccount = ();
+ /// What to do if an account is fully reaped from the system.
+ type OnKilledAccount = ();
+ /// The weight of database operations that the runtime can invoke.
+ type DbWeight = ();
+ /// The basic call filter to use in dispatchable.
+ type BaseCallFilter = Everything;
+ /// Weight information for the extrinsics of this pallet.
+ type SystemWeightInfo = ();
+ /// Block & extrinsics weights: base values and limits.
+ type BlockWeights = laos_primitives::RuntimeBlockWeights;
+ /// The maximum length of a block (in bytes).
+ type BlockLength = laos_primitives::RuntimeBlockLength;
+ /// This is used as an identifier of the chain. 42 is the generic substrate prefix.
+ type SS58Prefix = SS58Prefix;
+ /// The action to take on a Runtime Upgrade
+ type OnSetCode = ();
+ type MaxConsumers = frame_support::traits::ConstU32<16>;
+ type SingleBlockMigrations = ();
+ type MultiBlockMigrator = ();
+ type PreInherents = ();
+ type PostInherents = ();
+ type PostTransactions = ();
+}
diff --git a/xcm-simulator/src/laosish/configs/xcm_config.rs b/xcm-simulator/src/laosish/configs/xcm_config.rs
new file mode 100644
index 00000000..ad988891
--- /dev/null
+++ b/xcm-simulator/src/laosish/configs/xcm_config.rs
@@ -0,0 +1,228 @@
+// Copyright 2023-2024 Freeverse.io
+// This file is part of LAOS.
+
+// LAOS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// LAOS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with LAOS. If not, see .
+
+use crate::laosish::{
+ mock_msg_queue, AccountId, AllPalletsWithSystem, Balances, MsgQueue, ParachainInfo,
+ PolkadotXcm, Runtime, RuntimeCall, RuntimeEvent, RuntimeOrigin,
+};
+use core::marker::PhantomData;
+use frame_support::{
+ parameter_types,
+ traits::{ConstU32, Contains, Everything, Nothing, OriginTrait},
+ weights::Weight,
+};
+use frame_system::{EnsureRoot, RawOrigin as SystemRawOrigin};
+use pallet_xcm::XcmPassthrough;
+use polkadot_parachain_primitives::primitives::Sibling;
+use sp_runtime::traits::TryConvert;
+use xcm::latest::prelude::*;
+use xcm_builder::{
+ AccountKey20Aliases, AllowExplicitUnpaidExecutionFrom, AllowTopLevelPaidExecutionFrom,
+ DenyReserveTransferToRelayChain, DenyThenTry, EnsureDecodableXcm, EnsureXcmOrigin,
+ FixedRateOfFungible, FixedWeightBounds, FrameTransactionalProcessor, FungibleAdapter,
+ IsConcrete, NativeAsset, ParentIsPreset, RelayChainAsNative, SiblingParachainAsNative,
+ SiblingParachainConvertsVia, SignedAccountKey20AsNative, SovereignSignedViaLocation,
+ TakeWeightCredit, TrailingSetTopicAsId, WithComputedOrigin,
+};
+use xcm_executor::XcmExecutor;
+
+parameter_types! {
+ pub const RelayLocation: Location = Location::parent();
+ pub const RelayNetwork: Option = None;
+ pub RelayChainOrigin: RuntimeOrigin = cumulus_pallet_xcm::Origin::Relay.into();
+ // For the real deployment, it is recommended to set `RelayNetwork` according to the relay chain
+ // and prepend `UniversalLocation` with `GlobalConsensus(RelayNetwork::get())`.
+ pub UniversalLocation: InteriorLocation = Parachain(ParachainInfo::parachain_id().into()).into();
+}
+
+/// Type for specifying how a `MultiLocation` can be converted into an `AccountId`. This is used
+/// when determining ownership of accounts for asset transacting and when attempting to use XCM
+/// `Transact` in order to determine the dispatch Origin.
+pub type LocationToAccountId = (
+ // The parent (Relay-chain) origin converts to the parent `AccountId`.
+ ParentIsPreset,
+ // Sibling parachain origins convert to AccountId via the `ParaId::into`.
+ SiblingParachainConvertsVia,
+ // Straight up local `AccountId20` origins just alias directly to `AccountId`.
+ AccountKey20Aliases,
+);
+
+/// Means for transacting assets on this chain.
+pub type LocalAssetTransactor = FungibleAdapter<
+ // Use this currency:
+ Balances,
+ // Use this currency when it is a fungible asset matching the given location or name:
+ IsConcrete,
+ // Do a simple pun to convert an AccountId20 Location into a native chain account ID:
+ LocationToAccountId,
+ // Our chain's account ID type (we can't get away without mentioning it explicitly):
+ AccountId,
+ // We don't track any teleports.
+ (),
+>;
+
+/// This is the type we use to convert an (incoming) XCM origin into a local `Origin` instance,
+/// ready for dispatching a transaction with Xcm's `Transact`. There is an `OriginKind` which can
+/// biases the kind of local `Origin` it will become.
+pub type XcmOriginToTransactDispatchOrigin = (
+ // Sovereign account converter; this attempts to derive an `AccountId` from the origin location
+ // using `LocationToAccountId` and then turn that into the usual `Signed` origin. Useful for
+ // foreign chains who want to have a local sovereign account on this chain which they control.
+ SovereignSignedViaLocation,
+ // Native converter for Relay-chain (Parent) location; will convert to a `Relay` origin when
+ // recognized.
+ RelayChainAsNative,
+ // Native converter for sibling Parachains; will convert to a `SiblingPara` origin when
+ // recognized.
+ SiblingParachainAsNative,
+ // Native signed account converter; this just converts an `AccountId20` origin into a normal
+ // `RuntimeOrigin::Signed` origin of the same 20-byte value.
+ SignedAccountKey20AsNative,
+ // Xcm origins can be represented natively under the Xcm pallet's Xcm origin.
+ XcmPassthrough,
+);
+
+parameter_types! {
+ // One XCM operation is 1_000_000_000 weight - almost certainly a conservative estimate.
+ pub UnitWeightCost: Weight = Weight::from_parts(1_000_000_000, 64 * 1024);
+ pub const MaxInstructions: u32 = 100;
+ pub const MaxAssetsIntoHolding: u32 = 64;
+}
+
+pub struct ParentOrParentsExecutivePlurality;
+impl Contains for ParentOrParentsExecutivePlurality {
+ fn contains(location: &Location) -> bool {
+ matches!(location.unpack(), (1, []) | (1, [Plurality { id: BodyId::Executive, .. }]))
+ }
+}
+
+pub type Barrier = TrailingSetTopicAsId<
+ DenyThenTry<
+ DenyReserveTransferToRelayChain,
+ (
+ TakeWeightCredit,
+ WithComputedOrigin<
+ (
+ AllowTopLevelPaidExecutionFrom,
+ AllowExplicitUnpaidExecutionFrom,
+ // ^^^ Parent and its exec plurality get free execution
+ ),
+ UniversalLocation,
+ ConstU32<8>,
+ >,
+ ),
+ >,
+>;
+
+parameter_types! {
+ pub ParentTokenPerSecondPerByte: (AssetId, u128, u128) = (AssetId(Parent.into()), 1, 1);
+}
+
+pub struct XcmConfig;
+impl xcm_executor::Config for XcmConfig {
+ type RuntimeCall = RuntimeCall;
+ type XcmSender = XcmRouter;
+ // How to withdraw and deposit an asset.
+ type AssetTransactor = LocalAssetTransactor;
+ type OriginConverter = XcmOriginToTransactDispatchOrigin;
+ type IsReserve = NativeAsset;
+ type IsTeleporter = (); // Teleporting is disabled.
+ type UniversalLocation = UniversalLocation;
+ type Barrier = Barrier;
+ type Weigher = FixedWeightBounds;
+ type Trader = FixedRateOfFungible;
+ type ResponseHandler = PolkadotXcm;
+ type AssetTrap = PolkadotXcm;
+ type AssetClaims = PolkadotXcm;
+ type SubscriptionService = PolkadotXcm;
+ type PalletInstancesInfo = AllPalletsWithSystem;
+ type MaxAssetsIntoHolding = MaxAssetsIntoHolding;
+ type AssetLocker = ();
+ type AssetExchanger = ();
+ type FeeManager = ();
+ type MessageExporter = ();
+ type UniversalAliases = Nothing;
+ type CallDispatcher = RuntimeCall;
+ type SafeCallFilter = Everything;
+ type Aliasers = Nothing;
+ type TransactionalProcessor = FrameTransactionalProcessor;
+ type HrmpNewChannelOpenRequestHandler = ();
+ type HrmpChannelAcceptedHandler = ();
+ type HrmpChannelClosingHandler = ();
+}
+
+/// No local origins on this chain are allowed to dispatch XCM sends/executions.
+pub type LocalOriginToLocation = SignedToAccountId20;
+pub type XcmRouter = EnsureDecodableXcm>;
+
+impl pallet_xcm::Config for Runtime {
+ type RuntimeEvent = RuntimeEvent;
+ type SendXcmOrigin = EnsureXcmOrigin;
+ type XcmRouter = XcmRouter;
+ type ExecuteXcmOrigin = EnsureXcmOrigin;
+ type XcmExecuteFilter = Nothing;
+ type XcmExecutor = XcmExecutor;
+ type XcmTeleportFilter = Nothing;
+ type XcmReserveTransferFilter = Everything;
+ type Weigher = FixedWeightBounds;
+ type UniversalLocation = UniversalLocation;
+ type RuntimeOrigin = RuntimeOrigin;
+ type RuntimeCall = RuntimeCall;
+ const VERSION_DISCOVERY_QUEUE_SIZE: u32 = 100;
+ // ^ Override for AdvertisedXcmVersion default
+ type AdvertisedXcmVersion = pallet_xcm::CurrentXcmVersion;
+ type Currency = Balances;
+ type CurrencyMatcher = ();
+ type TrustedLockers = ();
+ type SovereignAccountOf = LocationToAccountId;
+ type MaxLockers = ConstU32<8>;
+ type WeightInfo = pallet_xcm::TestWeightInfo;
+ type AdminOrigin = EnsureRoot;
+ type MaxRemoteLockConsumers = ConstU32<0>;
+ type RemoteLockConsumerIdentifier = ();
+}
+
+impl cumulus_pallet_xcm::Config for Runtime {
+ type RuntimeEvent = RuntimeEvent;
+ type XcmExecutor = XcmExecutor;
+}
+
+impl mock_msg_queue::Config for Runtime {
+ type RuntimeEvent = RuntimeEvent;
+ type XcmExecutor = XcmExecutor;
+}
+
+pub struct SignedToAccountId20(
+ PhantomData<(RuntimeOrigin, AccountId, Network)>,
+);
+impl<
+ RuntimeOrigin: OriginTrait + Clone,
+ AccountId: Into<[u8; 20]>,
+ Network: frame_support::traits::Get