diff --git a/Cargo.lock b/Cargo.lock index 86284315686c..1ed0646919d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -438,7 +438,7 @@ dependencies = [ [[package]] name = "binary-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "hash-db", "log", @@ -1702,18 +1702,18 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "docify" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6491709f76fb7ceb951244daf624d480198b427556084391d6e3c33d3ae74b9" +checksum = "029de870d175d11969524d91a3fb2cbf6d488b853bff99d41cf65e533ac7d9d2" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc5338a9f72ce29a81377d9039798fcc926fb471b2004666caf48e446dffbbf" +checksum = "cac43324656a1b05eb0186deb51f27d2d891c704c37f34de281ef6297ba193e5" dependencies = [ "common-path", "derive-syn-parse", @@ -1723,6 +1723,7 @@ dependencies = [ "regex", "syn 2.0.20", "termcolor", + "toml 0.7.3", "walkdir", ] @@ -2223,7 +2224,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", ] @@ -2246,7 +2247,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support", "frame-support-procedural", @@ -2271,7 +2272,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "Inflector", "array-bytes", @@ -2319,7 +2320,7 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2330,7 +2331,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -2347,7 +2348,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support", "frame-system", @@ -2376,7 +2377,7 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-recursion", "futures", @@ -2397,7 +2398,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "aquamarine", "bitflags", @@ -2434,7 +2435,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "Inflector", "cfg-expr", @@ -2452,7 +2453,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -2464,7 +2465,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "proc-macro2", "quote", @@ -2474,7 +2475,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-executive", @@ -2501,7 +2502,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support", "frame-system", @@ -2514,7 +2515,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "cfg-if", "frame-support", @@ -2533,7 +2534,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -2548,7 +2549,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "sp-api", @@ -2557,7 +2558,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support", "parity-scale-codec", @@ -2739,7 +2740,7 @@ dependencies = [ [[package]] name = "generate-bags" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "chrono", "frame-election-provider-support", @@ -4594,7 +4595,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "futures", "log", @@ -4613,7 +4614,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "anyhow", "jsonrpsee", @@ -5139,7 +5140,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5154,7 +5155,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support", "frame-system", @@ -5170,7 +5171,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support", "frame-system", @@ -5184,7 +5185,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5208,7 +5209,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5228,7 +5229,7 @@ dependencies = [ [[package]] name = "pallet-bags-list-remote-tests" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-election-provider-support", "frame-remote-externalities", @@ -5247,7 +5248,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5262,7 +5263,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support", "frame-system", @@ -5281,7 +5282,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -5305,7 +5306,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5323,7 +5324,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5342,7 +5343,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5359,7 +5360,7 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5376,7 +5377,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5394,7 +5395,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5417,7 +5418,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5430,7 +5431,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5449,7 +5450,7 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "docify", "frame-benchmarking", @@ -5468,7 +5469,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5491,7 +5492,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5507,7 +5508,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5527,7 +5528,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5544,7 +5545,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5561,7 +5562,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "7.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5580,7 +5581,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5597,7 +5598,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5610,10 +5611,28 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-nfts" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" +dependencies = [ + "enumflags2", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-nis" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5629,7 +5648,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support", "frame-system", @@ -5648,7 +5667,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5668,7 +5687,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -5679,7 +5698,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support", "frame-system", @@ -5696,7 +5715,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5720,7 +5739,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5737,7 +5756,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5752,7 +5771,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5770,7 +5789,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5785,7 +5804,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5804,7 +5823,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5821,7 +5840,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support", "frame-system", @@ -5842,7 +5861,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5858,7 +5877,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5877,7 +5896,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5900,7 +5919,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -5911,7 +5930,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "log", "sp-arithmetic", @@ -5920,7 +5939,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "sp-api", @@ -5929,7 +5948,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5946,7 +5965,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5961,7 +5980,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5979,7 +5998,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -5998,7 +6017,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-support", "frame-system", @@ -6014,7 +6033,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -6030,7 +6049,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -6042,7 +6061,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -6059,7 +6078,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -6074,7 +6093,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -6090,7 +6109,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -6105,7 +6124,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-benchmarking", "frame-support", @@ -9111,7 +9130,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "log", "sp-core", @@ -9122,7 +9141,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "futures", @@ -9150,7 +9169,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "futures", "futures-timer", @@ -9173,7 +9192,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -9188,7 +9207,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "memmap2", "sc-chain-spec-derive", @@ -9207,7 +9226,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -9218,7 +9237,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "chrono", @@ -9257,7 +9276,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "fnv", "futures", @@ -9283,7 +9302,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "hash-db", "kvdb", @@ -9309,7 +9328,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "futures", @@ -9334,7 +9353,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "fork-tree", @@ -9370,7 +9389,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "futures", "jsonrpsee", @@ -9392,7 +9411,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "async-channel", @@ -9426,7 +9445,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "futures", "jsonrpsee", @@ -9445,7 +9464,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "fork-tree", "parity-scale-codec", @@ -9458,7 +9477,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "ahash 0.8.2", "array-bytes", @@ -9499,7 +9518,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "finality-grandpa", "futures", @@ -9519,7 +9538,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "futures", @@ -9542,7 +9561,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", @@ -9564,7 +9583,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -9576,7 +9595,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "anyhow", "cfg-if", @@ -9593,7 +9612,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "ansi_term", "futures", @@ -9609,7 +9628,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "parking_lot 0.12.1", @@ -9623,7 +9642,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "async-channel", @@ -9666,7 +9685,7 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-channel", "cid", @@ -9686,7 +9705,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "bitflags", @@ -9703,7 +9722,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "ahash 0.8.2", "futures", @@ -9722,7 +9741,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "async-channel", @@ -9743,7 +9762,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "async-channel", @@ -9777,7 +9796,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "futures", @@ -9795,7 +9814,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "bytes", @@ -9829,7 +9848,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -9838,7 +9857,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "futures", "jsonrpsee", @@ -9869,7 +9888,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -9888,7 +9907,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "http", "jsonrpsee", @@ -9903,7 +9922,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "futures", @@ -9929,7 +9948,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "directories", @@ -9993,7 +10012,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "log", "parity-scale-codec", @@ -10004,7 +10023,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "clap 4.2.5", "fs4", @@ -10018,7 +10037,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -10037,7 +10056,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "futures", "libc", @@ -10056,7 +10075,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "chrono", "futures", @@ -10075,7 +10094,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "ansi_term", "atty", @@ -10104,7 +10123,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -10115,7 +10134,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "futures", @@ -10141,7 +10160,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "futures", @@ -10157,7 +10176,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-channel", "futures", @@ -10705,7 +10724,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "hash-db", "log", @@ -10726,7 +10745,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "Inflector", "blake2", @@ -10740,7 +10759,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "23.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "scale-info", @@ -10753,7 +10772,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "16.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "integer-sqrt", "num-traits", @@ -10767,7 +10786,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "scale-info", @@ -10780,7 +10799,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "sp-api", "sp-inherents", @@ -10791,7 +10810,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "futures", "log", @@ -10809,7 +10828,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "futures", @@ -10824,7 +10843,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "parity-scale-codec", @@ -10841,7 +10860,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "parity-scale-codec", @@ -10860,7 +10879,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "lazy_static", "parity-scale-codec", @@ -10879,7 +10898,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "finality-grandpa", "log", @@ -10897,7 +10916,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "scale-info", @@ -10909,7 +10928,7 @@ dependencies = [ [[package]] name = "sp-core" version = "21.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "bitflags", @@ -10954,7 +10973,7 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "9.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "blake2b_simd", "byteorder", @@ -10967,7 +10986,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "9.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "quote", "sp-core-hashing", @@ -10977,7 +10996,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -10986,7 +11005,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "proc-macro2", "quote", @@ -10996,7 +11015,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.19.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "environmental", "parity-scale-codec", @@ -11007,7 +11026,7 @@ dependencies = [ [[package]] name = "sp-genesis-builder" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "serde_json", "sp-api", @@ -11018,7 +11037,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11032,7 +11051,7 @@ dependencies = [ [[package]] name = "sp-io" version = "23.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "bytes", "ed25519", @@ -11057,7 +11076,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "24.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "lazy_static", "sp-core", @@ -11068,7 +11087,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.27.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "parking_lot 0.12.1", @@ -11080,7 +11099,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "thiserror", "zstd 0.12.3+zstd.1.5.2", @@ -11089,7 +11108,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -11100,7 +11119,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "ckb-merkle-mountain-range", "log", @@ -11118,7 +11137,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "scale-info", @@ -11132,7 +11151,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "sp-api", "sp-core", @@ -11142,7 +11161,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "backtrace", "lazy_static", @@ -11152,7 +11171,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "rustc-hash", "serde", @@ -11162,7 +11181,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "24.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "either", "hash256-std-hasher", @@ -11184,7 +11203,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "17.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -11202,7 +11221,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "11.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "Inflector", "proc-macro-crate", @@ -11214,7 +11233,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "scale-info", @@ -11229,7 +11248,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -11243,7 +11262,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.28.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "hash-db", "log", @@ -11264,7 +11283,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "aes-gcm 0.10.2", "curve25519-dalek 3.2.0", @@ -11288,12 +11307,12 @@ dependencies = [ [[package]] name = "sp-std" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" [[package]] name = "sp-storage" version = "13.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11306,7 +11325,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "parity-scale-codec", @@ -11319,7 +11338,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "10.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "sp-std", @@ -11331,7 +11350,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "sp-api", "sp-runtime", @@ -11340,7 +11359,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "parity-scale-codec", @@ -11355,7 +11374,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "22.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "ahash 0.8.2", "hash-db", @@ -11378,7 +11397,7 @@ dependencies = [ [[package]] name = "sp-version" version = "22.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "impl-serde", "parity-scale-codec", @@ -11395,7 +11414,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "8.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -11406,7 +11425,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "14.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -11419,7 +11438,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "20.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "parity-scale-codec", "scale-info", @@ -11644,12 +11663,12 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "frame-system-rpc-runtime-api", "futures", @@ -11668,7 +11687,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "hyper", "log", @@ -11680,7 +11699,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "jsonrpsee", @@ -11693,7 +11712,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -11710,7 +11729,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "array-bytes", "async-trait", @@ -11736,7 +11755,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "futures", "substrate-test-utils-derive", @@ -11746,7 +11765,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -11757,7 +11776,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "ansi_term", "build-helper", @@ -12627,7 +12646,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e966352d118a745678f720ae85e617d054dc8165" +source = "git+https://github.com/paritytech/substrate?branch=master#28e906dffcaa91e85f59aff628d953ebeb036ae2" dependencies = [ "async-trait", "clap 4.2.5", @@ -13915,6 +13934,7 @@ dependencies = [ "log", "pallet-balances", "pallet-message-queue", + "pallet-nfts", "pallet-uniques", "pallet-xcm", "parity-scale-codec", diff --git a/xcm/xcm-builder/src/lib.rs b/xcm/xcm-builder/src/lib.rs index e3f910409638..31581caff226 100644 --- a/xcm/xcm-builder/src/lib.rs +++ b/xcm/xcm-builder/src/lib.rs @@ -78,6 +78,12 @@ pub use nonfungibles_adapter::{ NonFungiblesAdapter, NonFungiblesMutateAdapter, NonFungiblesTransferAdapter, }; +mod nonfungibles_v2_adapter; +pub use nonfungibles_v2_adapter::{ + MultiLocationCollectionId, NonFungiblesV2Adapter, NonFungiblesV2MutateAdapter, + NonFungiblesV2TransferAdapter, +}; + mod weight; pub use weight::{ FixedRateOfFungible, FixedWeightBounds, TakeRevenue, UsingComponents, WeightInfoBounds, diff --git a/xcm/xcm-builder/src/nonfungibles_adapter.rs b/xcm/xcm-builder/src/nonfungibles_adapter.rs index 6cf5980df0e9..fa2747dea1cb 100644 --- a/xcm/xcm-builder/src/nonfungibles_adapter.rs +++ b/xcm/xcm-builder/src/nonfungibles_adapter.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -//! Adapters to work with `frame_support::traits::tokens::fungibles` through XCM. +//! Adapters to work with `frame_support::traits::tokens::nonfungibles` through XCM. use crate::{AssetChecking, MintLocation}; use frame_support::{ diff --git a/xcm/xcm-builder/src/nonfungibles_v2_adapter.rs b/xcm/xcm-builder/src/nonfungibles_v2_adapter.rs new file mode 100644 index 000000000000..b2e113ad5b2f --- /dev/null +++ b/xcm/xcm-builder/src/nonfungibles_v2_adapter.rs @@ -0,0 +1,452 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Adapters to work with [`frame_support::traits::tokens::nonfungibles_v2`] through XCM. +use crate::{AssetChecking, MintLocation}; +use frame_support::{ + ensure, + traits::{tokens::nonfungibles_v2, Get, Incrementable}, +}; +use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; +use scale_info::TypeInfo; +use sp_std::{marker::PhantomData, prelude::*, result}; +use xcm::latest::prelude::*; +use xcm_executor::traits::{ + ConvertLocation, Error as MatchError, MatchesNonFungibles, TransactAsset, +}; + +const LOG_TARGET: &str = "xcm::nonfungibles_v2_adapter"; +/// Adapter for transferring non-fungible tokens (NFTs) using [`nonfungibles_v2`]. +/// +/// This adapter facilitates the transfer of NFTs between different locations. +pub struct NonFungiblesV2TransferAdapter( + PhantomData<(Assets, Matcher, AccountIdConverter, AccountId)>, +); +impl< + Assets: nonfungibles_v2::Transfer, + Matcher: MatchesNonFungibles, + AccountIdConverter: ConvertLocation, + AccountId: Clone, // can't get away without it since Currency is generic over it. + > TransactAsset for NonFungiblesV2TransferAdapter +{ + fn transfer_asset( + what: &MultiAsset, + from: &MultiLocation, + to: &MultiLocation, + context: &XcmContext, + ) -> result::Result { + log::trace!( + target: LOG_TARGET, + "transfer_asset what: {:?}, from: {:?}, to: {:?}, context: {:?}", + what, + from, + to, + context, + ); + // Check we handle this asset. + let (class, instance) = Matcher::matches_nonfungibles(what)?; + 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()) + } +} + +/// Adapter for mutating non-fungible tokens (NFTs) using [`nonfungibles_v2`]. +/// +/// This adapter provides functions to withdraw, deposit, check in and check out non fungibles. +pub struct NonFungiblesV2MutateAdapter< + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, +>( + PhantomData<( + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, + )>, +) +where + ItemConfig: Default; + +impl< + Assets: nonfungibles_v2::Mutate, + Matcher: MatchesNonFungibles, + AccountIdConverter: ConvertLocation, + AccountId: Clone + Eq, // can't get away without it since Currency is generic over it. + CheckAsset: AssetChecking, + CheckingAccount: Get>, + ItemConfig: Default, + > + NonFungiblesV2MutateAdapter< + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, + > +{ + fn can_accrue_checked(class: Assets::CollectionId, instance: Assets::ItemId) -> XcmResult { + ensure!(Assets::owner(&class, &instance).is_none(), XcmError::NotDepositable); + Ok(()) + } + fn can_reduce_checked(class: Assets::CollectionId, instance: Assets::ItemId) -> XcmResult { + if let Some(checking_account) = CheckingAccount::get() { + // This is an asset whose teleports we track. + let owner = Assets::owner(&class, &instance); + ensure!(owner == Some(checking_account), XcmError::NotWithdrawable); + ensure!(Assets::can_transfer(&class, &instance), XcmError::NotWithdrawable); + } + Ok(()) + } + fn accrue_checked(class: Assets::CollectionId, instance: Assets::ItemId) { + if let Some(checking_account) = CheckingAccount::get() { + let ok = Assets::mint_into( + &class, + &instance, + &checking_account, + &ItemConfig::default(), + true, + ) + .is_ok(); + debug_assert!(ok, "`mint_into` cannot generally fail; qed"); + } + } + fn reduce_checked(class: Assets::CollectionId, instance: Assets::ItemId) { + let ok = Assets::burn(&class, &instance, None).is_ok(); + debug_assert!(ok, "`can_check_in` must have returned `true` immediately prior; qed"); + } +} + +impl< + Assets: nonfungibles_v2::Mutate, + Matcher: MatchesNonFungibles, + AccountIdConverter: ConvertLocation, + AccountId: Clone + Eq, // can't get away without it since Currency is generic over it. + CheckAsset: AssetChecking, + CheckingAccount: Get>, + ItemConfig: Default, + > TransactAsset + for NonFungiblesV2MutateAdapter< + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, + > +{ + fn can_check_in(_origin: &MultiLocation, what: &MultiAsset, context: &XcmContext) -> XcmResult { + log::trace!( + target: LOG_TARGET, + "can_check_in origin: {:?}, what: {:?}, context: {:?}", + _origin, + what, + context, + ); + // Check we handle this asset. + let (class, instance) = Matcher::matches_nonfungibles(what)?; + match CheckAsset::asset_checking(&class) { + // We track this asset's teleports to ensure no more come in than have gone out. + Some(MintLocation::Local) => Self::can_reduce_checked(class, instance), + // We track this asset's teleports to ensure no more go out than have come in. + Some(MintLocation::NonLocal) => Self::can_accrue_checked(class, instance), + _ => Ok(()), + } + } + + fn check_in(_origin: &MultiLocation, what: &MultiAsset, context: &XcmContext) { + log::trace!( + target: LOG_TARGET, + "check_in origin: {:?}, what: {:?}, context: {:?}", + _origin, + what, + context, + ); + if let Ok((class, instance)) = Matcher::matches_nonfungibles(what) { + match CheckAsset::asset_checking(&class) { + // We track this asset's teleports to ensure no more come in than have gone out. + Some(MintLocation::Local) => Self::reduce_checked(class, instance), + // We track this asset's teleports to ensure no more go out than have come in. + Some(MintLocation::NonLocal) => Self::accrue_checked(class, instance), + _ => (), + } + } + } + + fn can_check_out(_dest: &MultiLocation, what: &MultiAsset, context: &XcmContext) -> XcmResult { + log::trace!( + target: LOG_TARGET, + "can_check_out dest: {:?}, what: {:?}, context: {:?}", + _dest, + what, + context, + ); + // Check we handle this asset. + let (class, instance) = Matcher::matches_nonfungibles(what)?; + match CheckAsset::asset_checking(&class) { + // We track this asset's teleports to ensure no more come in than have gone out. + Some(MintLocation::Local) => Self::can_accrue_checked(class, instance), + // We track this asset's teleports to ensure no more go out than have come in. + Some(MintLocation::NonLocal) => Self::can_reduce_checked(class, instance), + _ => Ok(()), + } + } + + fn check_out(_dest: &MultiLocation, what: &MultiAsset, context: &XcmContext) { + log::trace!( + target: LOG_TARGET, + "check_out dest: {:?}, what: {:?}, context: {:?}", + _dest, + what, + context, + ); + if let Ok((class, instance)) = Matcher::matches_nonfungibles(what) { + match CheckAsset::asset_checking(&class) { + // We track this asset's teleports to ensure no more come in than have gone out. + Some(MintLocation::Local) => Self::accrue_checked(class, instance), + // We track this asset's teleports to ensure no more go out than have come in. + Some(MintLocation::NonLocal) => Self::reduce_checked(class, instance), + _ => (), + } + } + } + + fn deposit_asset(what: &MultiAsset, who: &MultiLocation, context: &XcmContext) -> XcmResult { + log::trace!( + target: LOG_TARGET, + "deposit_asset what: {:?}, who: {:?}, context: {:?}", + what, + who, + context, + ); + // Check we handle this asset. + let (class, instance) = Matcher::matches_nonfungibles(what)?; + let who = AccountIdConverter::convert_location(who) + .ok_or(MatchError::AccountIdConversionFailed)?; + + Assets::mint_into(&class, &instance, &who, &ItemConfig::default(), true) + .map_err(|e| XcmError::FailedToTransactAsset(e.into())) + } + + fn withdraw_asset( + what: &MultiAsset, + who: &MultiLocation, + maybe_context: Option<&XcmContext>, + ) -> result::Result { + log::trace!( + target: LOG_TARGET, + "withdraw_asset what: {:?}, who: {:?}, maybe_context: {:?}", + what, + who, + maybe_context, + ); + // Check we handle this asset. + 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()))?; + Ok(what.clone().into()) + } +} + +/// Adapter for handling non-fungible tokens (NFTs) using [`nonfungibles_v2`]. +/// +/// This adapter combines the functionalities of both the [`NonFungiblesV2TransferAdapter`] and [`NonFungiblesV2MutateAdapter`] adapters, +/// allowing handling NFTs in various scenarios. +/// For detailed information on the functions, refer to [`TransactAsset`]. +pub struct NonFungiblesV2Adapter< + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, +>( + PhantomData<( + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, + )>, +) +where + ItemConfig: Default; +impl< + Assets: nonfungibles_v2::Mutate + nonfungibles_v2::Transfer, + Matcher: MatchesNonFungibles, + AccountIdConverter: ConvertLocation, + AccountId: Clone + Eq, // can't get away without it since Currency is generic over it. + CheckAsset: AssetChecking, + CheckingAccount: Get>, + ItemConfig: Default, + > TransactAsset + for NonFungiblesV2Adapter< + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, + > +{ + fn can_check_in(origin: &MultiLocation, what: &MultiAsset, context: &XcmContext) -> XcmResult { + NonFungiblesV2MutateAdapter::< + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, + >::can_check_in(origin, what, context) + } + + fn check_in(origin: &MultiLocation, what: &MultiAsset, context: &XcmContext) { + NonFungiblesV2MutateAdapter::< + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, + >::check_in(origin, what, context) + } + + fn can_check_out(dest: &MultiLocation, what: &MultiAsset, context: &XcmContext) -> XcmResult { + NonFungiblesV2MutateAdapter::< + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, + >::can_check_out(dest, what, context) + } + + fn check_out(dest: &MultiLocation, what: &MultiAsset, context: &XcmContext) { + NonFungiblesV2MutateAdapter::< + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, + >::check_out(dest, what, context) + } + + fn deposit_asset(what: &MultiAsset, who: &MultiLocation, context: &XcmContext) -> XcmResult { + NonFungiblesV2MutateAdapter::< + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, + >::deposit_asset(what, who, context) + } + + fn withdraw_asset( + what: &MultiAsset, + who: &MultiLocation, + maybe_context: Option<&XcmContext>, + ) -> result::Result { + NonFungiblesV2MutateAdapter::< + Assets, + Matcher, + AccountIdConverter, + AccountId, + CheckAsset, + CheckingAccount, + ItemConfig, + >::withdraw_asset(what, who, maybe_context) + } + + fn transfer_asset( + what: &MultiAsset, + from: &MultiLocation, + to: &MultiLocation, + context: &XcmContext, + ) -> result::Result { + NonFungiblesV2TransferAdapter::::transfer_asset( + what, from, to, context, + ) + } +} + +#[derive( + Copy, Clone, Decode, Encode, Eq, PartialEq, Ord, PartialOrd, Debug, TypeInfo, MaxEncodedLen, +)] +/// Represents a collection ID based on a MultiLocation. +/// +/// This structure provides a way to map a MultiLocation to a collection ID, +/// which is useful for describing collections that do not follow an incremental pattern. +pub struct MultiLocationCollectionId(MultiLocation); +impl MultiLocationCollectionId { + /// Consume `self` and return the inner MultiLocation. + pub fn into_inner(self) -> MultiLocation { + self.0 + } + + /// Return a reference to the inner MultiLocation. + pub fn inner(&self) -> &MultiLocation { + &self.0 + } +} + +impl Incrementable for MultiLocationCollectionId { + fn increment(&self) -> Option { + None + } + + fn initial_value() -> Option { + None + } +} + +impl From for MultiLocationCollectionId { + fn from(value: MultiLocation) -> Self { + MultiLocationCollectionId(value) + } +} + +impl From for MultiLocation { + fn from(value: MultiLocationCollectionId) -> MultiLocation { + value.into_inner() + } +} diff --git a/xcm/xcm-simulator/example/Cargo.toml b/xcm/xcm-simulator/example/Cargo.toml index 7d47755dc488..f2ac644e4c6a 100644 --- a/xcm/xcm-simulator/example/Cargo.toml +++ b/xcm/xcm-simulator/example/Cargo.toml @@ -16,6 +16,7 @@ frame-support = { git = "https://github.com/paritytech/substrate", branch = "mas pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-message-queue = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-uniques = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-nfts = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/xcm/xcm-simulator/example/src/lib.rs b/xcm/xcm-simulator/example/src/lib.rs index 1f6956485a84..289d532d9c63 100644 --- a/xcm/xcm-simulator/example/src/lib.rs +++ b/xcm/xcm-simulator/example/src/lib.rs @@ -24,6 +24,7 @@ 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]); +pub const BOB: sp_runtime::AccountId32 = sp_runtime::AccountId32::new([1u8; 32]); pub const INITIAL_BALANCE: u128 = 1_000_000_000; decl_test_parachain! { @@ -68,27 +69,27 @@ decl_test_network! { pub fn parent_account_id() -> parachain::AccountId { let location = (Parent,); - parachain::LocationToAccountId::convert_location(&location.into()).unwrap() + parachain::SovereignAccountOf::convert_location(&location.into()).unwrap() } pub fn child_account_id(para: u32) -> relay_chain::AccountId { let location = (Parachain(para),); - relay_chain::LocationToAccountId::convert_location(&location.into()).unwrap() + relay_chain::SovereignAccountOf::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(&location.into()).unwrap() + relay_chain::SovereignAccountOf::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(&location.into()).unwrap() + parachain::SovereignAccountOf::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(&location.into()).unwrap() + parachain::SovereignAccountOf::convert_location(&location.into()).unwrap() } pub fn para_ext(para_id: u32) -> sp_io::TestExternalities { @@ -140,11 +141,15 @@ pub type ParachainPalletXcm = pallet_xcm::Pallet; #[cfg(test)] mod tests { + use crate::parachain::Balance; + use super::*; use codec::Encode; use frame_support::{assert_ok, weights::Weight}; + use pallet_nfts::{CollectionConfig, CollectionSettings, MintSettings}; use xcm::latest::QueryResponseInfo; + use xcm_builder::MultiLocationCollectionId; use xcm_simulator::TestExt; // Helper function for forming buy execution message @@ -152,6 +157,15 @@ mod tests { BuyExecution { fees: fees.into(), weight_limit: Unlimited } } + // helper function for CollectionConfig + fn get_collection_config() -> CollectionConfig { + CollectionConfig { + settings: CollectionSettings::all_enabled(), + max_supply: None, + mint_settings: MintSettings::default(), + } + } + #[test] fn remote_account_ids_work() { child_account_account_id(1, ALICE); @@ -364,7 +378,7 @@ mod tests { #[test] fn teleport_nft() { MockNet::reset(); - + let collection_id = MultiLocation { parents: 1, interior: X1(GeneralIndex(1)) }.into(); Relay::execute_with(|| { // Mint the NFT (1, 69) and give it to our "parachain#1 alias". assert_ok!(relay_chain::Uniques::mint( @@ -381,17 +395,18 @@ mod tests { ); }); ParaA::execute_with(|| { - assert_ok!(parachain::ForeignUniques::force_create( - parachain::RuntimeOrigin::root(), - (Parent, GeneralIndex(1)).into(), + use pallet_nfts::Event; + + assert_ok!(parachain::ForeignNfts::do_create_collection( + collection_id, ALICE, - false, + ALICE, + get_collection_config(), + 1000u128, + Event::ForceCreated { collection: collection_id, owner: ALICE }, )); - assert_eq!( - parachain::ForeignUniques::owner((Parent, GeneralIndex(1)).into(), 69u32.into()), - None, - ); - assert_eq!(parachain::Balances::reserved_balance(&ALICE), 0); + + assert_eq!(parachain::Balances::reserved_balance(&ALICE), 1000); // IRL Alice would probably just execute this locally on the Relay-chain, but we can't // easily do that here since we only send between chains. @@ -411,11 +426,8 @@ mod tests { assert_ok!(ParachainPalletXcm::send_xcm(alice, Parent, message)); }); ParaA::execute_with(|| { - assert_eq!( - parachain::ForeignUniques::owner((Parent, GeneralIndex(1)).into(), 69u32.into()), - Some(ALICE), - ); - assert_eq!(parachain::Balances::reserved_balance(&ALICE), 1000); + assert_eq!(parachain::ForeignNfts::owner(collection_id, 69u32.into()), Some(ALICE),); + assert_eq!(parachain::Balances::reserved_balance(&ALICE), 2000); }); Relay::execute_with(|| { assert_eq!(relay_chain::Uniques::owner(1, 69), None); @@ -429,9 +441,8 @@ mod tests { /// Asserts that the parachain accounts are updated as expected. #[test] fn reserve_asset_transfer_nft() { - sp_tracing::init_for_tests(); MockNet::reset(); - + let collection_id = MultiLocation { parents: 1, interior: X1(GeneralIndex(2)) }.into(); Relay::execute_with(|| { assert_ok!(relay_chain::Uniques::force_create( relay_chain::RuntimeOrigin::root(), @@ -451,17 +462,18 @@ mod tests { ); }); ParaA::execute_with(|| { - assert_ok!(parachain::ForeignUniques::force_create( - parachain::RuntimeOrigin::root(), - (Parent, GeneralIndex(2)).into(), + use pallet_nfts::Event; + + assert_ok!(parachain::ForeignNfts::do_create_collection( + collection_id, ALICE, - false, + ALICE, + get_collection_config(), + 1000u128, + Event::ForceCreated { collection: collection_id, owner: ALICE }, )); - assert_eq!( - parachain::ForeignUniques::owner((Parent, GeneralIndex(2)).into(), 69u32.into()), - None, - ); - assert_eq!(parachain::Balances::reserved_balance(&ALICE), 0); + assert_eq!(parachain::ForeignNfts::owner(collection_id, 69u32.into()), None,); + assert_eq!(parachain::Balances::reserved_balance(&ALICE), 1000); let message = Xcm(vec![ WithdrawAsset((GeneralIndex(2), 69u32).into()), @@ -479,12 +491,8 @@ mod tests { assert_ok!(ParachainPalletXcm::send_xcm(alice, Parent, message)); }); ParaA::execute_with(|| { - log::debug!(target: "xcm-exceutor", "Hello"); - assert_eq!( - parachain::ForeignUniques::owner((Parent, GeneralIndex(2)).into(), 69u32.into()), - Some(ALICE), - ); - assert_eq!(parachain::Balances::reserved_balance(&ALICE), 1000); + assert_eq!(parachain::ForeignNfts::owner(collection_id, 69u32.into()), Some(ALICE),); + assert_eq!(parachain::Balances::reserved_balance(&ALICE), 2000); }); Relay::execute_with(|| { @@ -493,69 +501,114 @@ mod tests { } /// Scenario: - /// The relay-chain creates an asset class on a parachain and then Alice transfers her NFT into - /// that parachain's sovereign account, who then mints a trustless-backed-derivative locally. - /// - /// Asserts that the parachain accounts are updated as expected. + /// Alice on Parachain A transfers an NFT into a parachain B's sovereign account. + /// Parachain B then mints a derivative NFT locally. Alice then transfers the derivative + /// NFT to Bob on Parachain B. Bob then withdraws the derivative NFT on Parachain B and + /// transfers the NFT to himself on Parachain A. The derivative is burned on Parachain B + /// and the original is transfered to Bob on Parachain A. #[test] - fn reserve_asset_class_create_and_reserve_transfer() { + fn two_way_reserve_asset_transfer_nft() { + use pallet_nfts::Event; MockNet::reset(); - - Relay::execute_with(|| { - assert_ok!(relay_chain::Uniques::force_create( - relay_chain::RuntimeOrigin::root(), - 2, + let collection_id = MultiLocation { parents: 0, interior: X1(GeneralIndex(2)) }.into(); + ParaA::execute_with(|| { + assert_ok!(parachain::ForeignNfts::do_create_collection( + collection_id, ALICE, - false + ALICE, + get_collection_config(), + 1000, + Event::ForceCreated { collection: collection_id, owner: ALICE }, )); - assert_ok!(relay_chain::Uniques::mint( - relay_chain::RuntimeOrigin::signed(ALICE), - 2, - 69, - child_account_account_id(1, ALICE) + + assert_ok!(parachain::ForeignNfts::mint( + parachain::RuntimeOrigin::signed(ALICE), + collection_id, + Index(69), + sibling_account_account_id(2, ALICE), + None )); + assert_eq!( - relay_chain::Uniques::owner(2, 69), - Some(child_account_account_id(1, ALICE)) + parachain::ForeignNfts::owner(collection_id, Index(69)), + Some(sibling_account_account_id(2, ALICE)) ); - - let message = Xcm(vec![Transact { - origin_kind: OriginKind::Xcm, - require_weight_at_most: Weight::from_parts(1_000_000_000, 1024 * 1024), - call: parachain::RuntimeCall::from( - pallet_uniques::Call::::create { - collection: (Parent, 2u64).into(), - admin: parent_account_id(), - }, - ) - .encode() - .into(), - }]); - // Send creation. - assert_ok!(RelayChainPalletXcm::send_xcm(Here, Parachain(1), message)); }); - ParaA::execute_with(|| { - // Then transfer + + let foreign_collection_id = + MultiLocation { parents: 1, interior: X2(Parachain(1), GeneralIndex(2)) }.into(); + + ParaB::execute_with(|| { + assert_ok!(parachain::ForeignNfts::do_create_collection( + foreign_collection_id, + ALICE, + ALICE, + get_collection_config(), + 1000, + Event::ForceCreated { collection: foreign_collection_id, owner: ALICE }, + )); + let message = Xcm(vec![ WithdrawAsset((GeneralIndex(2), 69u32).into()), DepositReserveAsset { assets: AllCounted(1).into(), - dest: Parachain(1).into(), + dest: (Parent, Parachain(2)).into(), xcm: Xcm(vec![DepositAsset { assets: AllCounted(1).into(), beneficiary: (AccountId32 { id: ALICE.into(), network: None },).into(), }]), }, ]); + // Send transfer + let alice = AccountId32 { id: ALICE.into(), network: None }; - assert_ok!(ParachainPalletXcm::send_xcm(alice, Parent, message)); + assert_ok!(ParachainPalletXcm::send_xcm(alice, (Parent, Parachain(1)), message)); }); - ParaA::execute_with(|| { - assert_eq!(parachain::Balances::reserved_balance(&parent_account_id()), 1000); + + ParaB::execute_with(|| { assert_eq!( - parachain::ForeignUniques::collection_owner((Parent, 2u64).into()), - Some(parent_account_id()) + parachain::ForeignNfts::owner(foreign_collection_id, Index(69)), + Some(ALICE) ); + + let message = Xcm(vec![TransferAsset { + assets: (foreign_collection_id, 69u32).into(), + beneficiary: (AccountId32 { id: BOB.into(), network: None },).into(), + }]); + + assert_ok!(ParachainPalletXcm::execute( + parachain::RuntimeOrigin::signed(ALICE), + Box::new(VersionedXcm::V3(message)), + Weight::MAX + )); + + assert_eq!(parachain::ForeignNfts::owner(foreign_collection_id, Index(69)), Some(BOB)); + }); + + ParaB::execute_with(|| { + let message: Xcm<_> = Xcm(vec![ + WithdrawAsset((foreign_collection_id, 69u32).into()), + InitiateReserveWithdraw { + assets: AllCounted(1).into(), + reserve: (Parent, Parachain(1)).into(), + xcm: Xcm(vec![DepositAsset { + assets: AllCounted(1).into(), + beneficiary: (AccountId32 { id: BOB.into(), network: None },).into(), + }]), + }, + ]); + + assert_ok!(ParachainPalletXcm::execute( + parachain::RuntimeOrigin::signed(BOB), + Box::new(VersionedXcm::V3(message)), + Weight::MAX + )); + + assert_eq!(parachain::ForeignNfts::owner(foreign_collection_id, Index(69)), None); + }); + + ParaA::execute_with(|| { + assert_eq!(parachain::ForeignNfts::owner(collection_id, Index(69)), Some(BOB)); }); } diff --git a/xcm/xcm-simulator/example/src/parachain.rs b/xcm/xcm-simulator/example/src/parachain.rs index 9c4cbe8fcb2d..ac98c265579b 100644 --- a/xcm/xcm-simulator/example/src/parachain.rs +++ b/xcm/xcm-simulator/example/src/parachain.rs @@ -25,10 +25,10 @@ use frame_support::{ }; use frame_system::EnsureRoot; -use sp_core::{ConstU32, H256}; +use sp_core::{ConstU32, ConstU64, H256}; use sp_runtime::{ - traits::{Get, Hash, IdentityLookup}, - AccountId32, + traits::{Get, Hash, IdentityLookup, Verify}, + AccountId32, MultiSignature, }; use sp_std::prelude::*; @@ -41,8 +41,8 @@ use xcm::{latest::prelude::*, VersionedXcm}; use xcm_builder::{ Account32Hash, AccountId32Aliases, AllowUnpaidExecutionFrom, ConvertedConcreteId, CurrencyAdapter as XcmCurrencyAdapter, EnsureXcmOrigin, FixedRateOfFungible, FixedWeightBounds, - IsConcrete, NativeAsset, NoChecking, NonFungiblesAdapter, ParentIsPreset, - SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, + IsConcrete, MultiLocationCollectionId, NativeAsset, NoChecking, NonFungiblesV2Adapter, + ParentIsPreset, SiblingParachainConvertsVia, SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, }; use xcm_executor::{ @@ -50,10 +50,13 @@ use xcm_executor::{ Config, XcmExecutor, }; +use pallet_nfts::{ItemConfig, PalletFeatures}; + pub type SovereignAccountOf = ( SiblingParachainConvertsVia, AccountId32Aliases, ParentIsPreset, + Account32Hash<(), AccountId>, ); pub type AccountId = AccountId32; @@ -111,59 +114,26 @@ impl pallet_balances::Config for Runtime { type MaxFreezes = ConstU32<0>; } -#[cfg(feature = "runtime-benchmarks")] -pub struct UniquesHelper; -#[cfg(feature = "runtime-benchmarks")] -impl pallet_uniques::BenchmarkHelper for UniquesHelper { - fn collection(i: u16) -> MultiLocation { - GeneralIndex(i as u128).into() - } - fn item(i: u16) -> AssetInstance { - AssetInstance::Index(i as u128) - } -} - -impl pallet_uniques::Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type CollectionId = MultiLocation; - type ItemId = AssetInstance; - type Currency = Balances; - type CreateOrigin = ForeignCreators; - type ForceOrigin = frame_system::EnsureRoot; - type CollectionDeposit = frame_support::traits::ConstU128<1_000>; - type ItemDeposit = frame_support::traits::ConstU128<1_000>; - type MetadataDepositBase = frame_support::traits::ConstU128<1_000>; - type AttributeDepositBase = frame_support::traits::ConstU128<1_000>; - type DepositPerByte = frame_support::traits::ConstU128<1>; - type StringLimit = ConstU32<64>; - type KeyLimit = ConstU32<64>; - type ValueLimit = ConstU32<128>; - type Locker = (); - type WeightInfo = (); - #[cfg(feature = "runtime-benchmarks")] - type Helper = UniquesHelper; -} - // `EnsureOriginWithArg` impl for `CreateOrigin` which allows only XCM origins // which are locations containing the class location. -pub struct ForeignCreators; -impl EnsureOriginWithArg for ForeignCreators { +pub struct ForeignCreatorsNFTs; +impl EnsureOriginWithArg for ForeignCreatorsNFTs { type Success = AccountId; fn try_origin( o: RuntimeOrigin, - a: &MultiLocation, + a: &MultiLocationCollectionId, ) -> sp_std::result::Result { let origin_location = pallet_xcm::EnsureXcm::::try_origin(o.clone())?; - if !a.starts_with(&origin_location) { + if !a.inner().starts_with(&origin_location) { return Err(o) } SovereignAccountOf::convert_location(&origin_location).ok_or(o) } #[cfg(feature = "runtime-benchmarks")] - fn try_successful_origin(a: &MultiLocation) -> Result { - Ok(pallet_xcm::Origin::Xcm(a.clone()).into()) + fn try_successful_origin(a: &MultiLocationCollectionId) -> Result { + Ok(pallet_xcm::Origin::Xcm(a.clone().into()).into()) } } @@ -178,15 +148,8 @@ parameter_types! { pub UniversalLocation: InteriorMultiLocation = Parachain(MsgQueue::parachain_id().into()).into(); } -pub type LocationToAccountId = ( - ParentIsPreset, - SiblingParachainConvertsVia, - AccountId32Aliases, - Account32Hash<(), AccountId>, -); - pub type XcmOriginToCallOrigin = ( - SovereignSignedViaLocation, + SovereignSignedViaLocation, SignedAccountId32AsNative, XcmPassthrough, ); @@ -200,14 +163,15 @@ parameter_types! { } pub type LocalAssetTransactor = ( - XcmCurrencyAdapter, LocationToAccountId, AccountId, ()>, - NonFungiblesAdapter< - ForeignUniques, - ConvertedConcreteId, + XcmCurrencyAdapter, SovereignAccountOf, AccountId, ()>, + NonFungiblesV2Adapter< + ForeignNfts, + ConvertedConcreteId, SovereignAccountOf, AccountId, NoChecking, (), + ItemConfig, >, ); @@ -437,7 +401,7 @@ impl pallet_xcm::Config for Runtime { type Currency = Balances; type CurrencyMatcher = (); type TrustedLockers = TrustedLockers; - type SovereignAccountOf = LocationToAccountId; + type SovereignAccountOf = SovereignAccountOf; type MaxLockers = ConstU32<8>; type MaxRemoteLockConsumers = ConstU32<0>; type RemoteLockConsumerIdentifier = (); @@ -447,6 +411,40 @@ impl pallet_xcm::Config for Runtime { type AdminOrigin = EnsureRoot; } +parameter_types! { + pub storage Features: PalletFeatures = PalletFeatures::all_enabled(); +} + +pub type Signature = MultiSignature; +pub type AccountPublic = ::Signer; + +impl pallet_nfts::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type CollectionId = MultiLocationCollectionId; + type ItemId = AssetInstance; + type Currency = Balances; + type CreateOrigin = ForeignCreatorsNFTs; + type ForceOrigin = frame_system::EnsureRoot; + type CollectionDeposit = frame_support::traits::ConstU128<1_000>; + type ItemDeposit = frame_support::traits::ConstU128<1_000>; + type MetadataDepositBase = frame_support::traits::ConstU128<1_000>; + type AttributeDepositBase = frame_support::traits::ConstU128<1_000>; + type DepositPerByte = frame_support::traits::ConstU128<1>; + type StringLimit = ConstU32<64>; + type KeyLimit = ConstU32<64>; + type ValueLimit = ConstU32<128>; + type ApprovalsLimit = ConstU32<10>; + type ItemAttributesApprovalsLimit = ConstU32<2>; + type MaxTips = ConstU32<10>; + type MaxDeadlineDuration = ConstU64<10000>; + type MaxAttributesPerCall = ConstU32<2>; + type Features = Features; + type OffchainSignature = Signature; + type OffchainPublic = AccountPublic; + type Locker = (); + type WeightInfo = (); +} + type Block = frame_system::mocking::MockBlock; construct_runtime!( @@ -456,6 +454,6 @@ construct_runtime!( Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, MsgQueue: mock_msg_queue::{Pallet, Storage, Event}, PolkadotXcm: pallet_xcm::{Pallet, Call, Event, Origin}, - ForeignUniques: pallet_uniques::{Pallet, Call, Storage, Event}, + ForeignNfts: pallet_nfts::{Pallet, Call, Storage, Event}, } ); diff --git a/xcm/xcm-simulator/example/src/relay_chain.rs b/xcm/xcm-simulator/example/src/relay_chain.rs index 6f0e92dc91b9..8e19ae322866 100644 --- a/xcm/xcm-simulator/example/src/relay_chain.rs +++ b/xcm/xcm-simulator/example/src/relay_chain.rs @@ -132,18 +132,18 @@ parameter_types! { pub UnitWeightCost: u64 = 1_000; } -pub type LocationToAccountId = ( +pub type SovereignAccountOf = ( ChildParachainConvertsVia, AccountId32Aliases, Account32Hash<(), AccountId>, ); pub type LocalAssetTransactor = ( - XcmCurrencyAdapter, LocationToAccountId, AccountId, ()>, + XcmCurrencyAdapter, SovereignAccountOf, AccountId, ()>, NonFungiblesAdapter< Uniques, ConvertedConcreteId, JustTry>, - LocationToAccountId, + SovereignAccountOf, AccountId, NoChecking, (), @@ -151,7 +151,7 @@ pub type LocalAssetTransactor = ( ); type LocalOriginConverter = ( - SovereignSignedViaLocation, + SovereignSignedViaLocation, ChildParachainAsNative, SignedAccountId32AsNative, ChildSystemParachainAsSuperuser, @@ -222,7 +222,7 @@ impl pallet_xcm::Config for Runtime { type Currency = Balances; type CurrencyMatcher = IsConcrete; type TrustedLockers = (); - type SovereignAccountOf = LocationToAccountId; + type SovereignAccountOf = SovereignAccountOf; type MaxLockers = ConstU32<8>; type MaxRemoteLockConsumers = ConstU32<0>; type RemoteLockConsumerIdentifier = ();