From 9ebe10397afb816eaf739fd077a2c54c7caace43 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 28 Apr 2025 14:57:56 +0200 Subject: [PATCH 01/36] make it compile without external errors --- Cargo.lock | 6514 ++++++++++------- Cargo.toml | 282 +- crates/kilt-dip-primitives/Cargo.toml | 2 +- dip-template/nodes/dip-consumer/Cargo.toml | 2 +- dip-template/runtimes/dip-consumer/Cargo.toml | 2 +- dip-template/runtimes/dip-provider/Cargo.toml | 2 +- nodes/parachain/Cargo.toml | 4 - nodes/standalone/Cargo.toml | 5 - pallets/did/src/did_details.rs | 2 +- pallets/did/src/tests/create_from_account.rs | 12 +- .../did/src/tests/dispatch_as/attestation.rs | 36 +- .../src/tests/dispatch_as/authentication.rs | 28 +- .../did/src/tests/dispatch_as/delegation.rs | 36 +- .../did/src/tests/dispatch_as/error_cases.rs | 2 +- .../did/src/traits/lifecycle_hooks/mock.rs | 5 + pallets/pallet-bonded-coins/src/lib.rs | 3 + pallets/pallet-configuration/Cargo.toml | 1 + pallets/pallet-dip-consumer/src/lib.rs | 2 +- pallets/pallet-relay-store/Cargo.toml | 2 +- pallets/parachain-staking/src/lib.rs | 4 +- runtimes/peregrine/Cargo.toml | 2 +- runtimes/spiritnet/Cargo.toml | 2 +- rust-toolchain.toml | 2 +- 23 files changed, 4048 insertions(+), 2904 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 699ea7b256..c2fefe2821 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,18 +23,18 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ - "gimli 0.29.0", + "gimli 0.31.1", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aead" @@ -68,7 +68,7 @@ dependencies = [ "cipher 0.4.4", "ctr", "ghash", - "subtle 2.4.1", + "subtle 2.6.1", ] [[package]] @@ -77,7 +77,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "once_cell", "version_check", ] @@ -89,10 +89,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -106,9 +106,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "always-assert" @@ -131,20 +131,11 @@ dependencies = [ "libc", ] -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -157,43 +148,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "approx" @@ -215,7 +207,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] @@ -347,12 +339,6 @@ dependencies = [ "rand", ] -[[package]] -name = "array-bytes" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52f63c5c1316a16a4b35eaac8b76a98248961a533f061684cb2a7cb0eafb6c6" - [[package]] name = "array-bytes" version = "6.2.3" @@ -361,9 +347,9 @@ checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -376,9 +362,9 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "asn1-rs" @@ -386,13 +372,29 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" dependencies = [ - "asn1-rs-derive", - "asn1-rs-impl", + "asn1-rs-derive 0.4.0", + "asn1-rs-impl 0.1.0", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror 1.0.69", + "time", +] + +[[package]] +name = "asn1-rs" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" +dependencies = [ + "asn1-rs-derive 0.5.1", + "asn1-rs-impl 0.2.0", "displaydoc", "nom", "num-traits", "rusticata-macros", - "thiserror", + "thiserror 1.0.69", "time", ] @@ -408,6 +410,18 @@ dependencies = [ "synstructure 0.12.6", ] +[[package]] +name = "asn1-rs-derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "synstructure 0.13.1", +] + [[package]] name = "asn1-rs-impl" version = "0.1.0" @@ -419,6 +433,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "assert_matches" version = "1.5.0" @@ -428,22 +453,24 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "asset-hub-rococo-emulated-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "asset-hub-rococo-runtime", + "bp-bridge-hub-rococo", "cumulus-primitives-core", "emulated-integration-tests-common", "frame-support", "parachains-common", "rococo-emulated-chain", "sp-core", + "staging-xcm", "testnet-parachains-constants", ] [[package]] name = "asset-hub-rococo-runtime" -version = "0.12.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.22.4" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "assets-common", "bp-asset-hub-rococo", @@ -457,6 +484,7 @@ dependencies = [ "cumulus-pallet-xcmp-queue", "cumulus-primitives-aura", "cumulus-primitives-core", + "cumulus-primitives-storage-weight-reclaim", "cumulus-primitives-utility", "frame-benchmarking", "frame-executive", @@ -469,8 +497,10 @@ dependencies = [ "hex-literal 0.4.1", "log", "pallet-asset-conversion", + "pallet-asset-conversion-ops", "pallet-asset-conversion-tx-payment", "pallet-assets", + "pallet-assets-freezer", "pallet-aura", "pallet-authorship", "pallet-balances", @@ -482,7 +512,6 @@ dependencies = [ "pallet-nfts-runtime-api", "pallet-proxy", "pallet-session", - "pallet-state-trie-migration", "pallet-timestamp", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", @@ -498,6 +527,7 @@ dependencies = [ "primitive-types", "rococo-runtime-constants", "scale-info", + "serde_json", "snowbridge-router-primitives", "sp-api", "sp-block-builder", @@ -508,7 +538,6 @@ dependencies = [ "sp-offchain", "sp-runtime", "sp-session", - "sp-std", "sp-storage", "sp-transaction-pool", "sp-version", @@ -519,22 +548,25 @@ dependencies = [ "staging-xcm-executor", "substrate-wasm-builder", "testnet-parachains-constants", + "xcm-runtime-apis", ] [[package]] name = "asset-test-utils" -version = "8.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-pallet-parachain-system", "cumulus-pallet-xcmp-queue", "cumulus-primitives-core", "frame-support", "frame-system", + "pallet-asset-conversion", "pallet-assets", "pallet-balances", "pallet-collator-selection", "pallet-session", + "pallet-timestamp", "pallet-xcm", "pallet-xcm-bridge-hub-router", "parachains-common", @@ -542,31 +574,31 @@ dependencies = [ "parity-scale-codec", "sp-io", "sp-runtime", - "sp-std", "staging-parachain-info", "staging-xcm", "staging-xcm-builder", "staging-xcm-executor", "substrate-wasm-builder", + "xcm-runtime-apis", ] [[package]] name = "assets-common" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.3" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-primitives-core", "frame-support", "impl-trait-for-tuples", "log", "pallet-asset-conversion", + "pallet-assets", "pallet-xcm", "parachains-common", "parity-scale-codec", "scale-info", "sp-api", "sp-runtime", - "sp-std", "staging-xcm", "staging-xcm-builder", "staging-xcm-executor", @@ -593,19 +625,19 @@ dependencies = [ "concurrent-queue", "event-listener-strategy", "futures-core", - "pin-project-lite 0.2.14", + "pin-project-lite", ] [[package]] name = "async-executor" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.1.0", - "futures-lite 2.3.0", + "fastrand 2.3.0", + "futures-lite 2.6.0", "slab", ] @@ -635,7 +667,7 @@ dependencies = [ "log", "parking", "polling 2.8.0", - "rustix 0.37.27", + "rustix 0.37.28", "slab", "socket2 0.4.10", "waker-fn", @@ -643,21 +675,21 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock 3.4.0", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.3.0", + "futures-lite 2.6.0", "parking", - "polling 3.7.2", - "rustix 0.38.34", + "polling 3.7.4", + "rustix 0.38.44", "slab", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -675,9 +707,9 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 5.3.1", + "event-listener 5.4.0", "event-listener-strategy", - "pin-project-lite 0.2.14", + "pin-project-lite", ] [[package]] @@ -704,26 +736,26 @@ dependencies = [ "cfg-if", "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.34", + "rustix 0.38.44", "windows-sys 0.48.0", ] [[package]] name = "async-signal" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" dependencies = [ - "async-io 2.3.3", + "async-io 2.4.0", "async-lock 3.4.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.34", + "rustix 0.38.44", "signal-hook-registry", "slab", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -734,13 +766,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] @@ -753,7 +785,7 @@ dependencies = [ "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.14", + "pin-project-lite", ] [[package]] @@ -790,25 +822,36 @@ dependencies = [ "sp-weights", ] +[[package]] +name = "attohttpc" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9a9bf8b79a749ee0b911b91b671cc2b6c670bdbc7e3dfd537576ddc94bb2a2" +dependencies = [ + "http 0.2.12", + "log", + "url", +] + [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line 0.22.0", - "cc", + "addr2line 0.24.2", "cfg-if", "libc", "miniz_oxide", - "object 0.36.0", + "object 0.36.7", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -842,24 +885,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] -name = "base64ct" -version = "1.6.0" +name = "base64" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] -name = "beef" -version = "0.5.2" +name = "base64ct" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" -dependencies = [ - "serde", -] +checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" [[package]] name = "binary-merkle-tree" -version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "15.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "hash-db", "log", @@ -886,33 +926,39 @@ dependencies = [ "lazy_static", "lazycell", "peeking_take_while", - "prettyplease 0.2.20", + "prettyplease 0.2.32", "proc-macro2", "quote", "regex", - "rustc-hash", + "rustc-hash 1.1.0", "shlex", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "bip39" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" +checksum = "33415e24172c1b7d6066f6d999545375ab8e1d95421d6784bdfff9496f292387" dependencies = [ "bitcoin_hashes", - "rand", - "rand_core 0.6.4", - "serde", - "unicode-normalization", ] +[[package]] +name = "bitcoin-internals" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" + [[package]] name = "bitcoin_hashes" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" +dependencies = [ + "bitcoin-internals", + "hex-conservative", +] [[package]] name = "bitflags" @@ -922,9 +968,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] name = "bitvec" @@ -972,37 +1018,37 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" dependencies = [ "arrayref", - "arrayvec 0.7.4", - "constant_time_eq 0.3.0", + "arrayvec 0.7.6", + "constant_time_eq 0.3.1", ] [[package]] name = "blake2s_simd" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94230421e395b9920d23df13ea5d77a20e1725331f90fbbf6df6040b33f756ae" +checksum = "e90f7deecfac93095eb874a40febd69427776e24e1bd7f87f33ac62d6f0174df" dependencies = [ "arrayref", - "arrayvec 0.7.4", - "constant_time_eq 0.3.0", + "arrayvec 0.7.6", + "constant_time_eq 0.3.1", ] [[package]] name = "blake3" -version = "1.5.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", - "arrayvec 0.7.4", + "arrayvec 0.7.6", "cc", "cfg-if", - "constant_time_eq 0.3.0", + "constant_time_eq 0.3.1", ] [[package]] @@ -1032,15 +1078,15 @@ dependencies = [ "async-channel 2.3.1", "async-task", "futures-io", - "futures-lite 2.3.0", + "futures-lite 2.6.0", "piper", ] [[package]] name = "bounded-collections" -version = "0.2.0" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32385ecb91a31bddaf908e8dcf4a15aef1bcd3913cc03ebfad02ff6d568abc1" +checksum = "64ad8a0bed7827f0b07a5d23cec2e58cc02038a99e4ca81616cb2bb2025f804d" dependencies = [ "log", "parity-scale-codec", @@ -1054,35 +1100,39 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68534a48cbf63a4b1323c433cf21238c9ec23711e0df13b08c33e5c2082663ce" dependencies = [ - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "bp-asset-hub-rococo" -version = "0.5.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.14.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bp-xcm-bridge-hub-router", "frame-support", "parity-scale-codec", "scale-info", + "sp-core", + "staging-xcm", ] [[package]] name = "bp-asset-hub-westend" -version = "0.4.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.13.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bp-xcm-bridge-hub-router", "frame-support", "parity-scale-codec", "scale-info", + "sp-core", + "staging-xcm", ] [[package]] name = "bp-bridge-hub-cumulus" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -1096,13 +1146,15 @@ dependencies = [ [[package]] name = "bp-bridge-hub-rococo" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bp-bridge-hub-cumulus", "bp-messages", "bp-runtime", + "bp-xcm-bridge-hub", "frame-support", + "parity-scale-codec", "sp-api", "sp-runtime", "sp-std", @@ -1110,13 +1162,15 @@ dependencies = [ [[package]] name = "bp-bridge-hub-westend" -version = "0.4.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.14.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bp-bridge-hub-cumulus", "bp-messages", "bp-runtime", + "bp-xcm-bridge-hub", "frame-support", + "parity-scale-codec", "sp-api", "sp-runtime", "sp-std", @@ -1124,8 +1178,8 @@ dependencies = [ [[package]] name = "bp-header-chain" -version = "0.8.2" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bp-runtime", "finality-grandpa", @@ -1141,8 +1195,8 @@ dependencies = [ [[package]] name = "bp-messages" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bp-header-chain", "bp-runtime", @@ -1151,30 +1205,14 @@ dependencies = [ "scale-info", "serde", "sp-core", - "sp-std", -] - -[[package]] -name = "bp-parachains" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ - "bp-header-chain", - "bp-polkadot-core", - "bp-runtime", - "frame-support", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "sp-core", - "sp-runtime", + "sp-io", "sp-std", ] [[package]] name = "bp-polkadot-core" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bp-messages", "bp-runtime", @@ -1189,24 +1227,10 @@ dependencies = [ "sp-std", ] -[[package]] -name = "bp-relayers" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-support", - "parity-scale-codec", - "scale-info", - "sp-runtime", - "sp-std", -] - [[package]] name = "bp-runtime" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", @@ -1227,77 +1251,32 @@ dependencies = [ ] [[package]] -name = "bp-test-utils" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +name = "bp-xcm-bridge-hub" +version = "0.4.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "bp-header-chain", - "bp-parachains", - "bp-polkadot-core", + "bp-messages", "bp-runtime", - "ed25519-dalek", - "finality-grandpa", + "frame-support", "parity-scale-codec", - "sp-application-crypto", - "sp-consensus-grandpa", + "scale-info", + "serde", "sp-core", - "sp-runtime", - "sp-std", - "sp-trie", -] - -[[package]] -name = "bp-xcm-bridge-hub" -version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ + "sp-io", "sp-std", + "staging-xcm", ] [[package]] name = "bp-xcm-bridge-hub-router" -version = "0.7.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ - "parity-scale-codec", - "scale-info", - "sp-core", - "sp-runtime", -] - -[[package]] -name = "bridge-runtime-common" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.14.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "bp-header-chain", - "bp-messages", - "bp-parachains", - "bp-polkadot-core", - "bp-relayers", - "bp-runtime", - "bp-xcm-bridge-hub", - "bp-xcm-bridge-hub-router", - "frame-support", - "frame-system", - "hash-db", - "log", - "pallet-bridge-grandpa", - "pallet-bridge-messages", - "pallet-bridge-parachains", - "pallet-bridge-relayers", - "pallet-transaction-payment", - "pallet-utility", "parity-scale-codec", "scale-info", - "sp-api", "sp-core", - "sp-io", "sp-runtime", - "sp-std", - "sp-trie", "staging-xcm", - "staging-xcm-builder", ] [[package]] @@ -1326,15 +1305,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "byte-tools" @@ -1344,9 +1323,9 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" [[package]] name = "byteorder" @@ -1356,18 +1335,17 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" dependencies = [ "cc", - "libc", "pkg-config", ] @@ -1383,18 +1361,18 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] @@ -1407,23 +1385,29 @@ checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver 1.0.26", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "cc" -version = "1.2.17" +version = "1.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" +checksum = "04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a" dependencies = [ "jobserver", "libc", "shlex", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cexpr" version = "0.6.0" @@ -1490,16 +1474,16 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-link", ] [[package]] @@ -1512,7 +1496,20 @@ dependencies = [ "multibase", "multihash 0.17.0", "serde", - "unsigned-varint", + "unsigned-varint 0.7.2", +] + +[[package]] +name = "cid" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd94671561e36e4e7de75f753f577edafb0e7c05d6e4547229fdf7938fbcd2c3" +dependencies = [ + "core2", + "multibase", + "multihash 0.18.1", + "serde", + "unsigned-varint 0.7.2", ] [[package]] @@ -1535,15 +1532,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "ckb-merkle-mountain-range" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ccb671c5921be8a84686e6212ca184cb1d7c51cadcdbfcbd1cc3f042f5dfb8" -dependencies = [ - "cfg-if", -] - [[package]] name = "clang-sys" version = "1.8.1" @@ -1557,9 +1545,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.7" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" +checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" dependencies = [ "clap_builder", "clap_derive", @@ -1567,9 +1555,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.7" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" +checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" dependencies = [ "anstream", "anstyle", @@ -1580,27 +1568,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.5" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "coarsetime" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b3839cf01bb7960114be3ccf2340f541b6d0c81f8690b007b2b39f750f7e5d" +checksum = "91849686042de1b41cd81490edc83afbcb0abe5a9b6f2c4114f23ce8cca1bcf4" dependencies = [ "libc", "wasix", @@ -1609,28 +1597,38 @@ dependencies = [ [[package]] name = "codespan-reporting" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" dependencies = [ + "serde", "termcolor", "unicode-width", ] [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "combine" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] [[package]] name = "comfy-table" -version = "7.1.1" +version = "7.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" +checksum = "4a65ebfec4fb190b6f90e944a817d60499ee0744e582530e2c9900a22e591d9a" dependencies = [ - "strum 0.26.2", - "strum_macros 0.26.4", + "unicode-segmentation", "unicode-width", ] @@ -1651,15 +1649,15 @@ dependencies = [ [[package]] name = "console" -version = "0.15.8" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", - "lazy_static", "libc", + "once_cell", "unicode-width", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1683,28 +1681,42 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "once_cell", "tiny-keccak", ] [[package]] -name = "constant_time_eq" -version = "0.1.5" +name = "const_format" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] -name = "constcat" +name = "constant_time_eq" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "convert_case" @@ -1722,11 +1734,21 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core2" @@ -1758,9 +1780,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -1789,7 +1811,7 @@ dependencies = [ "gimli 0.27.3", "hashbrown 0.13.2", "log", - "regalloc2", + "regalloc2 0.6.1", "smallvec", "target-lexicon", ] @@ -1863,6 +1885,21 @@ dependencies = [ "wasmtime-types", ] +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + [[package]] name = "crc32fast" version = "1.4.2" @@ -1874,9 +1911,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -1893,24 +1930,24 @@ dependencies = [ [[package]] name = "crossbeam-queue" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -1919,8 +1956,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array 0.14.7", - "rand_core 0.6.4", - "subtle 2.4.1", + "rand_core", + "subtle 2.6.1", "zeroize", ] @@ -1931,7 +1968,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array 0.14.7", - "rand_core 0.6.4", + "rand_core", "typenum", ] @@ -1952,17 +1989,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" dependencies = [ "generic-array 0.14.7", - "subtle 2.4.1", -] - -[[package]] -name = "crypto-mac" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" -dependencies = [ - "generic-array 0.14.7", - "subtle 2.4.1", + "subtle 2.6.1", ] [[package]] @@ -1995,8 +2022,8 @@ dependencies = [ [[package]] name = "cumulus-client-cli" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "clap", "parity-scale-codec", @@ -2012,8 +2039,8 @@ dependencies = [ [[package]] name = "cumulus-client-collator" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-client-consensus-common", "cumulus-client-network", @@ -2035,8 +2062,8 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-aura" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "cumulus-client-collator", @@ -2048,6 +2075,7 @@ dependencies = [ "cumulus-relay-chain-interface", "futures", "parity-scale-codec", + "parking_lot 0.12.3", "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-overseer", @@ -2058,6 +2086,7 @@ dependencies = [ "sc-consensus-babe", "sc-consensus-slots", "sc-telemetry", + "sc-utils", "schnellru", "sp-api", "sp-application-crypto", @@ -2072,13 +2101,14 @@ dependencies = [ "sp-state-machine", "sp-timestamp", "substrate-prometheus-endpoint", + "tokio", "tracing", ] [[package]] name = "cumulus-client-consensus-common" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "cumulus-client-pov-recovery", @@ -2100,14 +2130,15 @@ dependencies = [ "sp-runtime", "sp-timestamp", "sp-trie", + "sp-version", "substrate-prometheus-endpoint", "tracing", ] [[package]] name = "cumulus-client-consensus-proposer" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.16.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "anyhow", "async-trait", @@ -2116,13 +2147,13 @@ dependencies = [ "sp-inherents", "sp-runtime", "sp-state-machine", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "cumulus-client-network" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "cumulus-relay-chain-interface", @@ -2131,21 +2162,24 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", "polkadot-node-primitives", + "polkadot-node-subsystem", "polkadot-parachain-primitives", "polkadot-primitives", "sc-client-api", + "sp-api", "sp-blockchain", "sp-consensus", "sp-core", "sp-runtime", "sp-state-machine", + "sp-version", "tracing", ] [[package]] name = "cumulus-client-parachain-inherent" -version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.12.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2154,13 +2188,11 @@ dependencies = [ "cumulus-test-relay-sproof-builder", "parity-scale-codec", "sc-client-api", - "scale-info", "sp-api", "sp-crypto-hashing", "sp-inherents", "sp-runtime", "sp-state-machine", - "sp-std", "sp-storage", "sp-trie", "tracing", @@ -2168,8 +2200,8 @@ dependencies = [ [[package]] name = "cumulus-client-pov-recovery" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2184,16 +2216,18 @@ dependencies = [ "rand", "sc-client-api", "sc-consensus", + "sp-api", "sp-consensus", "sp-maybe-compressed-blob", "sp-runtime", + "sp-version", "tracing", ] [[package]] name = "cumulus-client-service" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.19.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-client-cli", "cumulus-client-collator", @@ -2222,14 +2256,15 @@ dependencies = [ "sp-blockchain", "sp-consensus", "sp-core", + "sp-io", "sp-runtime", "sp-transaction-pool", ] [[package]] name = "cumulus-pallet-aura-ext" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-pallet-parachain-system", "frame-support", @@ -2241,13 +2276,12 @@ dependencies = [ "sp-application-crypto", "sp-consensus-aura", "sp-runtime", - "sp-std", ] [[package]] name = "cumulus-pallet-parachain-system" -version = "0.8.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.17.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bytes", "cumulus-pallet-parachain-system-proc-macro", @@ -2276,24 +2310,25 @@ dependencies = [ "sp-trie", "sp-version", "staging-xcm", + "staging-xcm-builder", "trie-db", ] [[package]] name = "cumulus-pallet-parachain-system-proc-macro" version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "cumulus-pallet-session-benchmarking" -version = "10.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -2301,13 +2336,12 @@ dependencies = [ "pallet-session", "parity-scale-codec", "sp-runtime", - "sp-std", ] [[package]] name = "cumulus-pallet-xcm" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -2316,14 +2350,13 @@ dependencies = [ "scale-info", "sp-io", "sp-runtime", - "sp-std", "staging-xcm", ] [[package]] name = "cumulus-pallet-xcmp-queue" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.17.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bounded-collections", "bp-xcm-bridge-hub-router", @@ -2340,29 +2373,24 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", "staging-xcm", + "staging-xcm-builder", "staging-xcm-executor", ] [[package]] name = "cumulus-primitives-aura" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.15.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "parity-scale-codec", - "polkadot-core-primitives", - "polkadot-primitives", "sp-api", "sp-consensus-aura", - "sp-runtime", - "sp-std", ] [[package]] name = "cumulus-primitives-core" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.16.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "polkadot-core-primitives", @@ -2371,15 +2399,14 @@ dependencies = [ "scale-info", "sp-api", "sp-runtime", - "sp-std", "sp-trie", "staging-xcm", ] [[package]] name = "cumulus-primitives-parachain-inherent" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.16.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2387,14 +2414,13 @@ dependencies = [ "scale-info", "sp-core", "sp-inherents", - "sp-std", "sp-trie", ] [[package]] name = "cumulus-primitives-proof-size-hostfunction" -version = "0.3.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.10.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "sp-externalities", "sp-runtime-interface", @@ -2402,22 +2428,35 @@ dependencies = [ ] [[package]] -name = "cumulus-primitives-timestamp" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +name = "cumulus-primitives-storage-weight-reclaim" +version = "8.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-primitives-core", - "futures", + "cumulus-primitives-proof-size-hostfunction", + "docify", + "frame-support", + "frame-system", + "log", "parity-scale-codec", + "scale-info", + "sp-runtime", +] + +[[package]] +name = "cumulus-primitives-timestamp" +version = "0.16.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +dependencies = [ + "cumulus-primitives-core", "sp-inherents", - "sp-std", "sp-timestamp", ] [[package]] name = "cumulus-primitives-utility" -version = "0.8.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -2425,10 +2464,7 @@ dependencies = [ "pallet-asset-conversion", "parity-scale-codec", "polkadot-runtime-common", - "polkadot-runtime-parachains", - "sp-io", "sp-runtime", - "sp-std", "staging-xcm", "staging-xcm-builder", "staging-xcm-executor", @@ -2436,8 +2472,8 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-inprocess-interface" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.19.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2460,8 +2496,8 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-interface" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2473,33 +2509,28 @@ dependencies = [ "sp-api", "sp-blockchain", "sp-state-machine", - "thiserror", + "sp-version", + "thiserror 1.0.69", ] [[package]] name = "cumulus-relay-chain-minimal-node" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.19.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "async-trait", "cumulus-primitives-core", "cumulus-relay-chain-interface", "cumulus-relay-chain-rpc-interface", "futures", - "parking_lot 0.12.3", - "polkadot-availability-recovery", - "polkadot-collator-protocol", "polkadot-core-primitives", "polkadot-network-bridge", - "polkadot-node-collation-generation", - "polkadot-node-core-chain-api", - "polkadot-node-core-prospective-parachains", - "polkadot-node-core-runtime-api", "polkadot-node-network-protocol", "polkadot-node-subsystem-util", "polkadot-overseer", "polkadot-primitives", + "polkadot-service", "sc-authority-discovery", "sc-client-api", "sc-network", @@ -2519,8 +2550,8 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-rpc-interface" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2549,7 +2580,7 @@ dependencies = [ "sp-state-machine", "sp-storage", "sp-version", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing", @@ -2558,31 +2589,17 @@ dependencies = [ [[package]] name = "cumulus-test-relay-sproof-builder" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.16.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-primitives-core", "parity-scale-codec", "polkadot-primitives", "sp-runtime", "sp-state-machine", - "sp-std", "sp-trie", ] -[[package]] -name = "curve25519-dalek" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle 2.4.1", - "zeroize", -] - [[package]] name = "curve25519-dalek" version = "4.1.3" @@ -2595,7 +2612,7 @@ dependencies = [ "digest 0.10.7", "fiat-crypto", "rustc_version", - "subtle 2.4.1", + "subtle 2.6.1", "zeroize", ] @@ -2607,7 +2624,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] @@ -2618,66 +2635,94 @@ checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" dependencies = [ "byteorder", "digest 0.9.0", - "rand_core 0.6.4", + "rand_core", "subtle-ng", "zeroize", ] [[package]] name = "cxx" -version = "1.0.124" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "273dcfd3acd4e1e276af13ed2a43eea7001318823e7a726a6b3ed39b4acc0b82" +checksum = "a71ea7f29c73f7ffa64c50b83c9fe4d3a6d4be89a86b009eb80d5a6d3429d741" dependencies = [ "cc", + "cxxbridge-cmd", "cxxbridge-flags", "cxxbridge-macro", + "foldhash", "link-cplusplus", ] [[package]] name = "cxx-build" -version = "1.0.124" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b2766fbd92be34e9ed143898fce6c572dc009de39506ed6903e5a05b68914e" +checksum = "36a8232661d66dcf713394726157d3cfe0a89bfc85f52d6e9f9bbc2306797fe7" dependencies = [ "cc", "codespan-reporting", - "once_cell", "proc-macro2", "quote", "scratch", - "syn 2.0.66", + "syn 2.0.101", +] + +[[package]] +name = "cxxbridge-cmd" +version = "1.0.158" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f44296c8693e9ea226a48f6a122727f77aa9e9e338380cb021accaeeb7ee279" +dependencies = [ + "clap", + "codespan-reporting", + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] name = "cxxbridge-flags" -version = "1.0.124" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "839fcd5e43464614ffaa989eaf1c139ef1f0c51672a1ed08023307fa1b909ccd" +checksum = "c42f69c181c176981ae44ba9876e2ea41ce8e574c296b38d06925ce9214fb8e4" [[package]] name = "cxxbridge-macro" -version = "1.0.124" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2c1c1776b986979be68bb2285da855f8d8a35851a769fca8740df7c3d07877" +checksum = "8faff5d4467e0709448187df29ccbf3b0982cc426ee444a193f87b11afb565a8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "rustversion", + "syn 2.0.101", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core 0.9.10", ] [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "data-encoding-macro" -version = "0.1.15" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1559b6cba622276d6d63706db152618eeb15b89b3e4041446b05876e352e639" +checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -2685,12 +2730,12 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.13" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332d754c0af53bc87c108fed664d121ecf59207ec4196041f04d6ab9002ad33f" +checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] @@ -2719,9 +2764,9 @@ dependencies = [ [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "zeroize", @@ -2733,7 +2778,21 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" dependencies = [ - "asn1-rs", + "asn1-rs 0.5.2", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "der-parser" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" +dependencies = [ + "asn1-rs 0.6.2", "displaydoc", "nom", "num-bigint", @@ -2743,9 +2802,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", ] @@ -2763,37 +2822,46 @@ dependencies = [ [[package]] name = "derive-syn-parse" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79116f119dd1dba1abf1f3405f03b9b0e79a27a3883864bfebded8a3dc768cd" +checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] -name = "derive-syn-parse" -version = "0.2.0" +name = "derive_more" +version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ + "convert_case", "proc-macro2", "quote", - "syn 2.0.66", + "rustc_version", + "syn 2.0.101", ] [[package]] name = "derive_more" -version = "0.99.18" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ - "convert_case", "proc-macro2", "quote", - "rustc_version", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] @@ -2853,7 +2921,7 @@ dependencies = [ "block-buffer 0.10.4", "const-oid", "crypto-common", - "subtle 2.4.1", + "subtle 2.6.1", ] [[package]] @@ -3115,39 +3183,39 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "docify" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2f138ad521dc4a2ced1a4576148a6a610b4c5923933b062a263130a6802ce" +checksum = "a772b62b1837c8f060432ddcc10b17aae1453ef17617a99bc07789252d2a5896" dependencies = [ "docify_macros", ] [[package]] name = "docify_macros" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a081e51fb188742f5a7a1164ad752121abcb22874b21e2c3b0dd040c515fdad" +checksum = "60e6be249b0a462a14784a99b19bf35a667bb5e09de611738bb7362fa4c95ff7" dependencies = [ "common-path", - "derive-syn-parse 0.2.0", + "derive-syn-parse", "once_cell", "proc-macro2", "quote", "regex", - "syn 2.0.66", + "syn 2.0.101", "termcolor", - "toml 0.8.14", + "toml 0.8.21", "walkdir", ] @@ -3165,15 +3233,15 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dtoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" +checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" [[package]] name = "dyn-clonable" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4" +checksum = "a36efbb9bfd58e1723780aa04b61aba95ace6a05d9ffabfdb0b43672552f0805" dependencies = [ "dyn-clonable-impl", "dyn-clone", @@ -3181,20 +3249,20 @@ dependencies = [ [[package]] name = "dyn-clonable-impl" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5" +checksum = "7e8671d54058979a37a26f3511fbf8d198ba1aa35ffb202c42587d918d77213a" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] name = "dyn-clone" -version = "1.0.17" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" [[package]] name = "ecdsa" @@ -3206,6 +3274,7 @@ dependencies = [ "digest 0.10.7", "elliptic-curve", "rfc6979", + "serdect", "signature", "spki", ] @@ -3226,49 +3295,35 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ - "curve25519-dalek 4.1.3", + "curve25519-dalek", "ed25519", - "rand_core 0.6.4", + "rand_core", "serde", "sha2 0.10.8", - "subtle 2.4.1", + "subtle 2.6.1", "zeroize", ] [[package]] name = "ed25519-zebra" -version = "3.1.0" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" dependencies = [ - "curve25519-dalek 3.2.0", - "hashbrown 0.12.3", + "curve25519-dalek", + "ed25519", + "hashbrown 0.14.5", "hex", - "rand_core 0.6.4", - "sha2 0.9.9", - "zeroize", -] - -[[package]] -name = "ed25519-zebra" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" -dependencies = [ - "curve25519-dalek 4.1.3", - "ed25519", - "hashbrown 0.14.5", - "hex", - "rand_core 0.6.4", - "sha2 0.10.8", + "rand_core", + "sha2 0.10.8", "zeroize", ] [[package]] name = "either" -version = "1.12.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elliptic-curve" @@ -3283,20 +3338,21 @@ dependencies = [ "generic-array 0.14.7", "group", "pkcs8", - "rand_core 0.6.4", + "rand_core", "sec1", - "subtle 2.4.1", + "serdect", + "subtle 2.6.1", "zeroize", ] [[package]] name = "emulated-integration-tests-common" -version = "4.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "16.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "asset-test-utils", "bp-messages", - "bridge-runtime-common", + "bp-xcm-bridge-hub", "cumulus-pallet-parachain-system", "cumulus-pallet-xcmp-queue", "cumulus-primitives-core", @@ -3306,15 +3362,17 @@ dependencies = [ "pallet-bridge-messages", "pallet-message-queue", "pallet-xcm", + "pallet-xcm-bridge-hub", "parachains-common", "parity-scale-codec", "paste", + "polkadot-parachain-primitives", "polkadot-primitives", "polkadot-runtime-parachains", - "polkadot-service", "sc-consensus-grandpa", "sp-authority-discovery", "sp-consensus-babe", + "sp-consensus-beefy", "sp-core", "sp-runtime", "staging-xcm", @@ -3323,9 +3381,9 @@ dependencies = [ [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "enum-as-inner" @@ -3339,6 +3397,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "enum-as-inner" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "enum-iterator" version = "2.1.0" @@ -3356,45 +3426,45 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "enumflags2" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" dependencies = [ "enumflags2_derive", ] [[package]] name = "enumflags2_derive" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "enumn" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" dependencies = [ "log", ] @@ -3414,9 +3484,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.3" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" dependencies = [ "anstream", "anstyle", @@ -3432,18 +3502,18 @@ checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3501,28 +3571,28 @@ checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" dependencies = [ "concurrent-queue", "parking", - "pin-project-lite 0.2.14", + "pin-project-lite", ] [[package]] name = "event-listener" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ "concurrent-queue", "parking", - "pin-project-lite 0.2.14", + "pin-project-lite", ] [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.3.1", - "pin-project-lite 0.2.14", + "event-listener 5.4.0", + "pin-project-lite", ] [[package]] @@ -3534,18 +3604,6 @@ dependencies = [ "futures", ] -[[package]] -name = "expander" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a718c0675c555c5f976fff4ea9e2c150fa06cefa201cadef87cfbf9324075881" -dependencies = [ - "blake3", - "fs-err", - "proc-macro2", - "quote", -] - [[package]] name = "expander" version = "2.2.1" @@ -3555,10 +3613,10 @@ dependencies = [ "blake2 0.10.6", "file-guard", "fs-err", - "prettyplease 0.2.20", + "prettyplease 0.2.32", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] @@ -3567,6 +3625,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + [[package]] name = "fastrand" version = "1.9.0" @@ -3578,33 +3642,32 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fatality" -version = "0.0.6" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad875162843b0d046276327afe0136e9ed3a23d5a754210fb6f1f33610d39ab" +checksum = "ec6f82451ff7f0568c6181287189126d492b5654e30a788add08027b6363d019" dependencies = [ "fatality-proc-macro", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "fatality-proc-macro" -version = "0.0.6" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5aa1e3ae159e592ad222dc90c5acbad632b527779ba88486abe92782ab268bd" +checksum = "eb42427514b063d97ce21d5199f36c0c307d981434a6be32582bc79fe5bd2303" dependencies = [ - "expander 0.0.4", - "indexmap 1.9.3", - "proc-macro-crate 1.1.3", + "expander", + "indexmap 2.9.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 1.0.109", - "thiserror", + "syn 2.0.101", ] [[package]] @@ -3614,17 +3677,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e182f7dbc2ef73d9ef67351c5fbbea084729c48362d3ce9dd44c28e32e277fe5" dependencies = [ "libc", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "rand_core 0.6.4", - "subtle 2.4.1", + "rand_core", + "subtle 2.6.1", ] [[package]] @@ -3655,21 +3718,21 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "libredox", + "windows-sys 0.59.0", ] [[package]] name = "finality-grandpa" -version = "0.16.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36530797b9bf31cd4ff126dcfee8170f86b00cfdcea3269d73133cc0415945c3" +checksum = "b4f8f43dc520133541781ec03a8cab158ae8b7f7169cdf22e9050aa6cf0fbdfc" dependencies = [ "either", "futures", @@ -3699,17 +3762,6 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" -[[package]] -name = "flate2" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" -dependencies = [ - "crc32fast", - "libz-sys", - "miniz_oxide", -] - [[package]] name = "float-cmp" version = "0.9.0" @@ -3734,10 +3786,31 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "fork-tree" -version = "12.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", ] @@ -3751,16 +3824,26 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "forwarded-header-value" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835f84f38484cc86f110a805655697908257fb9a7af005234060891557198e9" +dependencies = [ + "nonempty", + "thiserror 1.0.69", +] + [[package]] name = "fragile" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" +checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" [[package]] name = "frame-benchmarking" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-support-procedural", @@ -3777,18 +3860,17 @@ dependencies = [ "sp-io", "sp-runtime", "sp-runtime-interface", - "sp-std", "sp-storage", "static_assertions", ] [[package]] name = "frame-benchmarking-cli" -version = "33.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "43.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "Inflector", - "array-bytes 6.2.3", + "array-bytes", "chrono", "clap", "comfy-table", @@ -3797,7 +3879,7 @@ dependencies = [ "frame-system", "gethostname", "handlebars", - "itertools 0.10.5", + "itertools 0.11.0", "lazy_static", "linked-hash-map", "log", @@ -3805,6 +3887,7 @@ dependencies = [ "rand", "rand_pcg", "sc-block-builder", + "sc-chain-spec", "sc-cli", "sc-client-api", "sc-client-db", @@ -3818,6 +3901,7 @@ dependencies = [ "sp-core", "sp-database", "sp-externalities", + "sp-genesis-builder", "sp-inherents", "sp-io", "sp-keystore", @@ -3826,25 +3910,25 @@ dependencies = [ "sp-storage", "sp-trie", "sp-wasm-interface", - "thiserror", + "thiserror 1.0.69", "thousands", ] [[package]] name = "frame-election-provider-solution-type" -version = "13.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "14.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "frame-election-provider-support" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -3855,14 +3939,14 @@ dependencies = [ "sp-core", "sp-npos-elections", "sp-runtime", - "sp-std", ] [[package]] name = "frame-executive" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ + "aquamarine", "frame-support", "frame-system", "frame-try-runtime", @@ -3872,7 +3956,6 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", "sp-tracing", ] @@ -3890,10 +3973,10 @@ dependencies = [ [[package]] name = "frame-metadata-hash-extension" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.6.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "docify", "frame-support", "frame-system", @@ -3903,35 +3986,13 @@ dependencies = [ "sp-runtime", ] -[[package]] -name = "frame-remote-externalities" -version = "0.36.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ - "futures", - "indicatif", - "jsonrpsee", - "log", - "parity-scale-codec", - "serde", - "sp-core", - "sp-crypto-hashing", - "sp-io", - "sp-runtime", - "sp-state-machine", - "spinners", - "substrate-rpc-client", - "tokio", - "tokio-retry", -] - [[package]] name = "frame-support" -version = "29.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "aquamarine", - "array-bytes 6.2.3", + "array-bytes", "bitflags 1.3.2", "docify", "environmental", @@ -3968,49 +4029,50 @@ dependencies = [ [[package]] name = "frame-support-procedural" -version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "30.0.6" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "Inflector", "cfg-expr", - "derive-syn-parse 0.1.5", - "expander 2.2.1", + "derive-syn-parse", + "docify", + "expander", "frame-support-procedural-tools", - "itertools 0.10.5", + "itertools 0.11.0", "macro_magic", - "proc-macro-warning", + "proc-macro-warning 1.84.1", "proc-macro2", "quote", "sp-crypto-hashing", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "frame-support-procedural-tools" -version = "10.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "frame-support-procedural-tools-derive" -version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "12.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "frame-system" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cfg-if", "docify", @@ -4029,8 +4091,8 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -4039,28 +4101,27 @@ dependencies = [ "scale-info", "sp-core", "sp-runtime", - "sp-std", ] [[package]] name = "frame-system-rpc-runtime-api" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ + "docify", "parity-scale-codec", "sp-api", ] [[package]] name = "frame-try-runtime" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.44.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "parity-scale-codec", "sp-api", "sp-runtime", - "sp-std", ] [[package]] @@ -4088,7 +4149,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29f9df8a11882c4e3335eb2d18a0137c505d9ca927470b0cac9c6f0ae07d28f7" dependencies = [ - "rustix 0.38.34", + "rustix 0.38.44", "windows-sys 0.48.0", ] @@ -4100,9 +4161,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -4113,6 +4174,16 @@ dependencies = [ "futures-util", ] +[[package]] +name = "futures-bounded" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b07bbbe7d7e78809544c6f718d875627addc73a7c3582447abc052cd3dc67e0" +dependencies = [ + "futures-timer", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.31" @@ -4131,9 +4202,9 @@ checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -4158,21 +4229,21 @@ dependencies = [ "futures-io", "memchr", "parking", - "pin-project-lite 0.2.14", + "pin-project-lite", "waker-fn", ] [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" dependencies = [ - "fastrand 2.1.0", + "fastrand 2.3.0", "futures-core", "futures-io", "parking", - "pin-project-lite 0.2.14", + "pin-project-lite", ] [[package]] @@ -4183,18 +4254,17 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "futures-rustls" -version = "0.22.2" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd" +checksum = "35bd3cf68c183738046838e300353e4716c674dc5e56890de4826801a6622a28" dependencies = [ "futures-io", - "rustls 0.20.9", - "webpki", + "rustls 0.21.12", ] [[package]] @@ -4228,7 +4298,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.14", + "pin-project-lite", "pin-utils", "slab", ] @@ -4274,24 +4344,25 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.16" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] name = "getrandom" -version = "0.2.15" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -4301,7 +4372,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" dependencies = [ "rand", - "rand_core 0.6.4", + "rand_core", ] [[package]] @@ -4320,22 +4391,52 @@ version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" dependencies = [ - "fallible-iterator", + "fallible-iterator 0.2.0", "indexmap 1.9.3", "stable_deref_trait", ] [[package]] name = "gimli" -version = "0.29.0" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +dependencies = [ + "fallible-iterator 0.3.0", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "governor" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b" +dependencies = [ + "cfg-if", + "dashmap", + "futures", + "futures-timer", + "no-std-compat", + "nonzero_ext", + "parking_lot 0.12.3", + "portable-atomic", + "quanta", + "rand", + "smallvec", + "spinning_top", +] [[package]] name = "group" @@ -4344,8 +4445,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core 0.6.4", - "subtle 2.4.1", + "rand_core", + "subtle 2.6.1", ] [[package]] @@ -4359,8 +4460,27 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", - "indexmap 2.2.6", + "http 0.2.12", + "indexmap 2.9.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap 2.9.0", "slab", "tokio", "tokio-util", @@ -4369,16 +4489,16 @@ dependencies = [ [[package]] name = "handlebars" -version = "4.5.0" +version = "5.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225" +checksum = "d08485b96a0e6393e9e4d1b8d48cf74ad6c063cd905eb33f42c1ce3f0377539b" dependencies = [ "log", "pest", "pest_derive", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4425,6 +4545,17 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + [[package]] name = "hashlink" version = "0.8.4" @@ -4458,12 +4589,24 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +[[package]] +name = "hermit-abi" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" + [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hex-conservative" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" + [[package]] name = "hex-literal" version = "0.3.4" @@ -4495,16 +4638,6 @@ dependencies = [ "digest 0.9.0", ] -[[package]] -name = "hmac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" -dependencies = [ - "crypto-mac 0.11.1", - "digest 0.9.0", -] - [[package]] name = "hmac" version = "0.12.1" @@ -4527,22 +4660,22 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "hostname" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" dependencies = [ + "cfg-if", "libc", - "match_cfg", - "winapi", + "windows-link", ] [[package]] @@ -4556,6 +4689,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-body" version = "0.4.6" @@ -4563,21 +4707,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", - "pin-project-lite 0.2.14", + "http 0.2.12", + "pin-project-lite", ] [[package]] -name = "http-range-header" -version = "0.3.1" +name = "http-body" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "pin-project-lite", +] [[package]] name = "httparse" -version = "1.9.4" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -4587,34 +4748,54 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", "itoa", - "pin-project-lite 0.2.14", - "socket2 0.5.7", + "pin-project-lite", + "socket2 0.5.9", "tokio", "tower-service", "tracing", "want", ] +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.9", + "http 1.3.1", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + [[package]] name = "hyper-rustls" version = "0.24.2" @@ -4622,27 +4803,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http", - "hyper", + "http 0.2.12", + "hyper 0.14.32", "log", "rustls 0.21.12", - "rustls-native-certs", + "rustls-native-certs 0.6.3", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" +dependencies = [ + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "hyper 1.6.0", + "pin-project-lite", "tokio", - "tokio-rustls", + "tower-service", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", - "windows-core 0.52.0", + "windows-core 0.61.0", ] [[package]] @@ -4654,6 +4852,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "idna" version = "0.2.3" @@ -4667,14 +4983,35 @@ dependencies = [ [[package]] name = "idna" -version = "0.5.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ "unicode-bidi", "unicode-normalization", ] +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + [[package]] name = "if-addrs" version = "0.10.2" @@ -4687,23 +5024,46 @@ dependencies = [ [[package]] name = "if-watch" -version = "3.2.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b0422c86d7ce0e97169cc42e04ae643caf278874a7a3c87b8150a220dc7e1e" +checksum = "cdf9d64cfcf380606e64f9a0bcf493616b65331199f984151a6fa11a7b3cde38" dependencies = [ - "async-io 2.3.3", - "core-foundation", + "async-io 2.4.0", + "core-foundation 0.9.4", "fnv", "futures", "if-addrs", "ipnet", "log", + "netlink-packet-core", + "netlink-packet-route", + "netlink-proto", + "netlink-sys", "rtnetlink", "system-configuration", "tokio", "windows", ] +[[package]] +name = "igd-next" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064d90fec10d541084e7b39ead8875a5a80d9114a2b18791565253bae25f49e4" +dependencies = [ + "async-trait", + "attohttpc", + "bytes", + "futures", + "http 0.2.12", + "hyper 0.14.32", + "log", + "rand", + "tokio", + "url", + "xmltree", +] + [[package]] name = "impl-codec" version = "0.6.0" @@ -4744,13 +5104,13 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] @@ -4785,12 +5145,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.2", ] [[package]] @@ -4799,24 +5159,11 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" -[[package]] -name = "indicatif" -version = "0.17.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" -dependencies = [ - "console", - "instant", - "number_prefix", - "portable-atomic", - "unicode-width", -] - [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array 0.14.7", ] @@ -4868,7 +5215,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.7", + "socket2 0.5.9", "widestring", "windows-sys 0.48.0", "winreg", @@ -4876,35 +5223,35 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.5.0", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "is_executable" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa9acdc6d67b75e626ad644734e8bc6df893d9cd2a834129065d3dd6158ea9c8" +checksum = "d4a1b5bad6f9072935961dfbf1cced2f3d129963d091b6f69f007fe04e758ae2" dependencies = [ "winapi", ] [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -4935,36 +5282,59 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ + "getrandom 0.3.2", "libc", ] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] [[package]] name = "jsonrpsee" -version = "0.20.3" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "affdc52f7596ccb2d7645231fc6163bb314630c989b64998f3699a28b4d5d4dc" +checksum = "37b26c20e2178756451cfeb0661fb74c47dd5988cb7e3939de7e9241fd604d42" dependencies = [ "jsonrpsee-core", - "jsonrpsee-http-client", "jsonrpsee-proc-macros", "jsonrpsee-server", "jsonrpsee-types", @@ -4975,19 +5345,22 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.20.3" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b005c793122d03217da09af68ba9383363caa950b90d3436106df8cabce935" +checksum = "bacb85abf4117092455e1573625e21b8f8ef4dec8aff13361140b2dc266cdff2" dependencies = [ + "base64 0.22.1", "futures-util", - "http", + "http 1.3.1", "jsonrpsee-core", "pin-project", - "rustls-native-certs", - "soketto", - "thiserror", + "rustls 0.23.26", + "rustls-pki-types", + "rustls-platform-verifier", + "soketto 0.8.1", + "thiserror 1.0.69", "tokio", - "tokio-rustls", + "tokio-rustls 0.26.2", "tokio-util", "tracing", "url", @@ -4995,78 +5368,63 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.20.3" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2327ba8df2fdbd5e897e2b5ed25ce7f299d345b9736b6828814c3dbd1fd47b" +checksum = "456196007ca3a14db478346f58c7238028d55ee15c1df15115596e411ff27925" dependencies = [ - "anyhow", - "async-lock 2.8.0", "async-trait", - "beef", + "bytes", "futures-timer", "futures-util", - "hyper", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", "jsonrpsee-types", "parking_lot 0.12.3", + "pin-project", "rand", - "rustc-hash", + "rustc-hash 2.1.1", "serde", "serde_json", - "soketto", - "thiserror", + "thiserror 1.0.69", "tokio", + "tokio-stream", "tracing", ] -[[package]] -name = "jsonrpsee-http-client" -version = "0.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f80c17f62c7653ce767e3d7288b793dfec920f97067ceb189ebdd3570f2bc20" -dependencies = [ - "async-trait", - "hyper", - "hyper-rustls", - "jsonrpsee-core", - "jsonrpsee-types", - "serde", - "serde_json", - "thiserror", - "tokio", - "tower", - "tracing", - "url", -] - [[package]] name = "jsonrpsee-proc-macros" -version = "0.20.3" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29110019693a4fa2dbda04876499d098fa16d70eba06b1e6e2b3f1b251419515" +checksum = "5e65763c942dfc9358146571911b0cd1c361c2d63e2d2305622d40d36376ca80" dependencies = [ - "heck 0.4.1", - "proc-macro-crate 1.1.3", + "heck 0.5.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] name = "jsonrpsee-server" -version = "0.20.3" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c39a00449c9ef3f50b84fc00fc4acba20ef8f559f07902244abf4c15c5ab9c" +checksum = "55e363146da18e50ad2b51a0a7925fc423137a0b1371af8235b1c231a0647328" dependencies = [ "futures-util", - "http", - "hyper", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-util", "jsonrpsee-core", "jsonrpsee-types", + "pin-project", "route-recognizer", "serde", "serde_json", - "soketto", - "thiserror", + "soketto 0.8.1", + "thiserror 1.0.69", "tokio", "tokio-stream", "tokio-util", @@ -5076,25 +5434,23 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.20.3" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be0be325642e850ed0bdff426674d2e66b2b7117c9be23a7caef68a2902b7d9" +checksum = "08a8e70baf945b6b5752fc8eb38c918a48f1234daf11355e07106d963f860089" dependencies = [ - "anyhow", - "beef", + "http 1.3.1", "serde", "serde_json", - "thiserror", - "tracing", + "thiserror 1.0.69", ] [[package]] name = "jsonrpsee-ws-client" -version = "0.20.3" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca9cb3933ccae417eb6b08c3448eb1cb46e39834e5b503e395e5e5bd08546c0" +checksum = "01b3323d890aa384f12148e8d2a1fd18eb66e9e7e825f9de4fa53bcc19b93eef" dependencies = [ - "http", + "http 1.3.1", "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-types", @@ -5103,14 +5459,15 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", "once_cell", + "serdect", "sha2 0.10.8", ] @@ -5296,7 +5653,6 @@ dependencies = [ "substrate-build-script-utils", "substrate-frame-rpc-system", "substrate-prometheus-endpoint", - "try-runtime-cli", ] [[package]] @@ -5400,14 +5756,14 @@ checksum = "9baa9eeb6e315942429397e617a190f4fdc696ef1ee0342939d641029cbb4ea7" dependencies = [ "enumflags2", "libc", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lazycell" @@ -5417,36 +5773,37 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] name = "libm" -version = "0.2.8" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "c9627da5196e5d8ed0b0495e61e518847578da83483c37288316d9b2e03a7f72" [[package]] name = "libp2p" -version = "0.51.4" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f35eae38201a993ece6bdc823292d6abd1bffed1c4d0f4a3517d2bd8e1d917fe" +checksum = "e94495eb319a85b70a68b85e2389a95bb3555c71c49025b78c691a854a7e6464" dependencies = [ "bytes", + "either", "futures", "futures-timer", - "getrandom 0.2.15", + "getrandom 0.2.16", "instant", "libp2p-allow-block-list", "libp2p-connection-limits", @@ -5463,18 +5820,21 @@ dependencies = [ "libp2p-request-response", "libp2p-swarm", "libp2p-tcp", + "libp2p-upnp", "libp2p-wasm-ext", "libp2p-websocket", "libp2p-yamux", - "multiaddr", + "multiaddr 0.18.2", "pin-project", + "rw-stream-sink", + "thiserror 1.0.69", ] [[package]] name = "libp2p-allow-block-list" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "510daa05efbc25184458db837f6f9a5143888f1caa742426d92e1833ddd38a50" +checksum = "55b46558c5c0bf99d3e2a1a38fd54ff5476ca66dd1737b12466a1824dd219311" dependencies = [ "libp2p-core", "libp2p-identity", @@ -5484,9 +5844,9 @@ dependencies = [ [[package]] name = "libp2p-connection-limits" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4caa33f1d26ed664c4fe2cca81a08c8e07d4c1c04f2f4ac7655c2dd85467fda0" +checksum = "2f5107ad45cb20b2f6c3628c7b6014b996fcb13a88053f4569c872c6e30abf58" dependencies = [ "libp2p-core", "libp2p-identity", @@ -5496,9 +5856,9 @@ dependencies = [ [[package]] name = "libp2p-core" -version = "0.39.2" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c1df63c0b582aa434fb09b2d86897fa2b419ffeccf934b36f87fcedc8e835c2" +checksum = "dd44289ab25e4c9230d9246c475a22241e301b23e8f4061d3bdef304a1a99713" dependencies = [ "either", "fnv", @@ -5507,8 +5867,8 @@ dependencies = [ "instant", "libp2p-identity", "log", - "multiaddr", - "multihash 0.17.0", + "multiaddr 0.18.2", + "multihash 0.19.3", "multistream-select", "once_cell", "parking_lot 0.12.3", @@ -5517,19 +5877,21 @@ dependencies = [ "rand", "rw-stream-sink", "smallvec", - "thiserror", - "unsigned-varint", + "thiserror 1.0.69", + "unsigned-varint 0.7.2", "void", ] [[package]] name = "libp2p-dns" -version = "0.39.0" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146ff7034daae62077c415c2376b8057368042df6ab95f5432ad5e88568b1554" +checksum = "e6a18db73084b4da2871438f6239fef35190b05023de7656e877c18a00541a3b" dependencies = [ + "async-trait", "futures", "libp2p-core", + "libp2p-identity", "log", "parking_lot 0.12.3", "smallvec", @@ -5538,51 +5900,52 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.42.2" +version = "0.43.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5455f472243e63b9c497ff320ded0314254a9eb751799a39c283c6f20b793f3c" +checksum = "45a96638a0a176bec0a4bcaebc1afa8cf909b114477209d7456ade52c61cd9cd" dependencies = [ "asynchronous-codec", "either", "futures", + "futures-bounded", "futures-timer", "libp2p-core", "libp2p-identity", "libp2p-swarm", "log", - "lru 0.10.1", + "lru 0.12.5", "quick-protobuf", "quick-protobuf-codec", "smallvec", - "thiserror", + "thiserror 1.0.69", "void", ] [[package]] name = "libp2p-identity" -version = "0.1.3" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce" +checksum = "257b5621d159b32282eac446bed6670c39c7dc68a200a992d8f056afa0066f6d" dependencies = [ - "bs58 0.4.0", + "bs58 0.5.1", "ed25519-dalek", - "log", - "multiaddr", - "multihash 0.17.0", + "hkdf", + "multihash 0.19.3", "quick-protobuf", "rand", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.69", + "tracing", "zeroize", ] [[package]] name = "libp2p-kad" -version = "0.43.3" +version = "0.44.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39d5ef876a2b2323d63c258e63c2f8e36f205fe5a11f0b3095d59635650790ff" +checksum = "16ea178dabba6dde6ffc260a8e0452ccdc8f79becf544946692fff9d412fc29d" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", "asynchronous-codec", "bytes", "either", @@ -5595,20 +5958,21 @@ dependencies = [ "libp2p-swarm", "log", "quick-protobuf", + "quick-protobuf-codec", "rand", "sha2 0.10.8", "smallvec", - "thiserror", + "thiserror 1.0.69", "uint", - "unsigned-varint", + "unsigned-varint 0.7.2", "void", ] [[package]] name = "libp2p-mdns" -version = "0.43.1" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19983e1f949f979a928f2c603de1cf180cc0dc23e4ac93a62651ccb18341460b" +checksum = "42a2567c305232f5ef54185e9604579a894fd0674819402bb0ac0246da82f52a" dependencies = [ "data-encoding", "futures", @@ -5619,60 +5983,66 @@ dependencies = [ "log", "rand", "smallvec", - "socket2 0.4.10", + "socket2 0.5.9", "tokio", - "trust-dns-proto", + "trust-dns-proto 0.22.0", "void", ] [[package]] name = "libp2p-metrics" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a42ec91e227d7d0dafa4ce88b333cdf5f277253873ab087555c92798db2ddd46" +checksum = "239ba7d28f8d0b5d77760dc6619c05c7e88e74ec8fbbe97f856f20a56745e620" dependencies = [ + "instant", "libp2p-core", "libp2p-identify", + "libp2p-identity", "libp2p-kad", "libp2p-ping", "libp2p-swarm", + "once_cell", "prometheus-client", ] [[package]] name = "libp2p-noise" -version = "0.42.2" +version = "0.43.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3673da89d29936bc6435bafc638e2f184180d554ce844db65915113f86ec5e" +checksum = "d2eeec39ad3ad0677551907dd304b2f13f17208ccebe333bef194076cd2e8921" dependencies = [ "bytes", - "curve25519-dalek 3.2.0", + "curve25519-dalek", "futures", "libp2p-core", "libp2p-identity", "log", + "multiaddr 0.18.2", + "multihash 0.19.3", "once_cell", "quick-protobuf", "rand", "sha2 0.10.8", "snow", "static_assertions", - "thiserror", - "x25519-dalek 1.1.1", + "thiserror 1.0.69", + "x25519-dalek", "zeroize", ] [[package]] name = "libp2p-ping" -version = "0.42.0" +version = "0.43.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e57759c19c28a73ef1eb3585ca410cefb72c1a709fcf6de1612a378e4219202" +checksum = "e702d75cd0827dfa15f8fd92d15b9932abe38d10d21f47c50438c71dd1b5dae3" dependencies = [ "either", "futures", "futures-timer", "instant", "libp2p-core", + "libp2p-identity", "libp2p-swarm", "log", "rand", @@ -5681,9 +6051,9 @@ dependencies = [ [[package]] name = "libp2p-quic" -version = "0.7.0-alpha.3" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6b26abd81cd2398382a1edfe739b539775be8a90fa6914f39b2ab49571ec735" +checksum = "130d451d83f21b81eb7b35b360bc7972aeafb15177784adc56528db082e6b927" dependencies = [ "bytes", "futures", @@ -5694,18 +6064,20 @@ dependencies = [ "libp2p-tls", "log", "parking_lot 0.12.3", - "quinn-proto", + "quinn 0.10.2", "rand", - "rustls 0.20.9", - "thiserror", + "ring 0.16.20", + "rustls 0.21.12", + "socket2 0.5.9", + "thiserror 1.0.69", "tokio", ] [[package]] name = "libp2p-request-response" -version = "0.24.1" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffdb374267d42dc5ed5bc53f6e601d4a64ac5964779c6e40bb9e4f14c1e30d5" +checksum = "d8e3b4d67870478db72bac87bfc260ee6641d0734e0e3e275798f089c3fecfd4" dependencies = [ "async-trait", "futures", @@ -5713,15 +6085,17 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm", + "log", "rand", "smallvec", + "void", ] [[package]] name = "libp2p-swarm" -version = "0.42.2" +version = "0.43.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "903b3d592d7694e56204d211f29d31bc004be99386644ba8731fc3e3ef27b296" +checksum = "580189e0074af847df90e75ef54f3f30059aedda37ea5a1659e8b9fca05c0141" dependencies = [ "either", "fnv", @@ -5732,6 +6106,8 @@ dependencies = [ "libp2p-identity", "libp2p-swarm-derive", "log", + "multistream-select", + "once_cell", "rand", "smallvec", "tokio", @@ -5740,36 +6116,39 @@ dependencies = [ [[package]] name = "libp2p-swarm-derive" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fba456131824ab6acd4c7bf61e9c0f0a3014b5fc9868ccb8e10d344594cdc4f" +checksum = "c4d5ec2a3df00c7836d7696c136274c9c59705bac69133253696a6c932cd1d74" dependencies = [ "heck 0.4.1", + "proc-macro-warning 0.4.2", + "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] name = "libp2p-tcp" -version = "0.39.0" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d33698596d7722d85d3ab0c86c2c322254fce1241e91208e3679b4eb3026cf" +checksum = "b558dd40d1bcd1aaaed9de898e9ec6a436019ecc2420dd0016e712fbb61c5508" dependencies = [ "futures", "futures-timer", "if-watch", "libc", "libp2p-core", + "libp2p-identity", "log", - "socket2 0.4.10", + "socket2 0.5.9", "tokio", ] [[package]] name = "libp2p-tls" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff08d13d0dc66e5e9ba6279c1de417b84fa0d0adc3b03e5732928c180ec02781" +checksum = "8218d1d5482b122ccae396bbf38abdcb283ecc96fa54760e1dfd251f0546ac61" dependencies = [ "futures", "futures-rustls", @@ -5777,56 +6156,74 @@ dependencies = [ "libp2p-identity", "rcgen", "ring 0.16.20", - "rustls 0.20.9", - "thiserror", - "webpki", - "x509-parser", + "rustls 0.21.12", + "rustls-webpki 0.101.7", + "thiserror 1.0.69", + "x509-parser 0.15.1", "yasna", ] +[[package]] +name = "libp2p-upnp" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82775a47b34f10f787ad3e2a22e2c1541e6ebef4fe9f28f3ac553921554c94c1" +dependencies = [ + "futures", + "futures-timer", + "igd-next", + "libp2p-core", + "libp2p-swarm", + "log", + "tokio", + "void", +] + [[package]] name = "libp2p-wasm-ext" -version = "0.39.0" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77dff9d32353a5887adb86c8afc1de1a94d9e8c3bc6df8b2201d7cdf5c848f43" +checksum = "1e5d8e3a9e07da0ef5b55a9f26c009c8fb3c725d492d8bb4b431715786eea79c" dependencies = [ "futures", "js-sys", "libp2p-core", - "parity-send-wrapper", + "send_wrapper", "wasm-bindgen", "wasm-bindgen-futures", ] [[package]] name = "libp2p-websocket" -version = "0.41.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "111273f7b3d3510524c752e8b7a5314b7f7a1fee7e68161c01a7d72cbb06db9f" +checksum = "004ee9c4a4631435169aee6aad2f62e3984dc031c43b6d29731e8e82a016c538" dependencies = [ "either", "futures", "futures-rustls", "libp2p-core", + "libp2p-identity", "log", "parking_lot 0.12.3", - "quicksink", + "pin-project-lite", "rw-stream-sink", - "soketto", + "soketto 0.8.1", + "thiserror 1.0.69", "url", "webpki-roots", ] [[package]] name = "libp2p-yamux" -version = "0.43.1" +version = "0.44.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd21d950662700a385d4c6d68e2f5f54d778e97068cdd718522222ef513bda" +checksum = "8eedcb62824c4300efb9cfd4e2a6edaf3ca097b9e68b36dabe45a44469fd6a85" dependencies = [ "futures", "libp2p-core", "log", - "thiserror", + "thiserror 1.0.69", "yamux", ] @@ -5836,8 +6233,9 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.0", "libc", + "redox_syscall 0.5.11", ] [[package]] @@ -5857,12 +6255,12 @@ dependencies = [ [[package]] name = "libsecp256k1" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" +checksum = "e79019718125edc905a079a70cfa5f3820bc76139fc91d6f9abc27ea2a887139" dependencies = [ "arrayref", - "base64 0.13.1", + "base64 0.22.1", "digest 0.9.0", "hmac-drbg", "libsecp256k1-core", @@ -5882,7 +6280,7 @@ checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" dependencies = [ "crunchy", "digest 0.9.0", - "subtle 2.4.1", + "subtle 2.6.1", ] [[package]] @@ -5905,9 +6303,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.18" +version = "1.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" dependencies = [ "cc", "pkg-config", @@ -5916,9 +6314,9 @@ dependencies = [ [[package]] name = "link-cplusplus" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d240c6f7e1ba3a28b0249f774e6a9dd0175054b52dfbb61b16eb8505c3785c9" +checksum = "4a6f6da007f968f9def0d65a05b187e2960183de70c160204ecfccf0ee330212" dependencies = [ "cc", ] @@ -5931,18 +6329,18 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linked_hash_set" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47186c6da4d81ca383c7c47c1bfc80f4b95f4720514d860a5407aaf4233f9588" +checksum = "bae85b5be22d9843c80e5fc80e9b64c8a3b1f98f867c709956eca3efff4e92e2" dependencies = [ "linked-hash-map", ] [[package]] name = "linregress" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4de04dcecc58d366391f9920245b85ffa684558a5ef6e7736e754347c3aea9c2" +checksum = "a9eda9dcf4f2a99787827661f312ac3219292549c2ee992bf9a6248ffb066bf7" dependencies = [ "nalgebra", ] @@ -5961,9 +6359,15 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "lioness" @@ -5977,6 +6381,67 @@ dependencies = [ "keystream", ] +[[package]] +name = "litemap" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" + +[[package]] +name = "litep2p" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f46c51c205264b834ceed95c8b195026e700494bc3991aaba3b4ea9e20626d9" +dependencies = [ + "async-trait", + "bs58 0.4.0", + "bytes", + "cid 0.10.1", + "ed25519-dalek", + "futures", + "futures-timer", + "hex-literal 0.4.1", + "indexmap 2.9.0", + "libc", + "mockall 0.12.1", + "multiaddr 0.17.1", + "multihash 0.17.0", + "network-interface", + "nohash-hasher", + "parking_lot 0.12.3", + "pin-project", + "prost 0.12.6", + "prost-build 0.11.9", + "quinn 0.9.4", + "rand", + "rcgen", + "ring 0.16.20", + "rustls 0.20.9", + "serde", + "sha2 0.10.8", + "simple-dns", + "smallvec", + "snow", + "socket2 0.5.9", + "static_assertions", + "str0m", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tokio-util", + "tracing", + "trust-dns-resolver", + "uint", + "unsigned-varint 0.8.0", + "url", + "webpki", + "x25519-dalek", + "x509-parser 0.16.0", + "yasna", + "zeroize", +] + [[package]] name = "lock_api" version = "0.4.12" @@ -5989,9 +6454,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "lru" @@ -6004,18 +6469,18 @@ dependencies = [ [[package]] name = "lru" -version = "0.10.1" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" -dependencies = [ - "hashbrown 0.13.2", -] +checksum = "a4a83fb7698b3643a0e34f9ae6f2e8f0178c0fd42f8b59d493aa271ff3a5bf21" [[package]] name = "lru" -version = "0.11.1" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a83fb7698b3643a0e34f9ae6f2e8f0178c0fd42f8b59d493aa271ff3a5bf21" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.2", +] [[package]] name = "lru-cache" @@ -6028,19 +6493,18 @@ dependencies = [ [[package]] name = "lz4" -version = "1.25.0" +version = "1.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6eab492fe7f8651add23237ea56dbf11b3c4ff762ab83d40a47f11433421f91" +checksum = "a20b523e860d03443e98350ceaac5e71c6ba89aea7d960769ec3ce37f4de5af4" dependencies = [ - "libc", "lz4-sys", ] [[package]] name = "lz4-sys" -version = "1.9.5" +version = "1.11.1+lz4-1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" dependencies = [ "cc", "libc", @@ -6057,71 +6521,50 @@ dependencies = [ [[package]] name = "macro_magic" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e03844fc635e92f3a0067e25fa4bf3e3dbf3f2927bf3aa01bb7bc8f1c428949d" +checksum = "cc33f9f0351468d26fbc53d9ce00a096c8522ecb42f19b50f34f2c422f76d21d" dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "macro_magic_core" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "468155613a44cfd825f1fb0ffa532b018253920d404e6fca1e8d43155198a46d" +checksum = "1687dc887e42f352865a393acae7cf79d98fab6351cde1f58e9e057da89bf150" dependencies = [ "const-random", - "derive-syn-parse 0.1.5", + "derive-syn-parse", "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "macro_magic_core_macros" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea73aa640dc01d62a590d48c0c3521ed739d53b27f919b25c3551e233481654" +checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "macro_magic_macros" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef9d79ae96aaba821963320eb2b6e34d17df1e5a83d8a1985c29cc5be59577b3" +checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.66", -] - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - -[[package]] -name = "matchers" -version = "0.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" -dependencies = [ - "regex-automata 0.1.10", + "syn 2.0.101", ] [[package]] @@ -6141,9 +6584,9 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "matrixmultiply" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" dependencies = [ "autocfg", "rawpointer", @@ -6161,7 +6604,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.38.34", + "rustix 0.38.44", ] [[package]] @@ -6175,9 +6618,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ "libc", ] @@ -6206,7 +6649,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f313fcff1d2a4bcaa2deeaa00bf7530d77d5f7bd0467a117dde2e29a75a7a17a" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "blake3", "frame-metadata", "parity-scale-codec", @@ -6222,7 +6665,7 @@ checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" dependencies = [ "byteorder", "keccak", - "rand_core 0.6.4", + "rand_core", "zeroize", ] @@ -6245,20 +6688,19 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi 0.3.9", "libc", "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", @@ -6271,28 +6713,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daa3eb39495d8e2e2947a1d862852c90cc6a4a8845f8b41c8829cb9fcc047f4a" dependencies = [ "arrayref", - "arrayvec 0.7.4", + "arrayvec 0.7.6", "bitflags 1.3.2", "blake2 0.10.6", "c2-chacha", - "curve25519-dalek 4.1.3", + "curve25519-dalek", "either", "hashlink", "lioness", "log", "parking_lot 0.12.3", "rand", - "rand_chacha 0.3.1", + "rand_chacha", "rand_distr", - "subtle 2.4.1", - "thiserror", + "subtle 2.6.1", + "thiserror 1.0.69", "zeroize", ] [[package]] name = "mmr-gadget" -version = "30.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "log", @@ -6310,8 +6752,8 @@ dependencies = [ [[package]] name = "mmr-rpc" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -6333,8 +6775,23 @@ dependencies = [ "downcast", "fragile", "lazy_static", - "mockall_derive", - "predicates", + "mockall_derive 0.11.4", + "predicates 2.1.5", + "predicates-tree", +] + +[[package]] +name = "mockall" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43766c2b5203b10de348ffe19f7e54564b64f3d6018ff7648d1e2d6d3a0f0a48" +dependencies = [ + "cfg-if", + "downcast", + "fragile", + "lazy_static", + "mockall_derive 0.12.1", + "predicates 3.1.3", "predicates-tree", ] @@ -6350,6 +6807,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "mockall_derive" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7cbce79ec385a1d4f54baa90a76401eb15d9cab93685f62e7e9f942aa00ae2" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "multiaddr" version = "0.17.1" @@ -6365,7 +6834,26 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint", + "unsigned-varint 0.7.2", + "url", +] + +[[package]] +name = "multiaddr" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" +dependencies = [ + "arrayref", + "byteorder", + "data-encoding", + "libp2p-identity", + "multibase", + "multihash 0.19.3", + "percent-encoding", + "serde", + "static_assertions", + "unsigned-varint 0.8.0", "url", ] @@ -6391,10 +6879,10 @@ dependencies = [ "blake3", "core2", "digest 0.10.7", - "multihash-derive 0.8.1", + "multihash-derive", "sha2 0.10.8", "sha3", - "unsigned-varint", + "unsigned-varint 0.7.2", ] [[package]] @@ -6403,41 +6891,25 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfd8a792c1694c6da4f68db0a9d707c72bd260994da179e6030a5dcee00bb815" dependencies = [ + "blake2b_simd", + "blake2s_simd", + "blake3", "core2", "digest 0.10.7", - "multihash-derive 0.8.1", + "multihash-derive", "sha2 0.10.8", - "unsigned-varint", + "sha3", + "unsigned-varint 0.7.2", ] [[package]] name = "multihash" -version = "0.19.1" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076d548d76a0e2a0d4ab471d0b1c36c577786dfc4471242035d97a12a735c492" +checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" dependencies = [ "core2", - "unsigned-varint", -] - -[[package]] -name = "multihash-codetable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6d815ecb3c8238d00647f8630ede7060a642c9f704761cd6082cb4028af6935" -dependencies = [ - "blake2b_simd", - "blake2s_simd", - "blake3", - "core2", - "digest 0.10.7", - "multihash-derive 0.9.0", - "ripemd", - "serde", - "sha1", - "sha2 0.10.8", - "sha3", - "strobe-rs", + "unsigned-varint 0.8.0", ] [[package]] @@ -6455,59 +6927,39 @@ dependencies = [ ] [[package]] -name = "multihash-derive" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "890e72cb7396cb99ed98c1246a97b243cc16394470d94e0bc8b0c2c11d84290e" -dependencies = [ - "core2", - "multihash 0.19.1", - "multihash-derive-impl", -] - -[[package]] -name = "multihash-derive-impl" -version = "0.1.1" +name = "multimap" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3958713ce794e12f7c6326fac9aa274c68d74c4881dd37b3e2662b8a2046bb19" -dependencies = [ - "proc-macro-crate 2.0.0", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.66", - "synstructure 0.13.1", -] +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] name = "multimap" -version = "0.8.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" [[package]] name = "multistream-select" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27a" +checksum = "ea0df8e5eec2298a62b326ee4f0d7fe1a6b90a09dfcf9df37b38f947a8c42f19" dependencies = [ "bytes", "futures", "log", "pin-project", "smallvec", - "unsigned-varint", + "unsigned-varint 0.7.2", ] [[package]] name = "nalgebra" -version = "0.32.6" +version = "0.33.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5c17de023a86f59ed79891b2e5d5a94c705dbe904a5b5c9c952ea6221b03e4" +checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b" dependencies = [ "approx", "matrixmultiply", - "nalgebra-macros", "num-complex", "num-rational", "num-traits", @@ -6515,17 +6967,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "nalgebra-macros" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "names" version = "0.14.0" @@ -6543,21 +6984,20 @@ checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" [[package]] name = "netlink-packet-core" -version = "0.4.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297" +checksum = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4" dependencies = [ "anyhow", "byteorder", - "libc", "netlink-packet-utils", ] [[package]] name = "netlink-packet-route" -version = "0.12.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaab" +checksum = "053998cea5a306971f88580d0829e90f270f940befd7cf928da179d4187a5a66" dependencies = [ "anyhow", "bitflags 1.3.2", @@ -6576,29 +7016,28 @@ dependencies = [ "anyhow", "byteorder", "paste", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "netlink-proto" -version = "0.10.0" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" +checksum = "72452e012c2f8d612410d89eea01e2d9b56205274abb35d53f60200b2ec41d60" dependencies = [ "bytes", "futures", "log", "netlink-packet-core", "netlink-sys", - "thiserror", - "tokio", + "thiserror 2.0.12", ] [[package]] name = "netlink-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416060d346fbaf1f23f9512963e3e878f1a78e707cb699ba9215761754244307" +checksum = "16c903aa70590cb93691bf97a767c8d1d6122d2cc9070433deb3bbf36ce8bd23" dependencies = [ "bytes", "futures", @@ -6607,11 +7046,23 @@ dependencies = [ "tokio", ] +[[package]] +name = "network-interface" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a43439bf756eed340bdf8feba761e2d50c7d47175d87545cd5cbe4a137c4d1" +dependencies = [ + "cc", + "libc", + "thiserror 1.0.69", + "winapi", +] + [[package]] name = "nix" -version = "0.24.3" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", "cfg-if", @@ -6620,15 +7071,22 @@ dependencies = [ [[package]] name = "nix" -version = "0.27.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.0", "cfg-if", + "cfg_aliases", "libc", ] +[[package]] +name = "no-std-compat" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" + [[package]] name = "no-std-net" version = "0.6.0" @@ -6657,6 +7115,18 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nonempty" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9e591e719385e6ebaeb5ce5d3887f7d5676fceca6411d1925ccc95745f3d6f7" + +[[package]] +name = "nonzero_ext" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" + [[package]] name = "normalize-line-endings" version = "0.3.0" @@ -6675,9 +7145,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", @@ -6704,7 +7174,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", "itoa", ] @@ -6748,12 +7218,6 @@ dependencies = [ "libc", ] -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - [[package]] name = "object" version = "0.30.4" @@ -6768,9 +7232,18 @@ dependencies = [ [[package]] name = "object" -version = "0.36.0" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "object" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -6781,14 +7254,23 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" dependencies = [ - "asn1-rs", + "asn1-rs 0.5.2", +] + +[[package]] +name = "oid-registry" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" +dependencies = [ + "asn1-rs 0.6.2", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "opaque-debug" @@ -6802,11 +7284,59 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "openssl" +version = "0.10.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" +dependencies = [ + "bitflags 2.9.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-src" +version = "300.5.0+3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8ce546f549326b0e6052b649198487d91320875da901e7bd11a06d1ee3f9c2f" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] [[package]] name = "option-ext" @@ -6816,9 +7346,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orchestra" -version = "0.3.6" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92829eef0328a3d1cd22a02c0e51deb92a5362df3e7d21a4e9bdc38934694e66" +checksum = "41f6bbacc8c189a3f2e45e0fd0436e5d97f194db888e721bdbc3973e7dbed4c2" dependencies = [ "async-trait", "dyn-clonable", @@ -6827,21 +7357,21 @@ dependencies = [ "orchestra-proc-macro", "pin-project", "prioritized-metered-channel", - "thiserror", + "thiserror 1.0.69", "tracing", ] [[package]] name = "orchestra-proc-macro" -version = "0.3.6" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1344346d5af32c95bbddea91b18a88cc83eac394192d20ef2fc4c40a74332355" +checksum = "f7b1d40dd8f367db3c65bec8d3dd47d4a604ee8874480738f93191bddab4e0e0" dependencies = [ - "expander 2.2.1", - "indexmap 2.2.6", + "expander", + "indexmap 2.9.0", "itertools 0.11.0", "petgraph", - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", "syn 1.0.109", @@ -6864,12 +7394,13 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "pallet-asset-conversion" -version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "log", "parity-scale-codec", "scale-info", "sp-api", @@ -6877,13 +7408,30 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", +] + +[[package]] +name = "pallet-asset-conversion-ops" +version = "0.6.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-asset-conversion", + "parity-scale-codec", + "scale-info", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", ] [[package]] name = "pallet-asset-conversion-tx-payment" -version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", @@ -6892,13 +7440,12 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-asset-rate" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -6907,7 +7454,6 @@ dependencies = [ "scale-info", "sp-core", "sp-runtime", - "sp-std", ] [[package]] @@ -6944,8 +7490,8 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -6955,31 +7501,45 @@ dependencies = [ "scale-info", "serde", "sp-core", - "sp-io", + "sp-io", + "sp-runtime", +] + +[[package]] +name = "pallet-assets" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", "sp-runtime", - "sp-std", ] [[package]] -name = "pallet-assets" -version = "30.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +name = "pallet-assets-freezer" +version = "0.5.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", + "pallet-assets", "parity-scale-codec", "scale-info", - "sp-core", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-aura" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", @@ -6990,13 +7550,12 @@ dependencies = [ "sp-application-crypto", "sp-consensus-aura", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-authority-discovery" -version = "29.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", @@ -7006,13 +7565,12 @@ dependencies = [ "sp-application-crypto", "sp-authority-discovery", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-authorship" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", @@ -7020,13 +7578,12 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-babe" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7044,13 +7601,12 @@ dependencies = [ "sp-runtime", "sp-session", "sp-staking", - "sp-std", ] [[package]] name = "pallet-bags-list" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "aquamarine", "docify", @@ -7065,14 +7621,13 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", "sp-tracing", ] [[package]] name = "pallet-balances" -version = "29.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "39.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "docify", "frame-benchmarking", @@ -7082,13 +7637,12 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-beefy" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "39.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", @@ -7102,16 +7656,16 @@ dependencies = [ "sp-runtime", "sp-session", "sp-staking", - "sp-std", ] [[package]] name = "pallet-beefy-mmr" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "39.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "binary-merkle-tree", + "frame-benchmarking", "frame-support", "frame-system", "log", @@ -7127,7 +7681,6 @@ dependencies = [ "sp-io", "sp-runtime", "sp-state-machine", - "sp-std", ] [[package]] @@ -7165,8 +7718,8 @@ dependencies = [ [[package]] name = "pallet-bounties" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7178,93 +7731,31 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-bridge-grandpa" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ - "bp-header-chain", - "bp-runtime", - "bp-test-utils", - "finality-grandpa", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-consensus-grandpa", - "sp-runtime", - "sp-std", - "sp-trie", ] [[package]] name = "pallet-bridge-messages" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ - "bp-messages", - "bp-runtime", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "num-traits", - "parity-scale-codec", - "scale-info", - "sp-runtime", - "sp-std", -] - -[[package]] -name = "pallet-bridge-parachains" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bp-header-chain", - "bp-parachains", - "bp-polkadot-core", - "bp-runtime", - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "pallet-bridge-grandpa", - "parity-scale-codec", - "scale-info", - "sp-runtime", - "sp-std", - "sp-trie", -] - -[[package]] -name = "pallet-bridge-relayers" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ "bp-messages", - "bp-relayers", "bp-runtime", "frame-benchmarking", "frame-support", "frame-system", "log", - "pallet-bridge-messages", "parity-scale-codec", "scale-info", - "sp-arithmetic", "sp-runtime", "sp-std", + "sp-trie", ] [[package]] name = "pallet-broker" -version = "0.7.2" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.17.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bitvec", "frame-benchmarking", @@ -7273,16 +7764,16 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", + "sp-api", "sp-arithmetic", "sp-core", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-child-bounties" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7295,13 +7786,12 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-collator-selection" -version = "10.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7315,13 +7805,12 @@ dependencies = [ "scale-info", "sp-runtime", "sp-staking", - "sp-std", ] [[package]] name = "pallet-collective" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7332,7 +7821,6 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] @@ -7356,8 +7844,8 @@ dependencies = [ [[package]] name = "pallet-conviction-voting" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "assert_matches", "frame-benchmarking", @@ -7368,13 +7856,27 @@ dependencies = [ "serde", "sp-io", "sp-runtime", - "sp-std", +] + +[[package]] +name = "pallet-delegated-staking" +version = "5.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +dependencies = [ + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", + "sp-staking", ] [[package]] name = "pallet-democracy" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7386,7 +7888,6 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] @@ -7475,8 +7976,8 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7492,14 +7993,13 @@ dependencies = [ "sp-io", "sp-npos-elections", "sp-runtime", - "sp-std", - "strum 0.24.1", + "strum 0.26.3", ] [[package]] name = "pallet-election-provider-support-benchmarking" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7507,13 +8007,12 @@ dependencies = [ "parity-scale-codec", "sp-npos-elections", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-elections-phragmen" -version = "30.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "39.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7526,13 +8025,12 @@ dependencies = [ "sp-npos-elections", "sp-runtime", "sp-staking", - "sp-std", ] [[package]] name = "pallet-fast-unstake" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "docify", "frame-benchmarking", @@ -7545,13 +8043,12 @@ dependencies = [ "sp-io", "sp-runtime", "sp-staking", - "sp-std", ] [[package]] name = "pallet-grandpa" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7568,13 +8065,12 @@ dependencies = [ "sp-runtime", "sp-session", "sp-staking", - "sp-std", ] [[package]] name = "pallet-identity" -version = "29.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "enumflags2", "frame-benchmarking", @@ -7585,13 +8081,12 @@ dependencies = [ "scale-info", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-im-online" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7605,13 +8100,12 @@ dependencies = [ "sp-io", "sp-runtime", "sp-staking", - "sp-std", ] [[package]] name = "pallet-indices" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7622,7 +8116,6 @@ dependencies = [ "sp-io", "sp-keyring", "sp-runtime", - "sp-std", ] [[package]] @@ -7643,8 +8136,8 @@ dependencies = [ [[package]] name = "pallet-membership" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7655,13 +8148,12 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-message-queue" -version = "32.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "41.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "environmental", "frame-benchmarking", @@ -7674,7 +8166,6 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", "sp-weights", ] @@ -7712,8 +8203,8 @@ dependencies = [ [[package]] name = "pallet-mmr" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7725,13 +8216,12 @@ dependencies = [ "sp-io", "sp-mmr-primitives", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-multisig" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7741,13 +8231,12 @@ dependencies = [ "scale-info", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-nft-fractionalization" -version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7758,13 +8247,12 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-nfts" -version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "32.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "enumflags2", "frame-benchmarking", @@ -7776,24 +8264,22 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-nfts-runtime-api" -version = "15.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "pallet-nfts", "parity-scale-codec", "sp-api", - "sp-std", ] [[package]] name = "pallet-nis" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7803,13 +8289,12 @@ dependencies = [ "sp-arithmetic", "sp-core", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-nomination-pools" -version = "26.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "35.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", @@ -7821,20 +8306,20 @@ dependencies = [ "sp-io", "sp-runtime", "sp-staking", - "sp-std", "sp-tracing", ] [[package]] name = "pallet-nomination-pools-benchmarking" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "36.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-election-provider-support", "frame-support", "frame-system", "pallet-bags-list", + "pallet-delegated-staking", "pallet-nomination-pools", "pallet-staking", "parity-scale-codec", @@ -7842,24 +8327,22 @@ dependencies = [ "sp-runtime", "sp-runtime-interface", "sp-staking", - "sp-std", ] [[package]] name = "pallet-nomination-pools-runtime-api" -version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "33.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", "sp-api", - "sp-std", ] [[package]] name = "pallet-offences" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", @@ -7870,13 +8353,12 @@ dependencies = [ "serde", "sp-runtime", "sp-staking", - "sp-std", ] [[package]] name = "pallet-offences-benchmarking" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7894,7 +8376,23 @@ dependencies = [ "scale-info", "sp-runtime", "sp-staking", - "sp-std", +] + +[[package]] +name = "pallet-parameters" +version = "0.9.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "sp-core", + "sp-runtime", ] [[package]] @@ -7911,8 +8409,8 @@ dependencies = [ [[package]] name = "pallet-preimage" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7923,13 +8421,12 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-proxy" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7938,13 +8435,12 @@ dependencies = [ "scale-info", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-ranked-collective" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7957,13 +8453,12 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-recovery" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -7972,13 +8467,12 @@ dependencies = [ "scale-info", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-referenda" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "assert_matches", "frame-benchmarking", @@ -7991,7 +8485,6 @@ dependencies = [ "sp-arithmetic", "sp-io", "sp-runtime", - "sp-std", ] [[package]] @@ -8016,8 +8509,8 @@ dependencies = [ [[package]] name = "pallet-root-testing" -version = "5.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", @@ -8026,13 +8519,12 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-scheduler" -version = "30.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "39.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "docify", "frame-benchmarking", @@ -8043,14 +8535,13 @@ dependencies = [ "scale-info", "sp-io", "sp-runtime", - "sp-std", "sp-weights", ] [[package]] name = "pallet-session" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", @@ -8065,14 +8556,13 @@ dependencies = [ "sp-session", "sp-staking", "sp-state-machine", - "sp-std", "sp-trie", ] [[package]] name = "pallet-session-benchmarking" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -8083,31 +8573,29 @@ dependencies = [ "rand", "sp-runtime", "sp-session", - "sp-std", ] [[package]] name = "pallet-society" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", - "rand_chacha 0.2.2", + "rand_chacha", "scale-info", "sp-arithmetic", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-staking" -version = "29.0.3" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8117,31 +8605,19 @@ dependencies = [ "pallet-authorship", "pallet-session", "parity-scale-codec", - "rand_chacha 0.2.2", + "rand_chacha", "scale-info", "serde", "sp-application-crypto", "sp-io", "sp-runtime", "sp-staking", - "sp-std", -] - -[[package]] -name = "pallet-staking-reward-curve" -version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.66", ] [[package]] name = "pallet-staking-reward-fn" -version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "22.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "log", "sp-arithmetic", @@ -8149,8 +8625,8 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" -version = "15.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "sp-api", @@ -8159,8 +8635,8 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" -version = "30.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -8171,13 +8647,12 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-sudo" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "docify", "frame-benchmarking", @@ -8187,13 +8662,12 @@ dependencies = [ "scale-info", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-timestamp" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "docify", "frame-benchmarking", @@ -8205,15 +8679,14 @@ dependencies = [ "sp-inherents", "sp-io", "sp-runtime", - "sp-std", "sp-storage", "sp-timestamp", ] [[package]] name = "pallet-tips" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -8226,13 +8699,12 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-transaction-payment" -version = "29.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", @@ -8242,13 +8714,12 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-transaction-payment-rpc" -version = "31.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "41.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -8263,8 +8734,8 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -8275,8 +8746,8 @@ dependencies = [ [[package]] name = "pallet-treasury" -version = "28.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "docify", "frame-benchmarking", @@ -8289,13 +8760,12 @@ dependencies = [ "serde", "sp-core", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-uniques" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -8304,13 +8774,12 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-utility" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -8320,13 +8789,12 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-vesting" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -8335,7 +8803,6 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-runtime", - "sp-std", ] [[package]] @@ -8359,8 +8826,8 @@ dependencies = [ [[package]] name = "pallet-whitelist" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -8369,13 +8836,12 @@ dependencies = [ "scale-info", "sp-api", "sp-runtime", - "sp-std", ] [[package]] name = "pallet-xcm" -version = "8.0.5" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bounded-collections", "frame-benchmarking", @@ -8389,16 +8855,17 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", "staging-xcm", "staging-xcm-builder", "staging-xcm-executor", + "tracing", + "xcm-runtime-apis", ] [[package]] name = "pallet-xcm-benchmarks" -version = "8.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-benchmarking", "frame-support", @@ -8408,6 +8875,27 @@ dependencies = [ "scale-info", "sp-io", "sp-runtime", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "pallet-xcm-bridge-hub" +version = "0.13.3" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +dependencies = [ + "bp-messages", + "bp-runtime", + "bp-xcm-bridge-hub", + "frame-support", + "frame-system", + "log", + "pallet-bridge-messages", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-runtime", "sp-std", "staging-xcm", "staging-xcm-builder", @@ -8416,8 +8904,8 @@ dependencies = [ [[package]] name = "pallet-xcm-bridge-hub-router" -version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.15.3" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bp-xcm-bridge-hub-router", "frame-benchmarking", @@ -8461,8 +8949,8 @@ dependencies = [ [[package]] name = "parachains-common" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-primitives-core", "cumulus-primitives-utility", @@ -8483,7 +8971,6 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", - "sp-std", "staging-parachain-info", "staging-xcm", "staging-xcm-executor", @@ -8492,8 +8979,8 @@ dependencies = [ [[package]] name = "parachains-runtimes-test-utils" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-pallet-parachain-system", "cumulus-pallet-xcmp-queue", @@ -8505,19 +8992,34 @@ dependencies = [ "pallet-balances", "pallet-collator-selection", "pallet-session", + "pallet-timestamp", "pallet-xcm", + "parachains-common", "parity-scale-codec", "polkadot-parachain-primitives", "sp-consensus-aura", "sp-core", "sp-io", "sp-runtime", - "sp-std", "sp-tracing", "staging-parachain-info", "staging-xcm", "staging-xcm-executor", "substrate-wasm-builder", + "xcm-runtime-apis", +] + +[[package]] +name = "parity-bip39" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" +dependencies = [ + "bitcoin_hashes", + "rand", + "rand_core", + "serde", + "unicode-normalization", ] [[package]] @@ -8549,37 +9051,33 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", "bitvec", "byte-slice-cast", "bytes", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] -[[package]] -name = "parity-send-wrapper" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" - [[package]] name = "parity-util-mem" version = "0.12.0" @@ -8617,9 +9115,9 @@ checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -8664,9 +9162,9 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.2", + "redox_syscall 0.5.11", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -8676,19 +9174,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7924d1d0ad836f665c9065e26d016c673ece3993f30d340068b16f282afc1156" [[package]] -name = "paste" -version = "1.0.15" +name = "password-hash" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core", + "subtle 2.6.1", +] [[package]] -name = "pbkdf2" -version = "0.8.0" +name = "paste" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" -dependencies = [ - "crypto-mac 0.11.1", -] +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pbkdf2" @@ -8697,6 +9197,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest 0.10.7", + "password-hash", ] [[package]] @@ -8818,20 +9319,20 @@ dependencies = [ [[package]] name = "pest" -version = "2.7.10" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6" dependencies = [ "memchr", - "thiserror", + "thiserror 2.0.12", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.10" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" +checksum = "d725d9cfd79e87dccc9341a2ef39d1b6f6353d68c4b33c177febbe1a402c97c5" dependencies = [ "pest", "pest_generator", @@ -8839,22 +9340,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.10" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" +checksum = "db7d01726be8ab66ab32f9df467ae8b1148906685bbe75c82d1e65d7f5b3f841" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "pest_meta" -version = "2.7.10" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" +checksum = "7f9f832470494906d1fca5329f8ab5791cc60beb230c74815dff541cbd2b5ca0" dependencies = [ "once_cell", "pest", @@ -8868,40 +9369,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.6", + "indexmap 2.9.0", ] [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "pin-project-lite" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" - -[[package]] -name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -8911,12 +9406,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.1.0", + "fastrand 2.3.0", "futures-io", ] @@ -8932,19 +9427,19 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polkadot-approval-distribution" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bitvec", "futures", "futures-timer", - "itertools 0.10.5", + "itertools 0.11.0", "polkadot-node-jaeger", "polkadot-node-metrics", "polkadot-node-network-protocol", @@ -8958,8 +9453,8 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "always-assert", "futures", @@ -8974,10 +9469,10 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "derive_more", + "derive_more 0.99.20", "fatality", "futures", "parity-scale-codec", @@ -8988,17 +9483,18 @@ dependencies = [ "polkadot-node-subsystem-util", "polkadot-primitives", "rand", + "sc-network", "schnellru", "sp-core", "sp-keystore", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-availability-recovery" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "fatality", @@ -9013,15 +9509,25 @@ dependencies = [ "rand", "sc-network", "schnellru", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing-gum", ] +[[package]] +name = "polkadot-ckb-merkle-mountain-range" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b44320e5f7ce2c18227537a3032ae5b2c476a7e8eddba45333e1011fc31b92" +dependencies = [ + "cfg-if", + "itertools 0.10.5", +] + [[package]] name = "polkadot-cli" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cfg-if", "clap", @@ -9041,15 +9547,15 @@ dependencies = [ "sp-io", "sp-keyring", "sp-maybe-compressed-blob", + "sp-runtime", "substrate-build-script-utils", - "thiserror", - "try-runtime-cli", + "thiserror 1.0.69", ] [[package]] name = "polkadot-collator-protocol" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bitvec", "fatality", @@ -9060,36 +9566,36 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", + "schnellru", "sp-core", "sp-keystore", "sp-runtime", - "thiserror", + "thiserror 1.0.69", "tokio-util", "tracing-gum", ] [[package]] name = "polkadot-core-primitives" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "15.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "scale-info", "sp-core", "sp-runtime", - "sp-std", ] [[package]] name = "polkadot-dispute-distribution" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "derive_more", + "derive_more 0.99.20", "fatality", "futures", "futures-timer", - "indexmap 2.2.6", + "indexmap 2.9.0", "parity-scale-codec", "polkadot-erasure-coding", "polkadot-node-network-protocol", @@ -9101,14 +9607,14 @@ dependencies = [ "schnellru", "sp-application-crypto", "sp-keystore", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-erasure-coding" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -9116,13 +9622,13 @@ dependencies = [ "reed-solomon-novelpoly", "sp-core", "sp-trie", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "polkadot-gossip-support" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "futures-timer", @@ -9131,7 +9637,7 @@ dependencies = [ "polkadot-node-subsystem-util", "polkadot-primitives", "rand", - "rand_chacha 0.3.1", + "rand_chacha", "sc-network", "sc-network-common", "sp-application-crypto", @@ -9143,8 +9649,8 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "always-assert", "async-trait", @@ -9160,14 +9666,14 @@ dependencies = [ "polkadot-primitives", "sc-network", "sp-consensus", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-collation-generation" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "parity-scale-codec", @@ -9178,20 +9684,20 @@ dependencies = [ "polkadot-primitives", "sp-core", "sp-maybe-compressed-blob", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-approval-voting" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.3.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bitvec", - "derive_more", + "derive_more 0.99.20", "futures", "futures-timer", - "itertools 0.10.5", + "itertools 0.11.0", "kvdb", "merlin", "parity-scale-codec", @@ -9202,8 +9708,8 @@ dependencies = [ "polkadot-overseer", "polkadot-primitives", "rand", - "rand_chacha 0.3.1", - "rand_core 0.6.4", + "rand_chacha", + "rand_core", "sc-keystore", "schnellru", "schnorrkel 0.11.4", @@ -9211,14 +9717,14 @@ dependencies = [ "sp-consensus", "sp-consensus-slots", "sp-runtime", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-av-store" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bitvec", "futures", @@ -9233,14 +9739,14 @@ dependencies = [ "polkadot-overseer", "polkadot-primitives", "sp-consensus", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-backing" -version = "8.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bitvec", "fatality", @@ -9253,29 +9759,29 @@ dependencies = [ "polkadot-statement-table", "schnellru", "sp-keystore", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-bitfield-signing" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", "sp-keystore", - "thiserror", + "thiserror 1.0.69", "tracing-gum", "wasm-timer", ] [[package]] name = "polkadot-node-core-candidate-validation" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "futures", @@ -9289,14 +9795,15 @@ dependencies = [ "polkadot-overseer", "polkadot-parachain-primitives", "polkadot-primitives", - "sp-maybe-compressed-blob", + "sp-application-crypto", + "sp-keystore", "tracing-gum", ] [[package]] name = "polkadot-node-core-chain-api" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "polkadot-node-metrics", @@ -9309,8 +9816,8 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "futures-timer", @@ -9320,14 +9827,14 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "fatality", "futures", @@ -9339,14 +9846,14 @@ dependencies = [ "polkadot-primitives", "sc-keystore", "schnellru", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-parachains-inherent" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "futures", @@ -9356,31 +9863,28 @@ dependencies = [ "polkadot-primitives", "sp-blockchain", "sp-inherents", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-prospective-parachains" -version = "7.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "bitvec", "fatality", "futures", - "parity-scale-codec", - "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-provisioner" -version = "8.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bitvec", "fatality", @@ -9390,23 +9894,22 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", - "thiserror", + "schnellru", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-pvf" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "always-assert", - "array-bytes 6.2.3", + "array-bytes", "blake3", "cfg-if", "futures", "futures-timer", - "is_executable", - "libc", "parity-scale-codec", "pin-project", "polkadot-core-primitives", @@ -9419,18 +9922,16 @@ dependencies = [ "rand", "slotmap", "sp-core", - "sp-maybe-compressed-blob", - "sp-wasm-interface", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing-gum", ] [[package]] name = "polkadot-node-core-pvf-checker" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "polkadot-node-primitives", @@ -9439,21 +9940,20 @@ dependencies = [ "polkadot-overseer", "polkadot-primitives", "sp-keystore", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-pvf-common" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "cfg-if", "cpu-time", "futures", "landlock", "libc", - "nix 0.27.1", + "nix 0.28.0", "parity-scale-codec", "polkadot-parachain-primitives", "polkadot-primitives", @@ -9466,14 +9966,14 @@ dependencies = [ "sp-externalities", "sp-io", "sp-tracing", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-core-runtime-api" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "polkadot-node-metrics", @@ -9487,8 +9987,8 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "lazy_static", "log", @@ -9498,15 +9998,16 @@ dependencies = [ "polkadot-node-primitives", "polkadot-primitives", "sc-network", + "sc-network-types", "sp-core", - "thiserror", + "thiserror 1.0.69", "tokio", ] [[package]] name = "polkadot-node-metrics" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bs58 0.5.1", "futures", @@ -9524,13 +10025,13 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-channel 1.9.0", "async-trait", "bitvec", - "derive_more", + "derive_more 0.99.20", "fatality", "futures", "hex", @@ -9541,38 +10042,43 @@ dependencies = [ "rand", "sc-authority-discovery", "sc-network", - "strum 0.24.1", - "thiserror", + "sc-network-types", + "sp-runtime", + "strum 0.26.3", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-node-primitives" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bitvec", "bounded-vec", "futures", + "futures-timer", "parity-scale-codec", "polkadot-parachain-primitives", "polkadot-primitives", + "sc-keystore", "schnorrkel 0.11.4", "serde", "sp-application-crypto", "sp-consensus-babe", + "sp-consensus-slots", "sp-core", "sp-keystore", "sp-maybe-compressed-blob", "sp-runtime", - "thiserror", + "thiserror 1.0.69", "zstd 0.12.4", ] [[package]] name = "polkadot-node-subsystem" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -9581,12 +10087,13 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "bitvec", - "derive_more", + "derive_more 0.99.20", + "fatality", "futures", "orchestra", "polkadot-node-jaeger", @@ -9596,6 +10103,7 @@ dependencies = [ "polkadot-statement-table", "sc-client-api", "sc-network", + "sc-network-types", "sc-transaction-pool-api", "smallvec", "sp-api", @@ -9604,25 +10112,26 @@ dependencies = [ "sp-consensus-babe", "sp-runtime", "substrate-prometheus-endpoint", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "polkadot-node-subsystem-util" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", - "derive_more", + "derive_more 0.99.20", "fatality", "futures", "futures-channel", - "itertools 0.10.5", + "itertools 0.11.0", "kvdb", "parity-db", "parity-scale-codec", "parking_lot 0.12.3", "pin-project", + "polkadot-erasure-coding", "polkadot-node-jaeger", "polkadot-node-metrics", "polkadot-node-network-protocol", @@ -9638,14 +10147,14 @@ dependencies = [ "sp-application-crypto", "sp-core", "sp-keystore", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-overseer" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "futures", @@ -9666,25 +10175,24 @@ dependencies = [ [[package]] name = "polkadot-parachain-primitives" -version = "7.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bounded-collections", - "derive_more", + "derive_more 0.99.20", "parity-scale-codec", "polkadot-core-primitives", "scale-info", "serde", "sp-core", "sp-runtime", - "sp-std", "sp-weights", ] [[package]] name = "polkadot-primitives" -version = "8.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bitvec", "hex-literal 0.4.1", @@ -9705,13 +10213,12 @@ dependencies = [ "sp-keystore", "sp-runtime", "sp-staking", - "sp-std", ] [[package]] name = "polkadot-rpc" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "jsonrpsee", "mmr-rpc", @@ -9731,10 +10238,12 @@ dependencies = [ "sc-sync-state-rpc", "sc-transaction-pool-api", "sp-api", + "sp-application-crypto", "sp-block-builder", "sp-blockchain", "sp-consensus", "sp-consensus-babe", + "sp-consensus-beefy", "sp-keystore", "sp-runtime", "substrate-frame-rpc-system", @@ -9743,8 +10252,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" -version = "8.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bitvec", "frame-benchmarking", @@ -9785,7 +10294,6 @@ dependencies = [ "sp-runtime", "sp-session", "sp-staking", - "sp-std", "staging-xcm", "staging-xcm-builder", "staging-xcm-executor", @@ -9794,25 +10302,24 @@ dependencies = [ [[package]] name = "polkadot-runtime-metrics" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bs58 0.5.1", "frame-benchmarking", "parity-scale-codec", "polkadot-primitives", - "sp-std", "sp-tracing", ] [[package]] name = "polkadot-runtime-parachains" -version = "8.0.3" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bitflags 1.3.2", "bitvec", - "derive_more", + "derive_more 0.99.20", "frame-benchmarking", "frame-support", "frame-system", @@ -9824,6 +10331,7 @@ dependencies = [ "pallet-balances", "pallet-broker", "pallet-message-queue", + "pallet-mmr", "pallet-session", "pallet-staking", "pallet-timestamp", @@ -9834,8 +10342,7 @@ dependencies = [ "polkadot-primitives", "polkadot-runtime-metrics", "rand", - "rand_chacha 0.3.1", - "rustc-hex", + "rand_chacha", "scale-info", "serde", "sp-api", @@ -9856,25 +10363,20 @@ dependencies = [ [[package]] name = "polkadot-service" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "19.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "frame-benchmarking", "frame-benchmarking-cli", - "frame-support", "frame-system", "frame-system-rpc-runtime-api", "futures", - "hex-literal 0.4.1", "is_executable", "kvdb", "kvdb-rocksdb", "log", "mmr-gadget", - "pallet-babe", - "pallet-im-online", - "pallet-staking", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "parity-db", @@ -9910,7 +10412,6 @@ dependencies = [ "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", "polkadot-overseer", - "polkadot-parachain-primitives", "polkadot-primitives", "polkadot-rpc", "polkadot-runtime-parachains", @@ -9918,10 +10419,8 @@ dependencies = [ "rococo-runtime", "sc-authority-discovery", "sc-basic-authorship", - "sc-block-builder", "sc-chain-spec", "sc-client-api", - "sc-client-db", "sc-consensus", "sc-consensus-babe", "sc-consensus-beefy", @@ -9930,7 +10429,6 @@ dependencies = [ "sc-executor", "sc-keystore", "sc-network", - "sc-network-common", "sc-network-sync", "sc-offchain", "sc-service", @@ -9939,7 +10437,6 @@ dependencies = [ "sc-telemetry", "sc-transaction-pool", "sc-transaction-pool-api", - "schnellru", "serde", "serde_json", "sp-api", @@ -9951,37 +10448,37 @@ dependencies = [ "sp-consensus-beefy", "sp-consensus-grandpa", "sp-core", + "sp-genesis-builder", "sp-inherents", "sp-io", "sp-keyring", - "sp-keystore", "sp-mmr-primitives", "sp-offchain", "sp-runtime", "sp-session", - "sp-state-machine", - "sp-storage", "sp-timestamp", "sp-transaction-pool", "sp-version", "sp-weights", + "staging-xcm", "substrate-prometheus-endpoint", - "thiserror", + "thiserror 1.0.69", "tracing-gum", "westend-runtime", + "xcm-runtime-apis", ] [[package]] name = "polkadot-statement-distribution" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", "bitvec", "fatality", "futures", "futures-timer", - "indexmap 2.2.6", + "indexmap 2.9.0", "parity-scale-codec", "polkadot-node-network-protocol", "polkadot-node-primitives", @@ -9990,14 +10487,14 @@ dependencies = [ "polkadot-primitives", "sp-keystore", "sp-staking", - "thiserror", + "thiserror 1.0.69", "tracing-gum", ] [[package]] name = "polkadot-statement-table" -version = "8.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -10005,6 +10502,89 @@ dependencies = [ "tracing-gum", ] +[[package]] +name = "polkavm" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a3693e5efdb2bf74e449cd25fd777a28bd7ed87e41f5d5da75eb31b4de48b94" +dependencies = [ + "libc", + "log", + "polkavm-assembler", + "polkavm-common", + "polkavm-linux-raw", +] + +[[package]] +name = "polkavm-assembler" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa96d6d868243acc12de813dd48e756cbadcc8e13964c70d272753266deadc1" +dependencies = [ + "log", +] + +[[package]] +name = "polkavm-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" +dependencies = [ + "log", +] + +[[package]] +name = "polkavm-derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" +dependencies = [ + "polkavm-derive-impl-macro", +] + +[[package]] +name = "polkavm-derive-impl" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" +dependencies = [ + "polkavm-common", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" +dependencies = [ + "polkavm-derive-impl", + "syn 2.0.101", +] + +[[package]] +name = "polkavm-linker" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c7be503e60cf56c0eb785f90aaba4b583b36bff00e93997d93fef97f9553c39" +dependencies = [ + "gimli 0.28.1", + "hashbrown 0.14.5", + "log", + "object 0.32.2", + "polkavm-common", + "regalloc2 0.9.3", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linux-raw" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120" + [[package]] name = "polling" version = "2.8.0" @@ -10017,23 +10597,23 @@ dependencies = [ "concurrent-queue", "libc", "log", - "pin-project-lite 0.2.14", + "pin-project-lite", "windows-sys 0.48.0", ] [[package]] name = "polling" -version = "3.7.2" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi 0.4.0", - "pin-project-lite 0.2.14", - "rustix 0.38.34", + "pin-project-lite", + "rustix 0.38.44", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -10061,9 +10641,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" [[package]] name = "powerfmt" @@ -10073,9 +10653,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy 0.8.25", +] [[package]] name = "predicates" @@ -10091,17 +10674,27 @@ dependencies = [ "regex", ] +[[package]] +name = "predicates" +version = "3.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" +dependencies = [ + "anstyle", + "predicates-core", +] + [[package]] name = "predicates-core" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" [[package]] name = "predicates-tree" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" dependencies = [ "predicates-core", "termtree", @@ -10119,12 +10712,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" dependencies = [ "proc-macro2", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] @@ -10150,11 +10743,11 @@ checksum = "a172e6cc603231f2cf004232eabcecccc0da53ba576ab286ef7baa0cfc7927ad" dependencies = [ "coarsetime", "crossbeam-queue", - "derive_more", + "derive_more 0.99.20", "futures", "futures-timer", "nanorand", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -10164,26 +10757,17 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ - "thiserror", + "thiserror 1.0.69", "toml 0.5.11", ] [[package]] name = "proc-macro-crate" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" -dependencies = [ - "toml_edit 0.20.7", -] - -[[package]] -name = "proc-macro-crate" -version = "3.1.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit 0.21.1", + "toml_edit", ] [[package]] @@ -10212,20 +10796,31 @@ dependencies = [ [[package]] name = "proc-macro-warning" -version = "1.0.2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1eaa7fa0aa1929ffdf7eeb6eac234dde6268914a14ad44d23521ab6a9b258e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "proc-macro-warning" +version = "1.84.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" +checksum = "75eea531cfcd120e0851a3f8aed42c4841f78c889eefafd96339c72677ae42c3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -10241,14 +10836,14 @@ dependencies = [ "lazy_static", "memchr", "parking_lot 0.12.3", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "prometheus-client" -version = "0.19.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6fa99d535dd930d1249e6c79cb3c2915f9172a540fe2b02a4c8f9ca954721e" +checksum = "3c99afa9a01501019ac3a14d71d9f94050346f55ca471ce90c799a15c58f61e2" dependencies = [ "dtoa", "itoa", @@ -10264,7 +10859,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] @@ -10298,17 +10893,38 @@ dependencies = [ "itertools 0.10.5", "lazy_static", "log", - "multimap", + "multimap 0.8.3", "petgraph", "prettyplease 0.1.25", "prost 0.11.9", - "prost-types", + "prost-types 0.11.9", "regex", "syn 1.0.109", "tempfile", "which", ] +[[package]] +name = "prost-build" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" +dependencies = [ + "bytes", + "heck 0.5.0", + "itertools 0.12.1", + "log", + "multimap 0.10.0", + "once_cell", + "petgraph", + "prettyplease 0.2.32", + "prost 0.12.6", + "prost-types 0.12.6", + "regex", + "syn 2.0.101", + "tempfile", +] + [[package]] name = "prost-derive" version = "0.11.9" @@ -10332,7 +10948,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] @@ -10344,11 +10960,20 @@ dependencies = [ "prost 0.11.9", ] +[[package]] +name = "prost-types" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" +dependencies = [ + "prost 0.12.6", +] + [[package]] name = "psm" -version = "0.1.21" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "6e944464ec8536cd1beb0bbfd96987eb5e3b72f2ecdafdc5c769a37f1fa2ae1f" dependencies = [ "cc", ] @@ -10374,12 +10999,21 @@ dependencies = [ "sp-weights", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - +[[package]] +name = "quanta" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bd1fe6824cea6538803de3ff1bc0cf3949024db3d43c9643024bfb33a807c0e" +dependencies = [ + "crossbeam-utils", + "libc", + "once_cell", + "raw-cpuid", + "wasi 0.11.0+wasi-snapshot-preview1", + "web-sys", + "winapi", +] + [[package]] name = "quick-protobuf" version = "0.8.1" @@ -10391,26 +11025,51 @@ dependencies = [ [[package]] name = "quick-protobuf-codec" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1693116345026436eb2f10b677806169c1a1260c1c60eaaffe3fb5a29ae23d8b" +checksum = "f8ededb1cd78531627244d51dd0c7139fbe736c7d57af0092a76f0ffb2f56e98" dependencies = [ "asynchronous-codec", "bytes", "quick-protobuf", - "thiserror", - "unsigned-varint", + "thiserror 1.0.69", + "unsigned-varint 0.7.2", ] [[package]] -name = "quicksink" -version = "0.1.2" +name = "quinn" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77de3c815e5a160b1539c6592796801df2043ae35e123b46d73380cfa57af858" +checksum = "2e8b432585672228923edbbf64b8b12c14e1112f62e88737655b4a083dbcd78e" dependencies = [ - "futures-core", - "futures-sink", - "pin-project-lite 0.1.12", + "bytes", + "pin-project-lite", + "quinn-proto 0.9.6", + "quinn-udp 0.3.2", + "rustc-hash 1.1.0", + "rustls 0.20.9", + "thiserror 1.0.69", + "tokio", + "tracing", + "webpki", +] + +[[package]] +name = "quinn" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" +dependencies = [ + "bytes", + "futures-io", + "pin-project-lite", + "quinn-proto 0.10.6", + "quinn-udp 0.4.1", + "rustc-hash 1.1.0", + "rustls 0.21.12", + "thiserror 1.0.69", + "tokio", + "tracing", ] [[package]] @@ -10422,24 +11081,73 @@ dependencies = [ "bytes", "rand", "ring 0.16.20", - "rustc-hash", + "rustc-hash 1.1.0", "rustls 0.20.9", "slab", - "thiserror", + "thiserror 1.0.69", "tinyvec", "tracing", "webpki", ] +[[package]] +name = "quinn-proto" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" +dependencies = [ + "bytes", + "rand", + "ring 0.16.20", + "rustc-hash 1.1.0", + "rustls 0.21.12", + "slab", + "thiserror 1.0.69", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "641538578b21f5e5c8ea733b736895576d0fe329bb883b937db6f4d163dbaaf4" +dependencies = [ + "libc", + "quinn-proto 0.9.6", + "socket2 0.4.10", + "tracing", + "windows-sys 0.42.0", +] + +[[package]] +name = "quinn-udp" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" +dependencies = [ + "bytes", + "libc", + "socket2 0.5.9", + "tracing", + "windows-sys 0.48.0", +] + [[package]] name = "quote" -version = "1.0.36" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -10453,18 +11161,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "rand_chacha", + "rand_core", ] [[package]] @@ -10474,16 +11172,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", + "rand_core", ] [[package]] @@ -10492,7 +11181,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", ] [[package]] @@ -10511,7 +11200,16 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" dependencies = [ - "rand_core 0.6.4", + "rand_core", +] + +[[package]] +name = "raw-cpuid" +version = "11.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6df7ab838ed27997ba19a4664507e6f82b41fe6e20be42929332156e5e85146" +dependencies = [ + "bitflags 2.9.0", ] [[package]] @@ -10563,31 +11261,22 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.2" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -10596,30 +11285,30 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87413ebb313323d431e85d0afc5a68222aaed972843537cbfe5f061cf1b4bcab" dependencies = [ - "derive_more", + "derive_more 0.99.20", "fs-err", "static_init", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "ref-cast" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] @@ -10634,16 +11323,29 @@ dependencies = [ "smallvec", ] +[[package]] +name = "regalloc2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +dependencies = [ + "hashbrown 0.13.2", + "log", + "rustc-hash 1.1.0", + "slice-group-by", + "smallvec", +] + [[package]] name = "regex" -version = "1.10.5" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -10657,13 +11359,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -10674,18 +11376,17 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "resolv-conf" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +checksum = "48375394603e3dd4b2d64371f7148fd8c7baa2680e28741f2cb8d23b59e3d4c4" dependencies = [ "hostname", - "quick-error", ] [[package]] @@ -10695,7 +11396,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ "hmac 0.12.1", - "subtle 2.4.1", + "subtle 2.6.1", ] [[package]] @@ -10721,21 +11422,12 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "untrusted 0.9.0", "windows-sys 0.52.0", ] -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.7", -] - [[package]] name = "rlp" version = "0.5.2" @@ -10759,7 +11451,7 @@ dependencies = [ [[package]] name = "rococo-emulated-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "emulated-integration-tests-common", "parachains-common", @@ -10775,10 +11467,11 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "binary-merkle-tree", + "bitvec", "frame-benchmarking", "frame-executive", "frame-metadata-hash-extension", @@ -10804,7 +11497,6 @@ dependencies = [ "pallet-elections-phragmen", "pallet-grandpa", "pallet-identity", - "pallet-im-online", "pallet-indices", "pallet-membership", "pallet-message-queue", @@ -10812,6 +11504,7 @@ dependencies = [ "pallet-multisig", "pallet-nis", "pallet-offences", + "pallet-parameters", "pallet-preimage", "pallet-proxy", "pallet-ranked-collective", @@ -10843,6 +11536,7 @@ dependencies = [ "scale-info", "serde", "serde_derive", + "serde_json", "smallvec", "sp-api", "sp-arithmetic", @@ -10850,6 +11544,7 @@ dependencies = [ "sp-block-builder", "sp-consensus-babe", "sp-consensus-beefy", + "sp-consensus-grandpa", "sp-core", "sp-genesis-builder", "sp-inherents", @@ -10859,7 +11554,6 @@ dependencies = [ "sp-runtime", "sp-session", "sp-staking", - "sp-std", "sp-storage", "sp-transaction-pool", "sp-version", @@ -10868,12 +11562,13 @@ dependencies = [ "staging-xcm-executor", "static_assertions", "substrate-wasm-builder", + "xcm-runtime-apis", ] [[package]] name = "rococo-runtime-constants" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "polkadot-primitives", @@ -10894,38 +11589,41 @@ checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" [[package]] name = "rpassword" -version = "7.3.1" +version = "7.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +checksum = "66d4c8b64f049c6721ec8ccec37ddfc3d641c4a7fca57e8f2a89de509c73df39" dependencies = [ "libc", "rtoolbox", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "rtnetlink" -version = "0.10.1" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0" +checksum = "7a552eb82d19f38c3beed3f786bd23aa434ceb9ac43ab44419ca6d67a7e186c0" dependencies = [ "futures", "log", + "netlink-packet-core", "netlink-packet-route", + "netlink-packet-utils", "netlink-proto", - "nix 0.24.3", - "thiserror", + "netlink-sys", + "nix 0.26.4", + "thiserror 1.0.69", "tokio", ] [[package]] name = "rtoolbox" -version = "0.0.2" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +checksum = "a7cc970b249fbe527d6e02e0a227762c9108b2f49d81094fe357ffc6d14d7f6f" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -10993,6 +11691,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -11001,11 +11705,11 @@ checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver 1.0.26", ] [[package]] @@ -11033,9 +11737,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.27" +version = "0.37.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +checksum = "519165d378b97752ca44bbe15047d5d3409e875f39327546b42ac81d7e18c1b6" dependencies = [ "bitflags 1.3.2", "errno", @@ -11047,15 +11751,28 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys 0.4.14", - "windows-sys 0.52.0", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", ] [[package]] @@ -11064,7 +11781,6 @@ version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" dependencies = [ - "log", "ring 0.16.20", "sct", "webpki", @@ -11078,10 +11794,25 @@ checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring 0.17.14", - "rustls-webpki", + "rustls-webpki 0.101.7", "sct", ] +[[package]] +name = "rustls" +version = "0.23.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0" +dependencies = [ + "log", + "once_cell", + "ring 0.17.14", + "rustls-pki-types", + "rustls-webpki 0.103.1", + "subtle 2.6.1", + "zeroize", +] + [[package]] name = "rustls-native-certs" version = "0.6.3" @@ -11091,7 +11822,19 @@ dependencies = [ "openssl-probe", "rustls-pemfile", "schannel", - "security-framework", + "security-framework 2.11.1", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework 3.2.0", ] [[package]] @@ -11103,6 +11846,39 @@ dependencies = [ "base64 0.21.7", ] +[[package]] +name = "rustls-pki-types" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" + +[[package]] +name = "rustls-platform-verifier" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4937d110d34408e9e5ad30ba0b0ca3b6a8a390f8db3636db60144ac4fa792750" +dependencies = [ + "core-foundation 0.10.0", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls 0.23.26", + "rustls-native-certs 0.8.1", + "rustls-platform-verifier-android", + "rustls-webpki 0.103.1", + "security-framework 3.2.0", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + [[package]] name = "rustls-webpki" version = "0.101.7" @@ -11113,11 +11889,22 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "rustls-webpki" +version = "0.103.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" +dependencies = [ + "ring 0.17.14", + "rustls-pki-types", + "untrusted 0.9.0", +] + [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ruzstd" @@ -11132,9 +11919,9 @@ dependencies = [ [[package]] name = "rw-stream-sink" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04" +checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" dependencies = [ "futures", "pin-project", @@ -11143,15 +11930,15 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "safe_arch" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" dependencies = [ "bytemuck", ] @@ -11167,34 +11954,35 @@ dependencies = [ [[package]] name = "sc-allocator" -version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "log", "sp-core", "sp-wasm-interface", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-authority-discovery" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.45.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "futures", "futures-timer", "ip_network", "libp2p", + "linked_hash_set", "log", - "multihash 0.18.1", - "multihash-codetable", + "multihash 0.19.3", "parity-scale-codec", "prost 0.12.6", - "prost-build", + "prost-build 0.12.6", "rand", "sc-client-api", "sc-network", + "sc-network-types", "sp-api", "sp-authority-discovery", "sp-blockchain", @@ -11202,13 +11990,13 @@ dependencies = [ "sp-keystore", "sp-runtime", "substrate-prometheus-endpoint", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-basic-authorship" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.45.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "futures-timer", @@ -11229,8 +12017,8 @@ dependencies = [ [[package]] name = "sc-block-builder" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.42.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "sp-api", @@ -11244,13 +12032,13 @@ dependencies = [ [[package]] name = "sc-chain-spec" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "docify", "log", - "memmap2 0.9.4", + "memmap2 0.9.5", "parity-scale-codec", "sc-chain-spec-derive", "sc-client-api", @@ -11266,34 +12054,35 @@ dependencies = [ "sp-io", "sp-runtime", "sp-state-machine", + "sp-tracing", ] [[package]] name = "sc-chain-spec-derive" -version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "12.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "sc-cli" -version = "0.37.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.47.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", - "bip39", + "array-bytes", "chrono", "clap", "fdlimit", "futures", - "itertools 0.10.5", + "itertools 0.11.0", "libp2p-identity", "log", "names", + "parity-bip39", "parity-scale-codec", "rand", "regex", @@ -11316,14 +12105,14 @@ dependencies = [ "sp-panic-handler", "sp-runtime", "sp-version", - "thiserror", + "thiserror 1.0.69", "tokio", ] [[package]] name = "sc-client-api" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "fnv", "futures", @@ -11349,8 +12138,8 @@ dependencies = [ [[package]] name = "sc-client-db" -version = "0.36.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.44.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "hash-db", "kvdb", @@ -11375,17 +12164,16 @@ dependencies = [ [[package]] name = "sc-consensus" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.44.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "futures", - "futures-timer", - "libp2p-identity", "log", - "mockall", + "mockall 0.11.4", "parking_lot 0.12.3", "sc-client-api", + "sc-network-types", "sc-utils", "serde", "sp-api", @@ -11395,13 +12183,13 @@ dependencies = [ "sp-runtime", "sp-state-machine", "substrate-prometheus-endpoint", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-consensus-aura" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.45.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "futures", @@ -11424,13 +12212,13 @@ dependencies = [ "sp-keystore", "sp-runtime", "substrate-prometheus-endpoint", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-consensus-babe" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.45.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "fork-tree", @@ -11460,13 +12248,13 @@ dependencies = [ "sp-keystore", "sp-runtime", "substrate-prometheus-endpoint", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-consensus-babe-rpc" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.45.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "jsonrpsee", @@ -11482,15 +12270,15 @@ dependencies = [ "sp-core", "sp-keystore", "sp-runtime", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-consensus-beefy" -version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "async-channel 1.9.0", "async-trait", "fnv", @@ -11503,6 +12291,7 @@ dependencies = [ "sc-network", "sc-network-gossip", "sc-network-sync", + "sc-network-types", "sc-utils", "sp-api", "sp-application-crypto", @@ -11513,18 +12302,17 @@ dependencies = [ "sp-core", "sp-crypto-hashing", "sp-keystore", - "sp-mmr-primitives", "sp-runtime", "substrate-prometheus-endpoint", - "thiserror", + "thiserror 1.0.69", "tokio", "wasm-timer", ] [[package]] name = "sc-consensus-beefy-rpc" -version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "jsonrpsee", @@ -11534,16 +12322,17 @@ dependencies = [ "sc-consensus-beefy", "sc-rpc", "serde", + "sp-application-crypto", "sp-consensus-beefy", "sp-core", "sp-runtime", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-consensus-epochs" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.44.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "fork-tree", "parity-scale-codec", @@ -11555,11 +12344,11 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" -version = "0.20.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.30.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "ahash 0.8.11", - "array-bytes 6.2.3", + "array-bytes", "async-trait", "dyn-clone", "finality-grandpa", @@ -11578,6 +12367,7 @@ dependencies = [ "sc-network-common", "sc-network-gossip", "sc-network-sync", + "sc-network-types", "sc-telemetry", "sc-transaction-pool-api", "sc-utils", @@ -11593,13 +12383,13 @@ dependencies = [ "sp-keystore", "sp-runtime", "substrate-prometheus-endpoint", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-consensus-grandpa-rpc" -version = "0.20.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.30.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "finality-grandpa", "futures", @@ -11613,13 +12403,13 @@ dependencies = [ "sp-blockchain", "sp-core", "sp-runtime", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-consensus-slots" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.44.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "futures", @@ -11641,12 +12431,13 @@ dependencies = [ [[package]] name = "sc-executor" -version = "0.33.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.40.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", "sc-executor-common", + "sc-executor-polkavm", "sc-executor-wasmtime", "schnellru", "sp-api", @@ -11663,20 +12454,32 @@ dependencies = [ [[package]] name = "sc-executor-common" -version = "0.30.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.35.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ + "polkavm", "sc-allocator", "sp-maybe-compressed-blob", "sp-wasm-interface", - "thiserror", + "thiserror 1.0.69", "wasm-instrument", ] +[[package]] +name = "sc-executor-polkavm" +version = "0.32.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +dependencies = [ + "log", + "polkavm", + "sc-executor-common", + "sp-wasm-interface", +] + [[package]] name = "sc-executor-wasmtime" -version = "0.30.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.35.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "anyhow", "cfg-if", @@ -11693,10 +12496,10 @@ dependencies = [ [[package]] name = "sc-informant" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.44.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "ansi_term", + "console", "futures", "futures-timer", "log", @@ -11710,37 +12513,37 @@ dependencies = [ [[package]] name = "sc-keystore" -version = "26.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "33.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "parking_lot 0.12.3", "serde_json", "sp-application-crypto", "sp-core", "sp-keystore", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-mixnet" -version = "0.5.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.15.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 4.2.0", - "arrayvec 0.7.4", + "array-bytes", + "arrayvec 0.7.6", "blake2 0.10.6", "bytes", "futures", "futures-timer", - "libp2p-identity", "log", "mixnet", - "multiaddr", + "multiaddr 0.18.2", "parity-scale-codec", "parking_lot 0.12.3", "sc-client-api", "sc-network", + "sc-network-types", "sc-transaction-pool-api", "sp-api", "sp-consensus", @@ -11748,19 +12551,20 @@ dependencies = [ "sp-keystore", "sp-mixnet", "sp-runtime", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-network" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.45.6" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "async-channel 1.9.0", "async-trait", "asynchronous-codec", "bytes", + "cid 0.9.0", "either", "fnv", "futures", @@ -11768,16 +12572,22 @@ dependencies = [ "ip_network", "libp2p", "linked_hash_set", + "litep2p", "log", - "mockall", + "mockall 0.11.4", + "once_cell", "parity-scale-codec", "parking_lot 0.12.3", "partial_sort", "pin-project", + "prost 0.12.6", + "prost-build 0.12.6", "rand", "sc-client-api", "sc-network-common", + "sc-network-types", "sc-utils", + "schnellru", "serde", "serde_json", "smallvec", @@ -11786,46 +12596,28 @@ dependencies = [ "sp-core", "sp-runtime", "substrate-prometheus-endpoint", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", - "unsigned-varint", + "unsigned-varint 0.7.2", + "void", "wasm-timer", "zeroize", ] -[[package]] -name = "sc-network-bitswap" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ - "async-channel 1.9.0", - "cid", - "futures", - "libp2p-identity", - "log", - "prost 0.12.6", - "prost-build", - "sc-client-api", - "sc-network", - "sp-blockchain", - "sp-runtime", - "thiserror", - "unsigned-varint", -] - [[package]] name = "sc-network-common" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.44.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "bitflags 1.3.2", "futures", "libp2p-identity", "parity-scale-codec", - "prost-build", + "prost-build 0.12.6", "sc-consensus", + "sc-network-types", "sp-consensus", "sp-consensus-grandpa", "sp-runtime", @@ -11833,17 +12625,17 @@ dependencies = [ [[package]] name = "sc-network-gossip" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.45.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "ahash 0.8.11", "futures", "futures-timer", - "libp2p", "log", "sc-network", "sc-network-common", "sc-network-sync", + "sc-network-types", "schnellru", "sp-runtime", "substrate-prometheus-endpoint", @@ -11852,31 +12644,31 @@ dependencies = [ [[package]] name = "sc-network-light" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.44.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "async-channel 1.9.0", "futures", - "libp2p-identity", "log", "parity-scale-codec", "prost 0.12.6", - "prost-build", + "prost-build 0.12.6", "sc-client-api", "sc-network", + "sc-network-types", "sp-blockchain", "sp-core", "sp-runtime", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-network-sync" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.44.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "async-channel 1.9.0", "async-trait", "fork-tree", @@ -11884,14 +12676,15 @@ dependencies = [ "futures-timer", "libp2p", "log", - "mockall", + "mockall 0.11.4", "parity-scale-codec", "prost 0.12.6", - "prost-build", + "prost-build 0.12.6", "sc-client-api", "sc-consensus", "sc-network", "sc-network-common", + "sc-network-types", "sc-utils", "schnellru", "smallvec", @@ -11902,43 +12695,59 @@ dependencies = [ "sp-core", "sp-runtime", "substrate-prometheus-endpoint", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", ] [[package]] name = "sc-network-transactions" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.44.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "futures", - "libp2p", "log", "parity-scale-codec", "sc-network", "sc-network-common", "sc-network-sync", + "sc-network-types", "sc-utils", "sp-consensus", "sp-runtime", "substrate-prometheus-endpoint", ] +[[package]] +name = "sc-network-types" +version = "0.12.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +dependencies = [ + "bs58 0.5.1", + "ed25519-dalek", + "libp2p-identity", + "litep2p", + "log", + "multiaddr 0.18.2", + "multihash 0.19.3", + "rand", + "thiserror 1.0.69", + "zeroize", +] + [[package]] name = "sc-offchain" -version = "30.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "bytes", "fnv", "futures", "futures-timer", - "hyper", + "hyper 0.14.32", "hyper-rustls", - "libp2p", "log", "num_cpus", "once_cell", @@ -11948,6 +12757,7 @@ dependencies = [ "sc-client-api", "sc-network", "sc-network-common", + "sc-network-types", "sc-transaction-pool-api", "sc-utils", "sp-api", @@ -11962,8 +12772,8 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" -version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -11971,8 +12781,8 @@ dependencies = [ [[package]] name = "sc-rpc" -version = "30.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "40.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", "jsonrpsee", @@ -12003,8 +12813,8 @@ dependencies = [ [[package]] name = "sc-rpc-api" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.44.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -12018,17 +12828,26 @@ dependencies = [ "sp-rpc", "sp-runtime", "sp-version", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-rpc-server" -version = "12.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.1.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "http", + "dyn-clone", + "forwarded-header-value", + "futures", + "governor", + "http 1.3.1", + "http-body-util", + "hyper 1.6.0", + "ip_network", "jsonrpsee", "log", + "sc-rpc-api", + "serde", "serde_json", "substrate-prometheus-endpoint", "tokio", @@ -12038,10 +12857,10 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.45.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "futures", "futures-util", "hex", @@ -12049,11 +12868,13 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot 0.12.3", + "rand", "sc-chain-spec", "sc-client-api", "sc-rpc", "sc-transaction-pool-api", "sc-utils", + "schnellru", "serde", "sp-api", "sp-blockchain", @@ -12061,15 +12882,15 @@ dependencies = [ "sp-rpc", "sp-runtime", "sp-version", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", ] [[package]] name = "sc-service" -version = "0.36.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.46.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "directories", @@ -12090,11 +12911,11 @@ dependencies = [ "sc-informant", "sc-keystore", "sc-network", - "sc-network-bitswap", "sc-network-common", "sc-network-light", "sc-network-sync", "sc-network-transactions", + "sc-network-types", "sc-rpc", "sc-rpc-server", "sc-rpc-spec-v2", @@ -12104,6 +12925,7 @@ dependencies = [ "sc-transaction-pool", "sc-transaction-pool-api", "sc-utils", + "schnellru", "serde", "serde_json", "sp-api", @@ -12123,7 +12945,7 @@ dependencies = [ "static_init", "substrate-prometheus-endpoint", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "tracing-futures", @@ -12131,8 +12953,8 @@ dependencies = [ [[package]] name = "sc-state-db" -version = "0.31.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.36.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "log", "parity-scale-codec", @@ -12142,21 +12964,21 @@ dependencies = [ [[package]] name = "sc-storage-monitor" -version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.22.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "clap", "fs4", "log", "sp-core", - "thiserror", + "thiserror 1.0.69", "tokio", ] [[package]] name = "sc-sync-state-rpc" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.45.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -12169,15 +12991,15 @@ dependencies = [ "serde_json", "sp-blockchain", "sp-runtime", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-sysinfo" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "derive_more", + "derive_more 0.99.20", "futures", "libc", "log", @@ -12195,8 +13017,8 @@ dependencies = [ [[package]] name = "sc-telemetry" -version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "25.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "chrono", "futures", @@ -12205,28 +13027,28 @@ dependencies = [ "parking_lot 0.12.3", "pin-project", "rand", + "sc-network", "sc-utils", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "wasm-timer", ] [[package]] name = "sc-tracing" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "ansi_term", "chrono", + "console", "is-terminal", "lazy_static", "libc", "log", "parity-scale-codec", "parking_lot 0.12.3", - "regex", - "rustc-hash", + "rustc-hash 1.1.0", "sc-client-api", "sc-tracing-proc-macro", "serde", @@ -12236,27 +13058,27 @@ dependencies = [ "sp-rpc", "sp-runtime", "sp-tracing", - "thiserror", + "thiserror 1.0.69", "tracing", - "tracing-log 0.1.4", - "tracing-subscriber 0.2.25", + "tracing-log", + "tracing-subscriber", ] [[package]] name = "sc-tracing-proc-macro" version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "sc-transaction-pool" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "futures", @@ -12277,13 +13099,13 @@ dependencies = [ "sp-tracing", "sp-transaction-pool", "substrate-prometheus-endpoint", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-transaction-pool-api" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "futures", @@ -12293,13 +13115,13 @@ dependencies = [ "sp-blockchain", "sp-core", "sp-runtime", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sc-utils" -version = "15.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-channel 1.9.0", "futures", @@ -12327,7 +13149,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e98f3262c250d90e700bb802eb704e1f841e03331c2eb815e46516c4edbf5b27" dependencies = [ - "derive_more", + "derive_more 0.99.20", "parity-scale-codec", "scale-bits", "scale-type-resolver", @@ -12336,13 +13158,13 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "bitvec", "cfg-if", - "derive_more", + "derive_more 1.0.0", "parity-scale-codec", "scale-info-derive", "serde", @@ -12350,14 +13172,14 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.11.3" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] @@ -12368,18 +13190,18 @@ checksum = "f0cded6518aa0bd6c1be2b88ac81bf7044992f0f154bfbabd5ad34f43512abcb" [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "schnellru" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +checksum = "356285bbf17bea63d9e52e96bd18f039672ac92b55b8cb997d6162a2a37d1649" dependencies = [ "ahash 0.8.11", "cfg-if", @@ -12393,10 +13215,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "844b7645371e6ecdf61ff246ba1958c29e802881a749ae3fb1993675d210d28d" dependencies = [ "arrayref", - "arrayvec 0.7.4", + "arrayvec 0.7.6", "curve25519-dalek-ng", "merlin", - "rand_core 0.6.4", + "rand_core", "sha2 0.9.9", "subtle-ng", "zeroize", @@ -12410,14 +13232,14 @@ checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" dependencies = [ "aead", "arrayref", - "arrayvec 0.7.4", - "curve25519-dalek 4.1.3", + "arrayvec 0.7.6", + "curve25519-dalek", "getrandom_or_panic", "merlin", - "rand_core 0.6.4", + "rand_core", "serde_bytes", "sha2 0.10.8", - "subtle 2.4.1", + "subtle 2.6.1", "zeroize", ] @@ -12429,9 +13251,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scratch" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" +checksum = "9f6280af86e5f559536da57a45ebc84948833b3bee313a7dd25232e09c878a52" [[package]] name = "sct" @@ -12443,6 +13265,21 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "sctp-proto" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6220f78bb44c15f326b0596113305f6101097a18755d53727a575c97e09fb24" +dependencies = [ + "bytes", + "crc", + "fxhash", + "log", + "rand", + "slab", + "thiserror 1.0.69", +] + [[package]] name = "sec1" version = "0.7.3" @@ -12453,7 +13290,8 @@ dependencies = [ "der", "generic-array 0.14.7", "pkcs8", - "subtle 2.4.1", + "serdect", + "subtle 2.6.1", "zeroize", ] @@ -12495,12 +13333,25 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.0", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.5.0", - "core-foundation", + "bitflags 2.9.0", + "core-foundation 0.10.0", "core-foundation-sys", "libc", "security-framework-sys", @@ -12508,9 +13359,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -12527,9 +13378,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] @@ -12540,11 +13391,17 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + [[package]] name = "serde" -version = "1.0.203" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -12560,41 +13417,52 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.14" +version = "0.11.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serdect" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" dependencies = [ + "base16ct", "serde", ] @@ -12611,6 +13479,18 @@ dependencies = [ "opaque-debug 0.3.1", ] +[[package]] +name = "sha-1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", + "sha1-asm", +] + [[package]] name = "sha1" version = "0.10.6" @@ -12622,6 +13502,15 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "sha1-asm" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "286acebaf8b67c1130aedffad26f594eff0c1292389158135327d2e23aed582b" +dependencies = [ + "cc", +] + [[package]] name = "sha2" version = "0.9.9" @@ -12673,9 +13562,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -12687,14 +13576,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core 0.6.4", + "rand_core", ] [[package]] name = "simba" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" +checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa" dependencies = [ "approx", "num-complex", @@ -12703,6 +13592,15 @@ dependencies = [ "wide", ] +[[package]] +name = "simple-dns" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cae9a3fcdadafb6d97f4c0e007e4247b114ee0f119f650c3cbf3a8b3a1479694" +dependencies = [ + "bitflags 2.9.0", +] + [[package]] name = "simple-mermaid" version = "0.1.1" @@ -12732,14 +13630,13 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "slot-range-helper" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "15.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "enumn", "parity-scale-codec", "paste", "sp-runtime", - "sp-std", ] [[package]] @@ -12753,9 +13650,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "smol" @@ -12780,7 +13677,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0bb30cf57b7b5f6109ce17c3164445e2d6f270af2cb48f6e4d31c2967c9a9f5" dependencies = [ - "arrayvec 0.7.4", + "arrayvec 0.7.6", "async-lock 2.8.0", "atomic-take", "base64 0.21.7", @@ -12789,8 +13686,8 @@ dependencies = [ "bs58 0.5.1", "chacha20", "crossbeam-queue", - "derive_more", - "ed25519-zebra 4.0.3", + "derive_more 0.99.20", + "ed25519-zebra", "either", "event-listener 2.5.3", "fnv", @@ -12807,11 +13704,11 @@ dependencies = [ "num-bigint", "num-rational", "num-traits", - "pbkdf2 0.12.2", + "pbkdf2", "pin-project", "poly1305", "rand", - "rand_chacha 0.3.1", + "rand_chacha", "ruzstd", "schnorrkel 0.10.2", "serde", @@ -12821,10 +13718,10 @@ dependencies = [ "siphasher", "slab", "smallvec", - "soketto", + "soketto 0.7.1", "twox-hash", "wasmi", - "x25519-dalek 2.0.1", + "x25519-dalek", "zeroize", ] @@ -12838,7 +13735,7 @@ dependencies = [ "async-lock 2.8.0", "base64 0.21.7", "blake2-rfc", - "derive_more", + "derive_more 0.99.20", "either", "event-listener 2.5.3", "fnv", @@ -12854,7 +13751,7 @@ dependencies = [ "parking_lot 0.12.3", "pin-project", "rand", - "rand_chacha 0.3.1", + "rand_chacha", "serde", "serde_json", "siphasher", @@ -12879,12 +13776,12 @@ dependencies = [ "aes-gcm", "blake2 0.10.6", "chacha20poly1305", - "curve25519-dalek 4.1.3", - "rand_core 0.6.4", + "curve25519-dalek", + "rand_core", "ring 0.17.14", "rustc_version", "sha2 0.10.8", - "subtle 2.4.1", + "subtle 2.6.1", ] [[package]] @@ -12899,12 +13796,11 @@ dependencies = [ [[package]] name = "snowbridge-beacon-primitives" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.10.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "byte-slice-cast", "frame-support", - "frame-system", "hex", "parity-scale-codec", "rlp", @@ -12918,13 +13814,12 @@ dependencies = [ "sp-std", "ssz_rs", "ssz_rs_derive", - "static_assertions", ] [[package]] name = "snowbridge-core" -version = "0.1.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.10.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "ethabi-decode", "frame-support", @@ -12946,8 +13841,8 @@ dependencies = [ [[package]] name = "snowbridge-ethereum" -version = "0.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.9.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "ethabi-decode", "ethbloom", @@ -12956,11 +13851,9 @@ dependencies = [ "parity-bytes", "parity-scale-codec", "rlp", - "rustc-hex", "scale-info", "serde", "serde-big-array", - "sp-core", "sp-io", "sp-runtime", "sp-std", @@ -12983,24 +13876,20 @@ dependencies = [ [[package]] name = "snowbridge-router-primitives" -version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.16.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "ethabi-decode", "frame-support", - "frame-system", "hex-literal 0.4.1", "log", "parity-scale-codec", "scale-info", - "serde", "snowbridge-core", "sp-core", "sp-io", "sp-runtime", "sp-std", "staging-xcm", - "staging-xcm-builder", "staging-xcm-executor", ] @@ -13016,9 +13905,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", "windows-sys 0.52.0", @@ -13032,20 +13921,35 @@ checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ "base64 0.13.1", "bytes", - "flate2", "futures", - "http", "httparse", "log", "rand", - "sha-1", + "sha-1 0.9.8", +] + +[[package]] +name = "soketto" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e859df029d160cb88608f5d7df7fb4753fd20fdfb4de5644f3d8b8440841721" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures", + "http 1.3.1", + "httparse", + "log", + "rand", + "sha1", ] [[package]] name = "sp-api" -version = "27.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ + "docify", "hash-db", "log", "parity-scale-codec", @@ -13055,100 +13959,98 @@ dependencies = [ "sp-externalities", "sp-metadata-ir", "sp-runtime", + "sp-runtime-interface", "sp-state-machine", - "sp-std", "sp-trie", "sp-version", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sp-api-proc-macro" -version = "15.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "Inflector", "blake2 0.10.6", - "expander 2.2.1", - "proc-macro-crate 3.1.0", + "expander", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "sp-application-crypto" -version = "31.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "scale-info", "serde", "sp-core", "sp-io", - "sp-std", ] [[package]] name = "sp-arithmetic" -version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ + "docify", "integer-sqrt", "num-traits", "parity-scale-codec", "scale-info", "serde", - "sp-std", "static_assertions", ] [[package]] name = "sp-authority-discovery" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "scale-info", "sp-api", "sp-application-crypto", "sp-runtime", - "sp-std", ] [[package]] name = "sp-block-builder" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "sp-api", "sp-inherents", "sp-runtime", - "sp-std", ] [[package]] name = "sp-blockchain" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "futures", - "log", "parity-scale-codec", "parking_lot 0.12.3", "schnellru", "sp-api", "sp-consensus", + "sp-core", "sp-database", "sp-runtime", "sp-state-machine", - "thiserror", + "thiserror 1.0.69", + "tracing", ] [[package]] name = "sp-consensus" -version = "0.33.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.40.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "futures", @@ -13157,13 +14059,13 @@ dependencies = [ "sp-inherents", "sp-runtime", "sp-state-machine", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sp-consensus-aura" -version = "0.33.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.40.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "parity-scale-codec", @@ -13173,14 +14075,13 @@ dependencies = [ "sp-consensus-slots", "sp-inherents", "sp-runtime", - "sp-std", "sp-timestamp", ] [[package]] name = "sp-consensus-babe" -version = "0.33.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.40.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "parity-scale-codec", @@ -13192,14 +14093,13 @@ dependencies = [ "sp-core", "sp-inherents", "sp-runtime", - "sp-std", "sp-timestamp", ] [[package]] name = "sp-consensus-beefy" -version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "22.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "lazy_static", "parity-scale-codec", @@ -13210,16 +14110,17 @@ dependencies = [ "sp-core", "sp-crypto-hashing", "sp-io", + "sp-keystore", "sp-mmr-primitives", "sp-runtime", - "sp-std", - "strum 0.24.1", + "sp-weights", + "strum 0.26.3", ] [[package]] name = "sp-consensus-grandpa" -version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "finality-grandpa", "log", @@ -13231,42 +14132,41 @@ dependencies = [ "sp-core", "sp-keystore", "sp-runtime", - "sp-std", ] [[package]] name = "sp-consensus-slots" -version = "0.33.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.40.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-std", "sp-timestamp", ] [[package]] name = "sp-core" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", - "bip39", + "array-bytes", "bitflags 1.3.2", "blake2 0.10.6", "bounded-collections", "bs58 0.5.1", "dyn-clonable", - "ed25519-zebra 3.1.0", + "ed25519-zebra", "futures", "hash-db", "hash256-std-hasher", "impl-serde", - "itertools 0.10.5", + "itertools 0.11.0", + "k256", "libsecp256k1", "log", "merlin", + "parity-bip39", "parity-scale-codec", "parking_lot 0.12.3", "paste", @@ -13285,7 +14185,7 @@ dependencies = [ "sp-storage", "ss58-registry", "substrate-bip39", - "thiserror", + "thiserror 1.0.69", "tracing", "w3f-bls", "zeroize", @@ -13294,7 +14194,7 @@ dependencies = [ [[package]] name = "sp-crypto-hashing" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "blake2b_simd", "byteorder", @@ -13307,17 +14207,17 @@ dependencies = [ [[package]] name = "sp-crypto-hashing-proc-macro" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "quote", "sp-crypto-hashing", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "sp-database" version = "10.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "kvdb", "parking_lot 0.12.3", @@ -13326,59 +14226,60 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "sp-externalities" -version = "0.26.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.29.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "environmental", "parity-scale-codec", - "sp-std", "sp-storage", ] [[package]] name = "sp-genesis-builder" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.15.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ + "parity-scale-codec", + "scale-info", "serde_json", "sp-api", "sp-runtime", - "sp-std", ] [[package]] name = "sp-inherents" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "impl-trait-for-tuples", "parity-scale-codec", "scale-info", "sp-runtime", - "sp-std", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sp-io" -version = "31.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bytes", + "docify", "ed25519-dalek", "libsecp256k1", "log", "parity-scale-codec", + "polkavm-derive", "rustversion", "secp256k1", "sp-core", @@ -13387,7 +14288,6 @@ dependencies = [ "sp-keystore", "sp-runtime-interface", "sp-state-machine", - "sp-std", "sp-tracing", "sp-trie", "tracing", @@ -13396,80 +14296,76 @@ dependencies = [ [[package]] name = "sp-keyring" -version = "32.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "39.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "sp-core", "sp-runtime", - "strum 0.24.1", + "strum 0.26.3", ] [[package]] name = "sp-keystore" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.40.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", "sp-core", "sp-externalities", - "thiserror", ] [[package]] name = "sp-maybe-compressed-blob" version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "thiserror", + "thiserror 1.0.69", "zstd 0.12.4", ] [[package]] name = "sp-metadata-ir" -version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.7.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-metadata", "parity-scale-codec", "scale-info", - "sp-std", ] [[package]] name = "sp-mixnet" -version = "0.5.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.12.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "scale-info", "sp-api", "sp-application-crypto", - "sp-std", ] [[package]] name = "sp-mmr-primitives" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "ckb-merkle-mountain-range", "log", "parity-scale-codec", + "polkadot-ckb-merkle-mountain-range", "scale-info", "serde", "sp-api", "sp-core", "sp-debug-derive", "sp-runtime", - "sp-std", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sp-npos-elections" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "scale-info", @@ -13477,13 +14373,12 @@ dependencies = [ "sp-arithmetic", "sp-core", "sp-runtime", - "sp-std", ] [[package]] name = "sp-offchain" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "sp-api", "sp-core", @@ -13493,7 +14388,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "13.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "backtrace", "lazy_static", @@ -13502,24 +14397,25 @@ dependencies = [ [[package]] name = "sp-rpc" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "32.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "rustc-hash", + "rustc-hash 1.1.0", "serde", "sp-core", ] [[package]] name = "sp-runtime" -version = "32.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "39.0.5" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "docify", "either", "hash256-std-hasher", "impl-trait-for-tuples", "log", + "num-traits", "parity-scale-codec", "paste", "rand", @@ -13532,16 +14428,18 @@ dependencies = [ "sp-io", "sp-std", "sp-weights", + "tracing", ] [[package]] name = "sp-runtime-interface" -version = "25.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", + "polkavm-derive", "primitive-types", "sp-externalities", "sp-runtime-interface-proc-macro", @@ -13554,21 +14452,21 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" -version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "Inflector", - "expander 2.2.1", - "proc-macro-crate 3.1.0", + "expander", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "sp-session" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "36.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "scale-info", @@ -13577,13 +14475,12 @@ dependencies = [ "sp-keystore", "sp-runtime", "sp-staking", - "sp-std", ] [[package]] name = "sp-staking" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "36.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -13591,13 +14488,12 @@ dependencies = [ "serde", "sp-core", "sp-runtime", - "sp-std", ] [[package]] name = "sp-state-machine" -version = "0.36.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.43.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "hash-db", "log", @@ -13608,20 +14504,19 @@ dependencies = [ "sp-core", "sp-externalities", "sp-panic-handler", - "sp-std", "sp-trie", - "thiserror", + "thiserror 1.0.69", "tracing", "trie-db", ] [[package]] name = "sp-statement-store" -version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "aes-gcm", - "curve25519-dalek 4.1.3", + "curve25519-dalek", "ed25519-dalek", "hkdf", "parity-scale-codec", @@ -13635,58 +14530,54 @@ dependencies = [ "sp-externalities", "sp-runtime", "sp-runtime-interface", - "sp-std", - "thiserror", - "x25519-dalek 2.0.1", + "thiserror 1.0.69", + "x25519-dalek", ] [[package]] name = "sp-std" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" [[package]] name = "sp-storage" -version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "impl-serde", "parity-scale-codec", "ref-cast", "serde", "sp-debug-derive", - "sp-std", ] [[package]] name = "sp-timestamp" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "parity-scale-codec", "sp-inherents", "sp-runtime", - "sp-std", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sp-tracing" -version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", - "sp-std", "tracing", "tracing-core", - "tracing-subscriber 0.2.25", + "tracing-subscriber", ] [[package]] name = "sp-transaction-pool" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "sp-api", "sp-runtime", @@ -13694,8 +14585,8 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "34.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "async-trait", "parity-scale-codec", @@ -13703,14 +14594,13 @@ dependencies = [ "sp-core", "sp-inherents", "sp-runtime", - "sp-std", "sp-trie", ] [[package]] name = "sp-trie" -version = "30.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "ahash 0.8.11", "hash-db", @@ -13724,8 +14614,7 @@ dependencies = [ "schnellru", "sp-core", "sp-externalities", - "sp-std", - "thiserror", + "thiserror 1.0.69", "tracing", "trie-db", "trie-root", @@ -13733,8 +14622,8 @@ dependencies = [ [[package]] name = "sp-version" -version = "30.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "impl-serde", "parity-scale-codec", @@ -13745,37 +14634,36 @@ dependencies = [ "sp-runtime", "sp-std", "sp-version-proc-macro", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "sp-version-proc-macro" -version = "13.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "parity-scale-codec", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "sp-wasm-interface" -version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "21.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "anyhow", "impl-trait-for-tuples", "log", "parity-scale-codec", - "sp-std", "wasmtime", ] [[package]] name = "sp-weights" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "31.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "bounded-collections", "parity-scale-codec", @@ -13784,7 +14672,6 @@ dependencies = [ "smallvec", "sp-arithmetic", "sp-debug-derive", - "sp-std", ] [[package]] @@ -13800,14 +14687,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] -name = "spinners" -version = "4.1.1" +name = "spinning_top" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0ef947f358b9c238923f764c72a4a9d42f2d637c46e059dbd319d6e7cfb4f82" -dependencies = [ - "lazy_static", - "maplit", - "strum 0.24.1", +checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300" +dependencies = [ + "lock_api", ] [[package]] @@ -13915,9 +14800,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.47.0" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4743ce898933fbff7bbf414f497c459a782d496269644b3d650a398ae6a487ba" +checksum = "19409f13998e55816d1c728395af0b52ec066206341d939e22e7766df9b494b8" dependencies = [ "Inflector", "num-format", @@ -13959,8 +14844,8 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "staging-parachain-info" -version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -13968,15 +14853,14 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-runtime", - "sp-std", ] [[package]] name = "staging-xcm" -version = "8.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "14.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "bounded-collections", "derivative", "environmental", @@ -13985,19 +14869,21 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", + "sp-runtime", "sp-weights", "xcm-procedural", ] [[package]] name = "staging-xcm-builder" -version = "8.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.4" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "frame-system", "impl-trait-for-tuples", "log", + "pallet-asset-conversion", "pallet-transaction-payment", "parity-scale-codec", "polkadot-parachain-primitives", @@ -14005,7 +14891,6 @@ dependencies = [ "sp-arithmetic", "sp-io", "sp-runtime", - "sp-std", "sp-weights", "staging-xcm", "staging-xcm-executor", @@ -14013,23 +14898,22 @@ dependencies = [ [[package]] name = "staging-xcm-executor" -version = "8.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "environmental", "frame-benchmarking", "frame-support", "impl-trait-for-tuples", - "log", "parity-scale-codec", "scale-info", "sp-arithmetic", "sp-core", "sp-io", "sp-runtime", - "sp-std", "sp-weights", "staging-xcm", + "tracing", ] [[package]] @@ -14076,7 +14960,6 @@ dependencies = [ "sp-timestamp", "substrate-build-script-utils", "substrate-frame-rpc-system", - "try-runtime-cli", ] [[package]] @@ -14102,9 +14985,9 @@ dependencies = [ [[package]] name = "static_init_macro" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a2595fc3aa78f2d0e45dd425b22282dd863273761cc77780914b2cf3003acf" +checksum = "1389c88ddd739ec6d3f8f83343764a0e944cd23cfbf126a9796a714b0b6edd6f" dependencies = [ "cfg_aliases", "memchr", @@ -14114,16 +14997,23 @@ dependencies = [ ] [[package]] -name = "strobe-rs" -version = "0.8.1" +name = "str0m" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabb238a1cccccfa4c4fb703670c0d157e1256c1ba695abf1b93bd2bb14bab2d" +checksum = "6706347e49b13373f7ddfafad47df7583ed52083d6fc8a594eb2c80497ef959d" dependencies = [ - "bitflags 1.3.2", - "byteorder", - "keccak", - "subtle 2.4.1", - "zeroize", + "combine", + "crc", + "fastrand 2.3.0", + "hmac 0.12.1", + "once_cell", + "openssl", + "openssl-sys", + "sctp-proto", + "serde", + "sha-1 0.10.1", + "thiserror 1.0.69", + "tracing", ] [[package]] @@ -14137,15 +15027,15 @@ name = "strum" version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros 0.24.3", -] [[package]] name = "strum" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros 0.26.4", +] [[package]] name = "strum_macros" @@ -14170,26 +15060,25 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "substrate-bip39" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a7590dc041b9bc2825e52ce5af8416c73dbe9d0654402bfd4b4941938b94d8f" +version = "0.6.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "hmac 0.11.0", - "pbkdf2 0.8.0", + "hmac 0.12.1", + "pbkdf2", "schnorrkel 0.11.4", - "sha2 0.9.9", + "sha2 0.10.8", "zeroize", ] [[package]] name = "substrate-build-script-utils" version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" [[package]] name = "substrate-fixed" @@ -14205,9 +15094,10 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "39.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ + "docify", "frame-system-rpc-runtime-api", "futures", "jsonrpsee", @@ -14225,32 +15115,21 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "hyper", + "http-body-util", + "hyper 1.6.0", + "hyper-util", "log", "prometheus", - "thiserror", + "thiserror 1.0.69", "tokio", ] -[[package]] -name = "substrate-rpc-client" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ - "async-trait", - "jsonrpsee", - "log", - "sc-rpc-api", - "serde", - "sp-runtime", -] - [[package]] name = "substrate-state-trie-migration-rpc" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -14276,27 +15155,29 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" -version = "18.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "24.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "array-bytes 6.2.3", + "array-bytes", "build-helper", "cargo_metadata", "console", "filetime", "frame-metadata", + "jobserver", "merkleized-metadata", "parity-scale-codec", "parity-wasm", + "polkavm-linker", "sc-executor", "sp-core", "sp-io", "sp-maybe-compressed-blob", "sp-tracing", "sp-version", - "strum 0.24.1", + "strum 0.26.3", "tempfile", - "toml 0.8.14", + "toml 0.8.21", "walkdir", "wasm-opt", ] @@ -14309,9 +15190,9 @@ checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" [[package]] name = "subtle" -version = "2.4.1" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "subtle-ng" @@ -14332,9 +15213,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -14361,25 +15242,25 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 1.3.2", - "core-foundation", + "bitflags 2.9.0", + "core-foundation 0.9.4", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", @@ -14393,20 +15274,21 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ - "cfg-if", - "fastrand 2.1.0", - "rustix 0.38.34", - "windows-sys 0.52.0", + "fastrand 2.3.0", + "getrandom 0.3.2", + "once_cell", + "rustix 1.0.5", + "windows-sys 0.59.0", ] [[package]] @@ -14420,47 +15302,48 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.3.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" +checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" dependencies = [ - "rustix 0.38.34", - "windows-sys 0.48.0", + "rustix 1.0.5", + "windows-sys 0.59.0", ] [[package]] name = "termtree" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" +checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" [[package]] name = "test-log" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dffced63c2b5c7be278154d76b479f9f9920ed34e7574201407f0b14e2bbb93" +checksum = "e7f46083d221181166e5b6f6b1e5f1d499f3a76888826e6cb1d057554157cd0f" dependencies = [ - "env_logger 0.11.3", + "env_logger 0.11.8", "test-log-macros", - "tracing-subscriber 0.3.18", + "tracing-subscriber", ] [[package]] name = "test-log-macros" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5999e24eaa32083191ba4e425deb75cdf25efefabe5aaccb7446dd0d4122a3f5" +checksum = "888d0c3c6db53c0fdab160d2ed5e12ba745383d3e85813f2ea0f2b1475ab553f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "testnet-parachains-constants" -version = "1.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "10.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ + "cumulus-primitives-core", "frame-support", "polkadot-core-primitives", "rococo-runtime-constants", @@ -14472,11 +15355,20 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl", + "thiserror-impl 2.0.12", ] [[package]] @@ -14496,18 +15388,29 @@ checksum = "e4c60d69f36615a077cc7663b9cb8e42275722d23e58a7fa3d2c7f2915d09d04" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] @@ -14571,9 +15474,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -14586,15 +15489,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -14609,11 +15512,21 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -14626,77 +15539,91 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.42.1" +version = "1.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2209a14885b74764cce87ffa777ffa1b8ce81a3f3166c6f886b83337fe7e077f" +checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" dependencies = [ "backtrace", "bytes", "libc", "mio", "parking_lot 0.12.3", - "pin-project-lite 0.2.14", + "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "socket2 0.5.9", "tokio-macros", "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] -name = "tokio-retry" -version = "0.3.0" +name = "tokio-rustls" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "pin-project", - "rand", + "rustls 0.21.12", "tokio", ] [[package]] name = "tokio-rustls" -version = "0.24.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "rustls 0.21.12", + "rustls 0.23.26", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", - "pin-project-lite 0.2.14", + "pin-project-lite", "tokio", "tokio-util", ] +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls 0.21.12", + "rustls-native-certs 0.6.3", + "tokio", + "tokio-rustls 0.24.1", + "tungstenite", +] + [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", "futures-io", "futures-sink", - "pin-project-lite 0.2.14", + "pin-project-lite", "tokio", ] @@ -14711,59 +15638,44 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "900f6c86a685850b1bc9f6223b20125115ee3f31e01207d81655bbcc0aea9231" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.20.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.21.1" +version = "0.22.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "10558ed0bd2a1562e630926a2d1f0b98c827da99fabd3fe20920a59642504485" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.9.0", + "serde", + "serde_spanned", "toml_datetime", - "winnow 0.5.40", + "toml_write", + "winnow", ] [[package]] -name = "toml_edit" -version = "0.22.14" +name = "toml_write" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" -dependencies = [ - "indexmap 2.2.6", - "serde", - "serde_spanned", - "toml_datetime", - "winnow 0.6.13", -] +checksum = "28391a4201ba7eb1984cfeb6862c0b3ea2cfe23332298967c749dddc0d6cd976" [[package]] name = "tower" @@ -14774,7 +15686,7 @@ dependencies = [ "futures-core", "futures-util", "pin-project", - "pin-project-lite 0.2.14", + "pin-project-lite", "tower-layer", "tower-service", "tracing", @@ -14782,62 +15694,60 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.0", "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-range-header", - "pin-project-lite 0.2.14", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "pin-project-lite", "tower-layer", "tower-service", ] [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", - "pin-project-lite 0.2.14", + "pin-project-lite", "tracing-attributes", "tracing-core", ] [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -14855,8 +15765,8 @@ dependencies = [ [[package]] name = "tracing-gum" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "coarsetime", "polkadot-primitives", @@ -14867,24 +15777,13 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ - "expander 2.2.1", - "proc-macro-crate 3.1.0", + "expander", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.66", -] - -[[package]] -name = "tracing-log" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" -dependencies = [ - "log", - "once_cell", - "tracing-core", + "syn 2.0.101", ] [[package]] @@ -14898,64 +15797,33 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "tracing-serde" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" -dependencies = [ - "serde", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" -dependencies = [ - "ansi_term", - "chrono", - "lazy_static", - "matchers 0.0.1", - "parking_lot 0.11.2", - "regex", - "serde", - "serde_json", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log 0.1.4", - "tracing-serde", -] - [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ - "matchers 0.1.0", + "matchers", "nu-ansi-term", "once_cell", + "parking_lot 0.12.3", "regex", "sharded-slab", + "smallvec", "thread_local", + "time", "tracing", "tracing-core", - "tracing-log 0.2.0", + "tracing-log", ] [[package]] name = "trie-db" -version = "0.28.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff28e0f815c2fea41ebddf148e008b077d2faddb026c9555b29696114d602642" +checksum = "0c992b4f40c234a074d48a757efeabb1a6be88af84c0c23f7ca158950cb0ae7f" dependencies = [ "hash-db", - "hashbrown 0.13.2", "log", "rustc-hex", "smallvec", @@ -14979,7 +15847,7 @@ dependencies = [ "async-trait", "cfg-if", "data-encoding", - "enum-as-inner", + "enum-as-inner 0.5.1", "futures-channel", "futures-io", "futures-util", @@ -14989,7 +15857,32 @@ dependencies = [ "rand", "smallvec", "socket2 0.4.10", - "thiserror", + "thiserror 1.0.69", + "tinyvec", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "trust-dns-proto" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3119112651c157f4488931a01e586aa459736e9d6046d3bd9105ffb69352d374" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner 0.6.1", + "futures-channel", + "futures-io", + "futures-util", + "idna 0.4.0", + "ipnet", + "once_cell", + "rand", + "smallvec", + "thiserror 1.0.69", "tinyvec", "tokio", "tracing", @@ -14998,22 +15891,23 @@ dependencies = [ [[package]] name = "trust-dns-resolver" -version = "0.22.0" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfe" +checksum = "10a3e6c3aff1718b3c73e395d1f35202ba2ffa847c6a62eea0db8fb4cfe30be6" dependencies = [ "cfg-if", "futures-util", "ipconfig", - "lazy_static", "lru-cache", + "once_cell", "parking_lot 0.12.3", + "rand", "resolv-conf", "smallvec", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", - "trust-dns-proto", + "trust-dns-proto 0.23.2", ] [[package]] @@ -15022,48 +15916,32 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "try-runtime-cli" -version = "0.39.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" -dependencies = [ - "async-trait", - "clap", - "frame-remote-externalities", - "frame-try-runtime", - "hex", - "log", - "parity-scale-codec", - "sc-cli", - "sc-executor", - "serde", - "serde_json", - "sp-api", - "sp-consensus-aura", - "sp-consensus-babe", - "sp-core", - "sp-debug-derive", - "sp-externalities", - "sp-inherents", - "sp-io", - "sp-keystore", - "sp-rpc", - "sp-runtime", - "sp-state-machine", - "sp-timestamp", - "sp-transaction-storage-proof", - "sp-version", - "sp-weights", - "substrate-rpc-client", - "zstd 0.12.4", -] - [[package]] name = "tt-call" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 0.2.12", + "httparse", + "log", + "rand", + "rustls 0.21.12", + "sha1", + "thiserror 1.0.69", + "url", + "utf-8", +] + [[package]] name = "twox-hash" version = "1.6.3" @@ -15078,15 +15956,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -15102,15 +15980,15 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-normalization" @@ -15121,17 +15999,23 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -15140,7 +16024,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ "crypto-common", - "subtle 2.4.1", + "subtle 2.6.1", ] [[package]] @@ -15155,6 +16039,16 @@ dependencies = [ "futures-util", ] +[[package]] +name = "unsigned-varint" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" +dependencies = [ + "bytes", + "tokio-util", +] + [[package]] name = "untrusted" version = "0.7.1" @@ -15169,15 +16063,33 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", - "idna 0.5.0", + "idna 1.0.3", "percent-encoding", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -15186,9 +16098,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -15198,9 +16110,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "void" @@ -15210,9 +16122,9 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "w3f-bls" -version = "0.1.4" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5da5fa2c6afa2c9158eaa7cd9aee249765eb32b5fb0c63ad8b9e79336a47ec" +checksum = "e6bfb937b3d12077654a9e43e32a4e9c20177dd9fea0f3aba673e7840bb54f32" dependencies = [ "ark-bls12-377", "ark-bls12-381", @@ -15221,14 +16133,12 @@ dependencies = [ "ark-serialize", "ark-serialize-derive", "arrayref", - "constcat", "digest 0.10.7", "rand", - "rand_chacha 0.3.1", - "rand_core 0.6.4", + "rand_chacha", + "rand_core", "sha2 0.10.8", "sha3", - "thiserror", "zeroize", ] @@ -15259,15 +16169,18 @@ dependencies = [ [[package]] name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] [[package]] name = "wasix" @@ -15280,46 +16193,48 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -15327,22 +16242,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-instrument" @@ -15364,7 +16282,7 @@ dependencies = [ "strum 0.24.1", "strum_macros 0.24.3", "tempfile", - "thiserror", + "thiserror 1.0.69", "wasm-opt-cxx-sys", "wasm-opt-sys", ] @@ -15531,7 +16449,7 @@ dependencies = [ "log", "object 0.30.4", "target-lexicon", - "thiserror", + "thiserror 1.0.69", "wasmparser", "wasmtime-cranelift-shared", "wasmtime-environ", @@ -15566,7 +16484,7 @@ dependencies = [ "object 0.30.4", "serde", "target-lexicon", - "thiserror", + "thiserror 1.0.69", "wasmparser", "wasmtime-types", ] @@ -15649,15 +16567,15 @@ checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" dependencies = [ "cranelift-entity", "serde", - "thiserror", + "thiserror 1.0.69", "wasmparser", ] [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -15674,18 +16592,24 @@ dependencies = [ ] [[package]] -name = "webpki-roots" -version = "0.22.6" +name = "webpki-root-certs" +version = "0.26.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +checksum = "180d2741b6115c3d906577e6533ad89472d48d96df00270fccb78233073d77f7" dependencies = [ - "webpki", + "rustls-pki-types", ] +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + [[package]] name = "westend-runtime" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "18.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "binary-merkle-tree", "bitvec", @@ -15710,6 +16634,7 @@ dependencies = [ "pallet-beefy-mmr", "pallet-collective", "pallet-conviction-voting", + "pallet-delegated-staking", "pallet-democracy", "pallet-election-provider-multi-phase", "pallet-election-provider-support-benchmarking", @@ -15717,7 +16642,6 @@ dependencies = [ "pallet-fast-unstake", "pallet-grandpa", "pallet-identity", - "pallet-im-online", "pallet-indices", "pallet-membership", "pallet-message-queue", @@ -15728,6 +16652,7 @@ dependencies = [ "pallet-nomination-pools-runtime-api", "pallet-offences", "pallet-offences-benchmarking", + "pallet-parameters", "pallet-preimage", "pallet-proxy", "pallet-recovery", @@ -15738,7 +16663,6 @@ dependencies = [ "pallet-session-benchmarking", "pallet-society", "pallet-staking", - "pallet-staking-reward-curve", "pallet-staking-runtime-api", "pallet-state-trie-migration", "pallet-sudo", @@ -15756,10 +16680,10 @@ dependencies = [ "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", - "rustc-hex", "scale-info", "serde", "serde_derive", + "serde_json", "smallvec", "sp-api", "sp-application-crypto", @@ -15768,6 +16692,7 @@ dependencies = [ "sp-block-builder", "sp-consensus-babe", "sp-consensus-beefy", + "sp-consensus-grandpa", "sp-core", "sp-genesis-builder", "sp-inherents", @@ -15778,7 +16703,6 @@ dependencies = [ "sp-runtime", "sp-session", "sp-staking", - "sp-std", "sp-storage", "sp-transaction-pool", "sp-version", @@ -15787,12 +16711,13 @@ dependencies = [ "staging-xcm-executor", "substrate-wasm-builder", "westend-runtime-constants", + "xcm-runtime-apis", ] [[package]] name = "westend-runtime-constants" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "frame-support", "polkadot-primitives", @@ -15814,14 +16739,14 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.34", + "rustix 0.38.44", ] [[package]] name = "wide" -version = "0.7.24" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a040b111774ab63a19ef46bbc149398ab372b4ccdcfd719e9814dbd7dfd76c8" +checksum = "41b5576b9a81633f3e8df296ce0063042a73507636cbe956c61133dd7034ab22" dependencies = [ "bytemuck", "safe_arch", @@ -15829,9 +16754,9 @@ dependencies = [ [[package]] name = "widestring" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" +checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" [[package]] name = "winapi" @@ -15851,11 +16776,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -15866,30 +16791,105 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.51.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" +checksum = "efc5cf48f83140dcaab716eeaea345f9e93d0018fb81162753a3f76c3397b538" dependencies = [ - "windows-core 0.51.1", - "windows-targets 0.48.5", + "windows-core 0.53.0", + "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.51.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "9dcc5b895a6377f1ab9fa55acedab1fd5ac0db66ad1e6c7f47e28a22e446a5dd" dependencies = [ - "windows-targets 0.48.5", + "windows-result 0.1.2", + "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.52.0" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result 0.3.2", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-link" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" dependencies = [ - "windows-targets 0.52.5", + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", ] [[package]] @@ -15916,7 +16916,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -15951,18 +16960,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -15979,9 +16988,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -15997,9 +17006,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -16015,15 +17024,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -16039,9 +17048,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -16057,9 +17066,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -16075,9 +17084,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -16093,24 +17102,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" - -[[package]] -name = "winnow" -version = "0.5.40" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.13" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "6cb8234a863ea0e8cd7284fcdd4f145233eb00fee02bbdd9861aec44e6477bc5" dependencies = [ "memchr", ] @@ -16125,6 +17125,27 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.5.1" @@ -16136,50 +17157,56 @@ dependencies = [ [[package]] name = "x25519-dalek" -version = "1.1.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4f" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ - "curve25519-dalek 3.2.0", - "rand_core 0.5.1", + "curve25519-dalek", + "rand_core", + "serde", "zeroize", ] [[package]] -name = "x25519-dalek" -version = "2.0.1" +name = "x509-parser" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +checksum = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da" dependencies = [ - "curve25519-dalek 4.1.3", - "rand_core 0.6.4", - "serde", - "zeroize", + "asn1-rs 0.5.2", + "data-encoding", + "der-parser 8.2.0", + "lazy_static", + "nom", + "oid-registry 0.6.1", + "rusticata-macros", + "thiserror 1.0.69", + "time", ] [[package]] name = "x509-parser" -version = "0.14.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" dependencies = [ - "asn1-rs", - "base64 0.13.1", + "asn1-rs 0.6.2", "data-encoding", - "der-parser", + "der-parser 9.0.0", "lazy_static", "nom", - "oid-registry", + "oid-registry 0.7.1", "rusticata-macros", - "thiserror", + "thiserror 1.0.69", "time", ] [[package]] name = "xcm-emulator" -version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "0.16.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ + "array-bytes", "cumulus-pallet-parachain-system", "cumulus-pallet-xcmp-queue", "cumulus-primitives-core", @@ -16253,25 +17280,55 @@ dependencies = [ [[package]] name = "xcm-procedural" -version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-crates-io-v1.7.0#e046d3b2caaca6c43a60f26594052c5c806b980e" +version = "10.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", +] + +[[package]] +name = "xcm-runtime-apis" +version = "0.4.2" +source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +dependencies = [ + "frame-support", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-weights", + "staging-xcm", + "staging-xcm-executor", +] + +[[package]] +name = "xml-rs" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" + +[[package]] +name = "xmltree" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7d8a75eaf6557bb84a65ace8609883db44a29951042ada9b393151532e41fcb" +dependencies = [ + "xml-rs", ] [[package]] name = "yamux" -version = "0.10.2" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5" +checksum = "9ed0164ae619f2dc144909a9f082187ebb5893693d8c0196e8085283ccd4b776" dependencies = [ "futures", "log", "nohash-hasher", "parking_lot 0.12.3", + "pin-project", "rand", "static_assertions", ] @@ -16285,24 +17342,89 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "synstructure 0.13.1", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "zerocopy-derive 0.7.35", +] + [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive 0.8.25", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ - "zerocopy-derive", + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", + "synstructure 0.13.1", ] [[package]] @@ -16322,7 +17444,29 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.101", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] @@ -16365,9 +17509,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.11+zstd.1.5.6" +version = "2.0.15+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 193926cb61..90ccda56f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ version = "1.16.0-dev" [workspace.dependencies] # Build deps -substrate-wasm-builder = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } +substrate-wasm-builder = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } # External (without extra features and with default disabled if necessary) base58 = { version = "0.2.0", default-features = false } @@ -39,13 +39,14 @@ futures = { version = "0.3.21", default-features = false } hash-db = { version = "0.16.0", default-features = false } hex = { version = "0.4.0", default-features = false } hex-literal = { version = "0.3.4" } -jsonrpsee = { version = "0.20.3" } +jsonrpsee = { version = "0.24.0" } +jsonrpsee-core = { version = "0.24.0" } libsecp256k1 = { version = "0.7", default-features = false } log = { version = "0.4.17" } -parity-scale-codec = { version = "3.1.5", default-features = false } -scale-info = { version = "2.1.1", default-features = false } -serde = { version = "1.0.144", default-features = false } -serde_json = { version = "1.0.85" } +parity-scale-codec = { version = "3.6.12", default-features = false } +scale-info = { version = "2.11.1", default-features = false } +serde = { version = "1.0.197", default-features = false } +serde_json = { version = "1.0.121" } sha3 = { version = "0.10.0", default-features = false } smallvec = { version = "1.8.0" } substrate-fixed = { version = "0.5.9", default-features = false } @@ -97,153 +98,152 @@ peregrine-runtime = { path = "runtimes/peregrine", default-features = false } spiritnet-runtime = { path = "runtimes/spiritnet", default-features = false } # Benchmarking (with default disabled) -cumulus-pallet-session-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -frame-system-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } +cumulus-pallet-session-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +frame-system-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } # Cumulus (with default disabled) -cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -cumulus-pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -cumulus-primitives-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -cumulus-primitives-core = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -cumulus-primitives-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -cumulus-primitives-utility = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -parachain-info = { package = "staging-parachain-info", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -parachains-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } +cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +cumulus-pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +cumulus-primitives-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +cumulus-primitives-core = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +cumulus-primitives-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +cumulus-primitives-utility = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +parachain-info = { package = "staging-parachain-info", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +parachains-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } # XCM Emulator tests -asset-hub-kusama-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -asset-hub-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -asset-hub-rococo-emulated-chain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -asset-hub-rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -asset-hub-westend-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -bridge-hub-kusama-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -bridge-hub-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -bridge-hub-rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -collectives-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -emulated-integration-tests-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -penpal-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -rococo-emulated-chain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -xcm-emulator = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } +asset-hub-kusama-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +asset-hub-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +asset-hub-rococo-emulated-chain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +asset-hub-rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +asset-hub-westend-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +bridge-hub-kusama-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +bridge-hub-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +bridge-hub-rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +collectives-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +emulated-integration-tests-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +penpal-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +rococo-emulated-chain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +xcm-emulator = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } # Substrate (with default disabled) -frame-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -frame-benchmarking-cli = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -frame-executive = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -frame-metadata-hash-extension = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -frame-support = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -frame-system = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -frame-try-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-assets = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-authorship = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-balances = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-collator-selection = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-collective = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-democracy = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-im-online = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-indices = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-membership = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-message-queue = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-multisig = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-preimage = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-proxy = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-scheduler = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-session = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-sudo = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-tips = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-transaction-payment = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-treasury = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-utility = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -pallet-vesting = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-arithmetic = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-authority-discovery = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-block-builder = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-consensus-babe = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-core = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-genesis-builder = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-inherents = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-io = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-metadata-ir = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-offchain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-session = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-staking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-state-machine = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-std = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-tracing = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-trie = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-version = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -sp-weights = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -try-runtime-cli = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } +frame-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +frame-benchmarking-cli = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +frame-executive = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +frame-metadata-hash-extension = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +frame-support = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +frame-system = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +frame-try-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-assets = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-authorship = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-balances = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-collator-selection = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-collective = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-democracy = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-im-online = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-indices = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-membership = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-message-queue = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-multisig = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-preimage = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-proxy = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-scheduler = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-session = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-sudo = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-tips = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-transaction-payment = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-treasury = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-utility = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-vesting = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-arithmetic = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-authority-discovery = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-block-builder = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-consensus-babe = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-core = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-genesis-builder = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-inherents = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-io = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-metadata-ir = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-offchain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-session = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-staking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-state-machine = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-std = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-tracing = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-trie = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-version = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +sp-weights = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } # Polkadot (with default disabled) -pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -polkadot-parachain = { package = "polkadot-parachain-primitives", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -polkadot-runtime-parachains = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -xcm = { package = "staging-xcm", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -xcm-builder = { package = "staging-xcm-builder", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -xcm-executor = { package = "staging-xcm-executor", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } -xcm-simulator = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "release-crates-io-v1.7.0" } +pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +polkadot-parachain = { package = "polkadot-parachain-primitives", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +polkadot-runtime-parachains = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +xcm = { package = "staging-xcm", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +xcm-builder = { package = "staging-xcm-builder", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +xcm-executor = { package = "staging-xcm-executor", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +xcm-simulator = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } # Client-only (with default enabled) -cumulus-client-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -cumulus-client-collator = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -cumulus-client-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -cumulus-client-consensus-common = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -cumulus-client-consensus-proposer = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -cumulus-client-network = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -cumulus-client-service = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -cumulus-primitives-parachain-inherent = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -cumulus-relay-chain-inprocess-interface = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -cumulus-relay-chain-interface = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -cumulus-relay-chain-minimal-node = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -cumulus-relay-chain-rpc-interface = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -polkadot-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -polkadot-primitives = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -polkadot-service = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-basic-authorship = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-chain-spec = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-client-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-consensus = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-executor = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-keystore = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-network = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-network-sync = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-offchain = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-rpc-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-service = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-sysinfo = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-telemetry = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-tracing = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sc-transaction-pool-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sp-blockchain = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sp-consensus = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sp-consensus-beefy = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sp-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sp-keyring = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sp-keystore = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -sp-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -substrate-build-script-utils = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -substrate-frame-rpc-system = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } -substrate-prometheus-endpoint = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-crates-io-v1.7.0" } +cumulus-client-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-client-collator = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-client-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-client-consensus-common = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-client-consensus-proposer = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-client-network = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-client-service = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-primitives-parachain-inherent = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-relay-chain-inprocess-interface = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-relay-chain-interface = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-relay-chain-minimal-node = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-relay-chain-rpc-interface = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +polkadot-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +polkadot-primitives = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +polkadot-service = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-basic-authorship = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-chain-spec = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-client-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-consensus = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-executor = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-keystore = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-network = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-network-sync = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-offchain = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-rpc-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-service = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-sysinfo = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-telemetry = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-tracing = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sc-transaction-pool-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sp-blockchain = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sp-consensus = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sp-consensus-beefy = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sp-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sp-keyring = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sp-keystore = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +sp-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +substrate-build-script-utils = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +substrate-frame-rpc-system = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +substrate-prometheus-endpoint = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } [profile] diff --git a/crates/kilt-dip-primitives/Cargo.toml b/crates/kilt-dip-primitives/Cargo.toml index b773c8d6da..febbc9c2f7 100644 --- a/crates/kilt-dip-primitives/Cargo.toml +++ b/crates/kilt-dip-primitives/Cargo.toml @@ -11,7 +11,7 @@ repository = { workspace = true } version = { workspace = true } [dev-dependencies] -cumulus-pallet-parachain-system = { workspace = true, features = ["parameterized-consensus-hook", "std"] } +cumulus-pallet-parachain-system = { workspace = true, features = ["std"] } cumulus-primitives-core = { workspace = true } enum-iterator = { workspace = true } hex-literal = { workspace = true } diff --git a/dip-template/nodes/dip-consumer/Cargo.toml b/dip-template/nodes/dip-consumer/Cargo.toml index bf6bb72310..787f200d6d 100644 --- a/dip-template/nodes/dip-consumer/Cargo.toml +++ b/dip-template/nodes/dip-consumer/Cargo.toml @@ -49,7 +49,7 @@ sp-api = { workspace = true, features = ["std"] } sp-block-builder = { workspace = true, features = ["std"] } sp-blockchain = { workspace = true } sp-consensus-aura = { workspace = true, features = ["std"] } -sp-core = { workspace = true, features = ["std"] } +sp-core = { workspace = true } sp-keystore = { workspace = true, features = ["std"] } sp-runtime = { workspace = true, features = ["std"] } sp-timestamp = { workspace = true, features = ["std"] } diff --git a/dip-template/runtimes/dip-consumer/Cargo.toml b/dip-template/runtimes/dip-consumer/Cargo.toml index c474da6ecc..bd68b8f5c7 100644 --- a/dip-template/runtimes/dip-consumer/Cargo.toml +++ b/dip-template/runtimes/dip-consumer/Cargo.toml @@ -58,7 +58,7 @@ sp-weights = { workspace = true } # Cumulus cumulus-pallet-aura-ext = { workspace = true } -cumulus-pallet-parachain-system = { workspace = true, features = ["parameterized-consensus-hook"] } +cumulus-pallet-parachain-system = { workspace = true } cumulus-primitives-aura = { workspace = true } cumulus-primitives-core = { workspace = true } cumulus-primitives-timestamp = { workspace = true } diff --git a/dip-template/runtimes/dip-provider/Cargo.toml b/dip-template/runtimes/dip-provider/Cargo.toml index 8b0181b68b..018dd86617 100644 --- a/dip-template/runtimes/dip-provider/Cargo.toml +++ b/dip-template/runtimes/dip-provider/Cargo.toml @@ -58,7 +58,7 @@ sp-weights = { workspace = true } # Cumulus cumulus-pallet-aura-ext = { workspace = true } -cumulus-pallet-parachain-system = { workspace = true, features = ["parameterized-consensus-hook"] } +cumulus-pallet-parachain-system = { workspace = true } cumulus-primitives-aura = { workspace = true } cumulus-primitives-core = { workspace = true } cumulus-primitives-timestamp = { workspace = true } diff --git a/nodes/parachain/Cargo.toml b/nodes/parachain/Cargo.toml index 1eb47f74b4..7029f0eade 100644 --- a/nodes/parachain/Cargo.toml +++ b/nodes/parachain/Cargo.toml @@ -92,9 +92,6 @@ xcm = { workspace = true, features = ["std"] } frame-benchmarking = { workspace = true, features = ["std"] } frame-benchmarking-cli = { workspace = true } -# Runtime tests -try-runtime-cli = { workspace = true, optional = true } - [features] default = [] fast-gov = ["peregrine-runtime/fast-gov", "runtime-common/fast-gov"] @@ -118,5 +115,4 @@ try-runtime = [ "polkadot-service/try-runtime", "runtime-common/try-runtime", "spiritnet-runtime/try-runtime", - "try-runtime-cli", ] diff --git a/nodes/standalone/Cargo.toml b/nodes/standalone/Cargo.toml index 76191500ce..11f5a20da6 100644 --- a/nodes/standalone/Cargo.toml +++ b/nodes/standalone/Cargo.toml @@ -68,9 +68,6 @@ substrate-frame-rpc-system = { workspace = true } frame-benchmarking = { workspace = true, features = ["std"] } frame-benchmarking-cli = { workspace = true } -# Runtime tests -try-runtime-cli = { workspace = true, optional = true } - [features] default = [] runtime-benchmarks = [ @@ -87,6 +84,4 @@ try-runtime = [ "kestrel-runtime/try-runtime", "pallet-transaction-payment/try-runtime", "runtime-common/try-runtime", - "try-runtime-cli", - "try-runtime-cli/try-runtime", ] diff --git a/pallets/did/src/did_details.rs b/pallets/did/src/did_details.rs index 75c2e9b6f1..82db7a3ab6 100644 --- a/pallets/did/src/did_details.rs +++ b/pallets/did/src/did_details.rs @@ -245,7 +245,7 @@ impl, AccountId> DidVerifiableIdentifier for I { ); // Safe to reconstruct the public key using the recovered value from // secp256k1_ecdsa_recover_compressed - Ok(DidVerificationKey::from(ecdsa::Public(recovered_pk))) + Ok(DidVerificationKey::from(ecdsa::Public::from_raw(recovered_pk))) } } } diff --git a/pallets/did/src/tests/create_from_account.rs b/pallets/did/src/tests/create_from_account.rs index 1873f77f83..2ebf85fa3d 100644 --- a/pallets/did/src/tests/create_from_account.rs +++ b/pallets/did/src/tests/create_from_account.rs @@ -72,20 +72,20 @@ fn blueprint_test_successful(account_id: AccountIdOf, verification_key: Di #[test] fn successful_ed25519() { - let verification_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_test_successful(ACCOUNT_00, verification_key); } #[test] fn successful_sr25519() { - let verification_key = DidVerificationKey::Sr25519(sr25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Sr25519(sr25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_test_successful(ACCOUNT_00, verification_key); } #[test] fn successful_ecdsa() { // these values where generated with `subkey generate -n kilt --scheme ecdsa` - let verification_key = DidVerificationKey::Ecdsa(ecdsa::Public(hex_literal::hex!( + let verification_key = DidVerificationKey::Ecdsa(ecdsa::Public::from_raw(hex_literal::hex!( "02484c08122e16f2cbce7697b5a9393280ca67dd8b91a907c1bc4b93451ebf4093" ))); let account_id: AccountIdOf = @@ -101,7 +101,7 @@ fn successful_account() { #[test] fn should_not_overwrite() { - let verification_key = DidVerificationKey::Sr25519(sr25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Sr25519(sr25519::Public::from_raw(*ACCOUNT_00.as_ref())); let account_id = ACCOUNT_00; let balance = ::BaseDeposit::get() @@ -128,7 +128,7 @@ fn should_not_overwrite() { #[test] fn should_not_recreate_deleted_did() { - let verification_key = DidVerificationKey::Sr25519(sr25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Sr25519(sr25519::Public::from_raw(*ACCOUNT_00.as_ref())); let account_id = ACCOUNT_00; let balance = ::BaseDeposit::get() @@ -157,7 +157,7 @@ fn should_not_recreate_deleted_did() { #[test] fn should_not_create_without_funds() { - let verification_key = DidVerificationKey::Sr25519(sr25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Sr25519(sr25519::Public::from_raw(*ACCOUNT_00.as_ref())); let account_id = ACCOUNT_00; ExtBuilder::default().build_and_execute_with_sanity_tests(None, || { diff --git a/pallets/did/src/tests/dispatch_as/attestation.rs b/pallets/did/src/tests/dispatch_as/attestation.rs index a74e3a3406..1bf4e51053 100644 --- a/pallets/did/src/tests/dispatch_as/attestation.rs +++ b/pallets/did/src/tests/dispatch_as/attestation.rs @@ -64,8 +64,8 @@ fn successful_key_dispatch_ed25519() { let deposit_owner = ACCOUNT_01; let caller = ACCOUNT_00; let did_identifier = ACCOUNT_02; - let verification_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_02.as_ref())); - let attestation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_02.as_ref())); + let attestation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_successful_dispatch_with_key(did_identifier, caller, verification_key, attestation_key, deposit_owner); } @@ -74,15 +74,15 @@ fn successful_key_dispatch_sr25519() { let deposit_owner = ACCOUNT_01; let caller = ACCOUNT_00; let did_identifier = ACCOUNT_02; - let attestation_key = DidVerificationKey::Sr25519(sr25519::Public(*ACCOUNT_00.as_ref())); - let verification_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let attestation_key = DidVerificationKey::Sr25519(sr25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_successful_dispatch_with_key(did_identifier, caller, verification_key, attestation_key, deposit_owner); } #[test] fn successful_key_dispatch_ecdsa() { // these values where generated with `subkey generate -n kilt --scheme ecdsa` - let attestation_key = DidVerificationKey::Ecdsa(ecdsa::Public(hex_literal::hex!( + let attestation_key = DidVerificationKey::Ecdsa(ecdsa::Public::from_raw(hex_literal::hex!( "02484c08122e16f2cbce7697b5a9393280ca67dd8b91a907c1bc4b93451ebf4093" ))); let caller: AccountIdOf = @@ -90,7 +90,7 @@ fn successful_key_dispatch_ecdsa() { let deposit_owner = ACCOUNT_01; let did_identifier = ACCOUNT_02; - let verification_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_successful_dispatch_with_key(did_identifier, caller, verification_key, attestation_key, deposit_owner); } @@ -100,7 +100,7 @@ fn successful_key_dispatch_account() { let caller = ACCOUNT_00; let did_identifier = ACCOUNT_02; let attestation_key = DidVerificationKey::Account(ACCOUNT_00); - let verification_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_successful_dispatch_with_key(did_identifier, caller, verification_key, attestation_key, deposit_owner); } @@ -129,34 +129,34 @@ fn blueprint_failed_dispatch_with_key( #[test] fn failed_no_match_ed25519() { - let attestation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_01.as_ref())); - let delegation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let authentication_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let attestation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_01.as_ref())); + let delegation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let authentication_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } #[test] fn failed_no_match_sr25519() { - let attestation_key = DidVerificationKey::Sr25519(sr25519::Public(*ACCOUNT_01.as_ref())); - let delegation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let authentication_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let attestation_key = DidVerificationKey::Sr25519(sr25519::Public::from_raw(*ACCOUNT_01.as_ref())); + let delegation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let authentication_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } #[test] fn failed_no_match_ecdsa() { - let attestation_key = DidVerificationKey::Ecdsa(ecdsa::Public(hex_literal::hex!( + let attestation_key = DidVerificationKey::Ecdsa(ecdsa::Public::from_raw(hex_literal::hex!( "02484c08122e16f2cbce7697b5a9393280ca67dd8b91a907c1bc4b93451ebf4093" ))); - let delegation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let authentication_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let delegation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let authentication_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } #[test] fn failed_no_match_account() { let attestation_key = DidVerificationKey::Account(ACCOUNT_01); - let delegation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let authentication_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let delegation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let authentication_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } diff --git a/pallets/did/src/tests/dispatch_as/authentication.rs b/pallets/did/src/tests/dispatch_as/authentication.rs index cf94428143..ff3fd95c45 100644 --- a/pallets/did/src/tests/dispatch_as/authentication.rs +++ b/pallets/did/src/tests/dispatch_as/authentication.rs @@ -61,7 +61,7 @@ fn successful_key_dispatch_ed25519() { let deposit_owner = ACCOUNT_01; let caller = ACCOUNT_00; let did_identifier = ACCOUNT_02; - let verification_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_successful_dispatch_with_key(did_identifier, caller, verification_key, deposit_owner); } @@ -70,14 +70,14 @@ fn successful_key_dispatch_sr25519() { let deposit_owner = ACCOUNT_01; let caller = ACCOUNT_00; let did_identifier = ACCOUNT_02; - let verification_key = DidVerificationKey::Sr25519(sr25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Sr25519(sr25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_successful_dispatch_with_key(did_identifier, caller, verification_key, deposit_owner) } #[test] fn successful_key_dispatch_ecdsa() { // these values where generated with `subkey generate -n kilt --scheme ecdsa` - let verification_key = DidVerificationKey::Ecdsa(ecdsa::Public(hex_literal::hex!( + let verification_key = DidVerificationKey::Ecdsa(ecdsa::Public::from_raw(hex_literal::hex!( "02484c08122e16f2cbce7697b5a9393280ca67dd8b91a907c1bc4b93451ebf4093" ))); let caller: AccountIdOf = @@ -122,34 +122,34 @@ fn blueprint_failed_dispatch_with_key( #[test] fn failed_no_match_ed25519() { - let authentication_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_01.as_ref())); - let attestation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let delegation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let authentication_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_01.as_ref())); + let attestation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let delegation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } #[test] fn failed_no_match_sr25519() { - let authentication_key = DidVerificationKey::Sr25519(sr25519::Public(*ACCOUNT_01.as_ref())); - let attestation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let delegation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let authentication_key = DidVerificationKey::Sr25519(sr25519::Public::from_raw(*ACCOUNT_01.as_ref())); + let attestation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let delegation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } #[test] fn failed_no_match_ecdsa() { - let authentication_key = DidVerificationKey::Ecdsa(ecdsa::Public(hex_literal::hex!( + let authentication_key = DidVerificationKey::Ecdsa(ecdsa::Public::from_raw(hex_literal::hex!( "02484c08122e16f2cbce7697b5a9393280ca67dd8b91a907c1bc4b93451ebf4093" ))); - let attestation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let delegation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let attestation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let delegation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } #[test] fn failed_no_match_account() { let authentication_key = DidVerificationKey::Account(ACCOUNT_01); - let attestation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let delegation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let attestation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let delegation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } diff --git a/pallets/did/src/tests/dispatch_as/delegation.rs b/pallets/did/src/tests/dispatch_as/delegation.rs index fc9a2a6897..2be5b307f6 100644 --- a/pallets/did/src/tests/dispatch_as/delegation.rs +++ b/pallets/did/src/tests/dispatch_as/delegation.rs @@ -64,8 +64,8 @@ fn successful_dispatch_ed25519() { let deposit_owner = ACCOUNT_01; let caller = ACCOUNT_00; let did_identifier = ACCOUNT_02; - let verification_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_02.as_ref())); - let delegation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_02.as_ref())); + let delegation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_successful_dispatch_with_key(did_identifier, caller, verification_key, delegation_key, deposit_owner); } @@ -74,15 +74,15 @@ fn successful_dispatch_sr25519() { let deposit_owner = ACCOUNT_01; let caller = ACCOUNT_00; let did_identifier = ACCOUNT_02; - let delegation_key = DidVerificationKey::Sr25519(sr25519::Public(*ACCOUNT_00.as_ref())); - let verification_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let delegation_key = DidVerificationKey::Sr25519(sr25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_successful_dispatch_with_key(did_identifier, caller, verification_key, delegation_key, deposit_owner); } #[test] fn successful_dispatch_ecdsa() { // these values where generated with `subkey generate -n kilt --scheme ecdsa` - let delegation_key = DidVerificationKey::Ecdsa(ecdsa::Public(hex_literal::hex!( + let delegation_key = DidVerificationKey::Ecdsa(ecdsa::Public::from_raw(hex_literal::hex!( "02484c08122e16f2cbce7697b5a9393280ca67dd8b91a907c1bc4b93451ebf4093" ))); let caller: AccountIdOf = @@ -90,7 +90,7 @@ fn successful_dispatch_ecdsa() { let deposit_owner = ACCOUNT_01; let did_identifier = ACCOUNT_02; - let verification_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_successful_dispatch_with_key(did_identifier, caller, verification_key, delegation_key, deposit_owner); } @@ -100,7 +100,7 @@ fn successful_dispatch_account() { let caller = ACCOUNT_00; let did_identifier = ACCOUNT_02; let delegation_key = DidVerificationKey::Account(ACCOUNT_00); - let verification_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let verification_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_successful_dispatch_with_key(did_identifier, caller, verification_key, delegation_key, deposit_owner); } @@ -129,34 +129,34 @@ fn blueprint_failed_dispatch_with_key( #[test] fn failed_no_match_ed25519() { - let delegation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_01.as_ref())); - let attestation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let authentication_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let delegation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_01.as_ref())); + let attestation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let authentication_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } #[test] fn failed_no_match_sr25519() { - let delegation_key = DidVerificationKey::Sr25519(sr25519::Public(*ACCOUNT_01.as_ref())); - let attestation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let authentication_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let delegation_key = DidVerificationKey::Sr25519(sr25519::Public::from_raw(*ACCOUNT_01.as_ref())); + let attestation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let authentication_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } #[test] fn failed_no_match_ecdsa() { - let delegation_key = DidVerificationKey::Ecdsa(ecdsa::Public(hex_literal::hex!( + let delegation_key = DidVerificationKey::Ecdsa(ecdsa::Public::from_raw(hex_literal::hex!( "02484c08122e16f2cbce7697b5a9393280ca67dd8b91a907c1bc4b93451ebf4093" ))); - let attestation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let authentication_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let attestation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let authentication_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } #[test] fn failed_no_match_account() { let delegation_key = DidVerificationKey::Account(ACCOUNT_01); - let attestation_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); - let authentication_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let attestation_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); + let authentication_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); blueprint_failed_dispatch_with_key(ACCOUNT_00, authentication_key, attestation_key, delegation_key); } diff --git a/pallets/did/src/tests/dispatch_as/error_cases.rs b/pallets/did/src/tests/dispatch_as/error_cases.rs index e0b34b1eb9..8721059795 100644 --- a/pallets/did/src/tests/dispatch_as/error_cases.rs +++ b/pallets/did/src/tests/dispatch_as/error_cases.rs @@ -40,7 +40,7 @@ fn no_did() { #[test] fn deleted_did() { let did_identifier = ACCOUNT_02; - let authentication_key = DidVerificationKey::Ed25519(ed25519::Public(*ACCOUNT_00.as_ref())); + let authentication_key = DidVerificationKey::Ed25519(ed25519::Public::from_raw(*ACCOUNT_00.as_ref())); let did_details = generate_base_did_details(authentication_key, Some(ACCOUNT_01.clone())); blueprint_failed_dispatch( diff --git a/pallets/did/src/traits/lifecycle_hooks/mock.rs b/pallets/did/src/traits/lifecycle_hooks/mock.rs index 622db5f732..247278624e 100644 --- a/pallets/did/src/traits/lifecycle_hooks/mock.rs +++ b/pallets/did/src/traits/lifecycle_hooks/mock.rs @@ -65,6 +65,11 @@ impl frame_system::Config for TestRuntime { type SS58Prefix = (); type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); + type SingleBlockMigrations = (); } parameter_types! { diff --git a/pallets/pallet-bonded-coins/src/lib.rs b/pallets/pallet-bonded-coins/src/lib.rs index 5d7049b0d7..031ea48b6f 100644 --- a/pallets/pallet-bonded-coins/src/lib.rs +++ b/pallets/pallet-bonded-coins/src/lib.rs @@ -879,6 +879,8 @@ pub mod pallet { target_currency_id.clone(), &who, amount_to_burn, + // We don't care, if account gets dusted. + Preservation::Expendable, WithdrawalPrecision::Exact, Fortitude::Force, )?; @@ -1061,6 +1063,7 @@ pub mod pallet { asset_id.clone(), &who, Bounded::max_value(), + Preservation::Expendable, WithdrawalPrecision::BestEffort, Fortitude::Force, )? diff --git a/pallets/pallet-configuration/Cargo.toml b/pallets/pallet-configuration/Cargo.toml index a370fe83c6..0b1b0d098b 100644 --- a/pallets/pallet-configuration/Cargo.toml +++ b/pallets/pallet-configuration/Cargo.toml @@ -34,6 +34,7 @@ frame-benchmarking = { workspace = true, optional = true } [features] default = ["std"] +mock = ["std"] runtime-benchmarks = [ "cumulus-pallet-parachain-system/runtime-benchmarks", "frame-benchmarking", diff --git a/pallets/pallet-dip-consumer/src/lib.rs b/pallets/pallet-dip-consumer/src/lib.rs index 19c4bbdf2e..dba6956357 100644 --- a/pallets/pallet-dip-consumer/src/lib.rs +++ b/pallets/pallet-dip-consumer/src/lib.rs @@ -202,7 +202,7 @@ pub mod pallet { // benchmarks while making sure the call is actually dispatched and passes any // filters the consumer proof verifier has set. cfg_if::cfg_if! { - if #[cfg(not(feature = "runtime-benchmark"))] { + if #[cfg(not(feature = "runtime-benchmarks"))] { call.dispatch(did_origin.into()) } else { ().into() diff --git a/pallets/pallet-relay-store/Cargo.toml b/pallets/pallet-relay-store/Cargo.toml index 04cc6522af..7f573ff9c9 100644 --- a/pallets/pallet-relay-store/Cargo.toml +++ b/pallets/pallet-relay-store/Cargo.toml @@ -20,7 +20,7 @@ sp-runtime = { workspace = true, features = ["std"] } sp-trie = { workspace = true, features = ["std"] } [dependencies] -cumulus-pallet-parachain-system = { workspace = true, features = ["parameterized-consensus-hook"] } +cumulus-pallet-parachain-system = { workspace = true } cumulus-primitives-core = { workspace = true } frame-support = { workspace = true } frame-system = { workspace = true } diff --git a/pallets/parachain-staking/src/lib.rs b/pallets/parachain-staking/src/lib.rs index 47a58f1425..a5431e5955 100644 --- a/pallets/parachain-staking/src/lib.rs +++ b/pallets/parachain-staking/src/lib.rs @@ -162,14 +162,14 @@ pub mod pallet { fungible::Balanced, tokens::{ fungible::{Inspect, MutateFreeze, Unbalanced}, - Fortitude, Precision, Preservation, + Fortitude, IdAmount, Precision, Preservation, }, BuildGenesisConfig, EstimateNextSessionRotation, Get, OnUnbalanced, StorageVersion, }, BoundedVec, }; use frame_system::pallet_prelude::*; - use pallet_balances::{Freezes, IdAmount}; + use pallet_balances::Freezes; use pallet_session::ShouldEndSession; use scale_info::TypeInfo; use sp_runtime::{ diff --git a/runtimes/peregrine/Cargo.toml b/runtimes/peregrine/Cargo.toml index 63836a6bf1..5f9e07cffe 100644 --- a/runtimes/peregrine/Cargo.toml +++ b/runtimes/peregrine/Cargo.toml @@ -98,7 +98,7 @@ sp-genesis-builder = { workspace = true } # Cumulus dependencies cumulus-pallet-aura-ext = { workspace = true } -cumulus-pallet-parachain-system = { workspace = true, features = ["parameterized-consensus-hook"] } +cumulus-pallet-parachain-system = { workspace = true } cumulus-pallet-xcm = { workspace = true } cumulus-pallet-xcmp-queue = { workspace = true } cumulus-primitives-aura = { workspace = true } diff --git a/runtimes/spiritnet/Cargo.toml b/runtimes/spiritnet/Cargo.toml index c5558eec57..fd6abd6cdd 100644 --- a/runtimes/spiritnet/Cargo.toml +++ b/runtimes/spiritnet/Cargo.toml @@ -94,7 +94,7 @@ pallet-vesting = { workspace = true } # Cumulus dependencies cumulus-pallet-aura-ext = { workspace = true } -cumulus-pallet-parachain-system = { workspace = true, features = ["parameterized-consensus-hook"] } +cumulus-pallet-parachain-system = { workspace = true } cumulus-pallet-xcm = { workspace = true } cumulus-pallet-xcmp-queue = { workspace = true } cumulus-primitives-aura = { workspace = true } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index bd89201550..882e9d86c9 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.74.0" +channel = "1.81.0" components = ["clippy", "rust-src", "rustfmt"] targets = ["wasm32-unknown-unknown"] From 6b8e1aaf841e2a5d3d4222beaad10f2e48bea3b0 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 28 Apr 2025 15:27:06 +0200 Subject: [PATCH 02/36] pallets compile --- pallets/attestation/src/mock.rs | 10 +++++++++- pallets/ctype/src/mock.rs | 5 +++++ pallets/delegation/src/mock.rs | 6 ++++++ pallets/did/src/mock.rs | 5 +++++ pallets/pallet-asset-switch/src/mock.rs | 6 ++++++ .../pallet-asset-switch/src/xcm/match/mock.rs | 5 +++++ .../pallet-asset-switch/src/xcm/match/tests.rs | 1 + .../pallet-asset-switch/src/xcm/query/mock.rs | 5 +++++ .../xcm/trade/switch_pair_remote_asset/mock.rs | 5 +++++ .../src/xcm/trade/xcm_fee_asset/mock.rs | 5 +++++ .../xcm/trade/xcm_fee_asset/tests/buy_weight.rs | 7 +++++++ .../trade/xcm_fee_asset/tests/refund_weight.rs | 1 + .../src/xcm/transact/mock.rs | 5 +++++ .../src/xcm/transfer/mock.rs | 5 +++++ .../transfer/switch_pair_remote_asset/tests.rs | 1 + .../src/xcm/transfer/xcm_fee_asset/tests.rs | 2 ++ pallets/pallet-bonded-coins/src/mock.rs | 6 ++++++ pallets/pallet-configuration/src/mock.rs | 5 +++++ .../pallet-deposit-storage/src/deposit/mock.rs | 5 +++++ .../src/fungible/tests/mock.rs | 5 +++++ pallets/pallet-deposit-storage/src/mock.rs | 5 +++++ pallets/pallet-did-lookup/src/mock.rs | 5 +++++ pallets/pallet-dip-consumer/src/lib.rs | 8 +++++++- pallets/pallet-dip-consumer/src/mock.rs | 5 +++++ pallets/pallet-dip-consumer/src/traits.rs | 2 +- pallets/pallet-dip-provider/src/mock.rs | 5 +++++ pallets/pallet-inflation/src/mock.rs | 5 +++++ pallets/pallet-relay-store/src/lib.rs | 2 +- pallets/pallet-relay-store/src/mock.rs | 5 +++++ pallets/pallet-web3-names/src/mock.rs | 5 +++++ pallets/parachain-staking/src/mock.rs | 17 +++++++++++++---- pallets/parachain-staking/src/tests/stake.rs | 4 ++-- pallets/public-credentials/src/mock.rs | 5 +++++ runtimes/common/src/bonded_coins/mod.rs | 8 +++++++- 34 files changed, 165 insertions(+), 11 deletions(-) diff --git a/pallets/attestation/src/mock.rs b/pallets/attestation/src/mock.rs index c03186c99b..742be646b5 100644 --- a/pallets/attestation/src/mock.rs +++ b/pallets/attestation/src/mock.rs @@ -169,7 +169,9 @@ pub fn insert_attestation(claim_hash: ClaimHashOf, details: Attest } pub fn sr25519_did_from_public_key(public_key: &[u8; 32]) -> SubjectId { - MultiSigner::from(sr25519::Public(*public_key)).into_account().into() + MultiSigner::from(sr25519::Public::from_raw(*public_key)) + .into_account() + .into() } pub fn claim_hash_from_seed(seed: u64) -> Hash { @@ -262,6 +264,12 @@ pub(crate) mod runtime { type SS58Prefix = SS58Prefix; type OnSetCode = (); type MaxConsumers = frame_support::traits::ConstU32<16>; + + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/ctype/src/mock.rs b/pallets/ctype/src/mock.rs index 30a30fc866..96e65547f7 100644 --- a/pallets/ctype/src/mock.rs +++ b/pallets/ctype/src/mock.rs @@ -101,6 +101,11 @@ pub mod runtime { type SS58Prefix = SS58Prefix; type OnSetCode = (); type MaxConsumers = frame_support::traits::ConstU32<16>; + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/delegation/src/mock.rs b/pallets/delegation/src/mock.rs index 9543e525bb..ea6bf96347 100644 --- a/pallets/delegation/src/mock.rs +++ b/pallets/delegation/src/mock.rs @@ -248,6 +248,12 @@ pub(crate) mod runtime { type SS58Prefix = SS58Prefix; type OnSetCode = (); type MaxConsumers = frame_support::traits::ConstU32<16>; + + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/did/src/mock.rs b/pallets/did/src/mock.rs index f0efebe973..d6c8e32b5c 100644 --- a/pallets/did/src/mock.rs +++ b/pallets/did/src/mock.rs @@ -106,6 +106,11 @@ impl frame_system::Config for Test { type SS58Prefix = SS58Prefix; type OnSetCode = (); type MaxConsumers = frame_support::traits::ConstU32<16>; + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/pallet-asset-switch/src/mock.rs b/pallets/pallet-asset-switch/src/mock.rs index ed214a9c7e..d1bd17e84b 100644 --- a/pallets/pallet-asset-switch/src/mock.rs +++ b/pallets/pallet-asset-switch/src/mock.rs @@ -79,6 +79,12 @@ impl frame_system::Config for MockRuntime { type SS58Prefix = ConstU16<1>; type SystemWeightInfo = (); type Version = (); + + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, MaxEncodedLen, Encode, Decode, Debug, TypeInfo, Default)] diff --git a/pallets/pallet-asset-switch/src/xcm/match/mock.rs b/pallets/pallet-asset-switch/src/xcm/match/mock.rs index e128688237..78778dfa11 100644 --- a/pallets/pallet-asset-switch/src/xcm/match/mock.rs +++ b/pallets/pallet-asset-switch/src/xcm/match/mock.rs @@ -67,6 +67,11 @@ impl frame_system::Config for MockRuntime { type SS58Prefix = ConstU16<0>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl pallet_balances::Config for MockRuntime { diff --git a/pallets/pallet-asset-switch/src/xcm/match/tests.rs b/pallets/pallet-asset-switch/src/xcm/match/tests.rs index f229d80ea6..f59859352c 100644 --- a/pallets/pallet-asset-switch/src/xcm/match/tests.rs +++ b/pallets/pallet-asset-switch/src/xcm/match/tests.rs @@ -115,6 +115,7 @@ fn successful_with_stored_v3() { #[test] fn successful_with_stored_v2() { + #[allow(deprecated)] let location = xcm::v2::MultiLocation { parents: 1, interior: xcm::v2::Junctions::X1(xcm::v2::Junction::Parachain(1_000)), diff --git a/pallets/pallet-asset-switch/src/xcm/query/mock.rs b/pallets/pallet-asset-switch/src/xcm/query/mock.rs index 7bfcc8dcdf..fbd82ab252 100644 --- a/pallets/pallet-asset-switch/src/xcm/query/mock.rs +++ b/pallets/pallet-asset-switch/src/xcm/query/mock.rs @@ -67,6 +67,11 @@ impl frame_system::Config for MockRuntime { type SS58Prefix = ConstU16<0>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl pallet_balances::Config for MockRuntime { diff --git a/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mock.rs b/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mock.rs index 0f8a0f2e34..8b424b8a0c 100644 --- a/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mock.rs +++ b/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mock.rs @@ -67,6 +67,11 @@ impl frame_system::Config for MockRuntime { type SS58Prefix = ConstU16<0>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl pallet_balances::Config for MockRuntime { diff --git a/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mock.rs b/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mock.rs index 475a638a78..f1640f7959 100644 --- a/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mock.rs +++ b/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mock.rs @@ -60,6 +60,11 @@ impl frame_system::Config for MockRuntime { type SS58Prefix = ConstU16<0>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/tests/buy_weight.rs b/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/tests/buy_weight.rs index 179906fa2e..a7acfbd812 100644 --- a/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/tests/buy_weight.rs +++ b/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/tests/buy_weight.rs @@ -367,6 +367,7 @@ fn successful_on_stored_fungible_xcm_fee_asset_v3_with_input_fungible_and_non_fu #[test] fn successful_on_stored_fungible_xcm_fee_asset_v2_with_input_fungible() { + #[allow(deprecated)] let location = xcm::v2::MultiLocation { parents: 1, interior: xcm::v2::Junctions::X1(xcm::v2::Junction::Parachain(1_000)), @@ -404,6 +405,7 @@ fn successful_on_stored_fungible_xcm_fee_asset_v2_with_input_fungible() { #[test] fn fails_on_stored_fungible_xcm_fee_asset_v2_with_input_non_fungible() { + #[allow(deprecated)] let location = xcm::v2::MultiLocation { parents: 1, interior: xcm::v2::Junctions::X1(xcm::v2::Junction::Parachain(1_000)), @@ -442,6 +444,7 @@ fn fails_on_stored_fungible_xcm_fee_asset_v2_with_input_non_fungible() { #[test] fn successful_on_stored_fungible_xcm_fee_asset_v2_with_input_fungible_and_non_fungible() { + #[allow(deprecated)] let location = xcm::v2::MultiLocation { parents: 1, interior: xcm::v2::Junctions::X1(xcm::v2::Junction::Parachain(1_000)), @@ -737,6 +740,7 @@ fn skips_on_stored_non_fungible_xcm_fee_asset_v3_with_fungible_input() { #[test] fn skips_on_stored_non_fungible_xcm_fee_asset_v2_with_fungible_input() { + #[allow(deprecated)] let location = xcm::v2::MultiLocation { parents: 1, interior: xcm::v2::Junctions::X1(xcm::v2::Junction::Parachain(1_000)), @@ -748,6 +752,7 @@ fn skips_on_stored_non_fungible_xcm_fee_asset_v2_with_fungible_input() { SwitchPairStatus::Running, ); // Set XCM fee asset to the XCM version 2. + #[allow(deprecated)] let non_fungible_remote_xcm_fee_v2: xcm::v2::MultiAsset = xcm::v2::MultiAsset::try_from(new_switch_pair_info.remote_xcm_fee) .map(|asset| xcm::v2::MultiAsset { @@ -781,6 +786,7 @@ fn skips_on_stored_non_fungible_xcm_fee_asset_v2_with_fungible_input() { #[test] fn skips_on_stored_non_fungible_xcm_fee_asset_v2_with_non_fungible_input() { + #[allow(deprecated)] let location = xcm::v2::MultiLocation { parents: 1, interior: xcm::v2::Junctions::X1(xcm::v2::Junction::Parachain(1_000)), @@ -792,6 +798,7 @@ fn skips_on_stored_non_fungible_xcm_fee_asset_v2_with_non_fungible_input() { SwitchPairStatus::Running, ); // Set XCM fee asset to the XCM version 2. + #[allow(deprecated)] let non_fungible_remote_xcm_fee_v2: xcm::v2::MultiAsset = xcm::v2::MultiAsset::try_from(new_switch_pair_info.remote_xcm_fee) .map(|asset| xcm::v2::MultiAsset { diff --git a/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/tests/refund_weight.rs b/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/tests/refund_weight.rs index acf3cdc181..9c06259c6a 100644 --- a/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/tests/refund_weight.rs +++ b/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/tests/refund_weight.rs @@ -495,6 +495,7 @@ fn successful_on_stored_fungible_xcm_fee_asset_v3_with_zero_remaining_balance_an #[test] fn successful_on_stored_fungible_xcm_fee_asset_v2() { + #[allow(deprecated)] let location = xcm::v2::MultiLocation { parents: 1, interior: xcm::v2::Junctions::X1(xcm::v2::Junction::Parachain(1_000)), diff --git a/pallets/pallet-asset-switch/src/xcm/transact/mock.rs b/pallets/pallet-asset-switch/src/xcm/transact/mock.rs index 445ef94071..85ed282ca9 100644 --- a/pallets/pallet-asset-switch/src/xcm/transact/mock.rs +++ b/pallets/pallet-asset-switch/src/xcm/transact/mock.rs @@ -74,6 +74,11 @@ impl frame_system::Config for MockRuntime { type SS58Prefix = ConstU16<0>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, MaxEncodedLen, Encode, Decode, Debug, TypeInfo, Default)] diff --git a/pallets/pallet-asset-switch/src/xcm/transfer/mock.rs b/pallets/pallet-asset-switch/src/xcm/transfer/mock.rs index d02eb65605..008235b584 100644 --- a/pallets/pallet-asset-switch/src/xcm/transfer/mock.rs +++ b/pallets/pallet-asset-switch/src/xcm/transfer/mock.rs @@ -61,6 +61,11 @@ impl frame_system::Config for MockRuntime { type SS58Prefix = ConstU16<0>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/tests.rs b/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/tests.rs index 9d75967621..d6fa3d5be1 100644 --- a/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/tests.rs +++ b/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/tests.rs @@ -258,6 +258,7 @@ fn true_with_stored_remote_location_v3() { #[test] fn true_with_stored_remote_location_v2() { + #[allow(deprecated)] let location = xcm::v2::MultiLocation { parents: 1, interior: xcm::v2::Junctions::X1(xcm::v2::Junction::Parachain(1_000)), diff --git a/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/tests.rs b/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/tests.rs index 23dfd5b24b..8c05fd8cc2 100644 --- a/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/tests.rs +++ b/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/tests.rs @@ -148,6 +148,7 @@ fn true_with_stored_xcm_fee_asset_v3() { #[test] fn true_with_stored_xcm_fee_asset_v2() { + #[allow(deprecated)] let location = xcm::v2::MultiLocation { parents: 1, interior: xcm::v2::Junctions::X1(xcm::v2::Junction::Parachain(1_000)), @@ -298,6 +299,7 @@ fn true_with_stored_remote_location_v3() { #[test] fn true_with_stored_remote_location_v2() { + #[allow(deprecated)] let location = xcm::v2::MultiLocation { parents: 1, interior: xcm::v2::Junctions::X1(xcm::v2::Junction::Parachain(1_000)), diff --git a/pallets/pallet-bonded-coins/src/mock.rs b/pallets/pallet-bonded-coins/src/mock.rs index 814334c66d..e0206b515d 100644 --- a/pallets/pallet-bonded-coins/src/mock.rs +++ b/pallets/pallet-bonded-coins/src/mock.rs @@ -239,6 +239,11 @@ pub mod runtime { type SS58Prefix = SS58Prefix; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { @@ -426,6 +431,7 @@ pub mod runtime { .map(|id| (id, vec![], vec![], DEFAULT_COLLATERAL_DENOMINATION)), ) .collect(), + next_asset_id: None, } .assimilate_storage(&mut storage) .expect("assimilate should not fail"); diff --git a/pallets/pallet-configuration/src/mock.rs b/pallets/pallet-configuration/src/mock.rs index 5e5adfb972..00b178a134 100644 --- a/pallets/pallet-configuration/src/mock.rs +++ b/pallets/pallet-configuration/src/mock.rs @@ -80,6 +80,11 @@ pub mod runtime { type SS58Prefix = SS58Prefix; type OnSetCode = (); type MaxConsumers = frame_support::traits::ConstU32<16>; + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/pallet-deposit-storage/src/deposit/mock.rs b/pallets/pallet-deposit-storage/src/deposit/mock.rs index c6e78cdb63..6ae496306d 100644 --- a/pallets/pallet-deposit-storage/src/deposit/mock.rs +++ b/pallets/pallet-deposit-storage/src/deposit/mock.rs @@ -86,6 +86,11 @@ impl frame_system::Config for TestRuntime { type SS58Prefix = ConstU16<1>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl pallet_balances::Config for TestRuntime { diff --git a/pallets/pallet-deposit-storage/src/fungible/tests/mock.rs b/pallets/pallet-deposit-storage/src/fungible/tests/mock.rs index 4f59620251..f616d9faca 100644 --- a/pallets/pallet-deposit-storage/src/fungible/tests/mock.rs +++ b/pallets/pallet-deposit-storage/src/fungible/tests/mock.rs @@ -88,6 +88,11 @@ impl frame_system::Config for TestRuntime { type SS58Prefix = ConstU16<1>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl pallet_balances::Config for TestRuntime { diff --git a/pallets/pallet-deposit-storage/src/mock.rs b/pallets/pallet-deposit-storage/src/mock.rs index 5286e3a7bb..1812d5cc0c 100644 --- a/pallets/pallet-deposit-storage/src/mock.rs +++ b/pallets/pallet-deposit-storage/src/mock.rs @@ -73,6 +73,11 @@ impl frame_system::Config for TestRuntime { type SS58Prefix = ConstU16<1>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/pallet-did-lookup/src/mock.rs b/pallets/pallet-did-lookup/src/mock.rs index c61a7e5ba2..f30877ecd5 100644 --- a/pallets/pallet-did-lookup/src/mock.rs +++ b/pallets/pallet-did-lookup/src/mock.rs @@ -81,6 +81,11 @@ impl frame_system::Config for Test { type SS58Prefix = SS58Prefix; type OnSetCode = (); type MaxConsumers = frame_support::traits::ConstU32<16>; + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/pallet-dip-consumer/src/lib.rs b/pallets/pallet-dip-consumer/src/lib.rs index dba6956357..cb8bf5d538 100644 --- a/pallets/pallet-dip-consumer/src/lib.rs +++ b/pallets/pallet-dip-consumer/src/lib.rs @@ -205,7 +205,13 @@ pub mod pallet { if #[cfg(not(feature = "runtime-benchmarks"))] { call.dispatch(did_origin.into()) } else { - ().into() + log::debug!( + target: LOG_TARGET, + "Dispatching call {:#?} with origin {:#?}", + call, + did_origin + ); + Ok(().into()) } } } diff --git a/pallets/pallet-dip-consumer/src/mock.rs b/pallets/pallet-dip-consumer/src/mock.rs index 73470b69f5..e12c733646 100644 --- a/pallets/pallet-dip-consumer/src/mock.rs +++ b/pallets/pallet-dip-consumer/src/mock.rs @@ -67,6 +67,11 @@ impl frame_system::Config for TestRuntime { type SS58Prefix = ConstU16<1>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl pallet_balances::Config for TestRuntime { diff --git a/pallets/pallet-dip-consumer/src/traits.rs b/pallets/pallet-dip-consumer/src/traits.rs index 11841a5323..2d679ce052 100644 --- a/pallets/pallet-dip-consumer/src/traits.rs +++ b/pallets/pallet-dip-consumer/src/traits.rs @@ -34,7 +34,7 @@ where /// The accepted type for a DIP identity proof. type Proof: Parameter; /// The type returned upon successful DIP proof verification. - type VerificationResult; + type VerificationResult: Debug; /// Verify a given DIP proof given the calling context, including the call /// being dispatched, the DIP subject dispatching it, the account submitting diff --git a/pallets/pallet-dip-provider/src/mock.rs b/pallets/pallet-dip-provider/src/mock.rs index cb1b1c1cc2..b4238f53fc 100644 --- a/pallets/pallet-dip-provider/src/mock.rs +++ b/pallets/pallet-dip-provider/src/mock.rs @@ -67,6 +67,11 @@ impl frame_system::Config for TestRuntime { type SS58Prefix = ConstU16<1>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl crate::Config for TestRuntime { diff --git a/pallets/pallet-inflation/src/mock.rs b/pallets/pallet-inflation/src/mock.rs index 513741c40c..972af503e0 100644 --- a/pallets/pallet-inflation/src/mock.rs +++ b/pallets/pallet-inflation/src/mock.rs @@ -83,6 +83,11 @@ impl frame_system::Config for Test { type SS58Prefix = SS58Prefix; type OnSetCode = (); type MaxConsumers = frame_support::traits::ConstU32<16>; + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/pallet-relay-store/src/lib.rs b/pallets/pallet-relay-store/src/lib.rs index c037b2161d..15ac735b21 100644 --- a/pallets/pallet-relay-store/src/lib.rs +++ b/pallets/pallet-relay-store/src/lib.rs @@ -114,7 +114,7 @@ pub mod pallet { pub(crate) fn on_finalize_internal(_n: BlockNumberFor) { // Called before the validation data is cleaned in the // parachain_system::on_finalize hook - let Some(new_validation_data) = cumulus_pallet_parachain_system::Pallet::::validation_data() else { + let Some(new_validation_data) = cumulus_pallet_parachain_system::ValidationData::::get() else { return; }; Self::store_new_validation_data(new_validation_data) diff --git a/pallets/pallet-relay-store/src/mock.rs b/pallets/pallet-relay-store/src/mock.rs index af38ec2700..a4c66a7d71 100644 --- a/pallets/pallet-relay-store/src/mock.rs +++ b/pallets/pallet-relay-store/src/mock.rs @@ -66,6 +66,11 @@ impl frame_system::Config for TestRuntime { type SS58Prefix = ConstU16<1>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/pallet-web3-names/src/mock.rs b/pallets/pallet-web3-names/src/mock.rs index 17c66a6990..21b7168f39 100644 --- a/pallets/pallet-web3-names/src/mock.rs +++ b/pallets/pallet-web3-names/src/mock.rs @@ -116,6 +116,11 @@ pub(crate) mod runtime { type OnSetCode = (); type MaxConsumers = frame_support::traits::ConstU32<16>; type RuntimeTask = RuntimeTask; + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/pallets/parachain-staking/src/mock.rs b/pallets/parachain-staking/src/mock.rs index c02b1484cc..fc2072e8c2 100644 --- a/pallets/parachain-staking/src/mock.rs +++ b/pallets/parachain-staking/src/mock.rs @@ -28,7 +28,7 @@ use frame_support::{ use frame_system::pallet_prelude::BlockNumberFor; use pallet_authorship::EventHandler; use sp_consensus_aura::sr25519::AuthorityId; -use sp_core::{ConstBool, H256}; +use sp_core::{ConstBool, ConstU64, H256}; use sp_runtime::{ impl_opaque_keys, testing::UintAuthorityId, @@ -93,6 +93,11 @@ impl frame_system::Config for Test { type SS58Prefix = SS58Prefix; type OnSetCode = (); type MaxConsumers = frame_support::traits::ConstU32<16>; + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { pub const ExistentialDeposit: Balance = 1; @@ -120,6 +125,7 @@ impl pallet_aura::Config for Test { type DisabledValidators = (); type MaxAuthorities = MaxCollatorCandidates; type AllowMultipleBlocksPerSlot = ConstBool; + type SlotDuration = ConstU64<500>; } impl pallet_authorship::Config for Test { @@ -331,9 +337,12 @@ impl ExtBuilder { // NOTE: this will initialize the aura authorities // through OneSessionHandler::on_genesis_session - pallet_session::GenesisConfig:: { keys: session_keys } - .assimilate_storage(&mut t) - .expect("Session Pallet's storage can be assimilated"); + pallet_session::GenesisConfig:: { + keys: session_keys, + ..Default::default() + } + .assimilate_storage(&mut t) + .expect("Session Pallet's storage can be assimilated"); let mut ext = sp_io::TestExternalities::new(t); diff --git a/pallets/parachain-staking/src/tests/stake.rs b/pallets/parachain-staking/src/tests/stake.rs index 953914ea4c..46e46499f1 100644 --- a/pallets/parachain-staking/src/tests/stake.rs +++ b/pallets/parachain-staking/src/tests/stake.rs @@ -18,10 +18,10 @@ //! Unit testing -use frame_support::{assert_noop, assert_ok, storage::bounded_btree_map::BoundedBTreeMap}; +use frame_support::{assert_noop, assert_ok, storage::bounded_btree_map::BoundedBTreeMap, traits::tokens::IdAmount}; use kilt_runtime_api_staking::StakingRates; use pallet_authorship::EventHandler; -use pallet_balances::{Freezes, IdAmount}; +use pallet_balances::Freezes; use sp_runtime::{traits::Zero, Perquintill}; diff --git a/pallets/public-credentials/src/mock.rs b/pallets/public-credentials/src/mock.rs index 7bd808b0b3..e45df57f57 100644 --- a/pallets/public-credentials/src/mock.rs +++ b/pallets/public-credentials/src/mock.rs @@ -303,6 +303,11 @@ pub(crate) mod runtime { type SS58Prefix = ConstU16<38>; type OnSetCode = (); type MaxConsumers = ConstU32<16>; + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl pallet_balances::Config for Test { diff --git a/runtimes/common/src/bonded_coins/mod.rs b/runtimes/common/src/bonded_coins/mod.rs index 2a59618d37..ea1724d59d 100644 --- a/runtimes/common/src/bonded_coins/mod.rs +++ b/runtimes/common/src/bonded_coins/mod.rs @@ -224,11 +224,17 @@ impl< asset: Self::AssetId, who: &AccountId, amount: Self::Balance, + preservation: Preservation, precision: Precision, force: Fortitude, ) -> Result { UnionOf::::burn_from( - asset, who, amount, precision, force, + asset, + who, + amount, + preservation, + precision, + force, ) } fn shelve(asset: Self::AssetId, who: &AccountId, amount: Self::Balance) -> Result { From a2805a326bb2b9c032a6fca7ad010777f43c1521 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Tue, 29 Apr 2025 10:50:56 +0200 Subject: [PATCH 03/36] make spiritnet and peregrine compile --- dip-template/runtimes/dip-consumer/src/lib.rs | 3 +- dip-template/runtimes/dip-provider/src/lib.rs | 7 +- runtimes/common/src/dip/deposit/mock.rs | 5 ++ runtimes/common/src/dip/mock.rs | 7 +- runtimes/common/src/fees.rs | 7 +- runtimes/common/src/lib.rs | 1 - runtimes/common/src/migrations.rs | 88 ------------------- runtimes/peregrine/src/governance.rs | 10 +-- runtimes/peregrine/src/runtime_apis.rs | 25 +++--- runtimes/peregrine/src/system/mod.rs | 7 ++ .../peregrine/src/weights/pallet_assets.rs | 4 + .../peregrine/src/weights/pallet_balances.rs | 9 ++ .../src/weights/pallet_bonded_assets.rs | 4 + .../src/weights/pallet_membership.rs | 4 +- .../peregrine/src/weights/pallet_scheduler.rs | 12 +++ .../weights/pallet_technical_membership.rs | 4 +- .../peregrine/src/weights/pallet_treasury.rs | 45 ---------- runtimes/peregrine/src/xcm.rs | 7 ++ runtimes/spiritnet/src/governance.rs | 10 +-- runtimes/spiritnet/src/runtime_apis.rs | 25 +++--- runtimes/spiritnet/src/system/mod.rs | 7 ++ .../spiritnet/src/weights/pallet_assets.rs | 5 ++ .../spiritnet/src/weights/pallet_balances.rs | 10 +++ .../src/weights/pallet_membership.rs | 4 +- .../spiritnet/src/weights/pallet_scheduler.rs | 11 +++ .../weights/pallet_technical_membership.rs | 6 +- .../spiritnet/src/weights/pallet_treasury.rs | 46 +--------- runtimes/spiritnet/src/xcm.rs | 7 ++ 28 files changed, 154 insertions(+), 226 deletions(-) delete mode 100644 runtimes/common/src/migrations.rs diff --git a/dip-template/runtimes/dip-consumer/src/lib.rs b/dip-template/runtimes/dip-consumer/src/lib.rs index a52629a1bd..575a7d1e42 100644 --- a/dip-template/runtimes/dip-consumer/src/lib.rs +++ b/dip-template/runtimes/dip-consumer/src/lib.rs @@ -369,6 +369,7 @@ impl pallet_aura::Config for Runtime { type AuthorityId = AuraId; type DisabledValidators = (); type MaxAuthorities = ConstU32<100_000>; + type SlotDuration = ConstU64; } impl cumulus_pallet_aura_ext::Config for Runtime {} @@ -550,7 +551,7 @@ impl_runtime_apis! { create_default_config::() } - fn build_config(config: Vec) -> sp_genesis_builder::Result { + fn build_state(config: Vec) -> sp_genesis_builder::Result { build_config::(config) } } diff --git a/dip-template/runtimes/dip-provider/src/lib.rs b/dip-template/runtimes/dip-provider/src/lib.rs index dcda6df7da..28e0649148 100644 --- a/dip-template/runtimes/dip-provider/src/lib.rs +++ b/dip-template/runtimes/dip-provider/src/lib.rs @@ -370,6 +370,7 @@ impl pallet_aura::Config for Runtime { type AuthorityId = AuraId; type DisabledValidators = (); type MaxAuthorities = ConstU32<100_000>; + type SlotDuration = ConstU64; } impl cumulus_pallet_aura_ext::Config for Runtime {} @@ -502,7 +503,7 @@ impl_runtime_apis! { Executive::execute_block(block) } - fn initialize_block(header: &::Header) { + fn initialize_block(header: &::Header) -> ExtrinsicInclusionMode { Executive::initialize_block(header) } } @@ -783,9 +784,11 @@ impl_runtime_apis! { create_default_config::() } - fn build_config(config: Vec) -> sp_genesis_builder::Result { + fn build_state(config: Vec) -> sp_genesis_builder::Result { build_config::(config) } + + } #[cfg(feature = "runtime-benchmarks")] diff --git a/runtimes/common/src/dip/deposit/mock.rs b/runtimes/common/src/dip/deposit/mock.rs index 0af9397360..73f9f3f94c 100644 --- a/runtimes/common/src/dip/deposit/mock.rs +++ b/runtimes/common/src/dip/deposit/mock.rs @@ -65,6 +65,11 @@ impl frame_system::Config for TestRuntime { type SS58Prefix = (); type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl pallet_balances::Config for TestRuntime { diff --git a/runtimes/common/src/dip/mock.rs b/runtimes/common/src/dip/mock.rs index 341ab533dd..c006abcf39 100644 --- a/runtimes/common/src/dip/mock.rs +++ b/runtimes/common/src/dip/mock.rs @@ -87,6 +87,11 @@ impl frame_system::Config for TestRuntime { type SS58Prefix = ConstU16<1>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl pallet_balances::Config for TestRuntime { @@ -201,7 +206,7 @@ pub(crate) fn create_linked_info( ) -> LinkedDidInfoOf { let did_details = { let mut details = generate_base_did_details(auth_key.clone(), Some(SUBMITTER)); - let att_key = DidVerificationKey::Sr25519(sr25519::Public(auth_key.blake2_256())); + let att_key = DidVerificationKey::Sr25519(sr25519::Public::from_raw(auth_key.blake2_256())); let del_key = DidVerificationKey::Account(SUBMITTER); details .update_attestation_key(att_key, BlockNumberFor::::default()) diff --git a/runtimes/common/src/fees.rs b/runtimes/common/src/fees.rs index 4866177bda..dd9d5dc779 100644 --- a/runtimes/common/src/fees.rs +++ b/runtimes/common/src/fees.rs @@ -47,7 +47,7 @@ where Beneficiary2: OnUnbalanced>, Ratio: Get<(u32, u32)>, { - fn on_unbalanceds(mut fees_then_tips: impl Iterator>) { + fn on_unbalanceds(mut fees_then_tips: impl Iterator>) { let ratio = Ratio::get(); if let Some(fees) = fees_then_tips.next() { let mut split = fees.ration(ratio.0, ratio.1); @@ -220,6 +220,11 @@ mod tests { type SS58Prefix = (); type OnSetCode = (); type MaxConsumers = frame_support::traits::ConstU32<16>; + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl pallet_balances::Config for Test { diff --git a/runtimes/common/src/lib.rs b/runtimes/common/src/lib.rs index 8e17e86e8a..4974ada612 100644 --- a/runtimes/common/src/lib.rs +++ b/runtimes/common/src/lib.rs @@ -53,7 +53,6 @@ pub mod did; pub mod dip; pub mod errors; pub mod fees; -pub mod migrations; pub mod pallet_id; pub mod web3_names; pub mod xcm_config; diff --git a/runtimes/common/src/migrations.rs b/runtimes/common/src/migrations.rs deleted file mode 100644 index ef69f9ed5c..0000000000 --- a/runtimes/common/src/migrations.rs +++ /dev/null @@ -1,88 +0,0 @@ -// KILT Blockchain – -// Copyright (C) 2025, KILT Foundation - -// The KILT Blockchain 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. - -// The KILT Blockchain 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 this program. If not, see . - -// If you feel like getting in touch with us, you can do so at - -use frame_support::{ - traits::{GetStorageVersion, OnRuntimeUpgrade, PalletInfoAccess, StorageVersion}, - weights::Weight, -}; -use sp_core::Get; -use sp_std::{fmt::Debug, marker::PhantomData}; -use sp_weights::RuntimeDbWeight; - -const LOG_TARGET: &str = "migration::BumpStorageVersion"; - -/// There are some pallets without a storage version. -/// Based on the changes in the PR , -/// pallets without a storage version or with a wrong version throw an error -/// in the try state tests. -pub struct BumpStorageVersion(PhantomData<(T, W)>) -where - T: GetStorageVersion + PalletInfoAccess, - T::CurrentStorageVersion: Debug + Into, - StorageVersion: PartialOrd, - W: Get; - -impl OnRuntimeUpgrade for BumpStorageVersion -where - T: GetStorageVersion + PalletInfoAccess, - T::CurrentStorageVersion: Debug + Into, - StorageVersion: PartialOrd, - W: Get, -{ - #[cfg(feature = "try-runtime")] - fn pre_upgrade() -> Result, sp_runtime::TryRuntimeError> { - let (on_chain_version, current_version) = (T::on_chain_storage_version(), T::current_storage_version()); - let pallet_name = T::name(); - if on_chain_version < current_version { - log::trace!(target: LOG_TARGET, "Pallet {:?} to be migrated from version {:?} to version {:?}.", pallet_name, on_chain_version, current_version); - } else { - log::trace!(target: LOG_TARGET, "Pallet {:?} already on latest version {:?}. No migration will run.", pallet_name, current_version); - } - Ok([].into()) - } - - fn on_runtime_upgrade() -> Weight { - log::info!(target: LOG_TARGET, "Initiating migration."); - - let (on_chain_version, current_version) = (T::on_chain_storage_version(), T::current_storage_version()); - let pallet_name = T::name(); - - if on_chain_version < current_version { - log::trace!(target: LOG_TARGET, "Pallet {:?} to be migrated from version {:?} to version {:?}.", pallet_name, on_chain_version, current_version); - current_version.into().put::(); - W::get().reads_writes(1, 1) - } else { - log::trace!(target: LOG_TARGET, "Pallet {:?} already on latest version {:?}. No migration will run.", pallet_name, current_version); - W::get().reads(1) - } - } - - #[cfg(feature = "try-runtime")] - fn post_upgrade(_state: sp_std::vec::Vec) -> Result<(), sp_runtime::TryRuntimeError> { - let (on_chain_version, current_version) = (T::on_chain_storage_version(), T::current_storage_version()); - - if on_chain_version < current_version { - log::error!(target: LOG_TARGET, "Storage version for pallet {:?} was not updated to the latest version {:?}.", T::name(), current_version); - Err(sp_runtime::TryRuntimeError::Other( - "Pallet storage version was not updated to the latest version.", - )) - } else { - Ok(()) - } - } -} diff --git a/runtimes/peregrine/src/governance.rs b/runtimes/peregrine/src/governance.rs index 0f1fc28116..7b05a42f4b 100644 --- a/runtimes/peregrine/src/governance.rs +++ b/runtimes/peregrine/src/governance.rs @@ -27,10 +27,10 @@ use frame_support::{ }; use frame_system::{EnsureRoot, EnsureSigned}; use runtime_common::{ - constants::{self, KILT}, + constants::{self}, pallet_id, AccountId, Balance, BlockWeights, Tippers, }; -use sp_core::{ConstBool, ConstU128, ConstU32, ConstU64}; +use sp_core::{ConstBool, ConstU32, ConstU64}; use sp_runtime::{traits::AccountIdLookup, Perbill, Permill}; use crate::{ @@ -96,13 +96,8 @@ parameter_types! { impl pallet_treasury::Config for Runtime { type PalletId = pallet_id::Treasury; type Currency = Balances; - type ApproveOrigin = RootOrCollectiveProportion; type RejectOrigin = RootOrCollectiveProportion; type RuntimeEvent = RuntimeEvent; - type OnSlash = Treasury; - type ProposalBond = ProposalBond; - type ProposalBondMinimum = ConstU128<{ 20 * KILT }>; - type ProposalBondMaximum = (); type SpendPeriod = ConstU64<{ constants::governance::SPEND_PERIOD }>; #[cfg(not(feature = "runtime-benchmarks"))] type SpendOrigin = frame_support::traits::NeverEnsureOrigin; @@ -135,6 +130,7 @@ impl pallet_tips::Config for Runtime { type RuntimeEvent = RuntimeEvent; type WeightInfo = weights::pallet_tips::WeightInfo; type MaxTipAmount = constants::tips::MaxTipAmount; + type OnSlash = Treasury; } #[allow(clippy::arithmetic_side_effects)] diff --git a/runtimes/peregrine/src/runtime_apis.rs b/runtimes/peregrine/src/runtime_apis.rs index ee156303d5..b3268d08cf 100644 --- a/runtimes/peregrine/src/runtime_apis.rs +++ b/runtimes/peregrine/src/runtime_apis.rs @@ -7,7 +7,6 @@ use ::xcm::{ use cumulus_primitives_aura::Slot; use cumulus_primitives_core::CollationInfo; use frame_support::{ - genesis_builder_helper::{build_config, create_default_config}, pallet_prelude::{TransactionSource, TransactionValidity}, traits::{ fungibles::{metadata::Inspect as MetadataInspect, Inspect}, @@ -50,6 +49,7 @@ use runtime_common::{ }; use sp_api::impl_runtime_apis; use sp_core::OpaqueMetadata; +use sp_genesis_builder::PresetId; use sp_inherents::{CheckInherentsResult, InherentData}; use sp_metadata_ir::RuntimeApiMetadataIR; use sp_runtime::{ @@ -63,8 +63,8 @@ use crate::{ kilt::{DipProofError, DipProofRequest, NativeAndForeignAssets}, parachain::ConsensusHook, xcm::UniversalLocation, - AssetSwitchPool1, Aura, Block, BondedCurrencies, BondedFungibles, Executive, InherentDataExt, ParachainStaking, - ParachainSystem, Runtime, RuntimeCall, RuntimeGenesisConfig, SessionKeys, TransactionPayment, Web3Name, VERSION, + AssetSwitchPool1, Block, BondedCurrencies, BondedFungibles, Executive, InherentDataExt, ParachainStaking, + ParachainSystem, Runtime, RuntimeCall, SessionKeys, TransactionPayment, Web3Name, VERSION, }; // This is necessary since by default `RUNTIME_API_VERSIONS` generated by @@ -97,8 +97,8 @@ impl_runtime_apis! { Executive::execute_block(block); } - fn initialize_block(header: &::Header) { - Executive::initialize_block(header) + fn initialize_block(_header: &::Header) -> sp_runtime::ExtrinsicInclusionMode { + todo!() } } @@ -219,7 +219,7 @@ impl_runtime_apis! { } fn authorities() -> Vec { - Aura::authorities().into_inner() + pallet_aura::Authorities::::get().into_inner() } } @@ -240,12 +240,17 @@ impl_runtime_apis! { impl sp_genesis_builder::GenesisBuilder for Runtime { - fn create_default_config() -> Vec { - create_default_config::() + fn preset_names() -> Vec { + todo!() } - fn build_config(config: Vec) -> sp_genesis_builder::Result { - build_config::(config) + fn get_preset(_id: &Option) -> Option> { + todo!() + } + + + fn build_state(_json: Vec) -> sp_genesis_builder::Result { + todo!() } } diff --git a/runtimes/peregrine/src/system/mod.rs b/runtimes/peregrine/src/system/mod.rs index e8aab090b2..39a7d90f15 100644 --- a/runtimes/peregrine/src/system/mod.rs +++ b/runtimes/peregrine/src/system/mod.rs @@ -94,6 +94,12 @@ impl frame_system::Config for Runtime { /// The set code logic type OnSetCode = cumulus_pallet_parachain_system::ParachainSetCode; type MaxConsumers = frame_support::traits::ConstU32<16>; + + type MultiBlockMigrator = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); + type SingleBlockMigrations = (); } impl pallet_timestamp::Config for Runtime { @@ -159,6 +165,7 @@ impl pallet_aura::Config for Runtime { type DisabledValidators = (); type MaxAuthorities = ConstU32<{ constants::staking::MAX_CANDIDATES }>; type AllowMultipleBlocksPerSlot = ConstBool; + type SlotDuration = ConstU64<12_000>; } impl pallet_authorship::Config for Runtime { diff --git a/runtimes/peregrine/src/weights/pallet_assets.rs b/runtimes/peregrine/src/weights/pallet_assets.rs index 9917201b21..0b2e20ca40 100644 --- a/runtimes/peregrine/src/weights/pallet_assets.rs +++ b/runtimes/peregrine/src/weights/pallet_assets.rs @@ -51,6 +51,10 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_assets`. pub struct WeightInfo(PhantomData); impl pallet_assets::WeightInfo for WeightInfo { + + fn transfer_all() -> Weight { + todo!() + } /// Storage: `Fungibles::Asset` (r:1 w:1) /// Proof: `Fungibles::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) fn create() -> Weight { diff --git a/runtimes/peregrine/src/weights/pallet_balances.rs b/runtimes/peregrine/src/weights/pallet_balances.rs index e998800c32..617c9a8b17 100644 --- a/runtimes/peregrine/src/weights/pallet_balances.rs +++ b/runtimes/peregrine/src/weights/pallet_balances.rs @@ -49,6 +49,15 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_balances`. pub struct WeightInfo(PhantomData); impl pallet_balances::WeightInfo for WeightInfo { + + + fn burn_allow_death() -> Weight { + todo!() + } + + fn burn_keep_alive() -> Weight { + todo!() + } /// Storage: `System::Account` (r:2 w:2) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) fn transfer_allow_death() -> Weight { diff --git a/runtimes/peregrine/src/weights/pallet_bonded_assets.rs b/runtimes/peregrine/src/weights/pallet_bonded_assets.rs index 72365acae2..2cebf42cba 100644 --- a/runtimes/peregrine/src/weights/pallet_bonded_assets.rs +++ b/runtimes/peregrine/src/weights/pallet_bonded_assets.rs @@ -49,6 +49,10 @@ use pallet_assets as pallet_bonded_assets; /// Weight functions for `pallet_bonded_assets`. pub struct WeightInfo(PhantomData); impl pallet_bonded_assets::WeightInfo for WeightInfo { + + fn transfer_all() -> Weight { + todo!() + } /// Storage: `BondedFungibles::Asset` (r:1 w:1) /// Proof: `BondedFungibles::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) fn create() -> Weight { diff --git a/runtimes/peregrine/src/weights/pallet_membership.rs b/runtimes/peregrine/src/weights/pallet_membership.rs index 618736a02e..c9eb731d13 100644 --- a/runtimes/peregrine/src/weights/pallet_membership.rs +++ b/runtimes/peregrine/src/weights/pallet_membership.rs @@ -97,7 +97,7 @@ impl pallet_membership::WeightInfo for WeightInfo { /// Storage: `TipsMembership::Prime` (r:1 w:0) /// Proof: `TipsMembership::Prime` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `Ignored`) /// The range of component `m` is `[1, 21]`. - fn reset_member(_m: u32, ) -> Weight { + fn reset_members(_m: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `187 + m * (32 ±0)` // Estimated: `990` @@ -140,7 +140,7 @@ impl pallet_membership::WeightInfo for WeightInfo { /// Storage: `TipsMembership::Prime` (r:0 w:1) /// Proof: `TipsMembership::Prime` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `Ignored`) /// The range of component `m` is `[1, 21]`. - fn clear_prime(_m: u32, ) -> Weight { + fn clear_prime( ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` diff --git a/runtimes/peregrine/src/weights/pallet_scheduler.rs b/runtimes/peregrine/src/weights/pallet_scheduler.rs index 777facf670..2181a1db14 100644 --- a/runtimes/peregrine/src/weights/pallet_scheduler.rs +++ b/runtimes/peregrine/src/weights/pallet_scheduler.rs @@ -49,6 +49,18 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_scheduler`. pub struct WeightInfo(PhantomData); impl pallet_scheduler::WeightInfo for WeightInfo { + + + fn cancel_retry_named() -> cumulus_primitives_core::Weight { todo!() } + + fn cancel_retry() -> cumulus_primitives_core::Weight { todo!() } + + fn set_retry_named() -> cumulus_primitives_core::Weight { todo!() } + + fn schedule_retry(_: u32) -> cumulus_primitives_core::Weight { todo!() } + + fn set_retry() -> cumulus_primitives_core::Weight { todo!() } + /// Storage: `Scheduler::IncompleteSince` (r:1 w:1) /// Proof: `Scheduler::IncompleteSince` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) fn service_agendas_base() -> Weight { diff --git a/runtimes/peregrine/src/weights/pallet_technical_membership.rs b/runtimes/peregrine/src/weights/pallet_technical_membership.rs index 4f782f9f8b..c2ec3694f6 100644 --- a/runtimes/peregrine/src/weights/pallet_technical_membership.rs +++ b/runtimes/peregrine/src/weights/pallet_technical_membership.rs @@ -124,7 +124,7 @@ impl pallet_technical_membership::WeightInfo for Weight /// Storage: `TechnicalCommittee::Prime` (r:0 w:1) /// Proof: `TechnicalCommittee::Prime` (`max_values`: Some(1), `max_size`: None, mode: `Ignored`) /// The range of component `m` is `[1, 100]`. - fn reset_member(_m: u32, ) -> Weight { + fn reset_members(_m: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `237 + m * (64 ±0)` // Estimated: `990` @@ -177,7 +177,7 @@ impl pallet_technical_membership::WeightInfo for Weight /// Storage: `TechnicalCommittee::Prime` (r:0 w:1) /// Proof: `TechnicalCommittee::Prime` (`max_values`: Some(1), `max_size`: None, mode: `Ignored`) /// The range of component `m` is `[1, 100]`. - fn clear_prime(_m: u32, ) -> Weight { + fn clear_prime( ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` diff --git a/runtimes/peregrine/src/weights/pallet_treasury.rs b/runtimes/peregrine/src/weights/pallet_treasury.rs index 092f5d0e08..faa261f1e2 100644 --- a/runtimes/peregrine/src/weights/pallet_treasury.rs +++ b/runtimes/peregrine/src/weights/pallet_treasury.rs @@ -65,51 +65,6 @@ impl pallet_treasury::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(3)) } - /// Storage: `Treasury::ProposalCount` (r:1 w:1) - /// Proof: `Treasury::ProposalCount` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) - /// Storage: `Treasury::Proposals` (r:0 w:1) - /// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(108), added: 2583, mode: `MaxEncodedLen`) - fn propose_spend() -> Weight { - // Proof Size summary in bytes: - // Measured: `111` - // Estimated: `1489` - // Minimum execution time: 25_458_000 picoseconds. - Weight::from_parts(25_878_000, 0) - .saturating_add(Weight::from_parts(0, 1489)) - .saturating_add(T::DbWeight::get().reads(1)) - .saturating_add(T::DbWeight::get().writes(2)) - } - /// Storage: `Treasury::Proposals` (r:1 w:1) - /// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(108), added: 2583, mode: `MaxEncodedLen`) - /// Storage: `System::Account` (r:2 w:2) - /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) - fn reject_proposal() -> Weight { - // Proof Size summary in bytes: - // Measured: `376` - // Estimated: `6204` - // Minimum execution time: 36_141_000 picoseconds. - Weight::from_parts(36_934_000, 0) - .saturating_add(Weight::from_parts(0, 6204)) - .saturating_add(T::DbWeight::get().reads(3)) - .saturating_add(T::DbWeight::get().writes(3)) - } - /// Storage: `Treasury::Proposals` (r:1 w:0) - /// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(108), added: 2583, mode: `MaxEncodedLen`) - /// Storage: `Treasury::Approvals` (r:1 w:1) - /// Proof: `Treasury::Approvals` (`max_values`: Some(1), `max_size`: Some(402), added: 897, mode: `MaxEncodedLen`) - /// The range of component `p` is `[0, 99]`. - fn approve_proposal(p: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `433 + p * (8 ±0)` - // Estimated: `3573` - // Minimum execution time: 9_838_000 picoseconds. - Weight::from_parts(12_745_248, 0) - .saturating_add(Weight::from_parts(0, 3573)) - // Standard Error: 944 - .saturating_add(Weight::from_parts(34_217, 0).saturating_mul(p.into())) - .saturating_add(T::DbWeight::get().reads(2)) - .saturating_add(T::DbWeight::get().writes(1)) - } /// Storage: `Treasury::Approvals` (r:1 w:1) /// Proof: `Treasury::Approvals` (`max_values`: Some(1), `max_size`: Some(402), added: 897, mode: `MaxEncodedLen`) fn remove_approval() -> Weight { diff --git a/runtimes/peregrine/src/xcm.rs b/runtimes/peregrine/src/xcm.rs index 5b003c97cc..f416cfc8f8 100644 --- a/runtimes/peregrine/src/xcm.rs +++ b/runtimes/peregrine/src/xcm.rs @@ -254,6 +254,10 @@ impl xcm_executor::Config for XcmConfig { type SafeCallFilter = SafeCallFilter; type Aliasers = Nothing; type TransactionalProcessor = FrameTransactionalProcessor; + type HrmpChannelAcceptedHandler = (); + type HrmpChannelClosingHandler = (); + type HrmpNewChannelOpenRequestHandler = (); + type XcmRecorder = (); } /// Allows only local `Signed` origins to be converted into `MultiLocation`s by @@ -312,6 +316,8 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type PriceForSiblingDelivery = NoPriceForMessageDelivery; type MaxInboundSuspended = ConstU32<1_000>; type XcmpQueue = TransformOrigin; + type MaxActiveOutboundChannels = (); + type MaxPageSize = (); } impl pallet_message_queue::Config for Runtime { @@ -328,4 +334,5 @@ impl pallet_message_queue::Config for Runtime { type HeapSize = HeapSize; type MaxStale = MaxStale; type ServiceWeight = ServiceWeight; + type IdleMaxServiceWeight = (); } diff --git a/runtimes/spiritnet/src/governance.rs b/runtimes/spiritnet/src/governance.rs index 0f1fc28116..7b05a42f4b 100644 --- a/runtimes/spiritnet/src/governance.rs +++ b/runtimes/spiritnet/src/governance.rs @@ -27,10 +27,10 @@ use frame_support::{ }; use frame_system::{EnsureRoot, EnsureSigned}; use runtime_common::{ - constants::{self, KILT}, + constants::{self}, pallet_id, AccountId, Balance, BlockWeights, Tippers, }; -use sp_core::{ConstBool, ConstU128, ConstU32, ConstU64}; +use sp_core::{ConstBool, ConstU32, ConstU64}; use sp_runtime::{traits::AccountIdLookup, Perbill, Permill}; use crate::{ @@ -96,13 +96,8 @@ parameter_types! { impl pallet_treasury::Config for Runtime { type PalletId = pallet_id::Treasury; type Currency = Balances; - type ApproveOrigin = RootOrCollectiveProportion; type RejectOrigin = RootOrCollectiveProportion; type RuntimeEvent = RuntimeEvent; - type OnSlash = Treasury; - type ProposalBond = ProposalBond; - type ProposalBondMinimum = ConstU128<{ 20 * KILT }>; - type ProposalBondMaximum = (); type SpendPeriod = ConstU64<{ constants::governance::SPEND_PERIOD }>; #[cfg(not(feature = "runtime-benchmarks"))] type SpendOrigin = frame_support::traits::NeverEnsureOrigin; @@ -135,6 +130,7 @@ impl pallet_tips::Config for Runtime { type RuntimeEvent = RuntimeEvent; type WeightInfo = weights::pallet_tips::WeightInfo; type MaxTipAmount = constants::tips::MaxTipAmount; + type OnSlash = Treasury; } #[allow(clippy::arithmetic_side_effects)] diff --git a/runtimes/spiritnet/src/runtime_apis.rs b/runtimes/spiritnet/src/runtime_apis.rs index 143f0fa784..ab64b9ec68 100644 --- a/runtimes/spiritnet/src/runtime_apis.rs +++ b/runtimes/spiritnet/src/runtime_apis.rs @@ -7,7 +7,6 @@ use ::xcm::{ use cumulus_primitives_aura::Slot; use cumulus_primitives_core::CollationInfo; use frame_support::{ - genesis_builder_helper::{build_config, create_default_config}, pallet_prelude::{TransactionSource, TransactionValidity}, traits::PalletInfoAccess, weights::Weight, @@ -32,6 +31,7 @@ use runtime_common::{ }; use sp_api::impl_runtime_apis; use sp_core::OpaqueMetadata; +use sp_genesis_builder::PresetId; use sp_inherents::{CheckInherentsResult, InherentData}; use sp_metadata_ir::RuntimeApiMetadataIR; use sp_runtime::{ @@ -45,8 +45,8 @@ use crate::{ kilt::{DipProofError, DipProofRequest}, parachain::ConsensusHook, xcm::UniversalLocation, - AssetSwitchPool1, Aura, Block, Executive, InherentDataExt, ParachainStaking, ParachainSystem, Runtime, RuntimeCall, - RuntimeGenesisConfig, SessionKeys, TransactionPayment, Web3Name, VERSION, + AssetSwitchPool1, Block, Executive, InherentDataExt, ParachainStaking, ParachainSystem, Runtime, RuntimeCall, + SessionKeys, TransactionPayment, Web3Name, VERSION, }; // This is necessary since by default `RUNTIME_API_VERSIONS` generated by @@ -79,8 +79,8 @@ impl_runtime_apis! { Executive::execute_block(block); } - fn initialize_block(header: &::Header) { - Executive::initialize_block(header) + fn initialize_block(_header: &::Header) -> sp_runtime::ExtrinsicInclusionMode { + todo!() } } @@ -201,7 +201,7 @@ impl_runtime_apis! { } fn authorities() -> Vec { - Aura::authorities().into_inner() + pallet_aura::Authorities::::get().into_inner() } } @@ -222,12 +222,17 @@ impl_runtime_apis! { impl sp_genesis_builder::GenesisBuilder for Runtime { - fn create_default_config() -> Vec { - create_default_config::() + fn preset_names() -> Vec { + todo!() } - fn build_config(config: Vec) -> sp_genesis_builder::Result { - build_config::(config) + fn get_preset(_id: &Option) -> Option> { + todo!() + } + + + fn build_state(_json: Vec) -> sp_genesis_builder::Result { + todo!() } } diff --git a/runtimes/spiritnet/src/system/mod.rs b/runtimes/spiritnet/src/system/mod.rs index 33a9538903..d1f0072e69 100644 --- a/runtimes/spiritnet/src/system/mod.rs +++ b/runtimes/spiritnet/src/system/mod.rs @@ -94,6 +94,12 @@ impl frame_system::Config for Runtime { /// The set code logic type OnSetCode = cumulus_pallet_parachain_system::ParachainSetCode; type MaxConsumers = frame_support::traits::ConstU32<16>; + + type MultiBlockMigrator = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); + type SingleBlockMigrations = (); } impl pallet_timestamp::Config for Runtime { @@ -159,6 +165,7 @@ impl pallet_aura::Config for Runtime { type DisabledValidators = (); type MaxAuthorities = ConstU32<{ constants::staking::MAX_CANDIDATES }>; type AllowMultipleBlocksPerSlot = ConstBool; + type SlotDuration = ConstU64<12_000>; } impl pallet_authorship::Config for Runtime { diff --git a/runtimes/spiritnet/src/weights/pallet_assets.rs b/runtimes/spiritnet/src/weights/pallet_assets.rs index 5717f115b8..967be25126 100644 --- a/runtimes/spiritnet/src/weights/pallet_assets.rs +++ b/runtimes/spiritnet/src/weights/pallet_assets.rs @@ -32,6 +32,11 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_assets`. pub struct WeightInfo(PhantomData); impl pallet_assets::WeightInfo for WeightInfo { + + fn transfer_all() -> Weight { + todo!() + } + /// Storage: `Fungibles::Asset` (r:1 w:1) /// Proof: `Fungibles::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) fn create() -> Weight { diff --git a/runtimes/spiritnet/src/weights/pallet_balances.rs b/runtimes/spiritnet/src/weights/pallet_balances.rs index 2fa1d9dcaf..1525853188 100644 --- a/runtimes/spiritnet/src/weights/pallet_balances.rs +++ b/runtimes/spiritnet/src/weights/pallet_balances.rs @@ -49,6 +49,16 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_balances`. pub struct WeightInfo(PhantomData); impl pallet_balances::WeightInfo for WeightInfo { + + + fn burn_allow_death() -> Weight { + todo!() + } + + fn burn_keep_alive() -> Weight { + todo!() + } + /// Storage: `System::Account` (r:2 w:2) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) fn transfer_allow_death() -> Weight { diff --git a/runtimes/spiritnet/src/weights/pallet_membership.rs b/runtimes/spiritnet/src/weights/pallet_membership.rs index 618736a02e..f46d36ec1e 100644 --- a/runtimes/spiritnet/src/weights/pallet_membership.rs +++ b/runtimes/spiritnet/src/weights/pallet_membership.rs @@ -97,7 +97,7 @@ impl pallet_membership::WeightInfo for WeightInfo { /// Storage: `TipsMembership::Prime` (r:1 w:0) /// Proof: `TipsMembership::Prime` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `Ignored`) /// The range of component `m` is `[1, 21]`. - fn reset_member(_m: u32, ) -> Weight { + fn reset_members(_m: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `187 + m * (32 ±0)` // Estimated: `990` @@ -140,7 +140,7 @@ impl pallet_membership::WeightInfo for WeightInfo { /// Storage: `TipsMembership::Prime` (r:0 w:1) /// Proof: `TipsMembership::Prime` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `Ignored`) /// The range of component `m` is `[1, 21]`. - fn clear_prime(_m: u32, ) -> Weight { + fn clear_prime() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` diff --git a/runtimes/spiritnet/src/weights/pallet_scheduler.rs b/runtimes/spiritnet/src/weights/pallet_scheduler.rs index 0b0828b9b4..f38633dbd7 100644 --- a/runtimes/spiritnet/src/weights/pallet_scheduler.rs +++ b/runtimes/spiritnet/src/weights/pallet_scheduler.rs @@ -49,6 +49,17 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_scheduler`. pub struct WeightInfo(PhantomData); impl pallet_scheduler::WeightInfo for WeightInfo { + + fn cancel_retry_named() -> cumulus_primitives_core::Weight { todo!() } + + fn cancel_retry() -> cumulus_primitives_core::Weight { todo!() } + + fn set_retry_named() -> cumulus_primitives_core::Weight { todo!() } + + fn schedule_retry(_: u32) -> cumulus_primitives_core::Weight { todo!() } + + fn set_retry() -> cumulus_primitives_core::Weight { todo!() } + /// Storage: `Scheduler::IncompleteSince` (r:1 w:1) /// Proof: `Scheduler::IncompleteSince` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) fn service_agendas_base() -> Weight { diff --git a/runtimes/spiritnet/src/weights/pallet_technical_membership.rs b/runtimes/spiritnet/src/weights/pallet_technical_membership.rs index 4f782f9f8b..e579f815f9 100644 --- a/runtimes/spiritnet/src/weights/pallet_technical_membership.rs +++ b/runtimes/spiritnet/src/weights/pallet_technical_membership.rs @@ -52,6 +52,8 @@ use pallet_membership as pallet_technical_membership; /// Weight functions for `pallet_technical_membership`. pub struct WeightInfo(PhantomData); impl pallet_technical_membership::WeightInfo for WeightInfo { + + /// Storage: `TechnicalMembership::Members` (r:1 w:1) /// Proof: `TechnicalMembership::Members` (`max_values`: Some(1), `max_size`: Some(3202), added: 3697, mode: `Ignored`) /// Storage: `TechnicalCommittee::Proposals` (r:1 w:0) @@ -124,7 +126,7 @@ impl pallet_technical_membership::WeightInfo for Weight /// Storage: `TechnicalCommittee::Prime` (r:0 w:1) /// Proof: `TechnicalCommittee::Prime` (`max_values`: Some(1), `max_size`: None, mode: `Ignored`) /// The range of component `m` is `[1, 100]`. - fn reset_member(_m: u32, ) -> Weight { + fn reset_members(_m: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `237 + m * (64 ±0)` // Estimated: `990` @@ -177,7 +179,7 @@ impl pallet_technical_membership::WeightInfo for Weight /// Storage: `TechnicalCommittee::Prime` (r:0 w:1) /// Proof: `TechnicalCommittee::Prime` (`max_values`: Some(1), `max_size`: None, mode: `Ignored`) /// The range of component `m` is `[1, 100]`. - fn clear_prime(_m: u32, ) -> Weight { + fn clear_prime() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` diff --git a/runtimes/spiritnet/src/weights/pallet_treasury.rs b/runtimes/spiritnet/src/weights/pallet_treasury.rs index f57dc7ef91..c956a0078d 100644 --- a/runtimes/spiritnet/src/weights/pallet_treasury.rs +++ b/runtimes/spiritnet/src/weights/pallet_treasury.rs @@ -65,51 +65,7 @@ impl pallet_treasury::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(3)) } - /// Storage: `Treasury::ProposalCount` (r:1 w:1) - /// Proof: `Treasury::ProposalCount` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) - /// Storage: `Treasury::Proposals` (r:0 w:1) - /// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(108), added: 2583, mode: `MaxEncodedLen`) - fn propose_spend() -> Weight { - // Proof Size summary in bytes: - // Measured: `111` - // Estimated: `1489` - // Minimum execution time: 25_896_000 picoseconds. - Weight::from_parts(26_447_000, 0) - .saturating_add(Weight::from_parts(0, 1489)) - .saturating_add(T::DbWeight::get().reads(1)) - .saturating_add(T::DbWeight::get().writes(2)) - } - /// Storage: `Treasury::Proposals` (r:1 w:1) - /// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(108), added: 2583, mode: `MaxEncodedLen`) - /// Storage: `System::Account` (r:2 w:2) - /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) - fn reject_proposal() -> Weight { - // Proof Size summary in bytes: - // Measured: `376` - // Estimated: `6204` - // Minimum execution time: 36_905_000 picoseconds. - Weight::from_parts(37_206_000, 0) - .saturating_add(Weight::from_parts(0, 6204)) - .saturating_add(T::DbWeight::get().reads(3)) - .saturating_add(T::DbWeight::get().writes(3)) - } - /// Storage: `Treasury::Proposals` (r:1 w:0) - /// Proof: `Treasury::Proposals` (`max_values`: None, `max_size`: Some(108), added: 2583, mode: `MaxEncodedLen`) - /// Storage: `Treasury::Approvals` (r:1 w:1) - /// Proof: `Treasury::Approvals` (`max_values`: Some(1), `max_size`: Some(402), added: 897, mode: `MaxEncodedLen`) - /// The range of component `p` is `[0, 99]`. - fn approve_proposal(p: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `433 + p * (8 ±0)` - // Estimated: `3573` - // Minimum execution time: 9_645_000 picoseconds. - Weight::from_parts(12_567_224, 0) - .saturating_add(Weight::from_parts(0, 3573)) - // Standard Error: 953 - .saturating_add(Weight::from_parts(38_099, 0).saturating_mul(p.into())) - .saturating_add(T::DbWeight::get().reads(2)) - .saturating_add(T::DbWeight::get().writes(1)) - } + /// Storage: `Treasury::Approvals` (r:1 w:1) /// Proof: `Treasury::Approvals` (`max_values`: Some(1), `max_size`: Some(402), added: 897, mode: `MaxEncodedLen`) fn remove_approval() -> Weight { diff --git a/runtimes/spiritnet/src/xcm.rs b/runtimes/spiritnet/src/xcm.rs index bf917612f6..bcd55f31d1 100644 --- a/runtimes/spiritnet/src/xcm.rs +++ b/runtimes/spiritnet/src/xcm.rs @@ -249,6 +249,10 @@ impl xcm_executor::Config for XcmConfig { type SafeCallFilter = SafeCallFilter; type Aliasers = Nothing; type TransactionalProcessor = FrameTransactionalProcessor; + type HrmpChannelAcceptedHandler = (); + type HrmpChannelClosingHandler = (); + type HrmpNewChannelOpenRequestHandler = (); + type XcmRecorder = (); } /// Allows only local `Signed` origins to be converted into `MultiLocation`s by @@ -311,6 +315,8 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type PriceForSiblingDelivery = NoPriceForMessageDelivery; type MaxInboundSuspended = MaxInboundSuspended; type XcmpQueue = TransformOrigin; + type MaxActiveOutboundChannels = (); + type MaxPageSize = (); } impl pallet_message_queue::Config for Runtime { @@ -327,4 +333,5 @@ impl pallet_message_queue::Config for Runtime { type HeapSize = HeapSize; type MaxStale = MaxStale; type ServiceWeight = ServiceWeight; + type IdleMaxServiceWeight = (); } From 13e53569e5de8a1b151036a753c1207e5b734594 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Tue, 29 Apr 2025 14:16:09 +0200 Subject: [PATCH 04/36] make node compile --- Cargo.lock | 14 +++----- .../parachain/src/chain_spec/peregrine/dev.rs | 1 + .../parachain/src/chain_spec/peregrine/mod.rs | 3 +- nodes/parachain/src/chain_spec/rilt/mod.rs | 3 +- .../parachain/src/chain_spec/spiritnet/dev.rs | 2 ++ .../parachain/src/chain_spec/spiritnet/mod.rs | 3 +- .../parachain/src/chain_spec/spiritnet/new.rs | 1 + nodes/parachain/src/cli.rs | 15 ++------- nodes/parachain/src/command.rs | 10 +++--- nodes/parachain/src/rpc.rs | 11 ++----- nodes/parachain/src/service.rs | 32 +++++++++---------- 11 files changed, 35 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c2fefe2821..2dbf6d2237 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6932,12 +6932,6 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" -[[package]] -name = "multimap" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" - [[package]] name = "multistream-select" version = "0.13.0" @@ -10893,7 +10887,7 @@ dependencies = [ "itertools 0.10.5", "lazy_static", "log", - "multimap 0.8.3", + "multimap", "petgraph", "prettyplease 0.1.25", "prost 0.11.9", @@ -10911,10 +10905,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" dependencies = [ "bytes", - "heck 0.5.0", - "itertools 0.12.1", + "heck 0.4.1", + "itertools 0.10.5", "log", - "multimap 0.10.0", + "multimap", "once_cell", "petgraph", "prettyplease 0.2.32", diff --git a/nodes/parachain/src/chain_spec/peregrine/dev.rs b/nodes/parachain/src/chain_spec/peregrine/dev.rs index 66cf91ecc6..864f04638b 100644 --- a/nodes/parachain/src/chain_spec/peregrine/dev.rs +++ b/nodes/parachain/src/chain_spec/peregrine/dev.rs @@ -88,6 +88,7 @@ fn generate_genesis_state() -> RuntimeGenesisConfig { keys: [alice.clone(), bob.clone()] .map(|(acc, key)| (acc.clone(), acc, SessionKeys { aura: key })) .to_vec(), + ..Default::default() }, sudo: SudoConfig { key: Some(alice.0.clone()), diff --git a/nodes/parachain/src/chain_spec/peregrine/mod.rs b/nodes/parachain/src/chain_spec/peregrine/mod.rs index f9c37d281e..c561858b8f 100644 --- a/nodes/parachain/src/chain_spec/peregrine/mod.rs +++ b/nodes/parachain/src/chain_spec/peregrine/mod.rs @@ -24,8 +24,7 @@ pub(crate) mod new; const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; /// Specialized `ChainSpec` for the normal parachain runtime. -pub(crate) type ChainSpec = - sc_service::GenericChainSpec; +pub(crate) type ChainSpec = sc_service::GenericChainSpec; pub(crate) fn load_chain_spec(path: &str) -> Result { ChainSpec::from_json_file(path.into()) diff --git a/nodes/parachain/src/chain_spec/rilt/mod.rs b/nodes/parachain/src/chain_spec/rilt/mod.rs index b7cd755117..567e6395c7 100644 --- a/nodes/parachain/src/chain_spec/rilt/mod.rs +++ b/nodes/parachain/src/chain_spec/rilt/mod.rs @@ -23,5 +23,4 @@ pub(crate) mod new; const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; /// Specialized `ChainSpec` for the normal parachain runtime. -pub(crate) type ChainSpec = - sc_service::GenericChainSpec; +pub(crate) type ChainSpec = sc_service::GenericChainSpec; diff --git a/nodes/parachain/src/chain_spec/spiritnet/dev.rs b/nodes/parachain/src/chain_spec/spiritnet/dev.rs index 82b3f012c9..8da1a4cc07 100644 --- a/nodes/parachain/src/chain_spec/spiritnet/dev.rs +++ b/nodes/parachain/src/chain_spec/spiritnet/dev.rs @@ -40,6 +40,7 @@ pub(crate) fn generate_chain_spec(relaychain_name: &str) -> ChainSpec { let wasm_binary = WASM_BINARY.expect("Development WASM binary not available"); let genesis_state = to_value(generate_genesis_state()).expect("Creating genesis state failed"); + #[allow(deprecated)] ChainSpec::builder( wasm_binary, Extensions { @@ -81,6 +82,7 @@ fn generate_genesis_state() -> RuntimeGenesisConfig { keys: [alice.clone(), bob.clone()] .map(|(acc, key)| (acc.clone(), acc, SessionKeys { aura: key })) .to_vec(), + ..Default::default() }, parachain_info: ParachainInfoConfig { parachain_id: KILT_PARA_ID.into(), diff --git a/nodes/parachain/src/chain_spec/spiritnet/mod.rs b/nodes/parachain/src/chain_spec/spiritnet/mod.rs index 5547255425..c561858b8f 100644 --- a/nodes/parachain/src/chain_spec/spiritnet/mod.rs +++ b/nodes/parachain/src/chain_spec/spiritnet/mod.rs @@ -24,8 +24,7 @@ pub(crate) mod new; const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; /// Specialized `ChainSpec` for the normal parachain runtime. -pub(crate) type ChainSpec = - sc_service::GenericChainSpec; +pub(crate) type ChainSpec = sc_service::GenericChainSpec; pub(crate) fn load_chain_spec(path: &str) -> Result { ChainSpec::from_json_file(path.into()) diff --git a/nodes/parachain/src/chain_spec/spiritnet/new.rs b/nodes/parachain/src/chain_spec/spiritnet/new.rs index 3fdeaae22f..ca0cd7984f 100644 --- a/nodes/parachain/src/chain_spec/spiritnet/new.rs +++ b/nodes/parachain/src/chain_spec/spiritnet/new.rs @@ -32,6 +32,7 @@ pub(crate) fn generate_chain_spec() -> ChainSpec { let wasm_binary = WASM_BINARY.expect("WASM binary not available"); let genesis_state = to_value(generate_genesis_state()).expect("Creating genesis state failed"); + #[allow(deprecated)] ChainSpec::builder( wasm_binary, Extensions { diff --git a/nodes/parachain/src/cli.rs b/nodes/parachain/src/cli.rs index c2543b5c12..947880ff7f 100644 --- a/nodes/parachain/src/cli.rs +++ b/nodes/parachain/src/cli.rs @@ -16,8 +16,6 @@ // If you feel like getting in touch with us, you can do so at -use std::net::SocketAddr; - use clap::Parser; use polkadot_service::PrometheusConfig; use sc_cli::{ @@ -234,7 +232,7 @@ impl CliConfiguration for RelayChainCli { .or_else(|| self.base_path.clone().map(Into::into))) } - fn rpc_addr(&self, default_listen_port: u16) -> sc_cli::Result> { + fn rpc_addr(&self, default_listen_port: u16) -> sc_cli::Result>> { self.base.base.rpc_addr(default_listen_port) } @@ -246,16 +244,7 @@ impl CliConfiguration for RelayChainCli { self.base.base.prometheus_config(default_listen_port, chain_spec) } - fn init( - &self, - _support_url: &String, - _impl_version: &String, - _logger_hook: F, - _config: &sc_service::Configuration, - ) -> sc_cli::Result<()> - where - F: FnOnce(&mut sc_cli::LoggerBuilder, &sc_service::Configuration), - { + fn init(&self, _support_url: &String, _impl_version: &String, _logger_hook: F) -> sc_cli::Result<()> { unreachable!("PolkadotCli is never initialized; qed"); } diff --git a/nodes/parachain/src/command.rs b/nodes/parachain/src/command.rs index c77b5fd175..27df052130 100644 --- a/nodes/parachain/src/command.rs +++ b/nodes/parachain/src/command.rs @@ -167,7 +167,7 @@ pub(crate) fn run() -> sc_cli::Result<()> { (BenchmarkCmd::Pallet(cmd), ParachainRuntime::Spiritnet(_)) => { if cfg!(feature = "runtime-benchmarks") { runner.sync_run(|config| { - cmd.run::::ExtendHostFunctions>(config) + cmd.run_with_spec::, ::ExtendHostFunctions>(Some(config.chain_spec)) }) } else { Err("Benchmarking wasn't enabled when building the node. \ @@ -178,7 +178,7 @@ pub(crate) fn run() -> sc_cli::Result<()> { (BenchmarkCmd::Pallet(cmd), ParachainRuntime::Peregrine(_)) => { if cfg!(feature = "runtime-benchmarks") { runner.sync_run(|config| { - cmd.run::::ExtendHostFunctions>(config) + cmd.run_with_spec::, ::ExtendHostFunctions>(Some(config.chain_spec)) }) } else { Err("Benchmarking wasn't enabled when building the node. \ @@ -216,7 +216,7 @@ pub(crate) fn run() -> sc_cli::Result<()> { let db = partials.backend.expose_db(); let storage = partials.backend.expose_storage(); - cmd.run(config, std::sync::Arc::clone(&partials.client), db, storage) + cmd.run_with_spec(config, std::sync::Arc::clone(&partials.client), db, storage) }), #[cfg(feature = "runtime-benchmarks")] (BenchmarkCmd::Storage(cmd), ParachainRuntime::Peregrine(_)) => runner.sync_run(|config| { @@ -228,7 +228,7 @@ pub(crate) fn run() -> sc_cli::Result<()> { let db = partials.backend.expose_db(); let storage = partials.backend.expose_storage(); - cmd.run(config, std::sync::Arc::clone(&partials.client), db, storage) + cmd.run_with_spec(config, std::sync::Arc::clone(&partials.client), db, storage) }), (BenchmarkCmd::Overhead(_), _) => Err("Unsupported benchmarking command".into()), (BenchmarkCmd::Machine(cmd), _) => { @@ -250,7 +250,7 @@ pub(crate) fn run() -> sc_cli::Result<()> { let hwbench = (!cli.no_hardware_benchmarks) .then_some(config.database.path().map(|database_path| { let _ = std::fs::create_dir_all(database_path); - sc_sysinfo::gather_hwbench(Some(database_path)) + sc_sysinfo::gather_hwbench(Some(database_path) , &SUBSTRATE_REFERENCE_HARDWARE) })) .flatten(); diff --git a/nodes/parachain/src/rpc.rs b/nodes/parachain/src/rpc.rs index 47a58cd035..5653b952d6 100644 --- a/nodes/parachain/src/rpc.rs +++ b/nodes/parachain/src/rpc.rs @@ -26,7 +26,6 @@ use std::sync::Arc; use sc_client_api::AuxStore; -pub use sc_rpc_api::DenyUnsafe; use sc_transaction_pool_api::TransactionPool; use sp_api::ProvideRuntimeApi; use sp_block_builder::BlockBuilder; @@ -43,8 +42,6 @@ pub(crate) struct FullDeps { pub client: Arc, /// Transaction pool instance. pub pool: Arc

, - /// Whether to deny unsafe calls - pub deny_unsafe: DenyUnsafe, } /// Instantiate all RPC extensions. @@ -66,13 +63,9 @@ where use substrate_frame_rpc_system::{System, SystemApiServer}; let mut module = RpcExtension::new(()); - let FullDeps { - client, - pool, - deny_unsafe, - } = deps; + let FullDeps { client, pool } = deps; - module.merge(System::new(Arc::clone(&client), pool, deny_unsafe).into_rpc())?; + module.merge(System::new(Arc::clone(&client), pool).into_rpc())?; module.merge(TransactionPayment::new(client).into_rpc())?; // Extend this RPC with a custom API by using the following syntax. // `YourRpcStruct` should have a reference to a client, which is needed diff --git a/nodes/parachain/src/service.rs b/nodes/parachain/src/service.rs index 23578a4f6e..e286b829ef 100644 --- a/nodes/parachain/src/service.rs +++ b/nodes/parachain/src/service.rs @@ -153,11 +153,11 @@ where #[allow(deprecated)] let executor = ParachainExecutor::new( - config.wasm_method, - config.default_heap_pages, - config.max_runtime_instances, + config.executor.wasm_method, + config.executor.default_heap_pages, + config.executor.max_runtime_instances, None, - config.runtime_cache_size, + config.executor.runtime_cache_size, ); let (client, backend, keystore_container, task_manager) = sc_service::new_full_parts::( @@ -275,7 +275,10 @@ where let prometheus_registry = parachain_config.prometheus_registry().cloned(); let transaction_pool = Arc::clone(¶ms.transaction_pool); let import_queue_service = params.import_queue.service(); - let net_config = sc_network::config::FullNetworkConfiguration::new(¶chain_config.network); + let net_config = sc_network::config::FullNetworkConfiguration::<_, _, sc_network::NetworkWorker>::new( + ¶chain_config.network, + prometheus_registry.clone(), + ); let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) = cumulus_client_service::build_network(cumulus_client_service::BuildNetworkParams { parachain_config: ¶chain_config, @@ -291,14 +294,13 @@ where .await?; let rpc_builder = { - let client = Arc::clone(&client); - let transaction_pool = Arc::clone(&transaction_pool); + let client = client.clone(); + let transaction_pool = transaction_pool.clone(); - Box::new(move |deny_unsafe, _| { + Box::new(move |_| { let deps = crate::rpc::FullDeps { - client: Arc::clone(&client), - pool: Arc::clone(&transaction_pool), - deny_unsafe, + client: client.clone(), + pool: transaction_pool.clone(), }; crate::rpc::create_full(deps).map_err(Into::into) @@ -479,7 +481,7 @@ fn start_consensus( task_manager: &TaskManager, relay_chain_interface: Arc, transaction_pool: Arc>>, - sync_oracle: Arc>, + _sync_oracle: Arc>, keystore: KeystorePtr, relay_chain_slot_duration: Duration, para_id: ParaId, @@ -504,8 +506,6 @@ where { use cumulus_client_consensus_aura::collators::lookahead::{self as aura, Params as AuraParams}; - let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?; - let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording( task_manager.spawn_handle(), Arc::clone(&client), @@ -530,12 +530,10 @@ where para_backend: backend, relay_client: relay_chain_interface, code_hash_provider: move |block_hash| client.code_at(block_hash).ok().map(|c| ValidationCode::from(c).hash()), - sync_oracle, keystore, collator_key, para_id, overseer_handle, - slot_duration, relay_chain_slot_duration, proposer, collator_service, @@ -543,7 +541,7 @@ where reinitialize: false, }; - let fut = aura::run::(params); + let fut = aura::run::(params); task_manager .spawn_essential_handle() .spawn(TASK_MANAGER_IDENTIFIER, None, fut); From 05ef908977b900975a057328d5c7c5603a11e6cb Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Tue, 29 Apr 2025 16:16:27 +0200 Subject: [PATCH 05/36] compiling dip templates --- .../nodes/dip-consumer/src/chain_spec.rs | 3 +- .../nodes/dip-consumer/src/command.rs | 27 ++++------- dip-template/nodes/dip-consumer/src/rpc.rs | 10 +--- .../nodes/dip-consumer/src/service.rs | 48 ++++++++++--------- .../nodes/dip-provider/src/chain_spec.rs | 3 +- .../nodes/dip-provider/src/command.rs | 27 ++++------- dip-template/nodes/dip-provider/src/rpc.rs | 10 +--- .../nodes/dip-provider/src/service.rs | 48 ++++++++++--------- dip-template/runtimes/dip-consumer/src/lib.rs | 23 ++++++--- dip-template/runtimes/dip-provider/src/lib.rs | 25 ++++++---- nodes/standalone/src/chain_spec.rs | 3 +- nodes/standalone/src/rpc.rs | 11 +---- nodes/standalone/src/service.rs | 13 +++-- runtimes/kestrel/src/lib.rs | 27 +++++++---- 14 files changed, 138 insertions(+), 140 deletions(-) diff --git a/dip-template/nodes/dip-consumer/src/chain_spec.rs b/dip-template/nodes/dip-consumer/src/chain_spec.rs index cdb58e7c11..ac019d2c50 100644 --- a/dip-template/nodes/dip-consumer/src/chain_spec.rs +++ b/dip-template/nodes/dip-consumer/src/chain_spec.rs @@ -34,7 +34,7 @@ use sp_runtime::traits::{IdentifyAccount, Verify}; const PARA_ID: u32 = 2_001; -pub type ChainSpec = GenericChainSpec; +pub type ChainSpec = GenericChainSpec; type AccountPublic = ::Signer; pub(crate) fn get_from_seed(seed: &str) -> ::Public { @@ -97,6 +97,7 @@ fn testnet_genesis( .into_iter() .map(|(acc, aura)| (acc.clone(), acc, template_session_keys(aura))) .collect(), + ..Default::default() }, ..Default::default() } diff --git a/dip-template/nodes/dip-consumer/src/command.rs b/dip-template/nodes/dip-consumer/src/command.rs index f1d0da8991..c4ad8e9d7c 100644 --- a/dip-template/nodes/dip-consumer/src/command.rs +++ b/dip-template/nodes/dip-consumer/src/command.rs @@ -16,19 +16,19 @@ // If you feel like getting in touch with us, you can do so at -use std::{fs::create_dir_all, iter::once, net::SocketAddr}; +use std::{fs::create_dir_all, iter::once}; use cumulus_primitives_core::ParaId; use dip_consumer_runtime_template::Block; use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE}; use log::info; use sc_cli::{ - ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, LoggerBuilder, - NetworkParams, Result, SharedParams, SubstrateCli, + ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, NetworkParams, Result, + SharedParams, SubstrateCli, }; use sc_service::{ config::{BasePath, PrometheusConfig}, - Configuration, Role, RpcMethods, TransactionPoolOptions, + Role, RpcMethods, TransactionPoolOptions, }; use sc_sysinfo::gather_hwbench; use sc_telemetry::TelemetryEndpoints; @@ -196,7 +196,9 @@ pub fn run() -> Result<()> { match cmd { BenchmarkCmd::Pallet(cmd) => { if cfg!(feature = "runtime-benchmarks") { - runner.sync_run(|config| cmd.run::(config)) + runner.sync_run(|config| { + cmd.run_with_spec::, ()>(Some(config.chain_spec)) + }) } else { Err("Benchmarking wasn't enabled when building the node. \ You can enable it with `--features runtime-benchmarks`." @@ -235,7 +237,7 @@ pub fn run() -> Result<()> { let hwbench = (!cli.no_hardware_benchmarks) .then_some(config.database.path().map(|database_path| { let _ = create_dir_all(database_path); - gather_hwbench(Some(database_path)) + gather_hwbench(Some(database_path), &SUBSTRATE_REFERENCE_HARDWARE) })) .flatten(); @@ -310,7 +312,7 @@ impl CliConfiguration for RelayChainCli { .or_else(|| self.base_path.clone().map(Into::into))) } - fn rpc_addr(&self, default_listen_port: u16) -> Result> { + fn rpc_addr(&self, default_listen_port: u16) -> Result>> { self.base.base.rpc_addr(default_listen_port) } @@ -322,16 +324,7 @@ impl CliConfiguration for RelayChainCli { self.base.base.prometheus_config(default_listen_port, chain_spec) } - fn init( - &self, - _support_url: &String, - _impl_version: &String, - _logger_hook: F, - _config: &Configuration, - ) -> Result<()> - where - F: FnOnce(&mut LoggerBuilder, &Configuration), - { + fn init(&self, _support_url: &String, _impl_version: &String, _logger_hook: F) -> Result<()> { unreachable!("PolkadotCli is never initialized; qed"); } diff --git a/dip-template/nodes/dip-consumer/src/rpc.rs b/dip-template/nodes/dip-consumer/src/rpc.rs index 16b499c62c..6a21bc8b8d 100644 --- a/dip-template/nodes/dip-consumer/src/rpc.rs +++ b/dip-template/nodes/dip-consumer/src/rpc.rs @@ -18,7 +18,6 @@ #![warn(missing_docs)] -pub use sc_rpc_api::DenyUnsafe; use substrate_frame_rpc_system::AccountNonceApi; use std::{error::Error, sync::Arc}; @@ -37,7 +36,6 @@ pub type RpcExtension = RpcModule<()>; pub struct FullDeps { pub client: Arc, pub pool: Arc

, - pub deny_unsafe: DenyUnsafe, } pub fn create_full(deps: FullDeps) -> Result> @@ -57,13 +55,9 @@ where use substrate_frame_rpc_system::{System, SystemApiServer}; let mut module = RpcExtension::new(()); - let FullDeps { - client, - pool, - deny_unsafe, - } = deps; + let FullDeps { client, pool } = deps; - module.merge(System::new(Arc::clone(&client), pool, deny_unsafe).into_rpc())?; + module.merge(System::new(Arc::clone(&client), pool).into_rpc())?; module.merge(TransactionPayment::new(client).into_rpc())?; Ok(module) } diff --git a/dip-template/nodes/dip-consumer/src/service.rs b/dip-template/nodes/dip-consumer/src/service.rs index fdb9291009..a4972513f3 100644 --- a/dip-template/nodes/dip-consumer/src/service.rs +++ b/dip-template/nodes/dip-consumer/src/service.rs @@ -37,6 +37,7 @@ use frame_benchmarking::benchmarking::HostFunctions; use frame_benchmarking_cli::SUBSTRATE_REFERENCE_HARDWARE; use sc_client_api::Backend; use sc_consensus::{DefaultImportQueue, ImportQueue}; +#[allow(deprecated)] use sc_executor::NativeElseWasmExecutor; use sc_network::NetworkBlock; use sc_network_sync::SyncingService; @@ -67,6 +68,7 @@ impl sc_executor::NativeExecutionDispatch for ParachainNativeExecutor { } } +#[allow(deprecated)] type ParachainExecutor = NativeElseWasmExecutor; type ParachainClient = TFullClient; type ParachainBackend = TFullBackend; @@ -97,6 +99,7 @@ pub fn new_partial( }) .transpose()?; + #[allow(deprecated)] let executor = sc_service::new_native_or_wasm_executor(config); let (client, backend, keystore_container, task_manager) = new_full_parts::( @@ -175,7 +178,10 @@ async fn start_node_impl( let prometheus_registry = parachain_config.prometheus_registry().cloned(); let transaction_pool = Arc::clone(¶ms.transaction_pool); let import_queue_service = params.import_queue.service(); - let net_config = sc_network::config::FullNetworkConfiguration::new(¶chain_config.network); + let net_config = sc_network::config::FullNetworkConfiguration::<_, _, sc_network::NetworkWorker>::new( + ¶chain_config.network, + prometheus_registry.clone(), + ); let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) = build_network(BuildNetworkParams { @@ -194,22 +200,23 @@ async fn start_node_impl( if parachain_config.offchain_worker.enabled { use futures::FutureExt; + let offchain_workers = sc_offchain::OffchainWorkers::new(sc_offchain::OffchainWorkerOptions { + runtime_api_provider: client.clone(), + keystore: Some(params.keystore_container.keystore()), + offchain_db: backend.offchain_storage(), + transaction_pool: Some(OffchainTransactionPoolFactory::new(transaction_pool.clone())), + network_provider: Arc::new(network.clone()), + is_validator: parachain_config.role.is_authority(), + enable_http_requests: false, + custom_extensions: move |_| vec![], + }); + task_manager.spawn_handle().spawn( "offchain-workers-runner", "offchain-work", - sc_offchain::OffchainWorkers::new(sc_offchain::OffchainWorkerOptions { - runtime_api_provider: Arc::clone(&client), - keystore: Some(params.keystore_container.keystore()), - offchain_db: backend.offchain_storage(), - transaction_pool: Some(OffchainTransactionPoolFactory::new(Arc::clone(&transaction_pool))), - #[allow(clippy::clone_on_ref_ptr)] - network_provider: network.clone(), - is_validator: parachain_config.role.is_authority(), - enable_http_requests: false, - custom_extensions: move |_| vec![], - }) - .run(Arc::clone(&client), task_manager.spawn_handle()) - .boxed(), + offchain_workers + .run(client.clone(), task_manager.spawn_handle()) + .boxed(), ); } @@ -217,11 +224,10 @@ async fn start_node_impl( let client = Arc::clone(&client); let transaction_pool = Arc::clone(&transaction_pool); - Box::new(move |deny_unsafe, _| { + Box::new(move |_| { let deps = FullDeps { client: Arc::clone(&client), pool: Arc::clone(&transaction_pool), - deny_unsafe, }; create_full(deps).map_err(Into::into) @@ -245,7 +251,7 @@ async fn start_node_impl( if let Some(hwbench) = hwbench { print_hwbench(&hwbench); - match SUBSTRATE_REFERENCE_HARDWARE.check_hardware(&hwbench) { + match SUBSTRATE_REFERENCE_HARDWARE.check_hardware(&hwbench, false) { Err(err) if validator => { log::warn!( "⚠️ The hardware does not meet the minimal requirements {} for role 'Authority'.", @@ -357,7 +363,7 @@ fn start_consensus( task_manager: &TaskManager, relay_chain_interface: Arc, transaction_pool: Arc>, - sync_oracle: Arc>, + _sync_oracle: Arc>, keystore: KeystorePtr, relay_chain_slot_duration: Duration, para_id: ParaId, @@ -367,8 +373,6 @@ fn start_consensus( ) -> Result<(), sc_service::Error> { use cumulus_client_consensus_aura::collators::lookahead::{self as aura, Params as AuraParams}; - let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?; - let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording( task_manager.spawn_handle(), Arc::clone(&client), @@ -393,12 +397,10 @@ fn start_consensus( para_backend: backend, relay_client: relay_chain_interface, code_hash_provider: move |block_hash| client.code_at(block_hash).ok().map(|c| ValidationCode::from(c).hash()), - sync_oracle, keystore, collator_key, para_id, overseer_handle, - slot_duration, relay_chain_slot_duration, proposer, collator_service, @@ -406,7 +408,7 @@ fn start_consensus( reinitialize: false, }; - let fut = aura::run::(params); + let fut = aura::run::(params); task_manager.spawn_essential_handle().spawn("aura", None, fut); Ok(()) diff --git a/dip-template/nodes/dip-provider/src/chain_spec.rs b/dip-template/nodes/dip-provider/src/chain_spec.rs index c9cb2192ea..685f146cba 100644 --- a/dip-template/nodes/dip-provider/src/chain_spec.rs +++ b/dip-template/nodes/dip-provider/src/chain_spec.rs @@ -34,7 +34,7 @@ use sp_runtime::traits::{IdentifyAccount, Verify}; const PARA_ID: u32 = 2_000; -pub type ChainSpec = GenericChainSpec; +pub type ChainSpec = GenericChainSpec; type AccountPublic = ::Signer; pub(crate) fn get_from_seed(seed: &str) -> ::Public { @@ -97,6 +97,7 @@ fn testnet_genesis( .into_iter() .map(|(acc, aura)| (acc.clone(), acc, template_session_keys(aura))) .collect(), + ..Default::default() }, ..Default::default() } diff --git a/dip-template/nodes/dip-provider/src/command.rs b/dip-template/nodes/dip-provider/src/command.rs index c48a8fba53..9ba442716d 100644 --- a/dip-template/nodes/dip-provider/src/command.rs +++ b/dip-template/nodes/dip-provider/src/command.rs @@ -16,19 +16,19 @@ // If you feel like getting in touch with us, you can do so at -use std::{fs::create_dir_all, iter::once, net::SocketAddr}; +use std::{fs::create_dir_all, iter::once}; use cumulus_primitives_core::ParaId; use dip_provider_runtime_template::Block; use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE}; use log::info; use sc_cli::{ - ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, LoggerBuilder, - NetworkParams, Result, SharedParams, SubstrateCli, + ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, NetworkParams, Result, + SharedParams, SubstrateCli, }; use sc_service::{ config::{BasePath, PrometheusConfig}, - Configuration, Role, RpcMethods, TransactionPoolOptions, + Role, RpcMethods, TransactionPoolOptions, }; use sc_sysinfo::gather_hwbench; use sc_telemetry::TelemetryEndpoints; @@ -196,7 +196,9 @@ pub fn run() -> Result<()> { match cmd { BenchmarkCmd::Pallet(cmd) => { if cfg!(feature = "runtime-benchmarks") { - runner.sync_run(|config| cmd.run::(config)) + runner.sync_run(|config| { + cmd.run_with_spec::, ()>(Some(config.chain_spec)) + }) } else { Err("Benchmarking wasn't enabled when building the node. \ You can enable it with `--features runtime-benchmarks`." @@ -235,7 +237,7 @@ pub fn run() -> Result<()> { let hwbench = (!cli.no_hardware_benchmarks) .then_some(config.database.path().map(|database_path| { let _ = create_dir_all(database_path); - gather_hwbench(Some(database_path)) + gather_hwbench(Some(database_path), &SUBSTRATE_REFERENCE_HARDWARE) })) .flatten(); @@ -310,7 +312,7 @@ impl CliConfiguration for RelayChainCli { .or_else(|| self.base_path.clone().map(Into::into))) } - fn rpc_addr(&self, default_listen_port: u16) -> Result> { + fn rpc_addr(&self, default_listen_port: u16) -> Result>> { self.base.base.rpc_addr(default_listen_port) } @@ -322,16 +324,7 @@ impl CliConfiguration for RelayChainCli { self.base.base.prometheus_config(default_listen_port, chain_spec) } - fn init( - &self, - _support_url: &String, - _impl_version: &String, - _logger_hook: F, - _config: &Configuration, - ) -> Result<()> - where - F: FnOnce(&mut LoggerBuilder, &Configuration), - { + fn init(&self, _support_url: &String, _impl_version: &String, _logger_hook: F) -> Result<()> { unreachable!("PolkadotCli is never initialized; qed"); } diff --git a/dip-template/nodes/dip-provider/src/rpc.rs b/dip-template/nodes/dip-provider/src/rpc.rs index 9c6c6b4a40..7c6b825dc3 100644 --- a/dip-template/nodes/dip-provider/src/rpc.rs +++ b/dip-template/nodes/dip-provider/src/rpc.rs @@ -18,7 +18,6 @@ #![warn(missing_docs)] -pub use sc_rpc_api::DenyUnsafe; use substrate_frame_rpc_system::AccountNonceApi; use std::{error::Error, sync::Arc}; @@ -37,7 +36,6 @@ pub type RpcExtension = RpcModule<()>; pub struct FullDeps { pub client: Arc, pub pool: Arc

, - pub deny_unsafe: DenyUnsafe, } pub fn create_full(deps: FullDeps) -> Result> @@ -57,13 +55,9 @@ where use substrate_frame_rpc_system::{System, SystemApiServer}; let mut module = RpcExtension::new(()); - let FullDeps { - client, - pool, - deny_unsafe, - } = deps; + let FullDeps { client, pool } = deps; - module.merge(System::new(Arc::clone(&client), pool, deny_unsafe).into_rpc())?; + module.merge(System::new(Arc::clone(&client), pool).into_rpc())?; module.merge(TransactionPayment::new(client).into_rpc())?; Ok(module) } diff --git a/dip-template/nodes/dip-provider/src/service.rs b/dip-template/nodes/dip-provider/src/service.rs index 81c7d6bd0b..b93b862967 100644 --- a/dip-template/nodes/dip-provider/src/service.rs +++ b/dip-template/nodes/dip-provider/src/service.rs @@ -37,6 +37,7 @@ use frame_benchmarking::benchmarking::HostFunctions; use frame_benchmarking_cli::SUBSTRATE_REFERENCE_HARDWARE; use sc_client_api::Backend; use sc_consensus::{DefaultImportQueue, ImportQueue}; +#[allow(deprecated)] use sc_executor::NativeElseWasmExecutor; use sc_network::NetworkBlock; use sc_network_sync::SyncingService; @@ -67,6 +68,7 @@ impl sc_executor::NativeExecutionDispatch for ParachainNativeExecutor { } } +#[allow(deprecated)] type ParachainExecutor = NativeElseWasmExecutor; type ParachainClient = TFullClient; type ParachainBackend = TFullBackend; @@ -97,6 +99,7 @@ pub fn new_partial( }) .transpose()?; + #[allow(deprecated)] let executor = sc_service::new_native_or_wasm_executor(config); let (client, backend, keystore_container, task_manager) = new_full_parts::( @@ -175,7 +178,10 @@ async fn start_node_impl( let prometheus_registry = parachain_config.prometheus_registry().cloned(); let transaction_pool = Arc::clone(¶ms.transaction_pool); let import_queue_service = params.import_queue.service(); - let net_config = sc_network::config::FullNetworkConfiguration::new(¶chain_config.network); + let net_config = sc_network::config::FullNetworkConfiguration::<_, _, sc_network::NetworkWorker>::new( + ¶chain_config.network, + prometheus_registry.clone(), + ); let (network, system_rpc_tx, tx_handler_controller, start_network, sync_service) = build_network(BuildNetworkParams { @@ -194,22 +200,23 @@ async fn start_node_impl( if parachain_config.offchain_worker.enabled { use futures::FutureExt; + let offchain_workers = sc_offchain::OffchainWorkers::new(sc_offchain::OffchainWorkerOptions { + runtime_api_provider: client.clone(), + keystore: Some(params.keystore_container.keystore()), + offchain_db: backend.offchain_storage(), + transaction_pool: Some(OffchainTransactionPoolFactory::new(transaction_pool.clone())), + network_provider: Arc::new(network.clone()), + is_validator: parachain_config.role.is_authority(), + enable_http_requests: false, + custom_extensions: move |_| vec![], + }); + task_manager.spawn_handle().spawn( "offchain-workers-runner", "offchain-work", - sc_offchain::OffchainWorkers::new(sc_offchain::OffchainWorkerOptions { - runtime_api_provider: Arc::clone(&client), - keystore: Some(params.keystore_container.keystore()), - offchain_db: backend.offchain_storage(), - transaction_pool: Some(OffchainTransactionPoolFactory::new(Arc::clone(&transaction_pool))), - #[allow(clippy::clone_on_ref_ptr)] - network_provider: network.clone(), - is_validator: parachain_config.role.is_authority(), - enable_http_requests: false, - custom_extensions: move |_| vec![], - }) - .run(Arc::clone(&client), task_manager.spawn_handle()) - .boxed(), + offchain_workers + .run(Arc::clone(&client), task_manager.spawn_handle()) + .boxed(), ); } @@ -217,11 +224,10 @@ async fn start_node_impl( let client = Arc::clone(&client); let transaction_pool = Arc::clone(&transaction_pool); - Box::new(move |deny_unsafe, _| { + Box::new(move |_| { let deps = FullDeps { client: Arc::clone(&client), pool: Arc::clone(&transaction_pool), - deny_unsafe, }; create_full(deps).map_err(Into::into) @@ -245,7 +251,7 @@ async fn start_node_impl( if let Some(hwbench) = hwbench { print_hwbench(&hwbench); - match SUBSTRATE_REFERENCE_HARDWARE.check_hardware(&hwbench) { + match SUBSTRATE_REFERENCE_HARDWARE.check_hardware(&hwbench, false) { Err(err) if validator => { log::warn!( "⚠️ The hardware does not meet the minimal requirements {} for role 'Authority'.", @@ -357,7 +363,7 @@ fn start_consensus( task_manager: &TaskManager, relay_chain_interface: Arc, transaction_pool: Arc>, - sync_oracle: Arc>, + _sync_oracle: Arc>, keystore: KeystorePtr, relay_chain_slot_duration: Duration, para_id: ParaId, @@ -367,8 +373,6 @@ fn start_consensus( ) -> Result<(), sc_service::Error> { use cumulus_client_consensus_aura::collators::lookahead::{self as aura, Params as AuraParams}; - let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?; - let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording( task_manager.spawn_handle(), Arc::clone(&client), @@ -393,12 +397,10 @@ fn start_consensus( para_backend: backend, relay_client: relay_chain_interface, code_hash_provider: move |block_hash| client.code_at(block_hash).ok().map(|c| ValidationCode::from(c).hash()), - sync_oracle, keystore, collator_key, para_id, overseer_handle, - slot_duration, relay_chain_slot_duration, proposer, collator_service, @@ -406,7 +408,7 @@ fn start_consensus( reinitialize: false, }; - let fut = aura::run::(params); + let fut = aura::run::(params); task_manager.spawn_essential_handle().spawn("aura", None, fut); Ok(()) diff --git a/dip-template/runtimes/dip-consumer/src/lib.rs b/dip-template/runtimes/dip-consumer/src/lib.rs index 575a7d1e42..ddd95a24ab 100644 --- a/dip-template/runtimes/dip-consumer/src/lib.rs +++ b/dip-template/runtimes/dip-consumer/src/lib.rs @@ -44,7 +44,6 @@ use cumulus_primitives_core::{AggregateMessageOrigin, CollationInfo}; use frame_support::{ construct_runtime, dispatch::DispatchClass, - genesis_builder_helper::{build_config, create_default_config}, parameter_types, traits::{ConstU32, ConstU64, ConstU8, EnqueueWithOrigin, Everything}, weights::{ @@ -64,6 +63,7 @@ use pallet_transaction_payment::{FeeDetails, FungibleAdapter, RuntimeDispatchInf use sp_api::impl_runtime_apis; use sp_consensus_aura::SlotDuration; use sp_core::{crypto::KeyTypeId, ConstBool, ConstU128, ConstU16, OpaqueMetadata}; +use sp_genesis_builder::PresetId; use sp_inherents::{CheckInherentsResult, InherentData}; use sp_runtime::{ create_runtime_str, generic, impl_opaque_keys, @@ -231,6 +231,12 @@ impl frame_system::Config for Runtime { type SS58Prefix = ConstU16; type SystemWeightInfo = weights::frame_system::WeightInfo; type Version = Version; + + type MultiBlockMigrator = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); + type SingleBlockMigrations = (); } /// Maximum number of blocks simultaneously accepted by the Runtime, not yet @@ -408,7 +414,7 @@ impl_runtime_apis! { } fn authorities() -> Vec { - Aura::authorities().into_inner() + pallet_aura::Authorities::::get().into_inner() } } @@ -421,7 +427,7 @@ impl_runtime_apis! { Executive::execute_block(block) } - fn initialize_block(header: &::Header) { + fn initialize_block(header: &::Header) -> sp_runtime::ExtrinsicInclusionMode { Executive::initialize_block(header) } } @@ -546,13 +552,16 @@ impl_runtime_apis! { } impl sp_genesis_builder::GenesisBuilder for Runtime { + fn preset_names() -> Vec { + todo!() + } - fn create_default_config() -> Vec { - create_default_config::() + fn get_preset(_id: &Option) -> Option> { + todo!() } - fn build_state(config: Vec) -> sp_genesis_builder::Result { - build_config::(config) + fn build_state(_json: Vec) -> sp_genesis_builder::Result { + todo!() } } diff --git a/dip-template/runtimes/dip-provider/src/lib.rs b/dip-template/runtimes/dip-provider/src/lib.rs index 28e0649148..addfaa3d7f 100644 --- a/dip-template/runtimes/dip-provider/src/lib.rs +++ b/dip-template/runtimes/dip-provider/src/lib.rs @@ -43,7 +43,6 @@ use did::{DidRawOrigin, EnsureDidOrigin}; use frame_support::{ construct_runtime, dispatch::DispatchClass, - genesis_builder_helper::{build_config, create_default_config}, parameter_types, traits::{ConstU32, ConstU64, ConstU8, EnqueueWithOrigin, Everything}, weights::{ @@ -65,6 +64,7 @@ use runtime_common::dip::merkle::{CompleteMerkleProof, DidMerkleProofOf, DidMerk use sp_api::impl_runtime_apis; use sp_consensus_aura::SlotDuration; use sp_core::{crypto::KeyTypeId, ConstBool, ConstU128, ConstU16, OpaqueMetadata}; +use sp_genesis_builder::PresetId; use sp_inherents::{CheckInherentsResult, InherentData}; use sp_runtime::{ create_runtime_str, generic, impl_opaque_keys, @@ -232,6 +232,12 @@ impl frame_system::Config for Runtime { type SS58Prefix = ConstU16; type SystemWeightInfo = weights::frame_system::WeightInfo; type Version = Version; + + type MultiBlockMigrator = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); + type SingleBlockMigrations = (); } /// Maximum number of blocks simultaneously accepted by the Runtime, not yet @@ -490,7 +496,7 @@ impl_runtime_apis! { } fn authorities() -> Vec { - Aura::authorities().into_inner() + pallet_aura::Authorities::::get().into_inner() } } @@ -503,7 +509,7 @@ impl_runtime_apis! { Executive::execute_block(block) } - fn initialize_block(header: &::Header) -> ExtrinsicInclusionMode { + fn initialize_block(header: &::Header) -> sp_runtime::ExtrinsicInclusionMode { Executive::initialize_block(header) } } @@ -779,16 +785,17 @@ impl_runtime_apis! { } impl sp_genesis_builder::GenesisBuilder for Runtime { - - fn create_default_config() -> Vec { - create_default_config::() + fn preset_names() -> Vec { + todo!() } - fn build_state(config: Vec) -> sp_genesis_builder::Result { - build_config::(config) + fn get_preset(_id: &Option) -> Option> { + todo!() } - + fn build_state(_json: Vec) -> sp_genesis_builder::Result { + todo!() + } } #[cfg(feature = "runtime-benchmarks")] diff --git a/nodes/standalone/src/chain_spec.rs b/nodes/standalone/src/chain_spec.rs index f26d16a670..800bfc9da4 100644 --- a/nodes/standalone/src/chain_spec.rs +++ b/nodes/standalone/src/chain_spec.rs @@ -39,7 +39,7 @@ pub(crate) fn load_spec(id: &str) -> Result, Stri Ok(Box::new(chain_spec)) } -type ChainSpec = sc_service::GenericChainSpec; +type ChainSpec = sc_service::GenericChainSpec>; fn generate_dev_chain_spec() -> ChainSpec { let wasm_binary = WASM_BINARY.expect("Development WASM binary not available"); @@ -88,6 +88,7 @@ fn generate_genesis_state() -> RuntimeGenesisConfig { ) }) .collect::>(), + ..Default::default() }, sudo: SudoConfig { key: Some(root_key) }, ..Default::default() diff --git a/nodes/standalone/src/rpc.rs b/nodes/standalone/src/rpc.rs index 6a9b5b5bbc..bf1d9d4261 100644 --- a/nodes/standalone/src/rpc.rs +++ b/nodes/standalone/src/rpc.rs @@ -27,7 +27,6 @@ use std::sync::Arc; use jsonrpsee::RpcModule; -use sc_rpc_api::DenyUnsafe; use sc_transaction_pool_api::TransactionPool; use sp_api::ProvideRuntimeApi; use sp_block_builder::BlockBuilder; @@ -41,8 +40,6 @@ pub(crate) struct FullDeps { pub(crate) client: Arc, /// Transaction pool instance. pub(crate) pool: Arc

, - /// Whether to deny unsafe calls - pub(crate) deny_unsafe: DenyUnsafe, } /// Instantiate all full RPC extensions. @@ -59,13 +56,9 @@ where use substrate_frame_rpc_system::{System, SystemApiServer}; let mut module = RpcModule::new(()); - let FullDeps { - client, - pool, - deny_unsafe, - } = deps; + let FullDeps { client, pool } = deps; - module.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?; + module.merge(System::new(client.clone(), pool).into_rpc())?; module.merge(TransactionPayment::new(client).into_rpc())?; // Extend this RPC with a custom API by using the following syntax. diff --git a/nodes/standalone/src/service.rs b/nodes/standalone/src/service.rs index dfaf6efbf2..d3fd1d6ed0 100644 --- a/nodes/standalone/src/service.rs +++ b/nodes/standalone/src/service.rs @@ -90,11 +90,11 @@ pub(crate) fn new_partial(config: &Configuration) -> Result::new( - config.wasm_method, - config.default_heap_pages, - config.max_runtime_instances, + config.executor.wasm_method, + config.executor.default_heap_pages, + config.executor.max_runtime_instances, None, - config.runtime_cache_size, + config.executor.runtime_cache_size, ); let (client, backend, keystore_container, task_manager) = sc_service::new_full_parts::( @@ -180,7 +180,7 @@ pub(crate) fn new_full(config: Configuration) -> Result Result; + + type MultiBlockMigrator = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); + type SingleBlockMigrations = (); } /// Maximum number of nominators per validator. @@ -214,6 +219,7 @@ impl pallet_aura::Config for Runtime { type DisabledValidators = (); type MaxAuthorities = MaxAuthorities; type AllowMultipleBlocksPerSlot = ConstBool; + type SlotDuration = ConstU64<6000>; } impl pallet_grandpa::Config for Runtime { @@ -848,7 +854,7 @@ impl_runtime_apis! { Executive::execute_block(block); } - fn initialize_block(header: &::Header) { + fn initialize_block(header: &::Header) -> sp_runtime::ExtrinsicInclusionMode { Executive::initialize_block(header) } } @@ -970,7 +976,7 @@ impl_runtime_apis! { } fn authorities() -> Vec { - Aura::authorities().into_inner() + pallet_aura::Authorities::::get().into_inner() } } @@ -1224,13 +1230,16 @@ impl_runtime_apis! { } impl sp_genesis_builder::GenesisBuilder for Runtime { + fn preset_names() -> Vec { + todo!() + } - fn create_default_config() -> Vec { - create_default_config::() + fn get_preset(_id: &Option) -> Option> { + todo!() } - fn build_config(config: Vec) -> sp_genesis_builder::Result { - build_config::(config) + fn build_state(_json: Vec) -> sp_genesis_builder::Result { + todo!() } } From 024eab3714cbc54ae9e9cc759304e98135bd9b69 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Wed, 30 Apr 2025 10:54:23 +0200 Subject: [PATCH 06/36] compiling all components --- nodes/standalone/src/chain_spec.rs | 2 +- nodes/standalone/src/command.rs | 13 +++- nodes/standalone/src/service.rs | 120 +++++++++++++---------------- 3 files changed, 67 insertions(+), 68 deletions(-) diff --git a/nodes/standalone/src/chain_spec.rs b/nodes/standalone/src/chain_spec.rs index 800bfc9da4..f1b6302e52 100644 --- a/nodes/standalone/src/chain_spec.rs +++ b/nodes/standalone/src/chain_spec.rs @@ -39,7 +39,7 @@ pub(crate) fn load_spec(id: &str) -> Result, Stri Ok(Box::new(chain_spec)) } -type ChainSpec = sc_service::GenericChainSpec>; +type ChainSpec = sc_service::GenericChainSpec; fn generate_dev_chain_spec() -> ChainSpec { let wasm_binary = WASM_BINARY.expect("Development WASM binary not available"); diff --git a/nodes/standalone/src/command.rs b/nodes/standalone/src/command.rs index 71b738a81a..f88bb4759d 100644 --- a/nodes/standalone/src/command.rs +++ b/nodes/standalone/src/command.rs @@ -138,7 +138,18 @@ pub(crate) fn run() -> sc_cli::Result<()> { None => { let runner = cli.create_runner(&cli.run)?; runner.run_node_until_exit(|config| async move { - crate::service::new_full(config).map_err(sc_cli::Error::Service) + match config.network.network_backend { + sc_network::config::NetworkBackendType::Libp2p => crate::service::new_full::< + sc_network::NetworkWorker< + kestrel_runtime::opaque::Block, + ::Hash, + >, + >(config) + .map_err(sc_cli::Error::Service), + sc_network::config::NetworkBackendType::Litep2p => + crate::service::new_full::(config) + .map_err(sc_cli::Error::Service), + } }) } } diff --git a/nodes/standalone/src/service.rs b/nodes/standalone/src/service.rs index d3fd1d6ed0..321a148e85 100644 --- a/nodes/standalone/src/service.rs +++ b/nodes/standalone/src/service.rs @@ -23,47 +23,25 @@ use futures::FutureExt; use sc_client_api::{Backend, BlockBackend}; use sc_consensus_aura::{ImportQueueParams, SlotProportion, StartAuraParams}; use sc_consensus_grandpa::SharedVoterState; -use sc_executor::WasmExecutor; -use sc_service::{error::Error as ServiceError, Configuration, TaskManager, WarpSyncParams}; +use sc_service::{error::Error as ServiceError, Configuration, TaskManager, WarpSyncConfig}; use sc_telemetry::{Telemetry, TelemetryWorker}; use sc_transaction_pool_api::OffchainTransactionPoolFactory; use sp_consensus_aura::ed25519::AuthorityPair as AuraPair; -use sp_io::SubstrateHostFunctions; use std::{sync::Arc, time::Duration}; use kestrel_runtime::{self, opaque::Block, RuntimeApi}; -// Our native executor instance. -pub(crate) struct ExecutorDispatch; - -impl sc_executor::NativeExecutionDispatch for ExecutorDispatch { - type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; - - fn dispatch(method: &str, data: &[u8]) -> Option> { - kestrel_runtime::api::dispatch(method, data) - } - - fn native_version() -> sc_executor::NativeVersion { - kestrel_runtime::native_version() - } -} - -#[cfg(not(feature = "runtime-benchmarks"))] -type HostFunctions = SubstrateHostFunctions; -#[cfg(feature = "runtime-benchmarks")] -type HostFunctions = (SubstrateHostFunctions, frame_benchmarking::benchmarking::HostFunctions); - -type FullClient = sc_service::TFullClient>; +pub(crate) type FullClient = + sc_service::TFullClient>; type FullBackend = sc_service::TFullBackend; type FullSelectChain = sc_consensus::LongestChain; /// The minimum period of blocks on which justifications will be /// imported and generated. -/// Value is copied from the solo chain template: const GRANDPA_JUSTIFICATION_PERIOD: u32 = 512; -type PartialComponents = sc_service::PartialComponents< +pub type Service = sc_service::PartialComponents< FullClient, FullBackend, FullSelectChain, @@ -76,7 +54,7 @@ type PartialComponents = sc_service::PartialComponents< ), >; -pub(crate) fn new_partial(config: &Configuration) -> Result { +pub fn new_partial(config: &Configuration) -> Result { let telemetry = config .telemetry_endpoints .clone() @@ -88,15 +66,7 @@ pub(crate) fn new_partial(config: &Configuration) -> Result::new( - config.executor.wasm_method, - config.executor.default_heap_pages, - config.executor.max_runtime_instances, - None, - config.executor.runtime_cache_size, - ); - + let executor = sc_service::new_wasm_executor::(&config.executor); let (client, backend, keystore_container, task_manager) = sc_service::new_full_parts::( config, telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()), @@ -122,26 +92,29 @@ pub(crate) fn new_partial(config: &Configuration) -> Result(ImportQueueParams { block_import: grandpa_block_import.clone(), justification_import: Some(Box::new(grandpa_block_import.clone())), client: client.clone(), - create_inherent_data_providers: move |_, ()| async move { - let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + create_inherent_data_providers: move |parent_hash, _| { + let cidp_client = cidp_client.clone(); + async move { + let slot_duration = sc_consensus_aura::standalone::slot_duration_at(&*cidp_client, parent_hash)?; + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); - let slot = sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_slot_duration( - *timestamp, - slot_duration, - ); + let slot = sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_slot_duration( + *timestamp, + slot_duration, + ); - Ok((slot, timestamp)) + Ok((slot, timestamp)) + } }, spawner: &task_manager.spawn_essential_handle(), registry: config.prometheus_registry(), @@ -163,7 +136,9 @@ pub(crate) fn new_partial(config: &Configuration) -> Result Result { +pub fn new_full::Hash>>( + config: Configuration, +) -> Result { let sc_service::PartialComponents { client, backend, @@ -175,15 +150,23 @@ pub(crate) fn new_full(config: Configuration) -> Result::Hash, + N, + >::new(&config.network, config.prometheus_registry().cloned()); + let metrics = N::register_notification_metrics(config.prometheus_registry()); + + let peer_store_handle = net_config.peer_store_handle(); let grandpa_protocol_name = sc_consensus_grandpa::protocol_standard_name( &client.block_hash(0).ok().flatten().expect("Genesis block exists; qed"), &config.chain_spec, ); - - let mut net_config = sc_network::config::FullNetworkConfiguration::new(&config.network, None); - let (grandpa_protocol_config, grandpa_notification_service) = - sc_consensus_grandpa::grandpa_peers_set_config(grandpa_protocol_name.clone()); - + let (grandpa_protocol_config, grandpa_notification_service) = sc_consensus_grandpa::grandpa_peers_set_config::<_, N>( + grandpa_protocol_name.clone(), + metrics.clone(), + peer_store_handle, + ); net_config.add_notification_protocol(grandpa_protocol_config); let warp_sync = Arc::new(sc_consensus_grandpa::warp_proof::NetworkProvider::new( @@ -192,17 +175,18 @@ pub(crate) fn new_full(config: Configuration) -> Result Result Result = None; let name = config.network.node_name.clone(); @@ -245,9 +229,8 @@ pub(crate) fn new_full(config: Configuration) -> Result Result Result Result Result Date: Wed, 30 Apr 2025 13:06:15 +0200 Subject: [PATCH 07/36] tests are passing --- .../src/merkle_proofs/v0/dip_subject_state/tests.rs | 6 +++--- .../src/merkle_proofs/v0/input_common.rs | 2 +- .../src/merkle_proofs/v0/provider_state/tests.rs | 8 +++++++- .../src/verifier/parachain/v0/mock.rs | 9 +++++++-- dip-template/runtimes/dip-consumer/src/dip.rs | 8 ++++---- integration-tests/emulated/src/mock/para_chains.rs | 2 ++ nodes/parachain/src/command.rs | 4 ++-- pallets/pallet-migration/src/mock.rs | 5 +++++ runtimes/common/src/assets.rs | 1 + runtimes/common/src/constants.rs | 5 +++++ runtimes/peregrine/src/governance.rs | 2 +- runtimes/peregrine/src/tests.rs | 2 +- runtimes/peregrine/src/xcm.rs | 5 +++-- runtimes/spiritnet/src/governance.rs | 2 +- runtimes/spiritnet/src/tests.rs | 2 +- runtimes/spiritnet/src/xcm.rs | 5 +++-- 16 files changed, 47 insertions(+), 21 deletions(-) diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs index daa4f1b074..ed05091ac0 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs @@ -143,7 +143,7 @@ mod dip_revealed_details_and_verified_did_signature_freshness { details: DidPublicKeyDetails { // This key should be filtered out from the result, since it does not verify successfully for the // provided payload and signature. - key: DidVerificationKey::from(ed25519::Public([100; 32])).into(), + key: DidVerificationKey::from(ed25519::Public::from_raw([100; 32])).into(), block_number: 0u32, }, } @@ -176,7 +176,7 @@ mod dip_revealed_details_and_verified_did_signature_freshness { #[test] fn retrieve_signing_leaves_for_payload_no_key_present() { - let did_auth_key: DidVerificationKey = ed25519::Public([0u8; 32]).into(); + let did_auth_key: DidVerificationKey = ed25519::Public::from_raw([0u8; 32]).into(); let revealed_leaves: BoundedVec, ConstU32<1>> = vec![RevealedDidKey { id: 0u32, @@ -192,7 +192,7 @@ mod dip_revealed_details_and_verified_did_signature_freshness { let revealed_details: DipRevealedDetailsAndVerifiedDidSignatureFreshness<_, _, _, _, _, 1> = DipRevealedDetailsAndVerifiedDidSignatureFreshness { revealed_leaves, - signature: ed25519::Signature([100u8; 64]).into(), + signature: ed25519::Signature::from_raw([100u8; 64]).into(), }; assert_err!( revealed_details.retrieve_signing_leaves_for_payload(&().encode()), diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs index 2b1b2b8d3d..809bb494de 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs @@ -160,7 +160,7 @@ where { fn default() -> Self { Self { - signature: DidSignature::Ed25519(sp_core::ed25519::Signature([0u8; 64])), + signature: DidSignature::Ed25519(sp_core::ed25519::Signature::from_raw([0u8; 64])), valid_until: BlockNumber::default(), } } diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs index d9c121ac47..eb447321bb 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs @@ -263,6 +263,12 @@ mod dip_did_proof_with_verified_relay_state_root { type SS58Prefix = ConstU16<1>; type SystemWeightInfo = (); type Version = (); + + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } impl pallet_dip_provider::Config for TestProviderRuntime { @@ -482,7 +488,7 @@ mod dip_did_proof_with_verified_subject_commitment { id: hex!("50da6646d21f19b4d7d9f80d5beb103fbef7f4bb95eb94e0c02552175b1bff3a").into(), relationship: DidVerificationKeyRelationship::Authentication.into(), details: DidPublicKeyDetails { - key: DidVerificationKey::Ed25519(ed25519::Public(hex!( + key: DidVerificationKey::Ed25519(ed25519::Public::from_raw(hex!( "43a72e714401762df66b68c26dfbdf2682aaec9f2474eca4613e424a0fbafd3c" ))) .into(), diff --git a/crates/kilt-dip-primitives/src/verifier/parachain/v0/mock.rs b/crates/kilt-dip-primitives/src/verifier/parachain/v0/mock.rs index 6e89bc41bf..52ee6bec6e 100644 --- a/crates/kilt-dip-primitives/src/verifier/parachain/v0/mock.rs +++ b/crates/kilt-dip-primitives/src/verifier/parachain/v0/mock.rs @@ -84,6 +84,11 @@ impl frame_system::Config for TestRuntime { type SS58Prefix = ConstU16<1>; type SystemWeightInfo = (); type Version = (); + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { @@ -227,7 +232,7 @@ pub(crate) fn cross_chain_proof_with_authentication_key_and_web3_name() -> Parac id: hex!("a99e99fc7ce5529bc72a0846778d0f62137ddcbab51a1af2d3e91752962d91b4").into(), relationship: DidVerificationKeyRelationship::Authentication.into(), details: DidPublicKeyDetails { - key: DidVerificationKey::Sr25519(sr25519::Public(hex!("9cf53cf19360e5cac6055254c77d91a79701381c47e03e17c3284aa85edc851e"))).into(), + key: DidVerificationKey::Sr25519(sr25519::Public::from_raw(hex!("9cf53cf19360e5cac6055254c77d91a79701381c47e03e17c3284aa85edc851e"))).into(), block_number: 144 } }.into(), @@ -235,7 +240,7 @@ pub(crate) fn cross_chain_proof_with_authentication_key_and_web3_name() -> Parac web3_name: b"9f61d55037c5886b03966c9".to_vec().try_into().unwrap(), claimed_at: 144 }.into() - ] }, signature: TimeBoundDidSignature::new(did::DidSignature::Sr25519(sr25519::Signature(hex!("3cd5e72f04d248e5155bfdabb94c308a88368db63a8a0cafc15fb3204a709b07da028cf85bd450d9a2bdb6679f2b07ac69188101185ab3acd9f41419cbfb3c81"))), SIGNATURE_VALID_UNTIL) } + ] }, signature: TimeBoundDidSignature::new(did::DidSignature::Sr25519(sr25519::Signature::from_raw(hex!("3cd5e72f04d248e5155bfdabb94c308a88368db63a8a0cafc15fb3204a709b07da028cf85bd450d9a2bdb6679f2b07ac69188101185ab3acd9f41419cbfb3c81"))), SIGNATURE_VALID_UNTIL) } } // Aliases requires because the pallet does not expose anything public. diff --git a/dip-template/runtimes/dip-consumer/src/dip.rs b/dip-template/runtimes/dip-consumer/src/dip.rs index 3510332b49..4d323836b2 100644 --- a/dip-template/runtimes/dip-consumer/src/dip.rs +++ b/dip-template/runtimes/dip-consumer/src/dip.rs @@ -189,7 +189,7 @@ mod get_worst_case_impl { id: hex!("78e54fc7807f8c1cbd6e3dac9f3291096e7a2d8ab879934edb402f320a3d46a0").into(), relationship: DidVerificationKeyRelationship::Authentication.into(), details: DidPublicKeyDetails { - key: DidVerificationKey::Sr25519(sr25519::Public(hex!( + key: DidVerificationKey::Sr25519(sr25519::Public::from_raw(hex!( "e68a94309d0adee950b6a63a0a141a3166c15e8ef25c301531f75e25086fe05a" ))) .into(), @@ -405,7 +405,7 @@ mod get_worst_case_impl { id: hex!("106e6b1fa2d0ac6b81387fce6eb985b760f70a43a6d8e0c3f9e78c8a9d9e548e").into(), relationship: DidVerificationKeyRelationship::CapabilityDelegation.into(), details: DidPublicKeyDetails { - key: DidVerificationKey::Ed25519(ed25519::Public(hex!( + key: DidVerificationKey::Ed25519(ed25519::Public::from_raw(hex!( "39985b639d8d21629190f2a310b0e2b935894a6261e45ba58f0fbf2bd6c0c832" ))) .into(), @@ -417,7 +417,7 @@ mod get_worst_case_impl { id: hex!("5e14c0826d524d79a17cb5bc5fd61f9b2d364c9af73a5db87408f389e83afcdf").into(), relationship: DidVerificationKeyRelationship::AssertionMethod.into(), details: DidPublicKeyDetails { - key: DidVerificationKey::Ed25519(ed25519::Public(hex!( + key: DidVerificationKey::Ed25519(ed25519::Public::from_raw(hex!( "6c89991144954da6d916f88e59ce0c52bc2dcea2e7edd065e750234ebbb8d8eb" ))) .into(), @@ -482,7 +482,7 @@ mod get_worst_case_impl { .into(), ], ); - let signature = TimeBoundDidSignature::new(DidSignature::Sr25519(sr25519::Signature(hex!("1ca20d39357dba602862e6b6371887c6b1ec46c86ead3c92178cca814e3ff45f7fd6a58395d422b53b6e1d1ab7be5944dbc2c6e640ecfac67c02a218607cc881"))), 282 as BlockNumberFor); + let signature = TimeBoundDidSignature::new(DidSignature::Sr25519(sr25519::Signature::from_raw(hex!("1ca20d39357dba602862e6b6371887c6b1ec46c86ead3c92178cca814e3ff45f7fd6a58395d422b53b6e1d1ab7be5944dbc2c6e640ecfac67c02a218607cc881"))), 282 as BlockNumberFor); let proof = ParachainDipDidProof::new(provider_head_state_proof, dip_commitment_proof, dip_proof, signature); diff --git a/integration-tests/emulated/src/mock/para_chains.rs b/integration-tests/emulated/src/mock/para_chains.rs index 6d40c7a690..5ba467512a 100644 --- a/integration-tests/emulated/src/mock/para_chains.rs +++ b/integration-tests/emulated/src/mock/para_chains.rs @@ -51,6 +51,7 @@ pub mod spiritnet { )) .map(|(acc, key)| (acc.clone(), acc.clone(), SessionKeys { aura: key.clone() })) .collect::>(), + ..Default::default() }, balances: BalancesConfig { balances: accounts::init_balances() @@ -92,6 +93,7 @@ pub mod peregrine { )) .map(|(acc, key)| (acc.clone(), acc.clone(), SessionKeys { aura: key.clone() })) .collect::>(), + ..Default::default() }, balances: BalancesConfig { balances: accounts::init_balances() diff --git a/nodes/parachain/src/command.rs b/nodes/parachain/src/command.rs index 27df052130..083f7df4cb 100644 --- a/nodes/parachain/src/command.rs +++ b/nodes/parachain/src/command.rs @@ -216,7 +216,7 @@ pub(crate) fn run() -> sc_cli::Result<()> { let db = partials.backend.expose_db(); let storage = partials.backend.expose_storage(); - cmd.run_with_spec(config, std::sync::Arc::clone(&partials.client), db, storage) + cmd.run(config, std::sync::Arc::clone(&partials.client), db, storage) }), #[cfg(feature = "runtime-benchmarks")] (BenchmarkCmd::Storage(cmd), ParachainRuntime::Peregrine(_)) => runner.sync_run(|config| { @@ -228,7 +228,7 @@ pub(crate) fn run() -> sc_cli::Result<()> { let db = partials.backend.expose_db(); let storage = partials.backend.expose_storage(); - cmd.run_with_spec(config, std::sync::Arc::clone(&partials.client), db, storage) + cmd.run(config, std::sync::Arc::clone(&partials.client), db, storage) }), (BenchmarkCmd::Overhead(_), _) => Err("Unsupported benchmarking command".into()), (BenchmarkCmd::Machine(cmd), _) => { diff --git a/pallets/pallet-migration/src/mock.rs b/pallets/pallet-migration/src/mock.rs index 064446dac0..7b3211f7bf 100644 --- a/pallets/pallet-migration/src/mock.rs +++ b/pallets/pallet-migration/src/mock.rs @@ -115,6 +115,11 @@ impl frame_system::Config for Test { type SS58Prefix = SS58Prefix; type OnSetCode = (); type MaxConsumers = frame_support::traits::ConstU32<16>; + type MultiBlockMigrator = (); + type SingleBlockMigrations = (); + type PostInherents = (); + type PostTransactions = (); + type PreInherents = (); } parameter_types! { diff --git a/runtimes/common/src/assets.rs b/runtimes/common/src/assets.rs index 262d410436..18b255f01d 100644 --- a/runtimes/common/src/assets.rs +++ b/runtimes/common/src/assets.rs @@ -29,6 +29,7 @@ use public_credentials::CredentialEntry; use crate::{authorization::AuthorizationId, AccountId, Balance, BlockNumber, Hash}; #[cfg(feature = "runtime-benchmarks")] +#[allow(unused_imports)] pub use benchmarks::*; /// Thin wrapper around the `AssetDid` type, that implements the required diff --git a/runtimes/common/src/constants.rs b/runtimes/common/src/constants.rs index 120f745763..5a6356cd34 100644 --- a/runtimes/common/src/constants.rs +++ b/runtimes/common/src/constants.rs @@ -613,6 +613,11 @@ pub mod public_credentials { } } +pub mod pallet_xcmp_queue { + pub const MAX_PAGE_SIZE: u32 = 128 * 1024; + pub const MAX_ACTIVE_OUTBOUND_CHANNELS: u32 = 128; +} + #[cfg(test)] mod tests { use super::*; diff --git a/runtimes/peregrine/src/governance.rs b/runtimes/peregrine/src/governance.rs index 7b05a42f4b..d0263565c7 100644 --- a/runtimes/peregrine/src/governance.rs +++ b/runtimes/peregrine/src/governance.rs @@ -103,7 +103,7 @@ impl pallet_treasury::Config for Runtime { type SpendOrigin = frame_support::traits::NeverEnsureOrigin; #[cfg(feature = "runtime-benchmarks")] type SpendOrigin = - frame_system::EnsureWithSuccess, AccountId, ConstU128<{ Balance::max_value() }>>; + frame_system::EnsureWithSuccess, AccountId, sp_core::ConstU128<{ Balance::max_value() }>>; type Burn = Burn; type BurnDestination = (); type SpendFunds = (); diff --git a/runtimes/peregrine/src/tests.rs b/runtimes/peregrine/src/tests.rs index 6598cc36eb..292f28701b 100644 --- a/runtimes/peregrine/src/tests.rs +++ b/runtimes/peregrine/src/tests.rs @@ -195,7 +195,7 @@ fn test_derive_did_key_lookup() { RuntimeCall::DidLookup(pallet_did_lookup::Call::associate_account { req: AssociateAccountRequest::Polkadot( AccountId::new([1u8; 32]), - sp_runtime::MultiSignature::from(sp_core::ed25519::Signature([0; 64])) + sp_runtime::MultiSignature::from(sp_core::ed25519::Signature::from_raw([0; 64])) ), expiration: BlockNumber::default(), }) diff --git a/runtimes/peregrine/src/xcm.rs b/runtimes/peregrine/src/xcm.rs index f416cfc8f8..2b8f7ea169 100644 --- a/runtimes/peregrine/src/xcm.rs +++ b/runtimes/peregrine/src/xcm.rs @@ -48,6 +48,7 @@ use xcm_builder::{ use xcm_executor::{traits::WithOriginFilter, XcmExecutor}; use runtime_common::{ + constants, xcm_config::{ DenyReserveTransferToRelayChain, DenyThenTry, HeapSize, HereLocation, LocalAssetTransactor, LocationToAccountId, MaxAssetsIntoHolding, MaxInstructions, MaxStale, ParentLocation, ParentOrSiblings, @@ -316,8 +317,8 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type PriceForSiblingDelivery = NoPriceForMessageDelivery; type MaxInboundSuspended = ConstU32<1_000>; type XcmpQueue = TransformOrigin; - type MaxActiveOutboundChannels = (); - type MaxPageSize = (); + type MaxActiveOutboundChannels = ConstU32<{ constants::pallet_xcmp_queue::MAX_ACTIVE_OUTBOUND_CHANNELS }>; + type MaxPageSize = ConstU32<{ constants::pallet_xcmp_queue::MAX_PAGE_SIZE }>; } impl pallet_message_queue::Config for Runtime { diff --git a/runtimes/spiritnet/src/governance.rs b/runtimes/spiritnet/src/governance.rs index 7b05a42f4b..d0263565c7 100644 --- a/runtimes/spiritnet/src/governance.rs +++ b/runtimes/spiritnet/src/governance.rs @@ -103,7 +103,7 @@ impl pallet_treasury::Config for Runtime { type SpendOrigin = frame_support::traits::NeverEnsureOrigin; #[cfg(feature = "runtime-benchmarks")] type SpendOrigin = - frame_system::EnsureWithSuccess, AccountId, ConstU128<{ Balance::max_value() }>>; + frame_system::EnsureWithSuccess, AccountId, sp_core::ConstU128<{ Balance::max_value() }>>; type Burn = Burn; type BurnDestination = (); type SpendFunds = (); diff --git a/runtimes/spiritnet/src/tests.rs b/runtimes/spiritnet/src/tests.rs index ab6abc9023..fffce9ed3c 100644 --- a/runtimes/spiritnet/src/tests.rs +++ b/runtimes/spiritnet/src/tests.rs @@ -183,7 +183,7 @@ fn test_derive_did_key_lookup() { RuntimeCall::DidLookup(pallet_did_lookup::Call::associate_account { req: AssociateAccountRequest::Polkadot( AccountId::new([1u8; 32]), - sp_runtime::MultiSignature::from(sp_core::ed25519::Signature([0; 64])) + sp_runtime::MultiSignature::from(sp_core::ed25519::Signature::from_raw([0; 64])) ), expiration: BlockNumber::default(), }) diff --git a/runtimes/spiritnet/src/xcm.rs b/runtimes/spiritnet/src/xcm.rs index bcd55f31d1..5f3271ec60 100644 --- a/runtimes/spiritnet/src/xcm.rs +++ b/runtimes/spiritnet/src/xcm.rs @@ -48,6 +48,7 @@ use xcm_builder::{ use xcm_executor::{traits::WithOriginFilter, XcmExecutor}; use runtime_common::{ + constants, xcm_config::{ DenyReserveTransferToRelayChain, DenyThenTry, HeapSize, HereLocation, LocalAssetTransactor, LocationToAccountId, MaxAssetsIntoHolding, MaxInstructions, MaxStale, ParentLocation, ParentOrSiblings, @@ -315,8 +316,8 @@ impl cumulus_pallet_xcmp_queue::Config for Runtime { type PriceForSiblingDelivery = NoPriceForMessageDelivery; type MaxInboundSuspended = MaxInboundSuspended; type XcmpQueue = TransformOrigin; - type MaxActiveOutboundChannels = (); - type MaxPageSize = (); + type MaxActiveOutboundChannels = ConstU32<{ constants::pallet_xcmp_queue::MAX_ACTIVE_OUTBOUND_CHANNELS }>; + type MaxPageSize = ConstU32<{ constants::pallet_xcmp_queue::MAX_PAGE_SIZE }>; } impl pallet_message_queue::Config for Runtime { From e4ad3938ae1ddcd6a5111a89a68bd6efd3aa84ed Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Wed, 30 Apr 2025 13:58:32 +0200 Subject: [PATCH 08/36] first clean up --- dip-template/nodes/dip-consumer/Cargo.toml | 2 +- dip-template/runtimes/dip-consumer/src/lib.rs | 14 +++++++------- dip-template/runtimes/dip-provider/src/lib.rs | 15 +++++++-------- nodes/parachain/src/chain_spec/spiritnet/dev.rs | 1 - nodes/parachain/src/chain_spec/spiritnet/new.rs | 1 - runtimes/kestrel/src/lib.rs | 17 +++++++++-------- runtimes/peregrine/src/lib.rs | 2 -- runtimes/peregrine/src/runtime_apis.rs | 16 +++++++--------- runtimes/peregrine/src/system/mod.rs | 5 ++--- runtimes/spiritnet/src/lib.rs | 2 -- runtimes/spiritnet/src/runtime_apis.rs | 16 +++++++--------- runtimes/spiritnet/src/system/mod.rs | 4 ++-- 12 files changed, 42 insertions(+), 53 deletions(-) diff --git a/dip-template/nodes/dip-consumer/Cargo.toml b/dip-template/nodes/dip-consumer/Cargo.toml index 787f200d6d..bf6bb72310 100644 --- a/dip-template/nodes/dip-consumer/Cargo.toml +++ b/dip-template/nodes/dip-consumer/Cargo.toml @@ -49,7 +49,7 @@ sp-api = { workspace = true, features = ["std"] } sp-block-builder = { workspace = true, features = ["std"] } sp-blockchain = { workspace = true } sp-consensus-aura = { workspace = true, features = ["std"] } -sp-core = { workspace = true } +sp-core = { workspace = true, features = ["std"] } sp-keystore = { workspace = true, features = ["std"] } sp-runtime = { workspace = true, features = ["std"] } sp-timestamp = { workspace = true, features = ["std"] } diff --git a/dip-template/runtimes/dip-consumer/src/lib.rs b/dip-template/runtimes/dip-consumer/src/lib.rs index ddd95a24ab..19a7108031 100644 --- a/dip-template/runtimes/dip-consumer/src/lib.rs +++ b/dip-template/runtimes/dip-consumer/src/lib.rs @@ -44,6 +44,7 @@ use cumulus_primitives_core::{AggregateMessageOrigin, CollationInfo}; use frame_support::{ construct_runtime, dispatch::DispatchClass, + genesis_builder_helper::{build_state, get_preset}, parameter_types, traits::{ConstU32, ConstU64, ConstU8, EnqueueWithOrigin, Everything}, weights::{ @@ -231,7 +232,6 @@ impl frame_system::Config for Runtime { type SS58Prefix = ConstU16; type SystemWeightInfo = weights::frame_system::WeightInfo; type Version = Version; - type MultiBlockMigrator = (); type PostInherents = (); type PostTransactions = (); @@ -552,16 +552,16 @@ impl_runtime_apis! { } impl sp_genesis_builder::GenesisBuilder for Runtime { - fn preset_names() -> Vec { - todo!() + fn build_state(config: Vec) -> sp_genesis_builder::Result { + build_state::(config) } - fn get_preset(_id: &Option) -> Option> { - todo!() + fn get_preset(id: &Option) -> Option> { + get_preset::(id, |_| None) } - fn build_state(_json: Vec) -> sp_genesis_builder::Result { - todo!() + fn preset_names() -> Vec { + Default::default() } } diff --git a/dip-template/runtimes/dip-provider/src/lib.rs b/dip-template/runtimes/dip-provider/src/lib.rs index addfaa3d7f..c758ff9dc6 100644 --- a/dip-template/runtimes/dip-provider/src/lib.rs +++ b/dip-template/runtimes/dip-provider/src/lib.rs @@ -41,6 +41,7 @@ use cumulus_pallet_parachain_system::{ParachainSetCode, RelayNumberMonotonically use cumulus_primitives_core::{AggregateMessageOrigin, CollationInfo}; use did::{DidRawOrigin, EnsureDidOrigin}; use frame_support::{ + genesis_builder_helper::{build_state, get_preset} construct_runtime, dispatch::DispatchClass, parameter_types, @@ -232,7 +233,6 @@ impl frame_system::Config for Runtime { type SS58Prefix = ConstU16; type SystemWeightInfo = weights::frame_system::WeightInfo; type Version = Version; - type MultiBlockMigrator = (); type PostInherents = (); type PostTransactions = (); @@ -783,18 +783,17 @@ impl_runtime_apis! { DidMerkleRootGenerator::::generate_proof(&identity_details, request.version, request.keys.iter(), request.should_include_web3_name, request.accounts.iter()).map_err(runtime_api::DipProofError::MerkleProof) } } - impl sp_genesis_builder::GenesisBuilder for Runtime { - fn preset_names() -> Vec { - todo!() + fn build_state(config: Vec) -> sp_genesis_builder::Result { + build_state::(config) } - fn get_preset(_id: &Option) -> Option> { - todo!() + fn get_preset(id: &Option) -> Option> { + get_preset::(id, |_| None) } - fn build_state(_json: Vec) -> sp_genesis_builder::Result { - todo!() + fn preset_names() -> Vec { + Default::default() } } diff --git a/nodes/parachain/src/chain_spec/spiritnet/dev.rs b/nodes/parachain/src/chain_spec/spiritnet/dev.rs index 8da1a4cc07..dbc0e7277d 100644 --- a/nodes/parachain/src/chain_spec/spiritnet/dev.rs +++ b/nodes/parachain/src/chain_spec/spiritnet/dev.rs @@ -40,7 +40,6 @@ pub(crate) fn generate_chain_spec(relaychain_name: &str) -> ChainSpec { let wasm_binary = WASM_BINARY.expect("Development WASM binary not available"); let genesis_state = to_value(generate_genesis_state()).expect("Creating genesis state failed"); - #[allow(deprecated)] ChainSpec::builder( wasm_binary, Extensions { diff --git a/nodes/parachain/src/chain_spec/spiritnet/new.rs b/nodes/parachain/src/chain_spec/spiritnet/new.rs index ca0cd7984f..3fdeaae22f 100644 --- a/nodes/parachain/src/chain_spec/spiritnet/new.rs +++ b/nodes/parachain/src/chain_spec/spiritnet/new.rs @@ -32,7 +32,6 @@ pub(crate) fn generate_chain_spec() -> ChainSpec { let wasm_binary = WASM_BINARY.expect("WASM binary not available"); let genesis_state = to_value(generate_genesis_state()).expect("Creating genesis state failed"); - #[allow(deprecated)] ChainSpec::builder( wasm_binary, Extensions { diff --git a/runtimes/kestrel/src/lib.rs b/runtimes/kestrel/src/lib.rs index 1804680a8e..f104808bcf 100644 --- a/runtimes/kestrel/src/lib.rs +++ b/runtimes/kestrel/src/lib.rs @@ -30,7 +30,9 @@ include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); use frame_support::{ - construct_runtime, parameter_types, + construct_runtime, + genesis_builder_helper::{build_state, get_preset}, + parameter_types, traits::{Everything, InstanceFilter}, weights::{constants::RocksDbWeight, ConstantMultiplier, IdentityFee, Weight}, }; @@ -198,7 +200,6 @@ impl frame_system::Config for Runtime { /// The set code logic, just the default since we're not a parachain. type OnSetCode = (); type MaxConsumers = ConstU32<16>; - type MultiBlockMigrator = (); type PostInherents = (); type PostTransactions = (); @@ -1230,16 +1231,16 @@ impl_runtime_apis! { } impl sp_genesis_builder::GenesisBuilder for Runtime { - fn preset_names() -> Vec { - todo!() + fn build_state(config: Vec) -> sp_genesis_builder::Result { + build_state::(config) } - fn get_preset(_id: &Option) -> Option> { - todo!() + fn get_preset(id: &Option) -> Option> { + get_preset::(id, |_| None) } - fn build_state(_json: Vec) -> sp_genesis_builder::Result { - todo!() + fn preset_names() -> Vec { + Default::default() } } diff --git a/runtimes/peregrine/src/lib.rs b/runtimes/peregrine/src/lib.rs index 916eb8c878..e98b24bdd7 100644 --- a/runtimes/peregrine/src/lib.rs +++ b/runtimes/peregrine/src/lib.rs @@ -53,7 +53,6 @@ mod governance; mod kilt; pub use kilt::Web3Name; mod migrations; -pub use migrations::RuntimeMigrations; mod parachain; mod runtime_apis; use runtime_apis::_InternalImplRuntimeApis; @@ -198,7 +197,6 @@ pub type Executive = frame_executive::Executive< Runtime, // Executes pallet hooks in the order of definition in construct_runtime AllPalletsWithSystem, - RuntimeMigrations, >; /// Block header type as expected by this runtime. diff --git a/runtimes/peregrine/src/runtime_apis.rs b/runtimes/peregrine/src/runtime_apis.rs index b3268d08cf..b4c332c260 100644 --- a/runtimes/peregrine/src/runtime_apis.rs +++ b/runtimes/peregrine/src/runtime_apis.rs @@ -7,6 +7,7 @@ use ::xcm::{ use cumulus_primitives_aura::Slot; use cumulus_primitives_core::CollationInfo; use frame_support::{ + genesis_builder_helper::{build_state, get_preset}, pallet_prelude::{TransactionSource, TransactionValidity}, traits::{ fungibles::{metadata::Inspect as MetadataInspect, Inspect}, @@ -239,20 +240,17 @@ impl_runtime_apis! { } impl sp_genesis_builder::GenesisBuilder for Runtime { - - fn preset_names() -> Vec { - todo!() + fn build_state(config: Vec) -> sp_genesis_builder::Result { + build_state::(config) } - fn get_preset(_id: &Option) -> Option> { - todo!() + fn get_preset(id: &Option) -> Option> { + get_preset::(id, |_| None) } - - fn build_state(_json: Vec) -> sp_genesis_builder::Result { - todo!() + fn preset_names() -> Vec { + Default::default() } - } impl kilt_runtime_api_did::Did< diff --git a/runtimes/peregrine/src/system/mod.rs b/runtimes/peregrine/src/system/mod.rs index 39a7d90f15..11e7259040 100644 --- a/runtimes/peregrine/src/system/mod.rs +++ b/runtimes/peregrine/src/system/mod.rs @@ -94,12 +94,11 @@ impl frame_system::Config for Runtime { /// The set code logic type OnSetCode = cumulus_pallet_parachain_system::ParachainSetCode; type MaxConsumers = frame_support::traits::ConstU32<16>; - type MultiBlockMigrator = (); type PostInherents = (); type PostTransactions = (); type PreInherents = (); - type SingleBlockMigrations = (); + type SingleBlockMigrations = crate::migrations::RuntimeMigrations; } impl pallet_timestamp::Config for Runtime { @@ -165,7 +164,7 @@ impl pallet_aura::Config for Runtime { type DisabledValidators = (); type MaxAuthorities = ConstU32<{ constants::staking::MAX_CANDIDATES }>; type AllowMultipleBlocksPerSlot = ConstBool; - type SlotDuration = ConstU64<12_000>; + type SlotDuration = ConstU64<{ constants::SLOT_DURATION }>; } impl pallet_authorship::Config for Runtime { diff --git a/runtimes/spiritnet/src/lib.rs b/runtimes/spiritnet/src/lib.rs index 7822d21dc9..54f74a491a 100644 --- a/runtimes/spiritnet/src/lib.rs +++ b/runtimes/spiritnet/src/lib.rs @@ -52,7 +52,6 @@ mod governance; mod kilt; pub use kilt::Web3Name; mod migrations; -pub use migrations::RuntimeMigrations; mod parachain; mod runtime_apis; use runtime_apis::_InternalImplRuntimeApis; @@ -191,7 +190,6 @@ pub type Executive = frame_executive::Executive< Runtime, // Executes pallet hooks in the order of definition in construct_runtime AllPalletsWithSystem, - RuntimeMigrations, >; /// Block header type as expected by this runtime. diff --git a/runtimes/spiritnet/src/runtime_apis.rs b/runtimes/spiritnet/src/runtime_apis.rs index ab64b9ec68..68b6c23266 100644 --- a/runtimes/spiritnet/src/runtime_apis.rs +++ b/runtimes/spiritnet/src/runtime_apis.rs @@ -7,6 +7,7 @@ use ::xcm::{ use cumulus_primitives_aura::Slot; use cumulus_primitives_core::CollationInfo; use frame_support::{ + genesis_builder_helper::{build_state, get_preset}, pallet_prelude::{TransactionSource, TransactionValidity}, traits::PalletInfoAccess, weights::Weight, @@ -221,20 +222,17 @@ impl_runtime_apis! { } impl sp_genesis_builder::GenesisBuilder for Runtime { - - fn preset_names() -> Vec { - todo!() + fn build_state(config: Vec) -> sp_genesis_builder::Result { + build_state::(config) } - fn get_preset(_id: &Option) -> Option> { - todo!() + fn get_preset(id: &Option) -> Option> { + get_preset::(id, |_| None) } - - fn build_state(_json: Vec) -> sp_genesis_builder::Result { - todo!() + fn preset_names() -> Vec { + Default::default() } - } impl kilt_runtime_api_did::Did< diff --git a/runtimes/spiritnet/src/system/mod.rs b/runtimes/spiritnet/src/system/mod.rs index d1f0072e69..5ced6d6cc0 100644 --- a/runtimes/spiritnet/src/system/mod.rs +++ b/runtimes/spiritnet/src/system/mod.rs @@ -99,7 +99,7 @@ impl frame_system::Config for Runtime { type PostInherents = (); type PostTransactions = (); type PreInherents = (); - type SingleBlockMigrations = (); + type SingleBlockMigrations = crate::migrations::RuntimeMigrations; } impl pallet_timestamp::Config for Runtime { @@ -165,7 +165,7 @@ impl pallet_aura::Config for Runtime { type DisabledValidators = (); type MaxAuthorities = ConstU32<{ constants::staking::MAX_CANDIDATES }>; type AllowMultipleBlocksPerSlot = ConstBool; - type SlotDuration = ConstU64<12_000>; + type SlotDuration = ConstU64<{ constants::SLOT_DURATION }>; } impl pallet_authorship::Config for Runtime { From e34baf6a564402ca74387f79c6f257b9bdc2864e Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Wed, 30 Apr 2025 14:31:38 +0200 Subject: [PATCH 09/36] clean up --- runtimes/peregrine/src/runtime_apis.rs | 4 ++-- runtimes/peregrine/src/xcm.rs | 2 +- runtimes/spiritnet/src/runtime_apis.rs | 4 ++-- runtimes/spiritnet/src/system/mod.rs | 1 - runtimes/spiritnet/src/xcm.rs | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/runtimes/peregrine/src/runtime_apis.rs b/runtimes/peregrine/src/runtime_apis.rs index b4c332c260..add413803f 100644 --- a/runtimes/peregrine/src/runtime_apis.rs +++ b/runtimes/peregrine/src/runtime_apis.rs @@ -98,8 +98,8 @@ impl_runtime_apis! { Executive::execute_block(block); } - fn initialize_block(_header: &::Header) -> sp_runtime::ExtrinsicInclusionMode { - todo!() + fn initialize_block(header: &::Header) -> sp_runtime::ExtrinsicInclusionMode { + Executive::initialize_block(header) } } diff --git a/runtimes/peregrine/src/xcm.rs b/runtimes/peregrine/src/xcm.rs index 2b8f7ea169..956974d619 100644 --- a/runtimes/peregrine/src/xcm.rs +++ b/runtimes/peregrine/src/xcm.rs @@ -258,7 +258,7 @@ impl xcm_executor::Config for XcmConfig { type HrmpChannelAcceptedHandler = (); type HrmpChannelClosingHandler = (); type HrmpNewChannelOpenRequestHandler = (); - type XcmRecorder = (); + type XcmRecorder = PolkadotXcm; } /// Allows only local `Signed` origins to be converted into `MultiLocation`s by diff --git a/runtimes/spiritnet/src/runtime_apis.rs b/runtimes/spiritnet/src/runtime_apis.rs index 68b6c23266..b1f1608761 100644 --- a/runtimes/spiritnet/src/runtime_apis.rs +++ b/runtimes/spiritnet/src/runtime_apis.rs @@ -80,8 +80,8 @@ impl_runtime_apis! { Executive::execute_block(block); } - fn initialize_block(_header: &::Header) -> sp_runtime::ExtrinsicInclusionMode { - todo!() + fn initialize_block(header: &::Header) -> sp_runtime::ExtrinsicInclusionMode { + Executive::initialize_block(header) } } diff --git a/runtimes/spiritnet/src/system/mod.rs b/runtimes/spiritnet/src/system/mod.rs index 5ced6d6cc0..9554a3fc69 100644 --- a/runtimes/spiritnet/src/system/mod.rs +++ b/runtimes/spiritnet/src/system/mod.rs @@ -94,7 +94,6 @@ impl frame_system::Config for Runtime { /// The set code logic type OnSetCode = cumulus_pallet_parachain_system::ParachainSetCode; type MaxConsumers = frame_support::traits::ConstU32<16>; - type MultiBlockMigrator = (); type PostInherents = (); type PostTransactions = (); diff --git a/runtimes/spiritnet/src/xcm.rs b/runtimes/spiritnet/src/xcm.rs index 5f3271ec60..4173243b2e 100644 --- a/runtimes/spiritnet/src/xcm.rs +++ b/runtimes/spiritnet/src/xcm.rs @@ -253,7 +253,7 @@ impl xcm_executor::Config for XcmConfig { type HrmpChannelAcceptedHandler = (); type HrmpChannelClosingHandler = (); type HrmpNewChannelOpenRequestHandler = (); - type XcmRecorder = (); + type XcmRecorder = PolkadotXcm; } /// Allows only local `Signed` origins to be converted into `MultiLocation`s by From 0ac191827511a40e0dc7e8bcf0aee1135af6bcaf Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Wed, 30 Apr 2025 15:23:31 +0200 Subject: [PATCH 10/36] test passing with all features and all targets --- dip-template/runtimes/dip-provider/src/lib.rs | 2 +- pallets/pallet-dip-consumer/src/mock.rs | 2 ++ .../pallet-dip-consumer/src/tests/dispatch_as.rs | 14 +++++++------- runtimes/peregrine/src/runtime_apis.rs | 4 ++-- runtimes/spiritnet/src/runtime_apis.rs | 4 ++-- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/dip-template/runtimes/dip-provider/src/lib.rs b/dip-template/runtimes/dip-provider/src/lib.rs index c758ff9dc6..adbc60e9f4 100644 --- a/dip-template/runtimes/dip-provider/src/lib.rs +++ b/dip-template/runtimes/dip-provider/src/lib.rs @@ -41,9 +41,9 @@ use cumulus_pallet_parachain_system::{ParachainSetCode, RelayNumberMonotonically use cumulus_primitives_core::{AggregateMessageOrigin, CollationInfo}; use did::{DidRawOrigin, EnsureDidOrigin}; use frame_support::{ - genesis_builder_helper::{build_state, get_preset} construct_runtime, dispatch::DispatchClass, + genesis_builder_helper::{build_state, get_preset}, parameter_types, traits::{ConstU32, ConstU64, ConstU8, EnqueueWithOrigin, Everything}, weights::{ diff --git a/pallets/pallet-dip-consumer/src/mock.rs b/pallets/pallet-dip-consumer/src/mock.rs index e12c733646..159f8aa67c 100644 --- a/pallets/pallet-dip-consumer/src/mock.rs +++ b/pallets/pallet-dip-consumer/src/mock.rs @@ -198,6 +198,8 @@ impl ExtBuilder { for (subject, details) in self.1 { IdentityEntries::::insert(subject, details) } + + System::set_block_number(System::block_number() + 1); }); ext diff --git a/pallets/pallet-dip-consumer/src/tests/dispatch_as.rs b/pallets/pallet-dip-consumer/src/tests/dispatch_as.rs index 4a1851cdf0..e601fb7c4e 100644 --- a/pallets/pallet-dip-consumer/src/tests/dispatch_as.rs +++ b/pallets/pallet-dip-consumer/src/tests/dispatch_as.rs @@ -20,7 +20,7 @@ use frame_support::{assert_noop, assert_ok}; use frame_system::RawOrigin; use crate::{ - mock::{ExtBuilder, System, TestRuntime, SUBJECT, SUBMITTER}, + mock::{ExtBuilder, TestRuntime, SUBJECT, SUBMITTER}, Error, IdentityEntries, Pallet, }; @@ -30,8 +30,6 @@ fn dispatch_as_successful_no_details() { .with_balances(vec![(SUBMITTER, 10_000)]) .build() .execute_with(|| { - // Needed to test event generation. See for more context. - frame_system::Pallet::::set_block_number(1); assert!(IdentityEntries::::get(SUBJECT).is_none()); assert_ok!(Pallet::::dispatch_as( RawOrigin::Signed(SUBMITTER).into(), @@ -39,7 +37,9 @@ fn dispatch_as_successful_no_details() { true, Box::new(pallet_did_lookup::Call::associate_sender {}.into()) )); - System::assert_last_event( + + #[cfg(not(feature = "runtime-benchmarks"))] + crate::mock::System::assert_last_event( pallet_did_lookup::Event::::AssociationEstablished(SUBMITTER.into(), SUBJECT).into(), ); assert_eq!(IdentityEntries::::get(SUBJECT), Some(0)); @@ -53,15 +53,15 @@ fn dispatch_as_successful_existing_details() { .with_identity_details(vec![(SUBJECT, 100)]) .build() .execute_with(|| { - // Needed to test event generation. See for more context. - frame_system::Pallet::::set_block_number(1); assert_ok!(Pallet::::dispatch_as( RawOrigin::Signed(SUBMITTER).into(), SUBJECT, true, Box::new(pallet_did_lookup::Call::associate_sender {}.into()) )); - System::assert_last_event( + + #[cfg(not(feature = "runtime-benchmarks"))] + crate::mock::System::assert_last_event( pallet_did_lookup::Event::::AssociationEstablished(SUBMITTER.into(), SUBJECT).into(), ); // Details have been bumped up by the proof verifier, and correctly stored in diff --git a/runtimes/peregrine/src/runtime_apis.rs b/runtimes/peregrine/src/runtime_apis.rs index add413803f..acf2de2bfa 100644 --- a/runtimes/peregrine/src/runtime_apis.rs +++ b/runtimes/peregrine/src/runtime_apis.rs @@ -241,11 +241,11 @@ impl_runtime_apis! { impl sp_genesis_builder::GenesisBuilder for Runtime { fn build_state(config: Vec) -> sp_genesis_builder::Result { - build_state::(config) + build_state::(config) } fn get_preset(id: &Option) -> Option> { - get_preset::(id, |_| None) + get_preset::(id, |_| None) } fn preset_names() -> Vec { diff --git a/runtimes/spiritnet/src/runtime_apis.rs b/runtimes/spiritnet/src/runtime_apis.rs index b1f1608761..9cb3f58bfd 100644 --- a/runtimes/spiritnet/src/runtime_apis.rs +++ b/runtimes/spiritnet/src/runtime_apis.rs @@ -223,11 +223,11 @@ impl_runtime_apis! { impl sp_genesis_builder::GenesisBuilder for Runtime { fn build_state(config: Vec) -> sp_genesis_builder::Result { - build_state::(config) + build_state::(config) } fn get_preset(id: &Option) -> Option> { - get_preset::(id, |_| None) + get_preset::(id, |_| None) } fn preset_names() -> Vec { From 4aaa34c176ac0e01d4a13d248386c08fecafc34f Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Wed, 30 Apr 2025 16:23:39 +0200 Subject: [PATCH 11/36] add missing migrations --- pallets/pallet-bonded-coins/src/migrations/v1.rs | 4 ++-- runtimes/peregrine/src/migrations/mod.rs | 7 ++++++- runtimes/spiritnet/src/migrations/mod.rs | 7 ++++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/pallets/pallet-bonded-coins/src/migrations/v1.rs b/pallets/pallet-bonded-coins/src/migrations/v1.rs index 4f56bf7540..72c7fc6cd5 100644 --- a/pallets/pallet-bonded-coins/src/migrations/v1.rs +++ b/pallets/pallet-bonded-coins/src/migrations/v1.rs @@ -1,6 +1,6 @@ use frame_support::{ pallet_prelude::*, - traits::{Get, OnRuntimeUpgrade}, + traits::{Get, UncheckedOnRuntimeUpgrade}, }; use sp_runtime::traits::Saturating; @@ -98,7 +98,7 @@ fn v0_to_v1(old_value: v0::PoolDetailsOf) -> crate::PoolDetailsOf< pub struct InnerMigrateV0ToV1(core::marker::PhantomData); -impl OnRuntimeUpgrade for InnerMigrateV0ToV1 +impl UncheckedOnRuntimeUpgrade for InnerMigrateV0ToV1 where T::PoolId: sp_std::fmt::Debug, { diff --git a/runtimes/peregrine/src/migrations/mod.rs b/runtimes/peregrine/src/migrations/mod.rs index 76762e1c08..9243c08bcd 100644 --- a/runtimes/peregrine/src/migrations/mod.rs +++ b/runtimes/peregrine/src/migrations/mod.rs @@ -19,7 +19,7 @@ use frame_support::parameter_types; use runtime_common::constants; -use crate::{weights, Balances, Runtime, RuntimeEvent}; +use crate::{weights, Balances, ParachainSystem, Runtime, RuntimeEvent}; parameter_types! { pub const DmpPalletName: &'static str = "DmpQueue"; @@ -27,12 +27,17 @@ parameter_types! { pub const UniqueLinking: &'static str = "UniqueLinking"; } +impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime { + type ChannelList = ParachainSystem; +} + pub type RuntimeMigrations = ( pallet_xcm::migration::MigrateToLatestXcmVersion, frame_support::migrations::RemovePallet::DbWeight>, frame_support::migrations::RemovePallet::DbWeight>, frame_support::migrations::RemovePallet::DbWeight>, pallet_bonded_coins::migrations::v1::MigrateV0ToV1, + cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5, ); impl pallet_migration::Config for Runtime { diff --git a/runtimes/spiritnet/src/migrations/mod.rs b/runtimes/spiritnet/src/migrations/mod.rs index f1e8d2eb79..fd2b305179 100644 --- a/runtimes/spiritnet/src/migrations/mod.rs +++ b/runtimes/spiritnet/src/migrations/mod.rs @@ -19,15 +19,20 @@ use frame_support::parameter_types; use runtime_common::constants; -use crate::{weights, Balances, Runtime, RuntimeEvent}; +use crate::{weights, Balances, ParachainSystem, Runtime, RuntimeEvent}; parameter_types! { pub const DmpPalletName: &'static str = "DmpQueue"; } +impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime { + type ChannelList = ParachainSystem; +} + pub type RuntimeMigrations = ( pallet_xcm::migration::MigrateToLatestXcmVersion, frame_support::migrations::RemovePallet::DbWeight>, + cumulus_pallet_xcmp_queue::migration::v5::MigrateV4ToV5, ); impl pallet_migration::Config for Runtime { From 4ae02179d01706dac4d06173d389a84daaf75cec Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Wed, 30 Apr 2025 16:25:57 +0200 Subject: [PATCH 12/36] add benchmarks --- runtimes/peregrine/src/lib.rs | 1 + runtimes/peregrine/src/system/mod.rs | 2 +- runtimes/spiritnet/src/lib.rs | 1 + runtimes/spiritnet/src/system/mod.rs | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/runtimes/peregrine/src/lib.rs b/runtimes/peregrine/src/lib.rs index e98b24bdd7..005750eb7d 100644 --- a/runtimes/peregrine/src/lib.rs +++ b/runtimes/peregrine/src/lib.rs @@ -197,6 +197,7 @@ pub type Executive = frame_executive::Executive< Runtime, // Executes pallet hooks in the order of definition in construct_runtime AllPalletsWithSystem, + crate::migrations::RuntimeMigrations, >; /// Block header type as expected by this runtime. diff --git a/runtimes/peregrine/src/system/mod.rs b/runtimes/peregrine/src/system/mod.rs index d1a3191164..4fbc0aa846 100644 --- a/runtimes/peregrine/src/system/mod.rs +++ b/runtimes/peregrine/src/system/mod.rs @@ -98,7 +98,7 @@ impl frame_system::Config for Runtime { type PostInherents = (); type PostTransactions = (); type PreInherents = (); - type SingleBlockMigrations = crate::migrations::RuntimeMigrations; + type SingleBlockMigrations = (); } impl pallet_timestamp::Config for Runtime { diff --git a/runtimes/spiritnet/src/lib.rs b/runtimes/spiritnet/src/lib.rs index 54f74a491a..cef77ad823 100644 --- a/runtimes/spiritnet/src/lib.rs +++ b/runtimes/spiritnet/src/lib.rs @@ -190,6 +190,7 @@ pub type Executive = frame_executive::Executive< Runtime, // Executes pallet hooks in the order of definition in construct_runtime AllPalletsWithSystem, + crate::migrations::RuntimeMigrations, >; /// Block header type as expected by this runtime. diff --git a/runtimes/spiritnet/src/system/mod.rs b/runtimes/spiritnet/src/system/mod.rs index bdde71ebf6..08b42eb786 100644 --- a/runtimes/spiritnet/src/system/mod.rs +++ b/runtimes/spiritnet/src/system/mod.rs @@ -98,7 +98,7 @@ impl frame_system::Config for Runtime { type PostInherents = (); type PostTransactions = (); type PreInherents = (); - type SingleBlockMigrations = crate::migrations::RuntimeMigrations; + type SingleBlockMigrations = (); } impl pallet_timestamp::Config for Runtime { From 6908b8a04a42ec91cd181b9899114681b5a11100 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Wed, 30 Apr 2025 16:45:54 +0200 Subject: [PATCH 13/36] clippy --- pallets/did/src/utils.rs | 2 +- .../src/xcm/transfer/xcm_fee_asset/mod.rs | 8 ++++---- runtimes/peregrine/src/runtime_apis.rs | 2 +- runtimes/spiritnet/src/runtime_apis.rs | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pallets/did/src/utils.rs b/pallets/did/src/utils.rs index cf29afbb0c..57cebd40bf 100644 --- a/pallets/did/src/utils.rs +++ b/pallets/did/src/utils.rs @@ -35,7 +35,7 @@ pub fn calculate_key_id(key: &DidPublicKey>) -> KeyIdO /// Verifies that an input string contains only traditional (non-extended) ASCII /// characters. pub(crate) fn is_valid_ascii_string(input: &str) -> bool { - input.chars().all(|c| c.is_ascii()) + input.is_ascii() } /// Verifies that an input is a valid URI according to W3C RFC3986. diff --git a/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/mod.rs b/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/mod.rs index 3429a857a0..60827af8c1 100644 --- a/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/mod.rs +++ b/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/mod.rs @@ -49,9 +49,9 @@ where }; // 2. We only trust the EXACT configured remote location (no parent is allowed). - let Ok(stored_remote_reserve_location_v4): Result = switch_pair.remote_reserve_location.clone().try_into().map_err(|e| { + let Ok(stored_remote_reserve_location_v4): Result = switch_pair.remote_reserve_location.clone().try_into().inspect_err(|e| { log::error!(target: LOG_TARGET, "Failed to convert stored remote reserve location {:?} into v4 xcm version with error {:?}.", switch_pair.remote_reserve_location, e); - e + *e }) else { return false; }; if stored_remote_reserve_location_v4 != *b { log::trace!( @@ -64,9 +64,9 @@ where } // 3. Verify the asset ID matches the configured XCM fee asset ID. - let Ok(stored_remote_asset_fee): Result = switch_pair.remote_xcm_fee.clone().try_into().map_err(|e| { + let Ok(stored_remote_asset_fee): Result = switch_pair.remote_xcm_fee.clone().try_into().inspect_err(|e| { log::error!(target: LOG_TARGET, "Failed to convert stored remote asset fee {:?} into v4 xcm version with error {:?}.", switch_pair.remote_xcm_fee, e); - e + *e }) else { return false; }; a.id == stored_remote_asset_fee.id diff --git a/runtimes/peregrine/src/runtime_apis.rs b/runtimes/peregrine/src/runtime_apis.rs index 84398a6473..9133b9bb0f 100644 --- a/runtimes/peregrine/src/runtime_apis.rs +++ b/runtimes/peregrine/src/runtime_apis.rs @@ -249,7 +249,7 @@ impl_runtime_apis! { } fn preset_names() -> Vec { - Default::default() + vec![PresetId::from("peregrine_kilt_paseo"), PresetId::from("peregrine_stg_kilt"), PresetId::from("rilt_peregrine_new")] } } diff --git a/runtimes/spiritnet/src/runtime_apis.rs b/runtimes/spiritnet/src/runtime_apis.rs index 9cb3f58bfd..3a63be61a8 100644 --- a/runtimes/spiritnet/src/runtime_apis.rs +++ b/runtimes/spiritnet/src/runtime_apis.rs @@ -231,7 +231,7 @@ impl_runtime_apis! { } fn preset_names() -> Vec { - Default::default() + vec![PresetId::from("kilt")] } } From f0920874df5472264cbafcf46939e47f6c1878b8 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Wed, 30 Apr 2025 16:55:33 +0200 Subject: [PATCH 14/36] clippy --- dip-template/pallets/pallet-postit/src/lib.rs | 2 ++ pallets/attestation/src/lib.rs | 2 ++ pallets/ctype/src/lib.rs | 2 ++ pallets/delegation/src/lib.rs | 2 ++ pallets/did/src/lib.rs | 2 ++ pallets/pallet-asset-switch/src/lib.rs | 2 ++ .../src/xcm/trade/switch_pair_remote_asset/mod.rs | 8 ++++---- .../src/xcm/trade/xcm_fee_asset/mod.rs | 4 ++-- .../src/xcm/transfer/switch_pair_remote_asset/mod.rs | 4 ++-- pallets/pallet-bonded-coins/src/lib.rs | 2 ++ pallets/pallet-configuration/src/lib.rs | 2 ++ pallets/pallet-deposit-storage/src/lib.rs | 2 ++ pallets/pallet-did-lookup/src/lib.rs | 2 ++ pallets/pallet-dip-consumer/src/lib.rs | 2 ++ pallets/pallet-dip-provider/src/lib.rs | 2 ++ pallets/pallet-inflation/src/lib.rs | 2 ++ pallets/pallet-migration/src/lib.rs | 2 ++ pallets/pallet-relay-store/src/lib.rs | 2 ++ pallets/pallet-web3-names/src/lib.rs | 2 ++ pallets/parachain-staking/src/lib.rs | 2 ++ pallets/public-credentials/src/lib.rs | 2 ++ .../common/src/dip/merkle/v0/tests/generate_proof.rs | 12 ++++++------ runtimes/kestrel/src/lib.rs | 3 +-- runtimes/peregrine/src/kilt/did.rs | 3 +-- runtimes/peregrine/src/runtime_apis.rs | 2 +- runtimes/spiritnet/src/kilt/did.rs | 3 +-- runtimes/spiritnet/src/runtime_apis.rs | 2 +- 27 files changed, 55 insertions(+), 22 deletions(-) diff --git a/dip-template/pallets/pallet-postit/src/lib.rs b/dip-template/pallets/pallet-postit/src/lib.rs index 0b38604bde..aa6705c8ed 100644 --- a/dip-template/pallets/pallet-postit/src/lib.rs +++ b/dip-template/pallets/pallet-postit/src/lib.rs @@ -35,6 +35,8 @@ pub use pallet::*; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; diff --git a/pallets/attestation/src/lib.rs b/pallets/attestation/src/lib.rs index f0f7ff3d8e..d408afb2f0 100644 --- a/pallets/attestation/src/lib.rs +++ b/pallets/attestation/src/lib.rs @@ -95,6 +95,8 @@ pub use crate::{ // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; diff --git a/pallets/ctype/src/lib.rs b/pallets/ctype/src/lib.rs index 3ede804d60..338654715c 100644 --- a/pallets/ctype/src/lib.rs +++ b/pallets/ctype/src/lib.rs @@ -69,6 +69,8 @@ pub use crate::{default_weights::WeightInfo, pallet::*}; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; use frame_support::{ diff --git a/pallets/delegation/src/lib.rs b/pallets/delegation/src/lib.rs index 1fee73b264..03116fb697 100644 --- a/pallets/delegation/src/lib.rs +++ b/pallets/delegation/src/lib.rs @@ -99,6 +99,8 @@ use sp_std::{marker::PhantomData, vec::Vec}; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; diff --git a/pallets/did/src/lib.rs b/pallets/did/src/lib.rs index 7e190a53d4..b2f1829d9d 100644 --- a/pallets/did/src/lib.rs +++ b/pallets/did/src/lib.rs @@ -147,6 +147,8 @@ use frame_system::RawOrigin; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; use did_details::DidCreationDetails; diff --git a/pallets/pallet-asset-switch/src/lib.rs b/pallets/pallet-asset-switch/src/lib.rs index 8bc157375c..38a9cd0e0d 100644 --- a/pallets/pallet-asset-switch/src/lib.rs +++ b/pallets/pallet-asset-switch/src/lib.rs @@ -72,6 +72,8 @@ const LOG_TARGET: &str = "runtime::pallet-asset-switch"; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use crate::{ switch::{NewSwitchPairInfo, SwitchPairInfo, SwitchPairInfoV4, SwitchPairStatus, UnconfirmedSwitchInfo}, diff --git a/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mod.rs b/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mod.rs index 245b6d5440..e1330f1a97 100644 --- a/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mod.rs +++ b/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mod.rs @@ -224,9 +224,9 @@ where // We don't care if the pool is enabled, since we're sending all non-refunded // weight to the configured destination account (e.g., treasury). if self.remaining_fungible_balance > Zero::zero() { - let Ok(remaining_balance_as_local_currency) = LocalCurrencyBalanceOf::::try_from(self.remaining_fungible_balance).map_err(|e| { + let Ok(remaining_balance_as_local_currency) = LocalCurrencyBalanceOf::::try_from(self.remaining_fungible_balance).inspect_err(|e| { log::error!(target: LOG_TARGET, "Failed to convert remaining balance {:?} to local currency balance", self.remaining_fungible_balance); - e + *e }) else { return; }; // No error should ever be thrown from inside this block. @@ -235,9 +235,9 @@ where &FeeDestinationAccount::get(), remaining_balance_as_local_currency, Preservation::Preserve, - ).map_err(|e| { + ).inspect_err(|e| { log::error!(target: LOG_TARGET, "Failed to transfer unused balance {:?} from switch pair pool account {:?} to specified account {:?}", remaining_balance_as_local_currency, switch_pair.pool_account, FeeDestinationAccount::get()); - e + *e }); debug_assert!( diff --git a/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mod.rs b/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mod.rs index 8b48335d1d..e86c05ce50 100644 --- a/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mod.rs +++ b/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mod.rs @@ -151,14 +151,14 @@ where .remote_xcm_fee .clone() .try_into() - .map_err(|e| { + .inspect_err(|e| { log::error!( target: LOG_TARGET, "Failed to convert stored asset ID {:?} into v4 AssetId with error {:?}", switch_pair.remote_xcm_fee, e ); - e + *e }) .ok()?; // Double check the store asset fungibility type, in case it changes between diff --git a/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/mod.rs b/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/mod.rs index a7de6e0302..e928032883 100644 --- a/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/mod.rs +++ b/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/mod.rs @@ -49,9 +49,9 @@ where }; // 2. We only trust the EXACT configured remote location (no parent is allowed). - let Ok(stored_remote_reserve_location_v4): Result = switch_pair.remote_reserve_location.clone().try_into().map_err(|e| { + let Ok(stored_remote_reserve_location_v4): Result = switch_pair.remote_reserve_location.clone().try_into().inspect_err(|e| { log::error!(target: LOG_TARGET, "Failed to convert stored remote reserve location {:?} into v4 xcm version with error {:?}.", switch_pair.remote_reserve_location, e); - e + *e }) else { return false; }; if stored_remote_reserve_location_v4 != *b { log::trace!( diff --git a/pallets/pallet-bonded-coins/src/lib.rs b/pallets/pallet-bonded-coins/src/lib.rs index 6fac11d58c..441aa4ed30 100644 --- a/pallets/pallet-bonded-coins/src/lib.rs +++ b/pallets/pallet-bonded-coins/src/lib.rs @@ -54,6 +54,8 @@ pub use default_weights::WeightInfo; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use frame_support::{ diff --git a/pallets/pallet-configuration/src/lib.rs b/pallets/pallet-configuration/src/lib.rs index ab5f22a5e4..0bfdafad0a 100644 --- a/pallets/pallet-configuration/src/lib.rs +++ b/pallets/pallet-configuration/src/lib.rs @@ -54,6 +54,8 @@ pub use crate::{configuration::Configuration, default_weights::WeightInfo, palle // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; diff --git a/pallets/pallet-deposit-storage/src/lib.rs b/pallets/pallet-deposit-storage/src/lib.rs index 650dbb4a4c..ceaa997afd 100644 --- a/pallets/pallet-deposit-storage/src/lib.rs +++ b/pallets/pallet-deposit-storage/src/lib.rs @@ -59,6 +59,8 @@ const LOG_TARGET: &str = "runtime::pallet_deposit_storage"; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use crate::{ default_weights::WeightInfo, diff --git a/pallets/pallet-did-lookup/src/lib.rs b/pallets/pallet-did-lookup/src/lib.rs index 6390d4a60e..21131be59d 100644 --- a/pallets/pallet-did-lookup/src/lib.rs +++ b/pallets/pallet-did-lookup/src/lib.rs @@ -59,6 +59,8 @@ pub use crate::{default_weights::WeightInfo, pallet::*}; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use crate::{ associate_account_request::AssociateAccountRequest, default_weights::WeightInfo, diff --git a/pallets/pallet-dip-consumer/src/lib.rs b/pallets/pallet-dip-consumer/src/lib.rs index cb8bf5d538..4a1abced8c 100644 --- a/pallets/pallet-dip-consumer/src/lib.rs +++ b/pallets/pallet-dip-consumer/src/lib.rs @@ -50,6 +50,8 @@ const LOG_TARGET: &str = "dip::consumer::pallet_dip_consumer"; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; diff --git a/pallets/pallet-dip-provider/src/lib.rs b/pallets/pallet-dip-provider/src/lib.rs index 4d0593704c..10576cbb37 100644 --- a/pallets/pallet-dip-provider/src/lib.rs +++ b/pallets/pallet-dip-provider/src/lib.rs @@ -50,6 +50,8 @@ const LOG_TARGET: &str = "dip::provider::pallet_dip_provider"; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; diff --git a/pallets/pallet-inflation/src/lib.rs b/pallets/pallet-inflation/src/lib.rs index 7843b3c4eb..b47d0a12f3 100644 --- a/pallets/pallet-inflation/src/lib.rs +++ b/pallets/pallet-inflation/src/lib.rs @@ -54,6 +54,8 @@ pub use crate::{default_weights::WeightInfo, pallet::*}; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::WeightInfo; use frame_support::{ diff --git a/pallets/pallet-migration/src/lib.rs b/pallets/pallet-migration/src/lib.rs index 27f0b0fc3a..f63cd4acbd 100644 --- a/pallets/pallet-migration/src/lib.rs +++ b/pallets/pallet-migration/src/lib.rs @@ -41,6 +41,8 @@ pub use crate::{default_weights::WeightInfo, pallet::*}; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; diff --git a/pallets/pallet-relay-store/src/lib.rs b/pallets/pallet-relay-store/src/lib.rs index 15ac735b21..19e12c4734 100644 --- a/pallets/pallet-relay-store/src/lib.rs +++ b/pallets/pallet-relay-store/src/lib.rs @@ -54,6 +54,8 @@ const LOG_TARGET: &str = "pallet_relay_store"; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; diff --git a/pallets/pallet-web3-names/src/lib.rs b/pallets/pallet-web3-names/src/lib.rs index be8614aef2..22fc391a80 100644 --- a/pallets/pallet-web3-names/src/lib.rs +++ b/pallets/pallet-web3-names/src/lib.rs @@ -53,6 +53,8 @@ pub use crate::{default_weights::WeightInfo, pallet::*}; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use frame_support::{ pallet_prelude::*, diff --git a/pallets/parachain-staking/src/lib.rs b/pallets/parachain-staking/src/lib.rs index a5431e5955..185c4ce82d 100644 --- a/pallets/parachain-staking/src/lib.rs +++ b/pallets/parachain-staking/src/lib.rs @@ -150,6 +150,8 @@ pub use crate::{default_weights::WeightInfo, pallet::*}; // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; pub use crate::inflation::{InflationInfo, RewardRate, StakingInfo}; diff --git a/pallets/public-credentials/src/lib.rs b/pallets/public-credentials/src/lib.rs index 4db6e5e90b..b88e5ba009 100644 --- a/pallets/public-credentials/src/lib.rs +++ b/pallets/public-credentials/src/lib.rs @@ -63,6 +63,8 @@ pub use crate::{ // very end of the development cycle of a pallet, and from time to time it should be commented out to catch any issues // other than the one generated by the `pallet::event` macro. #[allow(clippy::shadow_reuse)] +// map_err is used over inspect_err in the macro-generated code, and we have to ignore it. +#[allow(clippy::manual_inspect)] pub mod pallet { use super::*; diff --git a/runtimes/common/src/dip/merkle/v0/tests/generate_proof.rs b/runtimes/common/src/dip/merkle/v0/tests/generate_proof.rs index e6c14dd01b..44929557fa 100644 --- a/runtimes/common/src/dip/merkle/v0/tests/generate_proof.rs +++ b/runtimes/common/src/dip/merkle/v0/tests/generate_proof.rs @@ -78,7 +78,7 @@ fn generate_proof_for_complete_linked_info() { let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( root, proof, - TimeBoundDidSignature::new(signature.clone().into(), 100), + TimeBoundDidSignature::new(signature.into(), 100), ); let dip_origin_info = cross_chain_proof @@ -164,7 +164,7 @@ fn generate_proof_for_complete_linked_info() { let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( root, proof, - TimeBoundDidSignature::new(signature.clone().into(), 100), + TimeBoundDidSignature::new(signature.into(), 100), ); // Should verify the merkle proof successfully. assert_ok!(cross_chain_proof.verify_dip_proof::()); @@ -180,7 +180,7 @@ fn generate_proof_for_complete_linked_info() { let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( root, proof, - TimeBoundDidSignature::new(signature.clone().into(), 100), + TimeBoundDidSignature::new(signature.into(), 100), ); let dip_origin_info = cross_chain_proof @@ -219,7 +219,7 @@ fn generate_proof_for_complete_linked_info() { let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( root, proof, - TimeBoundDidSignature::new(signature.clone().into(), 100), + TimeBoundDidSignature::new(signature.into(), 100), ); // Should verify the merkle proof successfully. assert_ok!(cross_chain_proof.verify_dip_proof::()); @@ -230,7 +230,7 @@ fn generate_proof_for_complete_linked_info() { let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( root, proof, - TimeBoundDidSignature::new(signature.clone().into(), 100), + TimeBoundDidSignature::new(signature.into(), 100), ); // Should verify the merkle proof successfully. assert_ok!(cross_chain_proof.verify_dip_proof::()); @@ -247,7 +247,7 @@ fn generate_proof_for_complete_linked_info() { let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( root, proof, - TimeBoundDidSignature::new(signature.clone().into(), 100), + TimeBoundDidSignature::new(signature.into(), 100), ); let dip_origin_info = cross_chain_proof .verify_dip_proof::() diff --git a/runtimes/kestrel/src/lib.rs b/runtimes/kestrel/src/lib.rs index f104808bcf..295f31603e 100644 --- a/runtimes/kestrel/src/lib.rs +++ b/runtimes/kestrel/src/lib.rs @@ -742,8 +742,7 @@ construct_runtime!( impl did::DeriveDidCallAuthorizationVerificationKeyRelationship for RuntimeCall { fn derive_verification_key_relationship(&self) -> did::DeriveDidCallKeyRelationshipResult { fn single_key_relationship(calls: &[RuntimeCall]) -> did::DeriveDidCallKeyRelationshipResult { - let init = calls - .get(0) + let init = calls.first() .ok_or(did::RelationshipDeriveError::InvalidCallParameter)? .derive_verification_key_relationship()?; calls diff --git a/runtimes/peregrine/src/kilt/did.rs b/runtimes/peregrine/src/kilt/did.rs index f645e0267d..7738fcb3c5 100644 --- a/runtimes/peregrine/src/kilt/did.rs +++ b/runtimes/peregrine/src/kilt/did.rs @@ -33,8 +33,7 @@ impl DeriveDidCallAuthorizationVerificationKeyRelationship for RuntimeCall { fn derive_verification_key_relationship(&self) -> DeriveDidCallKeyRelationshipResult { /// ensure that all calls have the same VerificationKeyRelationship fn single_key_relationship(calls: &[RuntimeCall]) -> DeriveDidCallKeyRelationshipResult { - let init = calls - .get(0) + let init = calls.first() .ok_or(RelationshipDeriveError::InvalidCallParameter)? .derive_verification_key_relationship()?; calls diff --git a/runtimes/peregrine/src/runtime_apis.rs b/runtimes/peregrine/src/runtime_apis.rs index 9133b9bb0f..a8f57f6541 100644 --- a/runtimes/peregrine/src/runtime_apis.rs +++ b/runtimes/peregrine/src/runtime_apis.rs @@ -249,7 +249,7 @@ impl_runtime_apis! { } fn preset_names() -> Vec { - vec![PresetId::from("peregrine_kilt_paseo"), PresetId::from("peregrine_stg_kilt"), PresetId::from("rilt_peregrine_new")] + sp_std::vec![PresetId::from("peregrine_kilt_paseo"), PresetId::from("peregrine_stg_kilt"), PresetId::from("rilt_peregrine_new")] } } diff --git a/runtimes/spiritnet/src/kilt/did.rs b/runtimes/spiritnet/src/kilt/did.rs index f645e0267d..7738fcb3c5 100644 --- a/runtimes/spiritnet/src/kilt/did.rs +++ b/runtimes/spiritnet/src/kilt/did.rs @@ -33,8 +33,7 @@ impl DeriveDidCallAuthorizationVerificationKeyRelationship for RuntimeCall { fn derive_verification_key_relationship(&self) -> DeriveDidCallKeyRelationshipResult { /// ensure that all calls have the same VerificationKeyRelationship fn single_key_relationship(calls: &[RuntimeCall]) -> DeriveDidCallKeyRelationshipResult { - let init = calls - .get(0) + let init = calls.first() .ok_or(RelationshipDeriveError::InvalidCallParameter)? .derive_verification_key_relationship()?; calls diff --git a/runtimes/spiritnet/src/runtime_apis.rs b/runtimes/spiritnet/src/runtime_apis.rs index 3a63be61a8..3ccf218dba 100644 --- a/runtimes/spiritnet/src/runtime_apis.rs +++ b/runtimes/spiritnet/src/runtime_apis.rs @@ -231,7 +231,7 @@ impl_runtime_apis! { } fn preset_names() -> Vec { - vec![PresetId::from("kilt")] + sp_std::vec![PresetId::from("kilt")] } } From 27b7024e195452943b597bf08fb7d4cc0b9216e1 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Wed, 30 Apr 2025 17:00:57 +0200 Subject: [PATCH 15/36] clippy --- pallets/did/src/tests/submit.rs | 4 ++-- .../src/xcm/trade/switch_pair_remote_asset/mod.rs | 6 ++---- .../xcm/transfer/switch_pair_remote_asset/mod.rs | 4 +--- pallets/pallet-did-lookup/src/tests/associate.rs | 2 +- pallets/pallet-web3-names/src/tests/claim.rs | 14 ++++---------- support/src/mock.rs | 1 + 6 files changed, 11 insertions(+), 20 deletions(-) diff --git a/pallets/did/src/tests/submit.rs b/pallets/did/src/tests/submit.rs index 0f3f936ec6..4b354554cd 100644 --- a/pallets/did/src/tests/submit.rs +++ b/pallets/did/src/tests/submit.rs @@ -227,7 +227,7 @@ fn check_tx_block_number_too_low_error() { Did::submit_did_call( RuntimeOrigin::signed(caller.clone()), Box::new(call_operation.operation.clone()), - did::DidSignature::from(signature.clone()) + did::DidSignature::from(signature) ), did::Error::::TransactionExpired ); @@ -270,7 +270,7 @@ fn check_tx_block_number_too_high_error() { Did::submit_did_call( RuntimeOrigin::signed(caller.clone()), Box::new(call_operation.operation.clone()), - did::DidSignature::from(signature.clone()) + did::DidSignature::from(signature) ), did::Error::::TransactionExpired ); diff --git a/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mod.rs b/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mod.rs index e1330f1a97..bb3641c5a2 100644 --- a/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mod.rs +++ b/pallets/pallet-asset-switch/src/xcm/trade/switch_pair_remote_asset/mod.rs @@ -224,9 +224,8 @@ where // We don't care if the pool is enabled, since we're sending all non-refunded // weight to the configured destination account (e.g., treasury). if self.remaining_fungible_balance > Zero::zero() { - let Ok(remaining_balance_as_local_currency) = LocalCurrencyBalanceOf::::try_from(self.remaining_fungible_balance).inspect_err(|e| { + let Ok(remaining_balance_as_local_currency) = LocalCurrencyBalanceOf::::try_from(self.remaining_fungible_balance).inspect_err(|_| { log::error!(target: LOG_TARGET, "Failed to convert remaining balance {:?} to local currency balance", self.remaining_fungible_balance); - *e }) else { return; }; // No error should ever be thrown from inside this block. @@ -235,9 +234,8 @@ where &FeeDestinationAccount::get(), remaining_balance_as_local_currency, Preservation::Preserve, - ).inspect_err(|e| { + ).inspect_err(|_| { log::error!(target: LOG_TARGET, "Failed to transfer unused balance {:?} from switch pair pool account {:?} to specified account {:?}", remaining_balance_as_local_currency, switch_pair.pool_account, FeeDestinationAccount::get()); - *e }); debug_assert!( diff --git a/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/mod.rs b/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/mod.rs index e928032883..bc7c464145 100644 --- a/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/mod.rs +++ b/pallets/pallet-asset-switch/src/xcm/transfer/switch_pair_remote_asset/mod.rs @@ -51,7 +51,6 @@ where // 2. We only trust the EXACT configured remote location (no parent is allowed). let Ok(stored_remote_reserve_location_v4): Result = switch_pair.remote_reserve_location.clone().try_into().inspect_err(|e| { log::error!(target: LOG_TARGET, "Failed to convert stored remote reserve location {:?} into v4 xcm version with error {:?}.", switch_pair.remote_reserve_location, e); - *e }) else { return false; }; if stored_remote_reserve_location_v4 != *b { log::trace!( @@ -64,9 +63,8 @@ where } // 3. Verify the asset ID matches the remote asset ID to switch for local ones. - let Ok(stored_remote_asset_id): Result = switch_pair.remote_asset_id.clone().try_into().map_err(|e| { + let Ok(stored_remote_asset_id): Result = switch_pair.remote_asset_id.clone().try_into().inspect_err(|&e| { log::error!(target: LOG_TARGET, "Failed to convert stored remote asset ID {:?} into v4 xcm version with error {:?}.", switch_pair.remote_asset_id, e); - e }) else { return false; }; a.id == stored_remote_asset_id diff --git a/pallets/pallet-did-lookup/src/tests/associate.rs b/pallets/pallet-did-lookup/src/tests/associate.rs index d0555ef468..c20e681d94 100644 --- a/pallets/pallet-did-lookup/src/tests/associate.rs +++ b/pallets/pallet-did-lookup/src/tests/associate.rs @@ -201,7 +201,7 @@ fn test_add_eth_association() { crate::signature::WrapType::Ethereum, ); - let sig = eth_pair.sign_prehashed(&Keccak256::digest(wrapped_payload).try_into().unwrap()); + let sig = eth_pair.sign_prehashed(&Keccak256::digest(wrapped_payload).into()); // new association. No overwrite assert_ok!(DidLookup::associate_account( diff --git a/pallets/pallet-web3-names/src/tests/claim.rs b/pallets/pallet-web3-names/src/tests/claim.rs index dd2dce3a55..52d4b32539 100644 --- a/pallets/pallet-web3-names/src/tests/claim.rs +++ b/pallets/pallet-web3-names/src/tests/claim.rs @@ -86,25 +86,19 @@ fn claiming_successful() { #[test] fn claiming_invalid() { - let too_short_web3_names = vec![ - // Empty name - BoundedVec::try_from(b"".to_vec()).unwrap(), + let too_short_web3_names = [BoundedVec::try_from(b"".to_vec()).unwrap(), // Single-char name BoundedVec::try_from(b"1".to_vec()).unwrap(), // Two-letter name - BoundedVec::try_from(b"10".to_vec()).unwrap(), - ]; + BoundedVec::try_from(b"10".to_vec()).unwrap()]; - let invalid_web3_names = vec![ - // Not allowed ASCII character name (invalid symbol) - BoundedVec::try_from(b"10:1".to_vec()).unwrap(), + let invalid_web3_names = [BoundedVec::try_from(b"10:1".to_vec()).unwrap(), // Not allowed ASCII character name (uppercase letter) BoundedVec::try_from(b"abcdE".to_vec()).unwrap(), // Not allowed ASCII character name (whitespace) BoundedVec::try_from(b" ".to_vec()).unwrap(), // Non-ASCII character name - BoundedVec::try_from(String::from("notascii😁").as_bytes().to_owned()).unwrap(), - ]; + BoundedVec::try_from(String::from("notascii😁").as_bytes().to_owned()).unwrap()]; ExtBuilder::default() .with_balances(vec![(ACCOUNT_00, 100)]) .build_and_execute_with_sanity_tests(|| { diff --git a/support/src/mock.rs b/support/src/mock.rs index 99d7692dfd..875c6968ea 100644 --- a/support/src/mock.rs +++ b/support/src/mock.rs @@ -34,6 +34,7 @@ use sp_std::marker::PhantomData; /// WARNING: This is only used for testing! #[frame_support::pallet] #[allow(dead_code)] +#[allow(clippy::manual_inspect)] pub mod mock_origin { use sp_std::marker::PhantomData; From 436b810eac0edb3c01ec94ecf24d3898f53803ee Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Fri, 2 May 2025 10:20:58 +0200 Subject: [PATCH 16/36] clippy fix --- dip-template/nodes/dip-consumer/src/cli.rs | 5 ++++- dip-template/nodes/dip-consumer/src/service.rs | 8 ++++---- dip-template/nodes/dip-provider/src/cli.rs | 5 ++++- dip-template/nodes/dip-provider/src/service.rs | 6 +++--- nodes/parachain/src/service.rs | 8 ++++---- nodes/standalone/src/service.rs | 6 +----- pallets/pallet-asset-switch/src/lib.rs | 1 + pallets/parachain-staking/src/set.rs | 6 +++--- runtime-api/did/src/lib.rs | 6 +++--- runtimes/peregrine/src/xcm.rs | 2 +- runtimes/spiritnet/src/xcm.rs | 2 +- 11 files changed, 29 insertions(+), 26 deletions(-) diff --git a/dip-template/nodes/dip-consumer/src/cli.rs b/dip-template/nodes/dip-consumer/src/cli.rs index 5be54426de..3459b4bd0c 100644 --- a/dip-template/nodes/dip-consumer/src/cli.rs +++ b/dip-template/nodes/dip-consumer/src/cli.rs @@ -79,7 +79,10 @@ pub struct RelayChainCli { } impl RelayChainCli { - pub fn new<'a>(para_config: &Configuration, relay_chain_args: impl Iterator) -> Self { + pub fn new<'a, I>(para_config: &Configuration, relay_chain_args: I) -> Self + where + I: Iterator, + { let extension = Extensions::try_get(&*para_config.chain_spec); let chain_id = extension.map(|e| e.relay_chain.clone()); let base_path = Some(para_config.base_path.path().join("polkadot")); diff --git a/dip-template/nodes/dip-consumer/src/service.rs b/dip-template/nodes/dip-consumer/src/service.rs index a4972513f3..8e58152070 100644 --- a/dip-template/nodes/dip-consumer/src/service.rs +++ b/dip-template/nodes/dip-consumer/src/service.rs @@ -201,11 +201,11 @@ async fn start_node_impl( use futures::FutureExt; let offchain_workers = sc_offchain::OffchainWorkers::new(sc_offchain::OffchainWorkerOptions { - runtime_api_provider: client.clone(), + runtime_api_provider: Arc::clone(&client), keystore: Some(params.keystore_container.keystore()), offchain_db: backend.offchain_storage(), - transaction_pool: Some(OffchainTransactionPoolFactory::new(transaction_pool.clone())), - network_provider: Arc::new(network.clone()), + transaction_pool: Some(OffchainTransactionPoolFactory::new(Arc::clone(&transaction_pool))), + network_provider: Arc::new(Arc::clone(&network)), is_validator: parachain_config.role.is_authority(), enable_http_requests: false, custom_extensions: move |_| vec![], @@ -215,7 +215,7 @@ async fn start_node_impl( "offchain-workers-runner", "offchain-work", offchain_workers - .run(client.clone(), task_manager.spawn_handle()) + .run(Arc::clone(&client), task_manager.spawn_handle()) .boxed(), ); } diff --git a/dip-template/nodes/dip-provider/src/cli.rs b/dip-template/nodes/dip-provider/src/cli.rs index 5be54426de..3459b4bd0c 100644 --- a/dip-template/nodes/dip-provider/src/cli.rs +++ b/dip-template/nodes/dip-provider/src/cli.rs @@ -79,7 +79,10 @@ pub struct RelayChainCli { } impl RelayChainCli { - pub fn new<'a>(para_config: &Configuration, relay_chain_args: impl Iterator) -> Self { + pub fn new<'a, I>(para_config: &Configuration, relay_chain_args: I) -> Self + where + I: Iterator, + { let extension = Extensions::try_get(&*para_config.chain_spec); let chain_id = extension.map(|e| e.relay_chain.clone()); let base_path = Some(para_config.base_path.path().join("polkadot")); diff --git a/dip-template/nodes/dip-provider/src/service.rs b/dip-template/nodes/dip-provider/src/service.rs index b93b862967..7b9731af43 100644 --- a/dip-template/nodes/dip-provider/src/service.rs +++ b/dip-template/nodes/dip-provider/src/service.rs @@ -201,11 +201,11 @@ async fn start_node_impl( use futures::FutureExt; let offchain_workers = sc_offchain::OffchainWorkers::new(sc_offchain::OffchainWorkerOptions { - runtime_api_provider: client.clone(), + runtime_api_provider: Arc::clone(&client), keystore: Some(params.keystore_container.keystore()), offchain_db: backend.offchain_storage(), - transaction_pool: Some(OffchainTransactionPoolFactory::new(transaction_pool.clone())), - network_provider: Arc::new(network.clone()), + transaction_pool: Some(OffchainTransactionPoolFactory::new(Arc::clone(&transaction_pool))), + network_provider: Arc::new(Arc::clone(&network)), is_validator: parachain_config.role.is_authority(), enable_http_requests: false, custom_extensions: move |_| vec![], diff --git a/nodes/parachain/src/service.rs b/nodes/parachain/src/service.rs index e286b829ef..ece8320be6 100644 --- a/nodes/parachain/src/service.rs +++ b/nodes/parachain/src/service.rs @@ -294,13 +294,13 @@ where .await?; let rpc_builder = { - let client = client.clone(); - let transaction_pool = transaction_pool.clone(); + let client = Arc::clone(&client); + let transaction_pool = Arc::clone(&transaction_pool); Box::new(move |_| { let deps = crate::rpc::FullDeps { - client: client.clone(), - pool: transaction_pool.clone(), + client: Arc::clone(&client), + pool: Arc::clone(&transaction_pool), }; crate::rpc::create_full(deps).map_err(Into::into) diff --git a/nodes/standalone/src/service.rs b/nodes/standalone/src/service.rs index 321a148e85..1d95b531c3 100644 --- a/nodes/standalone/src/service.rs +++ b/nodes/standalone/src/service.rs @@ -291,11 +291,7 @@ pub fn new_full, I: 'static> Pallet { /// 3. Set the appendix, executed regardless of the outcome of the transfer: /// /// 3.1 Report back to our chain the assets in the holding registry. + /// /// This will contain either only the XCM fee token in case of successful /// transfer, or the XCM fee token + the amount of funds supposed to be /// transferred. diff --git a/pallets/parachain-staking/src/set.rs b/pallets/parachain-staking/src/set.rs index b1075b07da..1dab658775 100644 --- a/pallets/parachain-staking/src/set.rs +++ b/pallets/parachain-staking/src/set.rs @@ -179,10 +179,10 @@ impl> OrderedSet { /// given element. /// /// 1. If the value is found, then Result::Ok is returned, containing the - /// index of the matching element. + /// index of the matching element. /// 2. If the value is not found, then Result::Err is returned, containing - /// the index where a matching element could be inserted while maintaining - /// sorted order. + /// the index where a matching element could be inserted while + /// maintaining sorted order. pub fn linear_search(&self, value: &T) -> Result { let size = self.0.len(); let mut loc: usize = size; diff --git a/runtime-api/did/src/lib.rs b/runtime-api/did/src/lib.rs index bbe96be603..b5097e0843 100644 --- a/runtime-api/did/src/lib.rs +++ b/runtime-api/did/src/lib.rs @@ -67,12 +67,12 @@ pub type RawDidLinkedInfo where + pub trait Did where DidIdentifier: Codec, AccountId: Codec, LinkableAccountId: Codec, - BlockNumber: Codec, - Key: Codec, + BlockNumber: Codec + MaxEncodedLen, + Key: Codec +Ord, Balance: Codec, LinkedResource: Codec, RuntimeCall: Codec, diff --git a/runtimes/peregrine/src/xcm.rs b/runtimes/peregrine/src/xcm.rs index 956974d619..dfb476bc8e 100644 --- a/runtimes/peregrine/src/xcm.rs +++ b/runtimes/peregrine/src/xcm.rs @@ -129,7 +129,7 @@ pub type XcmBarrier = TrailingSetTopicAsId< /// 1. Have a fixed weight; /// 2. Cannot lead to another call being made; /// 3. Have a defined proof size weight, e.g. no unbounded vecs in call -/// parameters. +/// parameters. pub struct SafeCallFilter; impl Contains for SafeCallFilter { fn contains(c: &RuntimeCall) -> bool { diff --git a/runtimes/spiritnet/src/xcm.rs b/runtimes/spiritnet/src/xcm.rs index 4173243b2e..3590df04c2 100644 --- a/runtimes/spiritnet/src/xcm.rs +++ b/runtimes/spiritnet/src/xcm.rs @@ -126,7 +126,7 @@ pub type XcmBarrier = TrailingSetTopicAsId< /// 1. Have a fixed weight; /// 2. Cannot lead to another call being made; /// 3. Have a defined proof size weight, e.g. no unbounded vecs in call -/// parameters. +/// parameters. pub struct SafeCallFilter; impl Contains for SafeCallFilter { fn contains(c: &RuntimeCall) -> bool { From cd4a4a8adc99335c6bb81d51dce0a8bc19ed04aa Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Fri, 2 May 2025 10:37:42 +0200 Subject: [PATCH 17/36] clippy fix all features and targets --- pallets/pallet-deposit-storage/src/benchmarking.rs | 1 + pallets/pallet-did-lookup/src/benchmarking.rs | 2 +- pallets/pallet-relay-store/src/benchmarking.rs | 1 + pallets/pallet-web3-names/src/benchmarking.rs | 1 - runtimes/peregrine/src/governance.rs | 2 +- runtimes/spiritnet/src/governance.rs | 2 +- 6 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pallets/pallet-deposit-storage/src/benchmarking.rs b/pallets/pallet-deposit-storage/src/benchmarking.rs index e7cc4d500b..23e126d576 100644 --- a/pallets/pallet-deposit-storage/src/benchmarking.rs +++ b/pallets/pallet-deposit-storage/src/benchmarking.rs @@ -18,6 +18,7 @@ use frame_benchmarking::v2::*; +#[allow(clippy::multiple_bound_locations)] #[benchmarks( where T: Config + pallet_balances::Config, diff --git a/pallets/pallet-did-lookup/src/benchmarking.rs b/pallets/pallet-did-lookup/src/benchmarking.rs index 4b82e59b9a..02499648d8 100644 --- a/pallets/pallet-did-lookup/src/benchmarking.rs +++ b/pallets/pallet-did-lookup/src/benchmarking.rs @@ -186,7 +186,7 @@ benchmarks_instance_pallet! { let sig = sp_io::crypto::ecdsa_sign_prehashed( KeyTypeId(*b"aura"), ð_public_key, - &Keccak256::digest(wrapped_payload).try_into().unwrap(), + &Keccak256::digest(wrapped_payload).into(), ).ok_or("Error while building signature.")?; make_free_for_did::(&caller); diff --git a/pallets/pallet-relay-store/src/benchmarking.rs b/pallets/pallet-relay-store/src/benchmarking.rs index 8e2c5882fe..5f78f1d18d 100644 --- a/pallets/pallet-relay-store/src/benchmarking.rs +++ b/pallets/pallet-relay-store/src/benchmarking.rs @@ -20,6 +20,7 @@ use crate::{Config, Pallet}; use frame_benchmarking::v2::*; use sp_std::vec::Vec; +#[allow(clippy::multiple_bound_locations)] #[benchmarks( where T: cumulus_pallet_parachain_system::Config diff --git a/pallets/pallet-web3-names/src/benchmarking.rs b/pallets/pallet-web3-names/src/benchmarking.rs index 2fc5f5e940..3f64db0167 100644 --- a/pallets/pallet-web3-names/src/benchmarking.rs +++ b/pallets/pallet-web3-names/src/benchmarking.rs @@ -180,7 +180,6 @@ benchmarks_instance_pallet! { let web3_name_input: BoundedVec>::MaxNameLength> = BoundedVec::try_from( >::BenchmarkHelper::generate_name_input_with_length(>::MaxNameLength::get().saturated_into()) ).expect("BoundedVec creation should not fail."); - let web3_name_input_clone = web3_name_input.clone(); let origin_create = >::OwnerOrigin::generate_origin(deposit_owner_old.clone(), owner.clone()); make_free_for_did::(&deposit_owner_old); diff --git a/runtimes/peregrine/src/governance.rs b/runtimes/peregrine/src/governance.rs index d0263565c7..07011c90d9 100644 --- a/runtimes/peregrine/src/governance.rs +++ b/runtimes/peregrine/src/governance.rs @@ -103,7 +103,7 @@ impl pallet_treasury::Config for Runtime { type SpendOrigin = frame_support::traits::NeverEnsureOrigin; #[cfg(feature = "runtime-benchmarks")] type SpendOrigin = - frame_system::EnsureWithSuccess, AccountId, sp_core::ConstU128<{ Balance::max_value() }>>; + frame_system::EnsureWithSuccess, AccountId, sp_core::ConstU128<{ Balance::MAX }>>; type Burn = Burn; type BurnDestination = (); type SpendFunds = (); diff --git a/runtimes/spiritnet/src/governance.rs b/runtimes/spiritnet/src/governance.rs index d0263565c7..07011c90d9 100644 --- a/runtimes/spiritnet/src/governance.rs +++ b/runtimes/spiritnet/src/governance.rs @@ -103,7 +103,7 @@ impl pallet_treasury::Config for Runtime { type SpendOrigin = frame_support::traits::NeverEnsureOrigin; #[cfg(feature = "runtime-benchmarks")] type SpendOrigin = - frame_system::EnsureWithSuccess, AccountId, sp_core::ConstU128<{ Balance::max_value() }>>; + frame_system::EnsureWithSuccess, AccountId, sp_core::ConstU128<{ Balance::MAX }>>; type Burn = Burn; type BurnDestination = (); type SpendFunds = (); From 760a21c59941e60e97f20ad855bfe0a138797989 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Fri, 2 May 2025 10:39:52 +0200 Subject: [PATCH 18/36] fmt --- .../merkle_proofs/v0/dip_subject_state/mod.rs | 3 +- .../v0/dip_subject_state/tests.rs | 3 +- .../src/merkle_proofs/v0/input_common.rs | 3 +- .../src/merkle_proofs/v0/output_common.rs | 3 +- .../merkle_proofs/v0/provider_state/mod.rs | 3 +- .../merkle_proofs/v0/provider_state/tests.rs | 9 ++-- .../src/merkle_proofs/v0/relay_state/tests.rs | 6 ++- .../src/verifier/parachain/mod.rs | 3 +- .../src/verifier/parachain/v0/mod.rs | 3 +- .../src/verifier/relaychain/mod.rs | 3 +- .../src/verifier/relaychain/v0/mod.rs | 3 +- pallets/pallet-bonded-coins/src/types.rs | 3 +- pallets/pallet-web3-names/src/tests/claim.rs | 12 ++++-- .../src/dip/merkle/v0/tests/generate_proof.rs | 42 ++++++------------- runtimes/kestrel/src/lib.rs | 3 +- runtimes/peregrine/src/kilt/did.rs | 3 +- runtimes/spiritnet/src/kilt/did.rs | 3 +- 17 files changed, 56 insertions(+), 52 deletions(-) diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/mod.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/mod.rs index d6077ed9b7..348b8400b1 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/mod.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/mod.rs @@ -87,7 +87,8 @@ impl< KiltLinkableAccountId, ConsumerBlockNumber, MAX_REVEALED_LEAVES_COUNT, - > where + > +where ConsumerBlockNumber: PartialOrd, { /// Verifies that the DIP proof signature is anchored to a block that has diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs index ed05091ac0..0d4e07ded9 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs @@ -38,7 +38,8 @@ mod dip_revealed_details_and_unverified_did_signature { KiltLinkableAccountId, ConsumerBlockNumber, MAX_REVEALED_LEAVES_COUNT, - > where + > + where KiltDidKeyId: Default, KiltBlockNumber: Default, ConsumerBlockNumber: Default, diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs index 809bb494de..b4901eaba3 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs @@ -122,7 +122,8 @@ impl where + > +where ProviderDidKeyId: Default, ProviderBlockNumber: Default, { diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/output_common.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/output_common.rs index 757bc3c862..b5144f95f3 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/output_common.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/output_common.rs @@ -145,7 +145,8 @@ impl< KiltWeb3Name, KiltLinkableAccountId, MAX_REVEALED_LEAVES_COUNT, - > where + > +where KiltDidKeyId: crate::traits::BenchmarkDefault, KiltBlockNumber: crate::traits::BenchmarkDefault, { diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/mod.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/mod.rs index 7b93f7c2f7..1b6b74917d 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/mod.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/mod.rs @@ -423,7 +423,8 @@ impl< KiltWeb3Name, KiltLinkableAccountId, ConsumerBlockNumber, - > where + > +where KiltDidKeyId: Encode, KiltAccountId: Encode, KiltBlockNumber: Encode, diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs index eb447321bb..fccfccb5ab 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs @@ -47,7 +47,8 @@ mod parachain_dip_did_proof { KiltWeb3Name, KiltLinkableAccountId, ConsumerBlockNumber, - > where + > + where KiltDidKeyId: Default, KiltBlockNumber: Default, ConsumerBlockNumber: Default, @@ -213,7 +214,8 @@ mod dip_did_proof_with_verified_relay_state_root { KiltWeb3Name, KiltLinkableAccountId, ConsumerBlockNumber, - > where + > + where KiltDidKeyId: Default, KiltBlockNumber: Default, ConsumerBlockNumber: Default, @@ -440,7 +442,8 @@ mod dip_did_proof_with_verified_subject_commitment { KiltWeb3Name, KiltLinkableAccountId, ConsumerBlockNumber, - > where + > + where ConsumerBlockNumber: Default, { fn with_commitment_and_dip_proof( diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/relay_state/tests.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/relay_state/tests.rs index ca9655b8c1..3b41936bd0 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/relay_state/tests.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/relay_state/tests.rs @@ -53,7 +53,8 @@ mod relay_did_dip_proof { KiltBlockNumber, KiltWeb3Name, KiltLinkableAccountId, - > where + > + where RelayBlockNumber: Default, KiltDidKeyId: Default, KiltBlockNumber: Default, @@ -150,7 +151,8 @@ mod relay_dip_did_proof_with_verified_relay_state_root { KiltBlockNumber, KiltWeb3Name, KiltLinkableAccountId, - > where + > + where RelayBlockNumber: Default, KiltDidKeyId: Default, KiltBlockNumber: Default, diff --git a/crates/kilt-dip-primitives/src/verifier/parachain/mod.rs b/crates/kilt-dip-primitives/src/verifier/parachain/mod.rs index c8cb66062a..e2b2d8a6ff 100644 --- a/crates/kilt-dip-primitives/src/verifier/parachain/mod.rs +++ b/crates/kilt-dip-primitives/src/verifier/parachain/mod.rs @@ -174,7 +174,8 @@ impl< MAX_DID_MERKLE_PROOF_LEAVE_COUNT, MAX_DID_MERKLE_PROOF_LEAVE_SIZE, MAX_DID_MERKLE_LEAVES_REVEALED, - > where + > +where ConsumerRuntime: pallet_dip_consumer::Config, ConsumerRuntime::LocalIdentityInfo: Incrementable + Default, RelaychainRuntime: frame_system::Config, diff --git a/crates/kilt-dip-primitives/src/verifier/parachain/v0/mod.rs b/crates/kilt-dip-primitives/src/verifier/parachain/v0/mod.rs index 492a7a42cc..b184c73e00 100644 --- a/crates/kilt-dip-primitives/src/verifier/parachain/v0/mod.rs +++ b/crates/kilt-dip-primitives/src/verifier/parachain/v0/mod.rs @@ -124,7 +124,8 @@ impl< MAX_DID_MERKLE_PROOF_LEAVE_COUNT, MAX_DID_MERKLE_PROOF_LEAVE_SIZE, MAX_DID_MERKLE_LEAVES_REVEALED, - > where + > +where ConsumerRuntime: pallet_dip_consumer::Config, ConsumerRuntime::LocalIdentityInfo: Incrementable + Default, RelaychainRuntime: frame_system::Config, diff --git a/crates/kilt-dip-primitives/src/verifier/relaychain/mod.rs b/crates/kilt-dip-primitives/src/verifier/relaychain/mod.rs index c8dac3a37f..1d3e1a6623 100644 --- a/crates/kilt-dip-primitives/src/verifier/relaychain/mod.rs +++ b/crates/kilt-dip-primitives/src/verifier/relaychain/mod.rs @@ -165,7 +165,8 @@ impl< MAX_DID_MERKLE_PROOF_LEAVE_COUNT, MAX_DID_MERKLE_PROOF_LEAVE_SIZE, MAX_DID_MERKLE_LEAVES_REVEALED, - > where + > +where ConsumerRuntime: pallet_dip_consumer::Config, ConsumerRuntime::LocalIdentityInfo: Incrementable + Default, BlockNumberFor: Into + TryFrom, diff --git a/crates/kilt-dip-primitives/src/verifier/relaychain/v0/mod.rs b/crates/kilt-dip-primitives/src/verifier/relaychain/v0/mod.rs index b0837835eb..427abff82e 100644 --- a/crates/kilt-dip-primitives/src/verifier/relaychain/v0/mod.rs +++ b/crates/kilt-dip-primitives/src/verifier/relaychain/v0/mod.rs @@ -106,7 +106,8 @@ impl< MAX_DID_MERKLE_PROOF_LEAVE_COUNT, MAX_DID_MERKLE_PROOF_LEAVE_SIZE, MAX_DID_MERKLE_LEAVES_REVEALED, - > where + > +where ConsumerRuntime: pallet_dip_consumer::Config, ConsumerRuntime::LocalIdentityInfo: Incrementable + Default, BlockNumberFor: Into + TryFrom, diff --git a/pallets/pallet-bonded-coins/src/types.rs b/pallets/pallet-bonded-coins/src/types.rs index ccdf13fcad..d4209a7a65 100644 --- a/pallets/pallet-bonded-coins/src/types.rs +++ b/pallets/pallet-bonded-coins/src/types.rs @@ -119,7 +119,8 @@ impl, - > where + > +where AccountId: PartialEq + Clone, { #[allow(clippy::too_many_arguments)] diff --git a/pallets/pallet-web3-names/src/tests/claim.rs b/pallets/pallet-web3-names/src/tests/claim.rs index 52d4b32539..8e8af3ce78 100644 --- a/pallets/pallet-web3-names/src/tests/claim.rs +++ b/pallets/pallet-web3-names/src/tests/claim.rs @@ -86,19 +86,23 @@ fn claiming_successful() { #[test] fn claiming_invalid() { - let too_short_web3_names = [BoundedVec::try_from(b"".to_vec()).unwrap(), + let too_short_web3_names = [ + BoundedVec::try_from(b"".to_vec()).unwrap(), // Single-char name BoundedVec::try_from(b"1".to_vec()).unwrap(), // Two-letter name - BoundedVec::try_from(b"10".to_vec()).unwrap()]; + BoundedVec::try_from(b"10".to_vec()).unwrap(), + ]; - let invalid_web3_names = [BoundedVec::try_from(b"10:1".to_vec()).unwrap(), + let invalid_web3_names = [ + BoundedVec::try_from(b"10:1".to_vec()).unwrap(), // Not allowed ASCII character name (uppercase letter) BoundedVec::try_from(b"abcdE".to_vec()).unwrap(), // Not allowed ASCII character name (whitespace) BoundedVec::try_from(b" ".to_vec()).unwrap(), // Non-ASCII character name - BoundedVec::try_from(String::from("notascii😁").as_bytes().to_owned()).unwrap()]; + BoundedVec::try_from(String::from("notascii😁").as_bytes().to_owned()).unwrap(), + ]; ExtBuilder::default() .with_balances(vec![(ACCOUNT_00, 100)]) .build_and_execute_with_sanity_tests(|| { diff --git a/runtimes/common/src/dip/merkle/v0/tests/generate_proof.rs b/runtimes/common/src/dip/merkle/v0/tests/generate_proof.rs index 44929557fa..7076e374b1 100644 --- a/runtimes/common/src/dip/merkle/v0/tests/generate_proof.rs +++ b/runtimes/common/src/dip/merkle/v0/tests/generate_proof.rs @@ -75,11 +75,8 @@ fn generate_proof_for_complete_linked_info() { linked_info.linked_accounts.iter(), ) .unwrap(); - let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( - root, - proof, - TimeBoundDidSignature::new(signature.into(), 100), - ); + let cross_chain_proof = + DipDidProofWithVerifiedSubjectCommitment::new(root, proof, TimeBoundDidSignature::new(signature.into(), 100)); let dip_origin_info = cross_chain_proof .verify_dip_proof::() @@ -161,11 +158,8 @@ fn generate_proof_for_complete_linked_info() { // 2. Generate a proof without any parts revealed. let CompleteMerkleProof { proof, root } = generate_proof(&linked_info, empty(), false, empty()).unwrap(); - let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( - root, - proof, - TimeBoundDidSignature::new(signature.into(), 100), - ); + let cross_chain_proof = + DipDidProofWithVerifiedSubjectCommitment::new(root, proof, TimeBoundDidSignature::new(signature.into(), 100)); // Should verify the merkle proof successfully. assert_ok!(cross_chain_proof.verify_dip_proof::()); @@ -177,11 +171,8 @@ fn generate_proof_for_complete_linked_info() { empty(), ) .unwrap(); - let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( - root, - proof, - TimeBoundDidSignature::new(signature.into(), 100), - ); + let cross_chain_proof = + DipDidProofWithVerifiedSubjectCommitment::new(root, proof, TimeBoundDidSignature::new(signature.into(), 100)); let dip_origin_info = cross_chain_proof .verify_dip_proof::() @@ -216,22 +207,16 @@ fn generate_proof_for_complete_linked_info() { // 4. Generate a proof with only the web3name revealed. let CompleteMerkleProof { proof, root } = generate_proof(&linked_info, empty(), true, empty()).unwrap(); - let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( - root, - proof, - TimeBoundDidSignature::new(signature.into(), 100), - ); + let cross_chain_proof = + DipDidProofWithVerifiedSubjectCommitment::new(root, proof, TimeBoundDidSignature::new(signature.into(), 100)); // Should verify the merkle proof successfully. assert_ok!(cross_chain_proof.verify_dip_proof::()); // 5. Generate a proof with only one linked account revealed. let CompleteMerkleProof { proof, root } = generate_proof(&linked_info, empty(), true, once(&linked_info.linked_accounts[0])).unwrap(); - let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( - root, - proof, - TimeBoundDidSignature::new(signature.into(), 100), - ); + let cross_chain_proof = + DipDidProofWithVerifiedSubjectCommitment::new(root, proof, TimeBoundDidSignature::new(signature.into(), 100)); // Should verify the merkle proof successfully. assert_ok!(cross_chain_proof.verify_dip_proof::()); @@ -244,11 +229,8 @@ fn generate_proof_for_complete_linked_info() { empty(), ) .unwrap(); - let cross_chain_proof = DipDidProofWithVerifiedSubjectCommitment::new( - root, - proof, - TimeBoundDidSignature::new(signature.into(), 100), - ); + let cross_chain_proof = + DipDidProofWithVerifiedSubjectCommitment::new(root, proof, TimeBoundDidSignature::new(signature.into(), 100)); let dip_origin_info = cross_chain_proof .verify_dip_proof::() .and_then(|r| r.verify_signature_time(&50)) diff --git a/runtimes/kestrel/src/lib.rs b/runtimes/kestrel/src/lib.rs index 295f31603e..5e0a8709e0 100644 --- a/runtimes/kestrel/src/lib.rs +++ b/runtimes/kestrel/src/lib.rs @@ -742,7 +742,8 @@ construct_runtime!( impl did::DeriveDidCallAuthorizationVerificationKeyRelationship for RuntimeCall { fn derive_verification_key_relationship(&self) -> did::DeriveDidCallKeyRelationshipResult { fn single_key_relationship(calls: &[RuntimeCall]) -> did::DeriveDidCallKeyRelationshipResult { - let init = calls.first() + let init = calls + .first() .ok_or(did::RelationshipDeriveError::InvalidCallParameter)? .derive_verification_key_relationship()?; calls diff --git a/runtimes/peregrine/src/kilt/did.rs b/runtimes/peregrine/src/kilt/did.rs index 7738fcb3c5..04435b87fa 100644 --- a/runtimes/peregrine/src/kilt/did.rs +++ b/runtimes/peregrine/src/kilt/did.rs @@ -33,7 +33,8 @@ impl DeriveDidCallAuthorizationVerificationKeyRelationship for RuntimeCall { fn derive_verification_key_relationship(&self) -> DeriveDidCallKeyRelationshipResult { /// ensure that all calls have the same VerificationKeyRelationship fn single_key_relationship(calls: &[RuntimeCall]) -> DeriveDidCallKeyRelationshipResult { - let init = calls.first() + let init = calls + .first() .ok_or(RelationshipDeriveError::InvalidCallParameter)? .derive_verification_key_relationship()?; calls diff --git a/runtimes/spiritnet/src/kilt/did.rs b/runtimes/spiritnet/src/kilt/did.rs index 7738fcb3c5..04435b87fa 100644 --- a/runtimes/spiritnet/src/kilt/did.rs +++ b/runtimes/spiritnet/src/kilt/did.rs @@ -33,7 +33,8 @@ impl DeriveDidCallAuthorizationVerificationKeyRelationship for RuntimeCall { fn derive_verification_key_relationship(&self) -> DeriveDidCallKeyRelationshipResult { /// ensure that all calls have the same VerificationKeyRelationship fn single_key_relationship(calls: &[RuntimeCall]) -> DeriveDidCallKeyRelationshipResult { - let init = calls.first() + let init = calls + .first() .ok_or(RelationshipDeriveError::InvalidCallParameter)? .derive_verification_key_relationship()?; calls From 9223a16bc5e451321544a719e33be8430b9efc72 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 5 May 2025 13:55:15 +0200 Subject: [PATCH 19/36] clippy --- Cargo.toml | 2 +- .../src/merkle_proofs/v0/input_common.rs | 9 ++++----- nodes/parachain/src/service.rs | 6 +++++- pallets/did/src/utils.rs | 2 +- runtimes/peregrine/Cargo.toml | 1 + 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 90ccda56f2..ec4e015517 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,7 +46,7 @@ log = { version = "0.4.17" } parity-scale-codec = { version = "3.6.12", default-features = false } scale-info = { version = "2.11.1", default-features = false } serde = { version = "1.0.197", default-features = false } -serde_json = { version = "1.0.121" } +serde_json = { version = "1.0.121", default-features = false } sha3 = { version = "0.10.0", default-features = false } smallvec = { version = "1.8.0" } substrate-fixed = { version = "0.5.9", default-features = false } diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs index b4901eaba3..ddf4d84a9e 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs @@ -35,7 +35,7 @@ pub struct ProviderHeadStateProof { } impl ProviderHeadStateProof { - pub fn new(relay_block_number: RelayBlockNumber, proof: Vec>) -> Self { + pub const fn new(relay_block_number: RelayBlockNumber, proof: Vec>) -> Self { Self { proof, relay_block_number, @@ -49,7 +49,7 @@ impl ProviderHeadStateProof { pub struct DipCommitmentStateProof(pub(crate) Vec>); impl DipCommitmentStateProof { - pub fn new(proof: Vec>) -> Self { + pub const fn new(proof: Vec>) -> Self { Self(proof) } } @@ -86,7 +86,7 @@ pub struct DidMerkleProof< impl DidMerkleProof { - pub fn new( + pub const fn new( blinded: Vec>, revealed: Vec< RevealedDidMerkleProofLeaf< @@ -122,8 +122,7 @@ impl -where + > where ProviderDidKeyId: Default, ProviderBlockNumber: Default, { diff --git a/nodes/parachain/src/service.rs b/nodes/parachain/src/service.rs index ece8320be6..8a1f5f2008 100644 --- a/nodes/parachain/src/service.rs +++ b/nodes/parachain/src/service.rs @@ -57,7 +57,11 @@ pub(crate) type Block = sp_runtime::generic::Block; diff --git a/pallets/did/src/utils.rs b/pallets/did/src/utils.rs index 57cebd40bf..770dcd51a9 100644 --- a/pallets/did/src/utils.rs +++ b/pallets/did/src/utils.rs @@ -34,7 +34,7 @@ pub fn calculate_key_id(key: &DidPublicKey>) -> KeyIdO /// Verifies that an input string contains only traditional (non-extended) ASCII /// characters. -pub(crate) fn is_valid_ascii_string(input: &str) -> bool { +pub(crate) const fn is_valid_ascii_string(input: &str) -> bool { input.is_ascii() } diff --git a/runtimes/peregrine/Cargo.toml b/runtimes/peregrine/Cargo.toml index 5f9e07cffe..c11d82e26e 100644 --- a/runtimes/peregrine/Cargo.toml +++ b/runtimes/peregrine/Cargo.toml @@ -23,6 +23,7 @@ cfg-if = { workspace = true } log = { workspace = true } parity-scale-codec = { workspace = true, features = ["derive"] } scale-info = { workspace = true, features = ["derive"] } +serde_json = { workspace = true } hex-literal = { workspace = true, optional = true } From 2490c569d34280e1a1d283dbf3a1a9ff40c38212 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 5 May 2025 15:03:14 +0200 Subject: [PATCH 20/36] peregrine benchmark --- Cargo.lock | 1 + .../parachain/src/chain_spec/peregrine/dev.rs | 77 +----- .../parachain/src/chain_spec/peregrine/mod.rs | 2 - .../parachain/src/chain_spec/peregrine/new.rs | 27 +- nodes/parachain/src/command.rs | 100 +------ nodes/parachain/src/service.rs | 30 -- runtimes/peregrine/src/genesis_state.rs | 162 +++++++++++ runtimes/peregrine/src/lib.rs | 1 + runtimes/peregrine/src/runtime_apis.rs | 15 +- .../peregrine/src/weights/pallet_assets.rs | 218 ++++++++------- .../peregrine/src/weights/pallet_balances.rs | 105 ++++--- .../src/weights/pallet_bonded_assets.rs | 225 ++++++++------- .../peregrine/src/weights/pallet_scheduler.rs | 260 +++++++++++++----- 13 files changed, 680 insertions(+), 543 deletions(-) create mode 100644 runtimes/peregrine/src/genesis_state.rs diff --git a/Cargo.lock b/Cargo.lock index 2dbf6d2237..4ba01ad1b3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9289,6 +9289,7 @@ dependencies = [ "public-credentials", "runtime-common", "scale-info", + "serde_json", "sp-api", "sp-block-builder", "sp-consensus-aura", diff --git a/nodes/parachain/src/chain_spec/peregrine/dev.rs b/nodes/parachain/src/chain_spec/peregrine/dev.rs index 864f04638b..2dfa71b783 100644 --- a/nodes/parachain/src/chain_spec/peregrine/dev.rs +++ b/nodes/parachain/src/chain_spec/peregrine/dev.rs @@ -19,27 +19,14 @@ //! KILT chain specification use kilt_support::traits::InspectMetadata; -use peregrine_runtime::{ - BalancesConfig, CouncilConfig, MetadataProvider, ParachainInfoConfig, ParachainStakingConfig, PolkadotXcmConfig, - RuntimeGenesisConfig, SessionConfig, SessionKeys, SudoConfig, TechnicalCommitteeConfig, SS_58_PREFIX, WASM_BINARY, -}; -use runtime_common::{ - constants::{kilt_inflation_config, staking::MinCollatorStake, KILT, MAX_COLLATOR_STAKE}, - AccountId, AuthorityId, Balance, -}; +use peregrine_runtime::{MetadataProvider, SS_58_PREFIX, WASM_BINARY}; use sc_service::ChainType; -use serde_json::to_value; -use sp_core::sr25519; -use crate::chain_spec::{ - peregrine::{ChainSpec, SAFE_XCM_VERSION}, - utils::{get_account_id_from_secret, get_properties, get_public_key_from_secret}, - Extensions, KILT_PARA_ID, -}; +use crate::chain_spec::{peregrine::ChainSpec, utils::get_properties, Extensions, KILT_PARA_ID}; pub(crate) fn generate_chain_spec(relaychain_name: &str) -> ChainSpec { let wasm_binary = WASM_BINARY.expect("Development WASM binary not available"); - let genesis_config = to_value(generate_genesis_state()).expect("Creating genesis state failed"); + let genesis_config = peregrine_runtime::genesis_state::development::generate_genesis_state(); let currency_symbol = String::from_utf8(MetadataProvider::symbol()).expect("Creating currency symbol failed"); let denomination = MetadataProvider::decimals(); @@ -61,61 +48,3 @@ pub(crate) fn generate_chain_spec(relaychain_name: &str) -> ChainSpec { .with_genesis_config(genesis_config) .build() } - -fn generate_genesis_state() -> RuntimeGenesisConfig { - let alice = ( - get_account_id_from_secret::("Alice"), - get_public_key_from_secret::("Alice"), - ); - let bob = ( - get_account_id_from_secret::("Bob"), - get_public_key_from_secret::("Bob"), - ); - let endowed_accounts = [ - alice.0.clone(), - bob.0.clone(), - get_account_id_from_secret::("Charlie"), - get_account_id_from_secret::("Dave"), - get_account_id_from_secret::("Eve"), - get_account_id_from_secret::("Ferdie"), - ]; - - RuntimeGenesisConfig { - balances: BalancesConfig { - balances: endowed_accounts.map(|acc| (acc, 10_000_000 * KILT)).to_vec(), - }, - session: SessionConfig { - keys: [alice.clone(), bob.clone()] - .map(|(acc, key)| (acc.clone(), acc, SessionKeys { aura: key })) - .to_vec(), - ..Default::default() - }, - sudo: SudoConfig { - key: Some(alice.0.clone()), - }, - parachain_info: ParachainInfoConfig { - parachain_id: KILT_PARA_ID.into(), - ..Default::default() - }, - parachain_staking: ParachainStakingConfig { - stakers: [alice.clone(), bob.clone()] - .map(|(acc, _)| -> (AccountId, Option, Balance) { (acc, None, 2 * MinCollatorStake::get()) }) - .to_vec(), - inflation_config: kilt_inflation_config(), - max_candidate_stake: MAX_COLLATOR_STAKE, - }, - council: CouncilConfig { - members: [alice.clone(), bob.clone()].map(|(acc, _)| acc).to_vec(), - phantom: Default::default(), - }, - technical_committee: TechnicalCommitteeConfig { - members: [alice, bob].map(|(acc, _)| acc).to_vec(), - phantom: Default::default(), - }, - polkadot_xcm: PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - ..Default::default() - }, - ..Default::default() - } -} diff --git a/nodes/parachain/src/chain_spec/peregrine/mod.rs b/nodes/parachain/src/chain_spec/peregrine/mod.rs index c561858b8f..95459c38e7 100644 --- a/nodes/parachain/src/chain_spec/peregrine/mod.rs +++ b/nodes/parachain/src/chain_spec/peregrine/mod.rs @@ -21,8 +21,6 @@ pub(crate) mod dev; pub(crate) mod new; -const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; - /// Specialized `ChainSpec` for the normal parachain runtime. pub(crate) type ChainSpec = sc_service::GenericChainSpec; diff --git a/nodes/parachain/src/chain_spec/peregrine/new.rs b/nodes/parachain/src/chain_spec/peregrine/new.rs index fde6419fd4..67c60b916f 100644 --- a/nodes/parachain/src/chain_spec/peregrine/new.rs +++ b/nodes/parachain/src/chain_spec/peregrine/new.rs @@ -19,21 +19,14 @@ //! KILT chain specification use kilt_support::traits::InspectMetadata; -use peregrine_runtime::{ - MetadataProvider, ParachainInfoConfig, PolkadotXcmConfig, RuntimeGenesisConfig, SS_58_PREFIX, WASM_BINARY, -}; +use peregrine_runtime::{MetadataProvider, SS_58_PREFIX, WASM_BINARY}; use sc_service::ChainType; -use serde_json::to_value; -use crate::chain_spec::{ - peregrine::{ChainSpec, SAFE_XCM_VERSION}, - utils::get_properties, - Extensions, KILT_PARA_ID, -}; +use crate::chain_spec::{peregrine::ChainSpec, utils::get_properties, Extensions, KILT_PARA_ID}; pub(crate) fn generate_chain_spec() -> ChainSpec { let wasm_binary = WASM_BINARY.expect("WASM binary not available"); - let genesis_config = to_value(generate_genesis_state()).expect("Creating genesis state failed"); + let genesis_config = peregrine_runtime::genesis_state::production::generate_genesis_state(); let currency_symbol = String::from_utf8(MetadataProvider::symbol()).expect("Creating currency symbol failed"); let denomination = MetadataProvider::decimals(); @@ -55,17 +48,3 @@ pub(crate) fn generate_chain_spec() -> ChainSpec { .with_genesis_config(genesis_config) .build() } - -fn generate_genesis_state() -> RuntimeGenesisConfig { - RuntimeGenesisConfig { - parachain_info: ParachainInfoConfig { - parachain_id: KILT_PARA_ID.into(), - ..Default::default() - }, - polkadot_xcm: PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - ..Default::default() - }, - ..Default::default() - } -} diff --git a/nodes/parachain/src/command.rs b/nodes/parachain/src/command.rs index 083f7df4cb..de6bb8a3d7 100644 --- a/nodes/parachain/src/command.rs +++ b/nodes/parachain/src/command.rs @@ -16,18 +16,16 @@ // If you feel like getting in touch with us, you can do so at use cumulus_primitives_core::ParaId; -use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE}; +use frame_benchmarking_cli::SUBSTRATE_REFERENCE_HARDWARE; use log::info; -use runtime_common::opaque::Block; use sc_cli::SubstrateCli; -use sc_executor::NativeExecutionDispatch; use sp_runtime::traits::AccountIdConversion; use std::iter::once; use crate::{ chain_spec::{self, ParachainRuntime}, cli::{Cli, RelayChainCli, Subcommand}, - service::{new_partial, PeregrineRuntimeExecutor, SpiritnetRuntimeExecutor}, + service::new_partial, }; // Returns the provided (`--chain`, ) given only a reference @@ -148,99 +146,7 @@ pub(crate) fn run() -> sc_cli::Result<()> { cmd.run(&*spec) }) } - Some(Subcommand::Benchmark(cmd)) => { - - let shared_params = match cmd { - BenchmarkCmd::Block(c) => &c.shared_params, - BenchmarkCmd::Pallet(c) => &c.shared_params, - BenchmarkCmd::Extrinsic(c) => &c.shared_params, - BenchmarkCmd::Machine(c) => &c.shared_params, - BenchmarkCmd::Overhead(c) => &c.shared_params, - BenchmarkCmd::Storage(c) => &c.shared_params, - }; - - let (_, runtime) = get_selected_chainspec(shared_params)?; - - let runner = cli.create_runner(cmd)?; - - match (cmd, runtime) { - (BenchmarkCmd::Pallet(cmd), ParachainRuntime::Spiritnet(_)) => { - if cfg!(feature = "runtime-benchmarks") { - runner.sync_run(|config| { - cmd.run_with_spec::, ::ExtendHostFunctions>(Some(config.chain_spec)) - }) - } else { - Err("Benchmarking wasn't enabled when building the node. \ - You can enable it with `--features runtime-benchmarks`." - .into()) - } - } - (BenchmarkCmd::Pallet(cmd), ParachainRuntime::Peregrine(_)) => { - if cfg!(feature = "runtime-benchmarks") { - runner.sync_run(|config| { - cmd.run_with_spec::, ::ExtendHostFunctions>(Some(config.chain_spec)) - }) - } else { - Err("Benchmarking wasn't enabled when building the node. \ - You can enable it with `--features runtime-benchmarks`." - .into()) - } - } - (BenchmarkCmd::Block(cmd), ParachainRuntime::Spiritnet(_)) => runner.sync_run(|config| { - let partials = new_partial::( - &config, - crate::service::build_import_queue, - )?; - cmd.run(partials.client) - }), - (BenchmarkCmd::Block(cmd), ParachainRuntime::Peregrine(_)) => runner.sync_run(|config| { - let partials = new_partial::( - &config, - crate::service::build_import_queue, - )?; - cmd.run(partials.client) - }), - #[cfg(not(feature = "runtime-benchmarks"))] - (BenchmarkCmd::Storage(_), _) => Err(sc_cli::Error::Input( - "Compile with --features=runtime-benchmarks \ - to enable storage benchmarks." - .into(), - )), - #[cfg(feature = "runtime-benchmarks")] - (BenchmarkCmd::Storage(cmd), ParachainRuntime::Spiritnet(_)) => runner.sync_run(|config| { - let partials = new_partial::( - &config, - crate::service::build_import_queue, - )?; - - let db = partials.backend.expose_db(); - let storage = partials.backend.expose_storage(); - - cmd.run(config, std::sync::Arc::clone(&partials.client), db, storage) - }), - #[cfg(feature = "runtime-benchmarks")] - (BenchmarkCmd::Storage(cmd), ParachainRuntime::Peregrine(_)) => runner.sync_run(|config| { - let partials = new_partial::( - &config, - crate::service::build_import_queue, - )?; - - let db = partials.backend.expose_db(); - let storage = partials.backend.expose_storage(); - - cmd.run(config, std::sync::Arc::clone(&partials.client), db, storage) - }), - (BenchmarkCmd::Overhead(_), _) => Err("Unsupported benchmarking command".into()), - (BenchmarkCmd::Machine(cmd), _) => { - runner.sync_run(|config| cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone())) - } - // NOTE: this allows the Client to leniently implement - // new benchmark commands without requiring a companion MR. - (_, ParachainRuntime::Spiritnet(_)) | (_, ParachainRuntime::Peregrine(_)) => { - Err("Benchmarking sub-command unsupported".into()) - } - } - } + Some(Subcommand::Benchmark(_)) => Err("The `benchmark` subcommand has been migrated to a standalone CLI (https://crates.io/crates/frame-omni-bencher). It is no longer being maintained here.".into()), Some(Subcommand::TryRuntime) => Err("The `try-runtime` subcommand has been migrated to a standalone CLI (https://github.com/paritytech/try-runtime-cli). It is no longer being maintained here.".into()), None => { let runner = cli.create_runner(&cli.run.normalize())?; diff --git a/nodes/parachain/src/service.rs b/nodes/parachain/src/service.rs index 8a1f5f2008..63dfc1e424 100644 --- a/nodes/parachain/src/service.rs +++ b/nodes/parachain/src/service.rs @@ -88,36 +88,6 @@ type PartialComponents = sc ), >; -/// Native Spiritnet executor instance. -pub(crate) struct SpiritnetRuntimeExecutor; - -impl sc_executor::NativeExecutionDispatch for SpiritnetRuntimeExecutor { - type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; - - fn dispatch(method: &str, data: &[u8]) -> Option> { - spiritnet_runtime::api::dispatch(method, data) - } - - fn native_version() -> sc_executor::NativeVersion { - spiritnet_runtime::native_version() - } -} - -/// Native Peregrine executor instance. -pub(crate) struct PeregrineRuntimeExecutor; - -impl sc_executor::NativeExecutionDispatch for PeregrineRuntimeExecutor { - type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; - - fn dispatch(method: &str, data: &[u8]) -> Option> { - peregrine_runtime::api::dispatch(method, data) - } - - fn native_version() -> sc_executor::NativeVersion { - peregrine_runtime::native_version() - } -} - /// Starts a `ServiceBuilder` for a full service. /// /// Use this macro if you don't actually need the full service, but just the diff --git a/runtimes/peregrine/src/genesis_state.rs b/runtimes/peregrine/src/genesis_state.rs new file mode 100644 index 0000000000..f715d2e171 --- /dev/null +++ b/runtimes/peregrine/src/genesis_state.rs @@ -0,0 +1,162 @@ +// KILT Blockchain – +// Copyright (C) 2025, KILT Foundation + +// The KILT Blockchain 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. + +// The KILT Blockchain 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 this program. If not, see . + +// If you feel like getting in touch with us, you can do so at + +use crate::{ + BalancesConfig, CouncilConfig, ParachainInfoConfig, ParachainStakingConfig, PolkadotXcmConfig, + RuntimeGenesisConfig, SessionConfig, SessionKeys, SudoConfig, TechnicalCommitteeConfig, +}; +use runtime_common::{ + constants::{kilt_inflation_config, staking::MinCollatorStake, KILT, MAX_COLLATOR_STAKE}, + AccountId, AccountPublic, AuthorityId, Balance, +}; +use sp_core::{sr25519, Pair, Public}; +use sp_genesis_builder::PresetId; +use sp_runtime::{format, traits::IdentifyAccount}; +use sp_std::{vec, vec::Vec}; + +const KILT_PARA_ID: u32 = 2_086; +const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; +const NEW_RUNTIME_PRESET: &str = "new"; + +/// Helper function to generate an account ID from seed +pub(crate) fn get_account_id_from_secret(seed: &str) -> AccountId +where + AccountPublic: From<::Public>, +{ + AccountPublic::from(get_public_key_from_secret::(seed)).into_account() +} + +pub(crate) fn get_public_key_from_secret(seed: &str) -> ::Public { + TPublic::Pair::from_string(&format!("//{}", seed), None) + .expect("static values are valid; qed") + .public() +} + +pub mod development { + + use super::*; + + pub fn generate_genesis_state() -> serde_json::Value { + let alice = ( + get_account_id_from_secret::("Alice"), + get_public_key_from_secret::("Alice"), + ); + let bob = ( + get_account_id_from_secret::("Bob"), + get_public_key_from_secret::("Bob"), + ); + let endowed_accounts = [ + alice.0.clone(), + bob.0.clone(), + get_account_id_from_secret::("Charlie"), + get_account_id_from_secret::("Dave"), + get_account_id_from_secret::("Eve"), + get_account_id_from_secret::("Ferdie"), + ]; + + let config = RuntimeGenesisConfig { + balances: BalancesConfig { + balances: endowed_accounts.map(|acc| (acc, 10_000_000 * KILT)).to_vec(), + }, + session: SessionConfig { + keys: [alice.clone(), bob.clone()] + .map(|(acc, key)| (acc.clone(), acc, SessionKeys { aura: key })) + .to_vec(), + ..Default::default() + }, + sudo: SudoConfig { + key: Some(alice.0.clone()), + }, + parachain_info: ParachainInfoConfig { + parachain_id: KILT_PARA_ID.into(), + ..Default::default() + }, + parachain_staking: ParachainStakingConfig { + stakers: [alice.clone(), bob.clone()] + .map(|(acc, _)| -> (AccountId, Option, Balance) { + (acc, None, 2 * MinCollatorStake::get()) + }) + .to_vec(), + inflation_config: kilt_inflation_config(), + max_candidate_stake: MAX_COLLATOR_STAKE, + }, + council: CouncilConfig { + members: [alice.clone(), bob.clone()].map(|(acc, _)| acc).to_vec(), + phantom: Default::default(), + }, + technical_committee: TechnicalCommitteeConfig { + members: [alice, bob].map(|(acc, _)| acc).to_vec(), + phantom: Default::default(), + }, + polkadot_xcm: PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + ..Default::default() + }, + ..Default::default() + }; + + serde_json::to_value(config).expect("Could not build genesis config.") + } +} + +pub mod production { + use super::*; + + pub fn generate_genesis_state() -> serde_json::Value { + let config = RuntimeGenesisConfig { + parachain_info: ParachainInfoConfig { + parachain_id: KILT_PARA_ID.into(), + ..Default::default() + }, + polkadot_xcm: PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + ..Default::default() + }, + ..Default::default() + }; + + serde_json::to_value(config).expect("Could not build genesis config.") + } +} + +/// Provides the JSON representation of predefined genesis config for given +/// `id`. +pub fn get_preset(id: &PresetId) -> Option> { + let patch = match id.try_into() { + Ok(sp_genesis_builder::DEV_RUNTIME_PRESET) | Ok(sp_genesis_builder::LOCAL_TESTNET_RUNTIME_PRESET) => { + development::generate_genesis_state() + } + Ok(NEW_RUNTIME_PRESET) => production::generate_genesis_state(), + _ => return None, + }; + + Some( + serde_json::to_string(&patch) + .expect("serialization to json is expected to work. qed.") + .into_bytes(), + ) +} + +/// List of supported presets. +pub fn preset_names() -> Vec { + vec![ + PresetId::from(sp_genesis_builder::DEV_RUNTIME_PRESET), + PresetId::from(sp_genesis_builder::LOCAL_TESTNET_RUNTIME_PRESET), + PresetId::from(NEW_RUNTIME_PRESET), + ] +} diff --git a/runtimes/peregrine/src/lib.rs b/runtimes/peregrine/src/lib.rs index 005750eb7d..a730134bfe 100644 --- a/runtimes/peregrine/src/lib.rs +++ b/runtimes/peregrine/src/lib.rs @@ -52,6 +52,7 @@ use runtime_common::{constants, fees::WeightToFee, Address, Signature}; mod governance; mod kilt; pub use kilt::Web3Name; +pub mod genesis_state; mod migrations; mod parachain; mod runtime_apis; diff --git a/runtimes/peregrine/src/runtime_apis.rs b/runtimes/peregrine/src/runtime_apis.rs index a8f57f6541..f749f82896 100644 --- a/runtimes/peregrine/src/runtime_apis.rs +++ b/runtimes/peregrine/src/runtime_apis.rs @@ -50,7 +50,6 @@ use runtime_common::{ }; use sp_api::impl_runtime_apis; use sp_core::OpaqueMetadata; -use sp_genesis_builder::PresetId; use sp_inherents::{CheckInherentsResult, InherentData}; use sp_metadata_ir::RuntimeApiMetadataIR; use sp_runtime::{ @@ -65,7 +64,7 @@ use crate::{ parachain::ConsensusHook, xcm::UniversalLocation, AssetSwitchPool1, Block, BondedCurrencies, BondedFungibles, Executive, InherentDataExt, ParachainStaking, - ParachainSystem, Runtime, RuntimeCall, SessionKeys, TransactionPayment, Web3Name, VERSION, + ParachainSystem, Runtime, RuntimeCall, RuntimeGenesisConfig, SessionKeys, TransactionPayment, Web3Name, VERSION, }; // This is necessary since by default `RUNTIME_API_VERSIONS` generated by @@ -239,17 +238,17 @@ impl_runtime_apis! { } } - impl sp_genesis_builder::GenesisBuilder for Runtime { + impl sp_genesis_builder::GenesisBuilder for Runtime { fn build_state(config: Vec) -> sp_genesis_builder::Result { - build_state::(config) + build_state::(config) } - fn get_preset(id: &Option) -> Option> { - get_preset::(id, |_| None) + fn get_preset(id: &Option) -> Option> { + get_preset::(id, crate::genesis_state::get_preset) } - fn preset_names() -> Vec { - sp_std::vec![PresetId::from("peregrine_kilt_paseo"), PresetId::from("peregrine_stg_kilt"), PresetId::from("rilt_peregrine_new")] + fn preset_names() -> Vec { + crate::genesis_state::preset_names() } } diff --git a/runtimes/peregrine/src/weights/pallet_assets.rs b/runtimes/peregrine/src/weights/pallet_assets.rs index 0b2e20ca40..6bf952e5ff 100644 --- a/runtimes/peregrine/src/weights/pallet_assets.rs +++ b/runtimes/peregrine/src/weights/pallet_assets.rs @@ -18,28 +18,24 @@ //! Autogenerated weights for `pallet_assets` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 33.0.0 -//! DATE: 2024-08-14, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-05, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` -//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: -// target/release-unoptimized/kilt-parachain +// frame-omni-bencher +// v1 // benchmark // pallet -// --template=.maintain/runtime-weight-template.hbs -// --header=HEADER-GPL -// --wasm-execution=compiled -// --heap-pages=4096 -// --steps=50 -// --repeat=20 -// --chain -// dev -// --pallet -// pallet-assets +// --pallet=pallet-assets // --extrinsic=* -// --output=./runtimes/peregrine/src/weights/pallet_assets.rs +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/peregrine-runtime/peregrine_runtime.compact.compressed.wasm +// --header=HEADER-GPL +// --template=.maintain/runtime-weight-template.hbs +// --output=./runtimes/peregrine/src/weights/ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_imports)] @@ -51,32 +47,32 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_assets`. pub struct WeightInfo(PhantomData); impl pallet_assets::WeightInfo for WeightInfo { - - fn transfer_all() -> Weight { - todo!() - } /// Storage: `Fungibles::Asset` (r:1 w:1) /// Proof: `Fungibles::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) + /// Storage: `Fungibles::NextAssetId` (r:1 w:0) + /// Proof: `Fungibles::NextAssetId` (`max_values`: Some(1), `max_size`: Some(602), added: 1097, mode: `MaxEncodedLen`) fn create() -> Weight { // Proof Size summary in bytes: // Measured: `42` // Estimated: `4273` - // Minimum execution time: 7_511_000 picoseconds. - Weight::from_parts(8_022_000, 0) + // Minimum execution time: 9_846_000 picoseconds. + Weight::from_parts(10_636_000, 0) .saturating_add(Weight::from_parts(0, 4273)) - .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `Fungibles::Asset` (r:1 w:1) /// Proof: `Fungibles::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) + /// Storage: `Fungibles::NextAssetId` (r:1 w:0) + /// Proof: `Fungibles::NextAssetId` (`max_values`: Some(1), `max_size`: Some(602), added: 1097, mode: `MaxEncodedLen`) fn force_create() -> Weight { // Proof Size summary in bytes: // Measured: `42` // Estimated: `4273` - // Minimum execution time: 7_389_000 picoseconds. - Weight::from_parts(7_993_000, 0) + // Minimum execution time: 9_609_000 picoseconds. + Weight::from_parts(9_960_000, 0) .saturating_add(Weight::from_parts(0, 4273)) - .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `Fungibles::Asset` (r:1 w:1) @@ -85,8 +81,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `312` // Estimated: `4273` - // Minimum execution time: 7_724_000 picoseconds. - Weight::from_parts(8_024_000, 0) + // Minimum execution time: 9_502_000 picoseconds. + Weight::from_parts(10_078_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -102,11 +98,11 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0 + c * (212 ±0)` // Estimated: `4273 + c * (3207 ±0)` - // Minimum execution time: 10_650_000 picoseconds. - Weight::from_parts(11_066_000, 0) + // Minimum execution time: 12_708_000 picoseconds. + Weight::from_parts(12_908_000, 0) .saturating_add(Weight::from_parts(0, 4273)) - // Standard Error: 6_907 - .saturating_add(Weight::from_parts(9_817_244, 0).saturating_mul(c.into())) + // Standard Error: 8_373 + .saturating_add(Weight::from_parts(10_367_179, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(c.into()))) .saturating_add(T::DbWeight::get().writes(1)) @@ -122,11 +118,11 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `447 + a * (86 ±0)` // Estimated: `4273 + a * (3221 ±0)` - // Minimum execution time: 10_767_000 picoseconds. - Weight::from_parts(10_982_000, 0) + // Minimum execution time: 13_046_000 picoseconds. + Weight::from_parts(13_596_000, 0) .saturating_add(Weight::from_parts(0, 4273)) - // Standard Error: 3_058 - .saturating_add(Weight::from_parts(3_935_847, 0).saturating_mul(a.into())) + // Standard Error: 3_824 + .saturating_add(Weight::from_parts(4_120_923, 0).saturating_mul(a.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(a.into()))) .saturating_add(T::DbWeight::get().writes(1)) @@ -141,8 +137,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 9_031_000 picoseconds. - Weight::from_parts(9_270_000, 0) + // Minimum execution time: 11_448_000 picoseconds. + Weight::from_parts(11_975_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -155,8 +151,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 16_960_000 picoseconds. - Weight::from_parts(17_381_000, 0) + // Minimum execution time: 20_251_000 picoseconds. + Weight::from_parts(20_700_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -169,8 +165,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `384` // Estimated: `4273` - // Minimum execution time: 22_651_000 picoseconds. - Weight::from_parts(23_338_000, 0) + // Minimum execution time: 26_707_000 picoseconds. + Weight::from_parts(27_542_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -185,8 +181,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `436` // Estimated: `7404` - // Minimum execution time: 33_107_000 picoseconds. - Weight::from_parts(33_858_000, 0) + // Minimum execution time: 36_742_000 picoseconds. + Weight::from_parts(37_880_000, 0) .saturating_add(Weight::from_parts(0, 7404)) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(4)) @@ -201,8 +197,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `436` // Estimated: `7404` - // Minimum execution time: 29_877_000 picoseconds. - Weight::from_parts(30_769_000, 0) + // Minimum execution time: 32_609_000 picoseconds. + Weight::from_parts(33_722_000, 0) .saturating_add(Weight::from_parts(0, 7404)) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(4)) @@ -217,8 +213,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `436` // Estimated: `7404` - // Minimum execution time: 32_722_000 picoseconds. - Weight::from_parts(33_735_000, 0) + // Minimum execution time: 37_069_000 picoseconds. + Weight::from_parts(37_919_000, 0) .saturating_add(Weight::from_parts(0, 7404)) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(4)) @@ -231,8 +227,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `384` // Estimated: `4273` - // Minimum execution time: 10_858_000 picoseconds. - Weight::from_parts(11_325_000, 0) + // Minimum execution time: 13_216_000 picoseconds. + Weight::from_parts(13_805_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -245,8 +241,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `384` // Estimated: `4273` - // Minimum execution time: 10_834_000 picoseconds. - Weight::from_parts(11_284_000, 0) + // Minimum execution time: 13_486_000 picoseconds. + Weight::from_parts(14_055_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -257,8 +253,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `312` // Estimated: `4273` - // Minimum execution time: 7_493_000 picoseconds. - Weight::from_parts(7_911_000, 0) + // Minimum execution time: 9_750_000 picoseconds. + Weight::from_parts(10_129_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -269,8 +265,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `312` // Estimated: `4273` - // Minimum execution time: 7_613_000 picoseconds. - Weight::from_parts(7_951_000, 0) + // Minimum execution time: 9_785_000 picoseconds. + Weight::from_parts(10_292_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -283,8 +279,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 9_365_000 picoseconds. - Weight::from_parts(9_594_000, 0) + // Minimum execution time: 11_901_000 picoseconds. + Weight::from_parts(12_532_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -295,8 +291,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 7_928_000 picoseconds. - Weight::from_parts(8_388_000, 0) + // Minimum execution time: 10_301_000 picoseconds. + Weight::from_parts(10_801_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -307,17 +303,15 @@ impl pallet_assets::WeightInfo for WeightInfo { /// Proof: `Fungibles::Metadata` (`max_values`: None, `max_size`: Some(646), added: 3121, mode: `MaxEncodedLen`) /// The range of component `n` is `[0, 4]`. /// The range of component `s` is `[0, 4]`. - fn set_metadata(n: u32, s: u32, ) -> Weight { + fn set_metadata(n: u32, _s: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 9_177_000 picoseconds. - Weight::from_parts(9_513_737, 0) + // Minimum execution time: 10_783_000 picoseconds. + Weight::from_parts(12_053_448, 0) .saturating_add(Weight::from_parts(0, 4273)) - // Standard Error: 4_348 - .saturating_add(Weight::from_parts(92_631, 0).saturating_mul(n.into())) - // Standard Error: 4_348 - .saturating_add(Weight::from_parts(76_577, 0).saturating_mul(s.into())) + // Standard Error: 6_846 + .saturating_add(Weight::from_parts(35_427, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -329,8 +323,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `346` // Estimated: `4273` - // Minimum execution time: 9_824_000 picoseconds. - Weight::from_parts(10_333_000, 0) + // Minimum execution time: 11_543_000 picoseconds. + Weight::from_parts(12_348_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -341,17 +335,15 @@ impl pallet_assets::WeightInfo for WeightInfo { /// Proof: `Fungibles::Metadata` (`max_values`: None, `max_size`: Some(646), added: 3121, mode: `MaxEncodedLen`) /// The range of component `n` is `[0, 4]`. /// The range of component `s` is `[0, 4]`. - fn force_set_metadata(n: u32, s: u32, ) -> Weight { + fn force_set_metadata(_n: u32, s: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `117` // Estimated: `4273` - // Minimum execution time: 8_095_000 picoseconds. - Weight::from_parts(8_730_911, 0) + // Minimum execution time: 10_576_000 picoseconds. + Weight::from_parts(11_474_294, 0) .saturating_add(Weight::from_parts(0, 4273)) - // Standard Error: 4_722 - .saturating_add(Weight::from_parts(39_054, 0).saturating_mul(n.into())) - // Standard Error: 4_722 - .saturating_add(Weight::from_parts(70_013, 0).saturating_mul(s.into())) + // Standard Error: 5_840 + .saturating_add(Weight::from_parts(41_680, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -363,8 +355,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `346` // Estimated: `4273` - // Minimum execution time: 9_583_000 picoseconds. - Weight::from_parts(9_811_000, 0) + // Minimum execution time: 11_704_000 picoseconds. + Weight::from_parts(12_366_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -375,8 +367,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 7_572_000 picoseconds. - Weight::from_parts(7_975_000, 0) + // Minimum execution time: 9_939_000 picoseconds. + Weight::from_parts(10_345_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -389,8 +381,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `312` // Estimated: `4273` - // Minimum execution time: 12_806_000 picoseconds. - Weight::from_parts(13_339_000, 0) + // Minimum execution time: 15_144_000 picoseconds. + Weight::from_parts(15_578_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -407,8 +399,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `604` // Estimated: `7404` - // Minimum execution time: 41_589_000 picoseconds. - Weight::from_parts(42_096_000, 0) + // Minimum execution time: 43_878_000 picoseconds. + Weight::from_parts(44_817_000, 0) .saturating_add(Weight::from_parts(0, 7404)) .saturating_add(T::DbWeight::get().reads(5)) .saturating_add(T::DbWeight::get().writes(5)) @@ -421,8 +413,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `480` // Estimated: `4273` - // Minimum execution time: 14_768_000 picoseconds. - Weight::from_parts(15_253_000, 0) + // Minimum execution time: 17_418_000 picoseconds. + Weight::from_parts(18_024_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -435,8 +427,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `480` // Estimated: `4273` - // Minimum execution time: 14_912_000 picoseconds. - Weight::from_parts(15_381_000, 0) + // Minimum execution time: 17_591_000 picoseconds. + Weight::from_parts(17_857_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -447,8 +439,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 8_518_000 picoseconds. - Weight::from_parts(8_741_000, 0) + // Minimum execution time: 10_772_000 picoseconds. + Weight::from_parts(11_279_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -461,8 +453,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 13_139_000 picoseconds. - Weight::from_parts(13_604_000, 0) + // Minimum execution time: 15_115_000 picoseconds. + Weight::from_parts(15_670_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -475,8 +467,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 12_159_000 picoseconds. - Weight::from_parts(12_811_000, 0) + // Minimum execution time: 14_835_000 picoseconds. + Weight::from_parts(15_181_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -489,8 +481,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `402` // Estimated: `4273` - // Minimum execution time: 11_554_000 picoseconds. - Weight::from_parts(11_897_000, 0) + // Minimum execution time: 14_202_000 picoseconds. + Weight::from_parts(14_783_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -503,8 +495,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `435` // Estimated: `4273` - // Minimum execution time: 11_645_000 picoseconds. - Weight::from_parts(11_851_000, 0) + // Minimum execution time: 13_326_000 picoseconds. + Weight::from_parts(13_840_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -517,12 +509,28 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `384` // Estimated: `4273` - // Minimum execution time: 10_550_000 picoseconds. - Weight::from_parts(10_923_000, 0) + // Minimum execution time: 13_541_000 picoseconds. + Weight::from_parts(13_922_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } + /// Storage: `Fungibles::Asset` (r:1 w:1) + /// Proof: `Fungibles::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) + /// Storage: `Fungibles::Account` (r:2 w:2) + /// Proof: `Fungibles::Account` (`max_values`: None, `max_size`: Some(732), added: 3207, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) + fn transfer_all() -> Weight { + // Proof Size summary in bytes: + // Measured: `436` + // Estimated: `7404` + // Minimum execution time: 44_656_000 picoseconds. + Weight::from_parts(45_847_000, 0) + .saturating_add(Weight::from_parts(0, 7404)) + .saturating_add(T::DbWeight::get().reads(4)) + .saturating_add(T::DbWeight::get().writes(4)) + } } #[cfg(test)] @@ -911,4 +919,16 @@ mod tests { > 4273 ); } + #[test] + fn test_transfer_all() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 7404 + ); + } } diff --git a/runtimes/peregrine/src/weights/pallet_balances.rs b/runtimes/peregrine/src/weights/pallet_balances.rs index 617c9a8b17..33b9b338ea 100644 --- a/runtimes/peregrine/src/weights/pallet_balances.rs +++ b/runtimes/peregrine/src/weights/pallet_balances.rs @@ -18,26 +18,24 @@ //! Autogenerated weights for `pallet_balances` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 33.0.0 -//! DATE: 2024-06-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-05, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `eyrie-7`, CPU: `Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz` -//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 +//! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: -// ./target/release/kilt-parachain +// frame-omni-bencher +// v1 // benchmark // pallet -// --template=.maintain/runtime-weight-template.hbs -// --header=HEADER-GPL -// --wasm-execution=compiled -// --heap-pages=4096 -// --steps=50 -// --repeat=20 -// --chain=dev // --pallet=pallet-balances // --extrinsic=* -// --output=./runtimes/peregrine/src/weights/pallet_balances.rs +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/peregrine-runtime/peregrine_runtime.compact.compressed.wasm +// --header=HEADER-GPL +// --template=.maintain/runtime-weight-template.hbs +// --output=./runtimes/peregrine/src/weights/ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_imports)] @@ -49,23 +47,14 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_balances`. pub struct WeightInfo(PhantomData); impl pallet_balances::WeightInfo for WeightInfo { - - - fn burn_allow_death() -> Weight { - todo!() - } - - fn burn_keep_alive() -> Weight { - todo!() - } /// Storage: `System::Account` (r:2 w:2) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) fn transfer_allow_death() -> Weight { // Proof Size summary in bytes: // Measured: `107` // Estimated: `6204` - // Minimum execution time: 57_680_000 picoseconds. - Weight::from_parts(58_518_000, 0) + // Minimum execution time: 51_637_000 picoseconds. + Weight::from_parts(52_926_000, 0) .saturating_add(Weight::from_parts(0, 6204)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -76,8 +65,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3597` - // Minimum execution time: 36_421_000 picoseconds. - Weight::from_parts(37_217_000, 0) + // Minimum execution time: 32_292_000 picoseconds. + Weight::from_parts(33_540_000, 0) .saturating_add(Weight::from_parts(0, 3597)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -88,8 +77,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `178` // Estimated: `3597` - // Minimum execution time: 15_716_000 picoseconds. - Weight::from_parts(16_230_000, 0) + // Minimum execution time: 12_856_000 picoseconds. + Weight::from_parts(13_355_000, 0) .saturating_add(Weight::from_parts(0, 3597)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -100,8 +89,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `178` // Estimated: `3597` - // Minimum execution time: 21_093_000 picoseconds. - Weight::from_parts(21_350_000, 0) + // Minimum execution time: 19_296_000 picoseconds. + Weight::from_parts(20_526_000, 0) .saturating_add(Weight::from_parts(0, 3597)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -112,8 +101,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `214` // Estimated: `8811` - // Minimum execution time: 60_396_000 picoseconds. - Weight::from_parts(61_513_000, 0) + // Minimum execution time: 53_749_000 picoseconds. + Weight::from_parts(54_594_000, 0) .saturating_add(Weight::from_parts(0, 8811)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(3)) @@ -124,8 +113,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3597` - // Minimum execution time: 45_008_000 picoseconds. - Weight::from_parts(45_809_000, 0) + // Minimum execution time: 40_191_000 picoseconds. + Weight::from_parts(41_039_000, 0) .saturating_add(Weight::from_parts(0, 3597)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -136,8 +125,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `178` // Estimated: `3597` - // Minimum execution time: 17_799_000 picoseconds. - Weight::from_parts(18_465_000, 0) + // Minimum execution time: 15_368_000 picoseconds. + Weight::from_parts(15_873_000, 0) .saturating_add(Weight::from_parts(0, 3597)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -149,11 +138,11 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0 + u * (140 ±0)` // Estimated: `990 + u * (2607 ±0)` - // Minimum execution time: 17_365_000 picoseconds. - Weight::from_parts(17_698_000, 0) + // Minimum execution time: 14_634_000 picoseconds. + Weight::from_parts(14_833_000, 0) .saturating_add(Weight::from_parts(0, 990)) - // Standard Error: 10_091 - .saturating_add(Weight::from_parts(12_523_656, 0).saturating_mul(u.into())) + // Standard Error: 7_838 + .saturating_add(Weight::from_parts(10_873_191, 0).saturating_mul(u.into())) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(u.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(u.into()))) .saturating_add(Weight::from_parts(0, 2607).saturating_mul(u.into())) @@ -164,11 +153,31 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1501` - // Minimum execution time: 6_558_000 picoseconds. - Weight::from_parts(6_815_000, 0) + // Minimum execution time: 5_428_000 picoseconds. + Weight::from_parts(5_647_000, 0) .saturating_add(Weight::from_parts(0, 1501)) .saturating_add(T::DbWeight::get().reads(1)) } + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) + fn burn_allow_death() -> Weight { + // Proof Size summary in bytes: + // Measured: `107` + // Estimated: `3597` + // Minimum execution time: 35_830_000 picoseconds. + Weight::from_parts(36_438_000, 0) + .saturating_add(Weight::from_parts(0, 3597)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + fn burn_keep_alive() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 16_343_000 picoseconds. + Weight::from_parts(16_825_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + } } #[cfg(test)] @@ -281,4 +290,16 @@ mod tests { > 1501 ); } + #[test] + fn test_burn_allow_death() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 3597 + ); + } } diff --git a/runtimes/peregrine/src/weights/pallet_bonded_assets.rs b/runtimes/peregrine/src/weights/pallet_bonded_assets.rs index 2cebf42cba..9c66b44b0b 100644 --- a/runtimes/peregrine/src/weights/pallet_bonded_assets.rs +++ b/runtimes/peregrine/src/weights/pallet_bonded_assets.rs @@ -18,20 +18,21 @@ //! Autogenerated weights for `pallet_bonded_assets` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 33.0.0 -//! DATE: 2024-11-29, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-05, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` -//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: -// ./target/release/kilt-parachain +// frame-omni-bencher +// v1 // benchmark // pallet -// --heap-pages=4096 -// --chain=dev // --pallet=pallet-bonded-assets // --extrinsic=* +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/peregrine-runtime/peregrine_runtime.compact.compressed.wasm // --header=HEADER-GPL // --template=.maintain/runtime-weight-template.hbs // --output=./runtimes/peregrine/src/weights/ @@ -49,32 +50,32 @@ use pallet_assets as pallet_bonded_assets; /// Weight functions for `pallet_bonded_assets`. pub struct WeightInfo(PhantomData); impl pallet_bonded_assets::WeightInfo for WeightInfo { - - fn transfer_all() -> Weight { - todo!() - } /// Storage: `BondedFungibles::Asset` (r:1 w:1) /// Proof: `BondedFungibles::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `BondedFungibles::NextAssetId` (r:1 w:0) + /// Proof: `BondedFungibles::NextAssetId` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) fn create() -> Weight { // Proof Size summary in bytes: // Measured: `42` // Estimated: `3675` - // Minimum execution time: 5_524_000 picoseconds. - Weight::from_parts(5_886_000, 0) + // Minimum execution time: 10_003_000 picoseconds. + Weight::from_parts(10_816_000, 0) .saturating_add(Weight::from_parts(0, 3675)) - .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `BondedFungibles::Asset` (r:1 w:1) /// Proof: `BondedFungibles::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `BondedFungibles::NextAssetId` (r:1 w:0) + /// Proof: `BondedFungibles::NextAssetId` (`max_values`: Some(1), `max_size`: Some(4), added: 499, mode: `MaxEncodedLen`) fn force_create() -> Weight { // Proof Size summary in bytes: // Measured: `42` // Estimated: `3675` - // Minimum execution time: 5_401_000 picoseconds. - Weight::from_parts(5_623_000, 0) + // Minimum execution time: 9_846_000 picoseconds. + Weight::from_parts(10_130_000, 0) .saturating_add(Weight::from_parts(0, 3675)) - .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `BondedFungibles::Asset` (r:1 w:1) @@ -83,8 +84,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `314` // Estimated: `3675` - // Minimum execution time: 5_746_000 picoseconds. - Weight::from_parts(6_204_000, 0) + // Minimum execution time: 9_691_000 picoseconds. + Weight::from_parts(9_991_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -100,11 +101,11 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `0 + c * (212 ±0)` // Estimated: `3675 + c * (2609 ±0)` - // Minimum execution time: 11_169_000 picoseconds. - Weight::from_parts(4_540_955, 0) + // Minimum execution time: 13_235_000 picoseconds. + Weight::from_parts(13_541_000, 0) .saturating_add(Weight::from_parts(0, 3675)) - // Standard Error: 13_118 - .saturating_add(Weight::from_parts(7_987_660, 0).saturating_mul(c.into())) + // Standard Error: 8_914 + .saturating_add(Weight::from_parts(10_410_204, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(c.into()))) .saturating_add(T::DbWeight::get().writes(1)) @@ -120,11 +121,11 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `451 + a * (86 ±0)` // Estimated: `3675 + a * (2623 ±0)` - // Minimum execution time: 8_275_000 picoseconds. - Weight::from_parts(8_481_000, 0) + // Minimum execution time: 13_010_000 picoseconds. + Weight::from_parts(13_468_000, 0) .saturating_add(Weight::from_parts(0, 3675)) - // Standard Error: 2_635 - .saturating_add(Weight::from_parts(3_231_941, 0).saturating_mul(a.into())) + // Standard Error: 3_880 + .saturating_add(Weight::from_parts(4_185_022, 0).saturating_mul(a.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(a.into()))) .saturating_add(T::DbWeight::get().writes(1)) @@ -134,13 +135,13 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo /// Storage: `BondedFungibles::Asset` (r:1 w:1) /// Proof: `BondedFungibles::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) /// Storage: `BondedFungibles::Metadata` (r:1 w:0) - /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`) + /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) fn finish_destroy() -> Weight { // Proof Size summary in bytes: // Measured: `280` // Estimated: `3675` - // Minimum execution time: 6_581_000 picoseconds. - Weight::from_parts(6_935_000, 0) + // Minimum execution time: 11_262_000 picoseconds. + Weight::from_parts(11_855_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -153,8 +154,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `280` // Estimated: `3675` - // Minimum execution time: 12_312_000 picoseconds. - Weight::from_parts(12_680_000, 0) + // Minimum execution time: 19_635_000 picoseconds. + Weight::from_parts(20_505_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -167,8 +168,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `388` // Estimated: `3675` - // Minimum execution time: 16_661_000 picoseconds. - Weight::from_parts(17_291_000, 0) + // Minimum execution time: 25_108_000 picoseconds. + Weight::from_parts(26_140_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -183,8 +184,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `440` // Estimated: `6208` - // Minimum execution time: 23_697_000 picoseconds. - Weight::from_parts(24_548_000, 0) + // Minimum execution time: 36_470_000 picoseconds. + Weight::from_parts(37_648_000, 0) .saturating_add(Weight::from_parts(0, 6208)) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(4)) @@ -199,8 +200,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `440` // Estimated: `6208` - // Minimum execution time: 20_724_000 picoseconds. - Weight::from_parts(21_775_000, 0) + // Minimum execution time: 32_873_000 picoseconds. + Weight::from_parts(33_469_000, 0) .saturating_add(Weight::from_parts(0, 6208)) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(4)) @@ -215,8 +216,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `440` // Estimated: `6208` - // Minimum execution time: 22_727_000 picoseconds. - Weight::from_parts(24_154_000, 0) + // Minimum execution time: 36_524_000 picoseconds. + Weight::from_parts(37_309_000, 0) .saturating_add(Weight::from_parts(0, 6208)) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(4)) @@ -229,8 +230,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `388` // Estimated: `3675` - // Minimum execution time: 7_572_000 picoseconds. - Weight::from_parts(8_019_000, 0) + // Minimum execution time: 13_330_000 picoseconds. + Weight::from_parts(13_742_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -243,8 +244,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `388` // Estimated: `3675` - // Minimum execution time: 7_513_000 picoseconds. - Weight::from_parts(8_112_000, 0) + // Minimum execution time: 13_243_000 picoseconds. + Weight::from_parts(13_788_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -255,8 +256,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `314` // Estimated: `3675` - // Minimum execution time: 5_282_000 picoseconds. - Weight::from_parts(5_682_000, 0) + // Minimum execution time: 9_629_000 picoseconds. + Weight::from_parts(10_087_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -267,8 +268,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `314` // Estimated: `3675` - // Minimum execution time: 5_361_000 picoseconds. - Weight::from_parts(5_701_000, 0) + // Minimum execution time: 9_642_000 picoseconds. + Weight::from_parts(10_182_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -276,13 +277,13 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo /// Storage: `BondedFungibles::Asset` (r:1 w:1) /// Proof: `BondedFungibles::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) /// Storage: `BondedFungibles::Metadata` (r:1 w:0) - /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`) + /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) fn transfer_ownership() -> Weight { // Proof Size summary in bytes: // Measured: `280` // Estimated: `3675` - // Minimum execution time: 6_573_000 picoseconds. - Weight::from_parts(6_884_000, 0) + // Minimum execution time: 11_978_000 picoseconds. + Weight::from_parts(12_354_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -293,8 +294,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `280` // Estimated: `3675` - // Minimum execution time: 5_706_000 picoseconds. - Weight::from_parts(6_144_000, 0) + // Minimum execution time: 10_268_000 picoseconds. + Weight::from_parts(10_718_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -302,31 +303,29 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo /// Storage: `BondedFungibles::Asset` (r:1 w:0) /// Proof: `BondedFungibles::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) /// Storage: `BondedFungibles::Metadata` (r:1 w:1) - /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`) - /// The range of component `n` is `[0, 4]`. - /// The range of component `s` is `[0, 4]`. - fn set_metadata(_n: u32, s: u32, ) -> Weight { + /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + /// The range of component `n` is `[0, 50]`. + /// The range of component `s` is `[0, 50]`. + fn set_metadata(_n: u32, _s: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `280` // Estimated: `3675` - // Minimum execution time: 6_279_000 picoseconds. - Weight::from_parts(7_152_774, 0) + // Minimum execution time: 11_085_000 picoseconds. + Weight::from_parts(12_793_627, 0) .saturating_add(Weight::from_parts(0, 3675)) - // Standard Error: 4_624 - .saturating_add(Weight::from_parts(22_496, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `BondedFungibles::Asset` (r:1 w:0) /// Proof: `BondedFungibles::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) /// Storage: `BondedFungibles::Metadata` (r:1 w:1) - /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`) + /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) fn clear_metadata() -> Weight { // Proof Size summary in bytes: - // Measured: `350` + // Measured: `444` // Estimated: `3675` - // Minimum execution time: 7_113_000 picoseconds. - Weight::from_parts(7_524_000, 0) + // Minimum execution time: 11_653_000 picoseconds. + Weight::from_parts(12_068_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -334,33 +333,31 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo /// Storage: `BondedFungibles::Asset` (r:1 w:0) /// Proof: `BondedFungibles::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) /// Storage: `BondedFungibles::Metadata` (r:1 w:1) - /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`) - /// The range of component `n` is `[0, 4]`. - /// The range of component `s` is `[0, 4]`. - fn force_set_metadata(n: u32, s: u32, ) -> Weight { + /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) + /// The range of component `n` is `[0, 50]`. + /// The range of component `s` is `[0, 50]`. + fn force_set_metadata(_n: u32, s: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `119` // Estimated: `3675` - // Minimum execution time: 5_756_000 picoseconds. - Weight::from_parts(6_189_023, 0) + // Minimum execution time: 10_509_000 picoseconds. + Weight::from_parts(12_055_798, 0) .saturating_add(Weight::from_parts(0, 3675)) - // Standard Error: 3_605 - .saturating_add(Weight::from_parts(62_714, 0).saturating_mul(n.into())) - // Standard Error: 3_605 - .saturating_add(Weight::from_parts(72_261, 0).saturating_mul(s.into())) + // Standard Error: 2_305 + .saturating_add(Weight::from_parts(3_443, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `BondedFungibles::Asset` (r:1 w:0) /// Proof: `BondedFungibles::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) /// Storage: `BondedFungibles::Metadata` (r:1 w:1) - /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(48), added: 2523, mode: `MaxEncodedLen`) + /// Proof: `BondedFungibles::Metadata` (`max_values`: None, `max_size`: Some(140), added: 2615, mode: `MaxEncodedLen`) fn force_clear_metadata() -> Weight { // Proof Size summary in bytes: - // Measured: `350` + // Measured: `444` // Estimated: `3675` - // Minimum execution time: 6_996_000 picoseconds. - Weight::from_parts(7_408_000, 0) + // Minimum execution time: 12_233_000 picoseconds. + Weight::from_parts(12_815_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -371,8 +368,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `280` // Estimated: `3675` - // Minimum execution time: 5_816_000 picoseconds. - Weight::from_parts(6_225_000, 0) + // Minimum execution time: 10_207_000 picoseconds. + Weight::from_parts(10_620_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -385,8 +382,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `314` // Estimated: `3675` - // Minimum execution time: 9_372_000 picoseconds. - Weight::from_parts(9_802_000, 0) + // Minimum execution time: 15_368_000 picoseconds. + Weight::from_parts(16_162_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -403,8 +400,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `610` // Estimated: `6208` - // Minimum execution time: 29_488_000 picoseconds. - Weight::from_parts(30_631_000, 0) + // Minimum execution time: 44_392_000 picoseconds. + Weight::from_parts(45_926_000, 0) .saturating_add(Weight::from_parts(0, 6208)) .saturating_add(T::DbWeight::get().reads(5)) .saturating_add(T::DbWeight::get().writes(5)) @@ -417,8 +414,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `484` // Estimated: `3675` - // Minimum execution time: 10_844_000 picoseconds. - Weight::from_parts(11_277_000, 0) + // Minimum execution time: 17_013_000 picoseconds. + Weight::from_parts(17_615_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -431,8 +428,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `484` // Estimated: `3675` - // Minimum execution time: 10_635_000 picoseconds. - Weight::from_parts(11_133_000, 0) + // Minimum execution time: 16_969_000 picoseconds. + Weight::from_parts(17_730_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -443,8 +440,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `280` // Estimated: `3675` - // Minimum execution time: 5_844_000 picoseconds. - Weight::from_parts(6_365_000, 0) + // Minimum execution time: 10_660_000 picoseconds. + Weight::from_parts(11_118_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -457,8 +454,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `280` // Estimated: `3675` - // Minimum execution time: 8_969_000 picoseconds. - Weight::from_parts(9_620_000, 0) + // Minimum execution time: 14_678_000 picoseconds. + Weight::from_parts(15_256_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -471,8 +468,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `280` // Estimated: `3675` - // Minimum execution time: 8_357_000 picoseconds. - Weight::from_parts(8_621_000, 0) + // Minimum execution time: 14_010_000 picoseconds. + Weight::from_parts(14_854_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -485,8 +482,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `406` // Estimated: `3675` - // Minimum execution time: 8_669_000 picoseconds. - Weight::from_parts(8_993_000, 0) + // Minimum execution time: 13_557_000 picoseconds. + Weight::from_parts(14_206_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -499,8 +496,8 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `439` // Estimated: `3675` - // Minimum execution time: 7_975_000 picoseconds. - Weight::from_parts(8_287_000, 0) + // Minimum execution time: 13_061_000 picoseconds. + Weight::from_parts(13_681_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -513,12 +510,28 @@ impl pallet_bonded_assets::WeightInfo for WeightInfo // Proof Size summary in bytes: // Measured: `388` // Estimated: `3675` - // Minimum execution time: 7_521_000 picoseconds. - Weight::from_parts(7_789_000, 0) + // Minimum execution time: 13_201_000 picoseconds. + Weight::from_parts(13_722_000, 0) .saturating_add(Weight::from_parts(0, 3675)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } + /// Storage: `BondedFungibles::Asset` (r:1 w:1) + /// Proof: `BondedFungibles::Asset` (`max_values`: None, `max_size`: Some(210), added: 2685, mode: `MaxEncodedLen`) + /// Storage: `BondedFungibles::Account` (r:2 w:2) + /// Proof: `BondedFungibles::Account` (`max_values`: None, `max_size`: Some(134), added: 2609, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) + fn transfer_all() -> Weight { + // Proof Size summary in bytes: + // Measured: `440` + // Estimated: `6208` + // Minimum execution time: 43_581_000 picoseconds. + Weight::from_parts(45_042_000, 0) + .saturating_add(Weight::from_parts(0, 6208)) + .saturating_add(T::DbWeight::get().reads(4)) + .saturating_add(T::DbWeight::get().writes(4)) + } } #[cfg(test)] @@ -907,4 +920,16 @@ mod tests { > 3675 ); } + #[test] + fn test_transfer_all() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 6208 + ); + } } diff --git a/runtimes/peregrine/src/weights/pallet_scheduler.rs b/runtimes/peregrine/src/weights/pallet_scheduler.rs index 2181a1db14..9862fb1baa 100644 --- a/runtimes/peregrine/src/weights/pallet_scheduler.rs +++ b/runtimes/peregrine/src/weights/pallet_scheduler.rs @@ -18,26 +18,24 @@ //! Autogenerated weights for `pallet_scheduler` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 33.0.0 -//! DATE: 2024-06-20, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-05, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `eyrie-7`, CPU: `Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz` -//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 +//! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: -// ./target/release/kilt-parachain +// frame-omni-bencher +// v1 // benchmark // pallet -// --template=.maintain/runtime-weight-template.hbs -// --header=HEADER-GPL -// --wasm-execution=compiled -// --heap-pages=4096 -// --steps=50 -// --repeat=20 -// --chain=dev // --pallet=pallet-scheduler // --extrinsic=* -// --output=./runtimes/peregrine/src/weights/pallet_scheduler.rs +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/peregrine-runtime/peregrine_runtime.compact.compressed.wasm +// --header=HEADER-GPL +// --template=.maintain/runtime-weight-template.hbs +// --output=./runtimes/peregrine/src/weights/ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_imports)] @@ -49,26 +47,14 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_scheduler`. pub struct WeightInfo(PhantomData); impl pallet_scheduler::WeightInfo for WeightInfo { - - - fn cancel_retry_named() -> cumulus_primitives_core::Weight { todo!() } - - fn cancel_retry() -> cumulus_primitives_core::Weight { todo!() } - - fn set_retry_named() -> cumulus_primitives_core::Weight { todo!() } - - fn schedule_retry(_: u32) -> cumulus_primitives_core::Weight { todo!() } - - fn set_retry() -> cumulus_primitives_core::Weight { todo!() } - /// Storage: `Scheduler::IncompleteSince` (r:1 w:1) /// Proof: `Scheduler::IncompleteSince` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) fn service_agendas_base() -> Weight { // Proof Size summary in bytes: // Measured: `36` // Estimated: `1493` - // Minimum execution time: 2_691_000 picoseconds. - Weight::from_parts(2_800_000, 0) + // Minimum execution time: 2_964_000 picoseconds. + Weight::from_parts(3_081_000, 0) .saturating_add(Weight::from_parts(0, 1493)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -80,11 +66,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 3_303_000 picoseconds. - Weight::from_parts(7_206_829, 0) + // Minimum execution time: 3_341_000 picoseconds. + Weight::from_parts(6_808_524, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 2_466 - .saturating_add(Weight::from_parts(460_152, 0).saturating_mul(s.into())) + // Standard Error: 1_773 + .saturating_add(Weight::from_parts(306_913, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -92,12 +78,12 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_464_000 picoseconds. - Weight::from_parts(3_715_000, 0) + // Minimum execution time: 3_063_000 picoseconds. + Weight::from_parts(3_282_000, 0) .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `Preimage::PreimageFor` (r:1 w:1) - /// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `Measured`) + /// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`) /// Storage: `Preimage::StatusFor` (r:1 w:0) /// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(91), added: 2566, mode: `MaxEncodedLen`) /// Storage: `Preimage::RequestStatusFor` (r:1 w:1) @@ -106,15 +92,14 @@ impl pallet_scheduler::WeightInfo for WeightInfo { fn service_task_fetched(s: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `246 + s * (1 ±0)` - // Estimated: `3711 + s * (1 ±0)` - // Minimum execution time: 18_427_000 picoseconds. - Weight::from_parts(18_762_000, 0) - .saturating_add(Weight::from_parts(0, 3711)) - // Standard Error: 17 - .saturating_add(Weight::from_parts(1_557, 0).saturating_mul(s.into())) + // Estimated: `4197809` + // Minimum execution time: 16_720_000 picoseconds. + Weight::from_parts(17_146_000, 0) + .saturating_add(Weight::from_parts(0, 4197809)) + // Standard Error: 145 + .saturating_add(Weight::from_parts(12_950, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(2)) - .saturating_add(Weight::from_parts(0, 1).saturating_mul(s.into())) } /// Storage: `Scheduler::Lookup` (r:0 w:1) /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) @@ -122,8 +107,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_194_000 picoseconds. - Weight::from_parts(5_374_000, 0) + // Minimum execution time: 4_138_000 picoseconds. + Weight::from_parts(4_355_000, 0) .saturating_add(Weight::from_parts(0, 0)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -131,24 +116,24 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_554_000 picoseconds. - Weight::from_parts(3_666_000, 0) + // Minimum execution time: 3_023_000 picoseconds. + Weight::from_parts(3_119_000, 0) .saturating_add(Weight::from_parts(0, 0)) } fn execute_dispatch_signed() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_477_000 picoseconds. - Weight::from_parts(2_617_000, 0) + // Minimum execution time: 1_899_000 picoseconds. + Weight::from_parts(2_081_000, 0) .saturating_add(Weight::from_parts(0, 0)) } fn execute_dispatch_unsigned() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_507_000 picoseconds. - Weight::from_parts(2_604_000, 0) + // Minimum execution time: 1_850_000 picoseconds. + Weight::from_parts(2_045_000, 0) .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `Scheduler::Agenda` (r:1 w:1) @@ -158,16 +143,18 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 10_931_000 picoseconds. - Weight::from_parts(15_038_764, 0) + // Minimum execution time: 8_746_000 picoseconds. + Weight::from_parts(12_361_403, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 2_079 - .saturating_add(Weight::from_parts(482_973, 0).saturating_mul(s.into())) + // Standard Error: 2_193 + .saturating_add(Weight::from_parts(338_874, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `Scheduler::Agenda` (r:1 w:1) /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) /// Storage: `Scheduler::Lookup` (r:0 w:1) /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) /// The range of component `s` is `[1, 50]`. @@ -175,13 +162,13 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 16_383_000 picoseconds. - Weight::from_parts(16_256_564, 0) + // Minimum execution time: 13_517_000 picoseconds. + Weight::from_parts(14_529_312, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 786 - .saturating_add(Weight::from_parts(718_645, 0).saturating_mul(s.into())) + // Standard Error: 2_294 + .saturating_add(Weight::from_parts(542_358, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) - .saturating_add(T::DbWeight::get().writes(2)) + .saturating_add(T::DbWeight::get().writes(3)) } /// Storage: `Scheduler::Lookup` (r:1 w:1) /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) @@ -192,11 +179,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `266 + s * (189 ±0)` // Estimated: `42632` - // Minimum execution time: 14_590_000 picoseconds. - Weight::from_parts(19_492_127, 0) + // Minimum execution time: 11_219_000 picoseconds. + Weight::from_parts(16_231_326, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 2_745 - .saturating_add(Weight::from_parts(509_883, 0).saturating_mul(s.into())) + // Standard Error: 3_277 + .saturating_add(Weight::from_parts(371_523, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) } @@ -204,19 +191,98 @@ impl pallet_scheduler::WeightInfo for WeightInfo { /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) /// Storage: `Scheduler::Agenda` (r:1 w:1) /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) /// The range of component `s` is `[1, 50]`. fn cancel_named(s: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `290 + s * (189 ±0)` // Estimated: `42632` - // Minimum execution time: 18_014_000 picoseconds. - Weight::from_parts(18_682_628, 0) + // Minimum execution time: 15_550_000 picoseconds. + Weight::from_parts(16_976_892, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 1_730 - .saturating_add(Weight::from_parts(749_440, 0).saturating_mul(s.into())) + // Standard Error: 3_254 + .saturating_add(Weight::from_parts(570_131, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `Scheduler::Agenda` (r:1 w:1) + /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) + /// The range of component `s` is `[1, 50]`. + fn schedule_retry(s: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `123` + // Estimated: `42632` + // Minimum execution time: 8_521_000 picoseconds. + Weight::from_parts(9_310_610, 0) + .saturating_add(Weight::from_parts(0, 42632)) + // Standard Error: 1_652 + .saturating_add(Weight::from_parts(35_536, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(2)) } + /// Storage: `Scheduler::Agenda` (r:1 w:0) + /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) + fn set_retry() -> Weight { + // Proof Size summary in bytes: + // Measured: `9133` + // Estimated: `42632` + // Minimum execution time: 23_458_000 picoseconds. + Weight::from_parts(24_347_000, 0) + .saturating_add(Weight::from_parts(0, 42632)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Scheduler::Lookup` (r:1 w:0) + /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Agenda` (r:1 w:0) + /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) + fn set_retry_named() -> Weight { + // Proof Size summary in bytes: + // Measured: `9815` + // Estimated: `42632` + // Minimum execution time: 28_848_000 picoseconds. + Weight::from_parts(30_245_000, 0) + .saturating_add(Weight::from_parts(0, 42632)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Scheduler::Agenda` (r:1 w:0) + /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) + fn cancel_retry() -> Weight { + // Proof Size summary in bytes: + // Measured: `9145` + // Estimated: `42632` + // Minimum execution time: 22_716_000 picoseconds. + Weight::from_parts(23_332_000, 0) + .saturating_add(Weight::from_parts(0, 42632)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Scheduler::Lookup` (r:1 w:0) + /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Agenda` (r:1 w:0) + /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) + fn cancel_retry_named() -> Weight { + // Proof Size summary in bytes: + // Measured: `9827` + // Estimated: `42632` + // Minimum execution time: 27_001_000 picoseconds. + Weight::from_parts(28_431_000, 0) + .saturating_add(Weight::from_parts(0, 42632)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } } #[cfg(test)] @@ -254,7 +320,7 @@ mod tests { .max_extrinsic .unwrap_or_else(::max_value) .proof_size() - > 3711 + > 4197809 ); } #[test] @@ -305,4 +371,64 @@ mod tests { > 42632 ); } + #[test] + fn test_schedule_retry() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 42632 + ); + } + #[test] + fn test_set_retry() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 42632 + ); + } + #[test] + fn test_set_retry_named() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 42632 + ); + } + #[test] + fn test_cancel_retry() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 42632 + ); + } + #[test] + fn test_cancel_retry_named() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 42632 + ); + } } From 7bd6d0d58a2562c11df622dd806f512989cf2a00 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 5 May 2025 16:10:44 +0200 Subject: [PATCH 21/36] benchmarking --- Cargo.lock | 1 + nodes/parachain/src/chain_spec/mod.rs | 1 - .../parachain/src/chain_spec/peregrine/dev.rs | 4 +- .../parachain/src/chain_spec/peregrine/new.rs | 4 +- nodes/parachain/src/chain_spec/rilt/mod.rs | 2 - nodes/parachain/src/chain_spec/rilt/new.rs | 25 +- .../parachain/src/chain_spec/spiritnet/dev.rs | 74 +---- .../parachain/src/chain_spec/spiritnet/mod.rs | 2 - .../parachain/src/chain_spec/spiritnet/new.rs | 27 +- nodes/parachain/src/chain_spec/utils.rs | 18 -- runtimes/common/src/lib.rs | 17 +- runtimes/peregrine/src/genesis_state.rs | 21 +- runtimes/peregrine/src/runtime_apis.rs | 2 +- runtimes/spiritnet/Cargo.toml | 1 + runtimes/spiritnet/src/genesis_state.rs | 144 ++++++++++ runtimes/spiritnet/src/lib.rs | 1 + runtimes/spiritnet/src/runtime_apis.rs | 13 +- .../spiritnet/src/weights/pallet_assets.rs | 212 +++++++------- .../spiritnet/src/weights/pallet_balances.rs | 106 ++++--- .../spiritnet/src/weights/pallet_scheduler.rs | 259 +++++++++++++----- scripts/run_benches_for_runtime.sh | 17 +- 21 files changed, 573 insertions(+), 378 deletions(-) create mode 100644 runtimes/spiritnet/src/genesis_state.rs diff --git a/Cargo.lock b/Cargo.lock index 4ba01ad1b3..4fea092697 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14761,6 +14761,7 @@ dependencies = [ "public-credentials", "runtime-common", "scale-info", + "serde_json", "sp-api", "sp-block-builder", "sp-consensus-aura", diff --git a/nodes/parachain/src/chain_spec/mod.rs b/nodes/parachain/src/chain_spec/mod.rs index b4c99456be..e9e087f6b5 100644 --- a/nodes/parachain/src/chain_spec/mod.rs +++ b/nodes/parachain/src/chain_spec/mod.rs @@ -34,7 +34,6 @@ pub(crate) mod rilt; pub(crate) mod spiritnet; pub(crate) mod utils; -const KILT_PARA_ID: u32 = 2_086; const RILT_PARA_ID: u32 = 4504; /// The extensions for the `ChainSpec`. diff --git a/nodes/parachain/src/chain_spec/peregrine/dev.rs b/nodes/parachain/src/chain_spec/peregrine/dev.rs index 2dfa71b783..a3d77f270b 100644 --- a/nodes/parachain/src/chain_spec/peregrine/dev.rs +++ b/nodes/parachain/src/chain_spec/peregrine/dev.rs @@ -19,10 +19,10 @@ //! KILT chain specification use kilt_support::traits::InspectMetadata; -use peregrine_runtime::{MetadataProvider, SS_58_PREFIX, WASM_BINARY}; +use peregrine_runtime::{genesis_state::KILT_PARA_ID, MetadataProvider, SS_58_PREFIX, WASM_BINARY}; use sc_service::ChainType; -use crate::chain_spec::{peregrine::ChainSpec, utils::get_properties, Extensions, KILT_PARA_ID}; +use crate::chain_spec::{peregrine::ChainSpec, utils::get_properties, Extensions}; pub(crate) fn generate_chain_spec(relaychain_name: &str) -> ChainSpec { let wasm_binary = WASM_BINARY.expect("Development WASM binary not available"); diff --git a/nodes/parachain/src/chain_spec/peregrine/new.rs b/nodes/parachain/src/chain_spec/peregrine/new.rs index 67c60b916f..544f4ffe9b 100644 --- a/nodes/parachain/src/chain_spec/peregrine/new.rs +++ b/nodes/parachain/src/chain_spec/peregrine/new.rs @@ -19,10 +19,10 @@ //! KILT chain specification use kilt_support::traits::InspectMetadata; -use peregrine_runtime::{MetadataProvider, SS_58_PREFIX, WASM_BINARY}; +use peregrine_runtime::{genesis_state::KILT_PARA_ID, MetadataProvider, SS_58_PREFIX, WASM_BINARY}; use sc_service::ChainType; -use crate::chain_spec::{peregrine::ChainSpec, utils::get_properties, Extensions, KILT_PARA_ID}; +use crate::chain_spec::{peregrine::ChainSpec, utils::get_properties, Extensions}; pub(crate) fn generate_chain_spec() -> ChainSpec { let wasm_binary = WASM_BINARY.expect("WASM binary not available"); diff --git a/nodes/parachain/src/chain_spec/rilt/mod.rs b/nodes/parachain/src/chain_spec/rilt/mod.rs index 567e6395c7..5b408fb81e 100644 --- a/nodes/parachain/src/chain_spec/rilt/mod.rs +++ b/nodes/parachain/src/chain_spec/rilt/mod.rs @@ -20,7 +20,5 @@ pub(crate) mod new; -const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; - /// Specialized `ChainSpec` for the normal parachain runtime. pub(crate) type ChainSpec = sc_service::GenericChainSpec; diff --git a/nodes/parachain/src/chain_spec/rilt/new.rs b/nodes/parachain/src/chain_spec/rilt/new.rs index f3b819fad8..2b218aa337 100644 --- a/nodes/parachain/src/chain_spec/rilt/new.rs +++ b/nodes/parachain/src/chain_spec/rilt/new.rs @@ -18,19 +18,14 @@ //! KILT chain specification -use peregrine_runtime::{ParachainInfoConfig, PolkadotXcmConfig, RuntimeGenesisConfig, WASM_BINARY}; +use peregrine_runtime::WASM_BINARY; use sc_service::ChainType; -use serde_json::to_value; -use crate::chain_spec::{ - rilt::{ChainSpec, SAFE_XCM_VERSION}, - utils::get_properties, - Extensions, RILT_PARA_ID, -}; +use crate::chain_spec::{rilt::ChainSpec, utils::get_properties, Extensions, RILT_PARA_ID}; pub(crate) fn generate_chain_spec() -> ChainSpec { let wasm_binary = WASM_BINARY.expect("WASM binary not available"); - let genesis_state = to_value(generate_genesis_state()).expect("Creating genesis state failed"); + let genesis_state = peregrine_runtime::genesis_state::development::generate_genesis_state(); ChainSpec::builder( wasm_binary, @@ -46,17 +41,3 @@ pub(crate) fn generate_chain_spec() -> ChainSpec { .with_genesis_config(genesis_state) .build() } - -fn generate_genesis_state() -> RuntimeGenesisConfig { - RuntimeGenesisConfig { - parachain_info: ParachainInfoConfig { - parachain_id: RILT_PARA_ID.into(), - ..Default::default() - }, - polkadot_xcm: PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - ..Default::default() - }, - ..Default::default() - } -} diff --git a/nodes/parachain/src/chain_spec/spiritnet/dev.rs b/nodes/parachain/src/chain_spec/spiritnet/dev.rs index dbc0e7277d..0b6329f26b 100644 --- a/nodes/parachain/src/chain_spec/spiritnet/dev.rs +++ b/nodes/parachain/src/chain_spec/spiritnet/dev.rs @@ -18,27 +18,14 @@ //! KILT chain specification -use runtime_common::{ - constants::{kilt_inflation_config, staking::MinCollatorStake, KILT, MAX_COLLATOR_STAKE}, - AccountId, AuthorityId, Balance, -}; use sc_service::ChainType; -use serde_json::to_value; -use sp_core::sr25519; -use spiritnet_runtime::{ - BalancesConfig, CouncilConfig, ParachainInfoConfig, ParachainStakingConfig, PolkadotXcmConfig, - RuntimeGenesisConfig, SessionConfig, SessionKeys, TechnicalCommitteeConfig, WASM_BINARY, -}; +use spiritnet_runtime::{genesis_state::KILT_PARA_ID, WASM_BINARY}; -use crate::chain_spec::{ - spiritnet::{ChainSpec, SAFE_XCM_VERSION}, - utils::{get_account_id_from_secret, get_properties, get_public_key_from_secret}, - Extensions, KILT_PARA_ID, -}; +use crate::chain_spec::{spiritnet::ChainSpec, utils::get_properties, Extensions}; pub(crate) fn generate_chain_spec(relaychain_name: &str) -> ChainSpec { let wasm_binary = WASM_BINARY.expect("Development WASM binary not available"); - let genesis_state = to_value(generate_genesis_state()).expect("Creating genesis state failed"); + let genesis_state = spiritnet_runtime::genesis_state::development::generate_genesis_state(); ChainSpec::builder( wasm_binary, @@ -54,58 +41,3 @@ pub(crate) fn generate_chain_spec(relaychain_name: &str) -> ChainSpec { .with_genesis_config(genesis_state) .build() } - -fn generate_genesis_state() -> RuntimeGenesisConfig { - let alice = ( - get_account_id_from_secret::("Alice"), - get_public_key_from_secret::("Alice"), - ); - let bob = ( - get_account_id_from_secret::("Bob"), - get_public_key_from_secret::("Bob"), - ); - let endowed_accounts = [ - alice.0.clone(), - bob.0.clone(), - get_account_id_from_secret::("Charlie"), - get_account_id_from_secret::("Dave"), - get_account_id_from_secret::("Eve"), - get_account_id_from_secret::("Ferdie"), - ]; - - RuntimeGenesisConfig { - balances: BalancesConfig { - balances: endowed_accounts.map(|acc| (acc, 10_000_000 * KILT)).to_vec(), - }, - session: SessionConfig { - keys: [alice.clone(), bob.clone()] - .map(|(acc, key)| (acc.clone(), acc, SessionKeys { aura: key })) - .to_vec(), - ..Default::default() - }, - parachain_info: ParachainInfoConfig { - parachain_id: KILT_PARA_ID.into(), - ..Default::default() - }, - parachain_staking: ParachainStakingConfig { - stakers: [alice.clone(), bob.clone()] - .map(|(acc, _)| -> (AccountId, Option, Balance) { (acc, None, 2 * MinCollatorStake::get()) }) - .to_vec(), - inflation_config: kilt_inflation_config(), - max_candidate_stake: MAX_COLLATOR_STAKE, - }, - council: CouncilConfig { - members: [alice.clone(), bob.clone()].map(|(acc, _)| acc).to_vec(), - phantom: Default::default(), - }, - technical_committee: TechnicalCommitteeConfig { - members: [alice, bob].map(|(acc, _)| acc).to_vec(), - phantom: Default::default(), - }, - polkadot_xcm: PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - ..Default::default() - }, - ..Default::default() - } -} diff --git a/nodes/parachain/src/chain_spec/spiritnet/mod.rs b/nodes/parachain/src/chain_spec/spiritnet/mod.rs index c561858b8f..95459c38e7 100644 --- a/nodes/parachain/src/chain_spec/spiritnet/mod.rs +++ b/nodes/parachain/src/chain_spec/spiritnet/mod.rs @@ -21,8 +21,6 @@ pub(crate) mod dev; pub(crate) mod new; -const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; - /// Specialized `ChainSpec` for the normal parachain runtime. pub(crate) type ChainSpec = sc_service::GenericChainSpec; diff --git a/nodes/parachain/src/chain_spec/spiritnet/new.rs b/nodes/parachain/src/chain_spec/spiritnet/new.rs index 3fdeaae22f..3a1475a1da 100644 --- a/nodes/parachain/src/chain_spec/spiritnet/new.rs +++ b/nodes/parachain/src/chain_spec/spiritnet/new.rs @@ -19,24 +19,19 @@ //! KILT chain specification use sc_service::ChainType; -use serde_json::to_value; -use spiritnet_runtime::{ParachainInfoConfig, PolkadotXcmConfig, RuntimeGenesisConfig, WASM_BINARY}; +use spiritnet_runtime::WASM_BINARY; -use crate::chain_spec::{ - spiritnet::{ChainSpec, SAFE_XCM_VERSION}, - utils::get_properties, - Extensions, KILT_PARA_ID, -}; +use crate::chain_spec::{spiritnet::ChainSpec, utils::get_properties, Extensions}; pub(crate) fn generate_chain_spec() -> ChainSpec { let wasm_binary = WASM_BINARY.expect("WASM binary not available"); - let genesis_state = to_value(generate_genesis_state()).expect("Creating genesis state failed"); + let genesis_state = spiritnet_runtime::genesis_state::production::generate_genesis_state(); ChainSpec::builder( wasm_binary, Extensions { relay_chain: "relay".into(), - para_id: KILT_PARA_ID, + para_id: spiritnet_runtime::genesis_state::KILT_PARA_ID, }, ) .with_name("KILT Spiritnet New (change title)") @@ -46,17 +41,3 @@ pub(crate) fn generate_chain_spec() -> ChainSpec { .with_genesis_config(genesis_state) .build() } - -fn generate_genesis_state() -> RuntimeGenesisConfig { - RuntimeGenesisConfig { - parachain_info: ParachainInfoConfig { - parachain_id: KILT_PARA_ID.into(), - ..Default::default() - }, - polkadot_xcm: PolkadotXcmConfig { - safe_xcm_version: Some(SAFE_XCM_VERSION), - ..Default::default() - }, - ..Default::default() - } -} diff --git a/nodes/parachain/src/chain_spec/utils.rs b/nodes/parachain/src/chain_spec/utils.rs index adf38c9ec6..e4651db530 100644 --- a/nodes/parachain/src/chain_spec/utils.rs +++ b/nodes/parachain/src/chain_spec/utils.rs @@ -16,28 +16,10 @@ // If you feel like getting in touch with us, you can do so at -use runtime_common::{AccountId, AccountPublic}; use sc_service::Properties; -use sp_core::{Pair, Public}; -use sp_runtime::traits::IdentifyAccount; use crate::chain_spec::{self, ParachainRuntime, PeregrineRuntime, SpiritnetRuntime}; -/// Helper function to generate an account ID from seed -pub(crate) fn get_account_id_from_secret(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_public_key_from_secret::(seed)).into_account() -} - -/// Helper function to generate a crypto pair from seed -pub(crate) fn get_public_key_from_secret(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - pub(crate) fn get_properties(symbol: &str, decimals: u32, ss58format: u32) -> Properties { Properties::from_iter([ ("tokenSymbol".into(), symbol.into()), diff --git a/runtimes/common/src/lib.rs b/runtimes/common/src/lib.rs index 4974ada612..b58bc3c63b 100644 --- a/runtimes/common/src/lib.rs +++ b/runtimes/common/src/lib.rs @@ -35,8 +35,9 @@ use frame_support::{ use frame_system::limits; use pallet_balances::Pallet as PalletBalance; use pallet_transaction_payment::{Multiplier, TargetedFeeAdjustment}; +use sp_core::{crypto::Pair, Public}; use sp_runtime::{ - generic, + format, generic, traits::{BlakeTwo256, Bounded, IdentifyAccount, Verify}, FixedPointNumber, MultiAddress, MultiSignature, Perquintill, SaturatedConversion, }; @@ -238,3 +239,17 @@ where debug_assert!(result.is_ok(), "The whole credit cannot be countered"); } } + +/// Helper function to generate an account ID from seed +pub fn get_account_id_from_secret(seed: &str) -> AccountId +where + AccountPublic: From<::Public>, +{ + AccountPublic::from(get_public_key_from_secret::(seed)).into_account() +} + +pub fn get_public_key_from_secret(seed: &str) -> ::Public { + TPublic::Pair::from_string(&format!("//{}", seed), None) + .expect("static values are valid; qed") + .public() +} diff --git a/runtimes/peregrine/src/genesis_state.rs b/runtimes/peregrine/src/genesis_state.rs index f715d2e171..8381d66625 100644 --- a/runtimes/peregrine/src/genesis_state.rs +++ b/runtimes/peregrine/src/genesis_state.rs @@ -22,31 +22,16 @@ use crate::{ }; use runtime_common::{ constants::{kilt_inflation_config, staking::MinCollatorStake, KILT, MAX_COLLATOR_STAKE}, - AccountId, AccountPublic, AuthorityId, Balance, + get_account_id_from_secret, get_public_key_from_secret, AccountId, AuthorityId, Balance, }; -use sp_core::{sr25519, Pair, Public}; +use sp_core::sr25519; use sp_genesis_builder::PresetId; -use sp_runtime::{format, traits::IdentifyAccount}; use sp_std::{vec, vec::Vec}; -const KILT_PARA_ID: u32 = 2_086; +pub const KILT_PARA_ID: u32 = 2_086; const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; const NEW_RUNTIME_PRESET: &str = "new"; -/// Helper function to generate an account ID from seed -pub(crate) fn get_account_id_from_secret(seed: &str) -> AccountId -where - AccountPublic: From<::Public>, -{ - AccountPublic::from(get_public_key_from_secret::(seed)).into_account() -} - -pub(crate) fn get_public_key_from_secret(seed: &str) -> ::Public { - TPublic::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} - pub mod development { use super::*; diff --git a/runtimes/peregrine/src/runtime_apis.rs b/runtimes/peregrine/src/runtime_apis.rs index f749f82896..eb7ca8ccb7 100644 --- a/runtimes/peregrine/src/runtime_apis.rs +++ b/runtimes/peregrine/src/runtime_apis.rs @@ -238,7 +238,7 @@ impl_runtime_apis! { } } - impl sp_genesis_builder::GenesisBuilder for Runtime { + impl sp_genesis_builder::GenesisBuilder for Runtime { fn build_state(config: Vec) -> sp_genesis_builder::Result { build_state::(config) } diff --git a/runtimes/spiritnet/Cargo.toml b/runtimes/spiritnet/Cargo.toml index fd6abd6cdd..91b784d339 100644 --- a/runtimes/spiritnet/Cargo.toml +++ b/runtimes/spiritnet/Cargo.toml @@ -23,6 +23,7 @@ cfg-if = { workspace = true } log = { workspace = true } parity-scale-codec = { workspace = true, features = ["derive"] } scale-info = { workspace = true, features = ["derive"] } +serde_json = { workspace = true } hex-literal = { workspace = true, optional = true } diff --git a/runtimes/spiritnet/src/genesis_state.rs b/runtimes/spiritnet/src/genesis_state.rs new file mode 100644 index 0000000000..3fca47ebdf --- /dev/null +++ b/runtimes/spiritnet/src/genesis_state.rs @@ -0,0 +1,144 @@ +// KILT Blockchain – +// Copyright (C) 2025, KILT Foundation + +// The KILT Blockchain 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. + +// The KILT Blockchain 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 this program. If not, see . + +// If you feel like getting in touch with us, you can do so at + +use crate::{ + BalancesConfig, CouncilConfig, ParachainInfoConfig, ParachainStakingConfig, PolkadotXcmConfig, + RuntimeGenesisConfig, SessionConfig, SessionKeys, TechnicalCommitteeConfig, +}; +use runtime_common::{ + constants::{kilt_inflation_config, staking::MinCollatorStake, KILT, MAX_COLLATOR_STAKE}, + get_account_id_from_secret, get_public_key_from_secret, AccountId, AuthorityId, Balance, +}; +use sp_core::sr25519; +use sp_genesis_builder::PresetId; +use sp_std::{vec, vec::Vec}; + +pub const KILT_PARA_ID: u32 = 2_086; +const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION; +const NEW_RUNTIME_PRESET: &str = "new"; + +pub mod development { + + use super::*; + + pub fn generate_genesis_state() -> serde_json::Value { + let alice = ( + get_account_id_from_secret::("Alice"), + get_public_key_from_secret::("Alice"), + ); + let bob = ( + get_account_id_from_secret::("Bob"), + get_public_key_from_secret::("Bob"), + ); + let endowed_accounts = [ + alice.0.clone(), + bob.0.clone(), + get_account_id_from_secret::("Charlie"), + get_account_id_from_secret::("Dave"), + get_account_id_from_secret::("Eve"), + get_account_id_from_secret::("Ferdie"), + ]; + + let config = RuntimeGenesisConfig { + balances: BalancesConfig { + balances: endowed_accounts.map(|acc| (acc, 10_000_000 * KILT)).to_vec(), + }, + session: SessionConfig { + keys: [alice.clone(), bob.clone()] + .map(|(acc, key)| (acc.clone(), acc, SessionKeys { aura: key })) + .to_vec(), + ..Default::default() + }, + parachain_info: ParachainInfoConfig { + parachain_id: KILT_PARA_ID.into(), + ..Default::default() + }, + parachain_staking: ParachainStakingConfig { + stakers: [alice.clone(), bob.clone()] + .map(|(acc, _)| -> (AccountId, Option, Balance) { + (acc, None, 2 * MinCollatorStake::get()) + }) + .to_vec(), + inflation_config: kilt_inflation_config(), + max_candidate_stake: MAX_COLLATOR_STAKE, + }, + council: CouncilConfig { + members: [alice.clone(), bob.clone()].map(|(acc, _)| acc).to_vec(), + phantom: Default::default(), + }, + technical_committee: TechnicalCommitteeConfig { + members: [alice, bob].map(|(acc, _)| acc).to_vec(), + phantom: Default::default(), + }, + polkadot_xcm: PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + ..Default::default() + }, + ..Default::default() + }; + + serde_json::to_value(config).expect("Could not build genesis config.") + } +} + +pub mod production { + use super::*; + + pub fn generate_genesis_state() -> serde_json::Value { + let config = RuntimeGenesisConfig { + parachain_info: ParachainInfoConfig { + parachain_id: KILT_PARA_ID.into(), + ..Default::default() + }, + polkadot_xcm: PolkadotXcmConfig { + safe_xcm_version: Some(SAFE_XCM_VERSION), + ..Default::default() + }, + ..Default::default() + }; + + serde_json::to_value(config).expect("Could not build genesis config.") + } +} + +/// Provides the JSON representation of predefined genesis config for given +/// `id`. +pub fn get_preset(id: &PresetId) -> Option> { + let patch = match id.try_into() { + Ok(sp_genesis_builder::DEV_RUNTIME_PRESET) | Ok(sp_genesis_builder::LOCAL_TESTNET_RUNTIME_PRESET) => { + development::generate_genesis_state() + } + Ok(NEW_RUNTIME_PRESET) => production::generate_genesis_state(), + _ => return None, + }; + + Some( + serde_json::to_string(&patch) + .expect("serialization to json is expected to work. qed.") + .into_bytes(), + ) +} + +/// List of supported presets. +pub fn preset_names() -> Vec { + vec![ + PresetId::from(sp_genesis_builder::DEV_RUNTIME_PRESET), + PresetId::from(sp_genesis_builder::LOCAL_TESTNET_RUNTIME_PRESET), + PresetId::from(NEW_RUNTIME_PRESET), + ] +} diff --git a/runtimes/spiritnet/src/lib.rs b/runtimes/spiritnet/src/lib.rs index cef77ad823..07efdc135d 100644 --- a/runtimes/spiritnet/src/lib.rs +++ b/runtimes/spiritnet/src/lib.rs @@ -59,6 +59,7 @@ pub use runtime_apis::{api, RuntimeApi}; mod system; use sp_version::RuntimeVersion; pub use system::{SessionKeys, SS_58_PREFIX}; +pub mod genesis_state; use crate::runtime_apis::RUNTIME_API_VERSION; mod weights; diff --git a/runtimes/spiritnet/src/runtime_apis.rs b/runtimes/spiritnet/src/runtime_apis.rs index 3ccf218dba..3bce8a08f4 100644 --- a/runtimes/spiritnet/src/runtime_apis.rs +++ b/runtimes/spiritnet/src/runtime_apis.rs @@ -32,7 +32,6 @@ use runtime_common::{ }; use sp_api::impl_runtime_apis; use sp_core::OpaqueMetadata; -use sp_genesis_builder::PresetId; use sp_inherents::{CheckInherentsResult, InherentData}; use sp_metadata_ir::RuntimeApiMetadataIR; use sp_runtime::{ @@ -47,7 +46,7 @@ use crate::{ parachain::ConsensusHook, xcm::UniversalLocation, AssetSwitchPool1, Block, Executive, InherentDataExt, ParachainStaking, ParachainSystem, Runtime, RuntimeCall, - SessionKeys, TransactionPayment, Web3Name, VERSION, + RuntimeGenesisConfig, SessionKeys, TransactionPayment, Web3Name, VERSION, }; // This is necessary since by default `RUNTIME_API_VERSIONS` generated by @@ -223,15 +222,15 @@ impl_runtime_apis! { impl sp_genesis_builder::GenesisBuilder for Runtime { fn build_state(config: Vec) -> sp_genesis_builder::Result { - build_state::(config) + build_state::(config) } - fn get_preset(id: &Option) -> Option> { - get_preset::(id, |_| None) + fn get_preset(id: &Option) -> Option> { + get_preset::(id, crate::genesis_state::get_preset) } - fn preset_names() -> Vec { - sp_std::vec![PresetId::from("kilt")] + fn preset_names() -> Vec { + crate::genesis_state::preset_names() } } diff --git a/runtimes/spiritnet/src/weights/pallet_assets.rs b/runtimes/spiritnet/src/weights/pallet_assets.rs index 967be25126..5d30cda3ac 100644 --- a/runtimes/spiritnet/src/weights/pallet_assets.rs +++ b/runtimes/spiritnet/src/weights/pallet_assets.rs @@ -1,26 +1,25 @@ + //! Autogenerated weights for `pallet_assets` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 33.0.0 -//! DATE: 2024-08-26, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-05, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` -//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("spiritnet-dev"), DB CACHE: 1024 +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: -// ./target/debug/kilt-parachain +// frame-omni-bencher +// v1 // benchmark // pallet -// --chain=spiritnet-dev -// --steps=50 -// --repeat=20 // --pallet=pallet-assets // --extrinsic=* -// --execution=wasm -// --wasm-execution=compiled -// --heap-pages=4096 -// --output=./runtimes/spiritnet/src/weights/ +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/spiritnet-runtime/spiritnet_runtime.compact.compressed.wasm +// --header=HEADER-GPL // --template=.maintain/runtime-weight-template.hbs +// --output=./runtimes/spiritnet/src/weights/ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_imports)] @@ -32,33 +31,32 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_assets`. pub struct WeightInfo(PhantomData); impl pallet_assets::WeightInfo for WeightInfo { - - fn transfer_all() -> Weight { - todo!() - } - /// Storage: `Fungibles::Asset` (r:1 w:1) /// Proof: `Fungibles::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) + /// Storage: `Fungibles::NextAssetId` (r:1 w:0) + /// Proof: `Fungibles::NextAssetId` (`max_values`: Some(1), `max_size`: Some(602), added: 1097, mode: `MaxEncodedLen`) fn create() -> Weight { // Proof Size summary in bytes: // Measured: `42` // Estimated: `4273` - // Minimum execution time: 670_284_000 picoseconds. - Weight::from_parts(830_855_000, 0) + // Minimum execution time: 10_247_000 picoseconds. + Weight::from_parts(10_566_000, 0) .saturating_add(Weight::from_parts(0, 4273)) - .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `Fungibles::Asset` (r:1 w:1) /// Proof: `Fungibles::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) + /// Storage: `Fungibles::NextAssetId` (r:1 w:0) + /// Proof: `Fungibles::NextAssetId` (`max_values`: Some(1), `max_size`: Some(602), added: 1097, mode: `MaxEncodedLen`) fn force_create() -> Weight { // Proof Size summary in bytes: // Measured: `42` // Estimated: `4273` - // Minimum execution time: 699_768_000 picoseconds. - Weight::from_parts(784_398_000, 0) + // Minimum execution time: 9_923_000 picoseconds. + Weight::from_parts(10_556_000, 0) .saturating_add(Weight::from_parts(0, 4273)) - .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `Fungibles::Asset` (r:1 w:1) @@ -67,8 +65,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `312` // Estimated: `4273` - // Minimum execution time: 697_104_000 picoseconds. - Weight::from_parts(761_710_000, 0) + // Minimum execution time: 9_708_000 picoseconds. + Weight::from_parts(10_212_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -84,11 +82,11 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0 + c * (212 ±0)` // Estimated: `4273 + c * (3207 ±0)` - // Minimum execution time: 929_714_000 picoseconds. - Weight::from_parts(2_652_804_841, 0) + // Minimum execution time: 13_149_000 picoseconds. + Weight::from_parts(13_489_000, 0) .saturating_add(Weight::from_parts(0, 4273)) - // Standard Error: 6_621_016 - .saturating_add(Weight::from_parts(178_537_863, 0).saturating_mul(c.into())) + // Standard Error: 216_226 + .saturating_add(Weight::from_parts(13_743_181, 0).saturating_mul(c.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().reads((2_u64).saturating_mul(c.into()))) .saturating_add(T::DbWeight::get().writes(1)) @@ -104,11 +102,11 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `447 + a * (86 ±0)` // Estimated: `4273 + a * (3221 ±0)` - // Minimum execution time: 183_722_000 picoseconds. - Weight::from_parts(185_234_000, 0) + // Minimum execution time: 12_868_000 picoseconds. + Weight::from_parts(13_303_000, 0) .saturating_add(Weight::from_parts(0, 4273)) - // Standard Error: 309_726 - .saturating_add(Weight::from_parts(68_577_378, 0).saturating_mul(a.into())) + // Standard Error: 3_646 + .saturating_add(Weight::from_parts(4_123_299, 0).saturating_mul(a.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(a.into()))) .saturating_add(T::DbWeight::get().writes(1)) @@ -123,8 +121,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 158_427_000 picoseconds. - Weight::from_parts(160_668_000, 0) + // Minimum execution time: 10_934_000 picoseconds. + Weight::from_parts(11_412_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -137,8 +135,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 282_826_000 picoseconds. - Weight::from_parts(287_541_000, 0) + // Minimum execution time: 19_188_000 picoseconds. + Weight::from_parts(19_669_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -151,8 +149,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `384` // Estimated: `4273` - // Minimum execution time: 390_440_000 picoseconds. - Weight::from_parts(398_994_000, 0) + // Minimum execution time: 24_344_000 picoseconds. + Weight::from_parts(25_549_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -167,8 +165,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `436` // Estimated: `7404` - // Minimum execution time: 554_247_000 picoseconds. - Weight::from_parts(561_657_000, 0) + // Minimum execution time: 35_100_000 picoseconds. + Weight::from_parts(36_455_000, 0) .saturating_add(Weight::from_parts(0, 7404)) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(4)) @@ -183,8 +181,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `436` // Estimated: `7404` - // Minimum execution time: 505_609_000 picoseconds. - Weight::from_parts(511_182_000, 0) + // Minimum execution time: 31_491_000 picoseconds. + Weight::from_parts(32_227_000, 0) .saturating_add(Weight::from_parts(0, 7404)) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(4)) @@ -199,8 +197,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `436` // Estimated: `7404` - // Minimum execution time: 553_195_000 picoseconds. - Weight::from_parts(557_682_000, 0) + // Minimum execution time: 35_721_000 picoseconds. + Weight::from_parts(36_829_000, 0) .saturating_add(Weight::from_parts(0, 7404)) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(4)) @@ -213,8 +211,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `384` // Estimated: `4273` - // Minimum execution time: 185_832_000 picoseconds. - Weight::from_parts(188_556_000, 0) + // Minimum execution time: 12_696_000 picoseconds. + Weight::from_parts(13_422_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -227,8 +225,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `384` // Estimated: `4273` - // Minimum execution time: 185_944_000 picoseconds. - Weight::from_parts(189_359_000, 0) + // Minimum execution time: 12_991_000 picoseconds. + Weight::from_parts(13_379_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -239,8 +237,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `312` // Estimated: `4273` - // Minimum execution time: 129_754_000 picoseconds. - Weight::from_parts(132_353_000, 0) + // Minimum execution time: 9_089_000 picoseconds. + Weight::from_parts(9_640_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -251,8 +249,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `312` // Estimated: `4273` - // Minimum execution time: 129_422_000 picoseconds. - Weight::from_parts(134_030_000, 0) + // Minimum execution time: 9_012_000 picoseconds. + Weight::from_parts(9_498_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -265,8 +263,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 164_227_000 picoseconds. - Weight::from_parts(166_823_000, 0) + // Minimum execution time: 11_008_000 picoseconds. + Weight::from_parts(11_650_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -277,8 +275,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 138_887_000 picoseconds. - Weight::from_parts(142_103_000, 0) + // Minimum execution time: 9_925_000 picoseconds. + Weight::from_parts(10_261_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -289,13 +287,17 @@ impl pallet_assets::WeightInfo for WeightInfo { /// Proof: `Fungibles::Metadata` (`max_values`: None, `max_size`: Some(646), added: 3121, mode: `MaxEncodedLen`) /// The range of component `n` is `[0, 4]`. /// The range of component `s` is `[0, 4]`. - fn set_metadata(_n: u32, _s: u32, ) -> Weight { + fn set_metadata(n: u32, s: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 153_483_000 picoseconds. - Weight::from_parts(166_947_854, 0) + // Minimum execution time: 10_924_000 picoseconds. + Weight::from_parts(11_413_712, 0) .saturating_add(Weight::from_parts(0, 4273)) + // Standard Error: 6_452 + .saturating_add(Weight::from_parts(146_312, 0).saturating_mul(n.into())) + // Standard Error: 6_452 + .saturating_add(Weight::from_parts(88_466, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -307,8 +309,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `346` // Estimated: `4273` - // Minimum execution time: 161_504_000 picoseconds. - Weight::from_parts(163_432_000, 0) + // Minimum execution time: 12_061_000 picoseconds. + Weight::from_parts(12_513_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -319,17 +321,15 @@ impl pallet_assets::WeightInfo for WeightInfo { /// Proof: `Fungibles::Metadata` (`max_values`: None, `max_size`: Some(646), added: 3121, mode: `MaxEncodedLen`) /// The range of component `n` is `[0, 4]`. /// The range of component `s` is `[0, 4]`. - fn force_set_metadata(n: u32, s: u32, ) -> Weight { + fn force_set_metadata(n: u32, _s: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `117` // Estimated: `4273` - // Minimum execution time: 153_719_000 picoseconds. - Weight::from_parts(156_756_127, 0) + // Minimum execution time: 10_416_000 picoseconds. + Weight::from_parts(11_571_382, 0) .saturating_add(Weight::from_parts(0, 4273)) - // Standard Error: 42_141 - .saturating_add(Weight::from_parts(47_279, 0).saturating_mul(n.into())) - // Standard Error: 42_141 - .saturating_add(Weight::from_parts(606_325, 0).saturating_mul(s.into())) + // Standard Error: 6_210 + .saturating_add(Weight::from_parts(5_790, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -341,8 +341,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `346` // Estimated: `4273` - // Minimum execution time: 159_022_000 picoseconds. - Weight::from_parts(159_860_000, 0) + // Minimum execution time: 12_141_000 picoseconds. + Weight::from_parts(12_949_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -353,8 +353,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 127_227_000 picoseconds. - Weight::from_parts(128_014_000, 0) + // Minimum execution time: 10_217_000 picoseconds. + Weight::from_parts(10_753_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -367,8 +367,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `312` // Estimated: `4273` - // Minimum execution time: 207_749_000 picoseconds. - Weight::from_parts(209_271_000, 0) + // Minimum execution time: 15_476_000 picoseconds. + Weight::from_parts(15_919_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -385,8 +385,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `604` // Estimated: `7404` - // Minimum execution time: 639_409_000 picoseconds. - Weight::from_parts(644_412_000, 0) + // Minimum execution time: 44_680_000 picoseconds. + Weight::from_parts(46_355_000, 0) .saturating_add(Weight::from_parts(0, 7404)) .saturating_add(T::DbWeight::get().reads(5)) .saturating_add(T::DbWeight::get().writes(5)) @@ -399,8 +399,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `480` // Estimated: `4273` - // Minimum execution time: 230_433_000 picoseconds. - Weight::from_parts(238_922_000, 0) + // Minimum execution time: 17_421_000 picoseconds. + Weight::from_parts(17_898_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -413,8 +413,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `480` // Estimated: `4273` - // Minimum execution time: 230_209_000 picoseconds. - Weight::from_parts(232_202_000, 0) + // Minimum execution time: 17_424_000 picoseconds. + Weight::from_parts(17_926_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -425,8 +425,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 149_517_000 picoseconds. - Weight::from_parts(150_361_000, 0) + // Minimum execution time: 10_425_000 picoseconds. + Weight::from_parts(11_234_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -439,8 +439,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 220_867_000 picoseconds. - Weight::from_parts(223_534_000, 0) + // Minimum execution time: 15_195_000 picoseconds. + Weight::from_parts(15_769_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -453,8 +453,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `278` // Estimated: `4273` - // Minimum execution time: 212_910_000 picoseconds. - Weight::from_parts(215_017_000, 0) + // Minimum execution time: 14_574_000 picoseconds. + Weight::from_parts(15_227_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -467,8 +467,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `402` // Estimated: `4273` - // Minimum execution time: 200_001_000 picoseconds. - Weight::from_parts(202_074_000, 0) + // Minimum execution time: 13_726_000 picoseconds. + Weight::from_parts(14_546_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -481,8 +481,8 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `435` // Estimated: `4273` - // Minimum execution time: 194_374_000 picoseconds. - Weight::from_parts(195_424_000, 0) + // Minimum execution time: 13_573_000 picoseconds. + Weight::from_parts(13_845_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -495,12 +495,28 @@ impl pallet_assets::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `384` // Estimated: `4273` - // Minimum execution time: 176_392_000 picoseconds. - Weight::from_parts(178_538_000, 0) + // Minimum execution time: 13_279_000 picoseconds. + Weight::from_parts(13_739_000, 0) .saturating_add(Weight::from_parts(0, 4273)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) } + /// Storage: `Fungibles::Asset` (r:1 w:1) + /// Proof: `Fungibles::Asset` (`max_values`: None, `max_size`: Some(808), added: 3283, mode: `MaxEncodedLen`) + /// Storage: `Fungibles::Account` (r:2 w:2) + /// Proof: `Fungibles::Account` (`max_values`: None, `max_size`: Some(732), added: 3207, mode: `MaxEncodedLen`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) + fn transfer_all() -> Weight { + // Proof Size summary in bytes: + // Measured: `436` + // Estimated: `7404` + // Minimum execution time: 45_651_000 picoseconds. + Weight::from_parts(46_335_000, 0) + .saturating_add(Weight::from_parts(0, 7404)) + .saturating_add(T::DbWeight::get().reads(4)) + .saturating_add(T::DbWeight::get().writes(4)) + } } #[cfg(test)] @@ -889,4 +905,16 @@ mod tests { > 4273 ); } + #[test] + fn test_transfer_all() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 7404 + ); + } } diff --git a/runtimes/spiritnet/src/weights/pallet_balances.rs b/runtimes/spiritnet/src/weights/pallet_balances.rs index 1525853188..64cd244bd3 100644 --- a/runtimes/spiritnet/src/weights/pallet_balances.rs +++ b/runtimes/spiritnet/src/weights/pallet_balances.rs @@ -18,26 +18,24 @@ //! Autogenerated weights for `pallet_balances` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 33.0.0 -//! DATE: 2024-06-21, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-05, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `eyrie-7`, CPU: `Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz` -//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("spiritnet-dev"), DB CACHE: 1024 +//! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: -// ./target/release/kilt-parachain +// frame-omni-bencher +// v1 // benchmark // pallet -// --template=.maintain/runtime-weight-template.hbs -// --header=HEADER-GPL -// --wasm-execution=compiled -// --heap-pages=4096 -// --steps=50 -// --repeat=20 -// --chain=spiritnet-dev // --pallet=pallet-balances // --extrinsic=* -// --output=./runtimes/spiritnet/src/weights/pallet_balances.rs +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/spiritnet-runtime/spiritnet_runtime.compact.compressed.wasm +// --header=HEADER-GPL +// --template=.maintain/runtime-weight-template.hbs +// --output=./runtimes/spiritnet/src/weights/ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_imports)] @@ -49,24 +47,14 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_balances`. pub struct WeightInfo(PhantomData); impl pallet_balances::WeightInfo for WeightInfo { - - - fn burn_allow_death() -> Weight { - todo!() - } - - fn burn_keep_alive() -> Weight { - todo!() - } - /// Storage: `System::Account` (r:2 w:2) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) fn transfer_allow_death() -> Weight { // Proof Size summary in bytes: // Measured: `107` // Estimated: `6204` - // Minimum execution time: 57_631_000 picoseconds. - Weight::from_parts(58_505_000, 0) + // Minimum execution time: 49_770_000 picoseconds. + Weight::from_parts(51_980_000, 0) .saturating_add(Weight::from_parts(0, 6204)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) @@ -77,8 +65,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3597` - // Minimum execution time: 36_640_000 picoseconds. - Weight::from_parts(37_398_000, 0) + // Minimum execution time: 31_950_000 picoseconds. + Weight::from_parts(32_938_000, 0) .saturating_add(Weight::from_parts(0, 3597)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -89,8 +77,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `178` // Estimated: `3597` - // Minimum execution time: 15_909_000 picoseconds. - Weight::from_parts(16_256_000, 0) + // Minimum execution time: 12_830_000 picoseconds. + Weight::from_parts(13_341_000, 0) .saturating_add(Weight::from_parts(0, 3597)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -101,8 +89,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `178` // Estimated: `3597` - // Minimum execution time: 20_849_000 picoseconds. - Weight::from_parts(21_268_000, 0) + // Minimum execution time: 18_957_000 picoseconds. + Weight::from_parts(19_910_000, 0) .saturating_add(Weight::from_parts(0, 3597)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -113,8 +101,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `214` // Estimated: `8811` - // Minimum execution time: 60_228_000 picoseconds. - Weight::from_parts(60_901_000, 0) + // Minimum execution time: 53_836_000 picoseconds. + Weight::from_parts(54_689_000, 0) .saturating_add(Weight::from_parts(0, 8811)) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(3)) @@ -125,8 +113,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3597` - // Minimum execution time: 44_815_000 picoseconds. - Weight::from_parts(45_343_000, 0) + // Minimum execution time: 40_665_000 picoseconds. + Weight::from_parts(41_241_000, 0) .saturating_add(Weight::from_parts(0, 3597)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -137,8 +125,8 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `178` // Estimated: `3597` - // Minimum execution time: 18_525_000 picoseconds. - Weight::from_parts(18_948_000, 0) + // Minimum execution time: 15_387_000 picoseconds. + Weight::from_parts(15_877_000, 0) .saturating_add(Weight::from_parts(0, 3597)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -150,11 +138,11 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0 + u * (140 ±0)` // Estimated: `990 + u * (2607 ±0)` - // Minimum execution time: 17_564_000 picoseconds. - Weight::from_parts(17_764_000, 0) + // Minimum execution time: 14_361_000 picoseconds. + Weight::from_parts(15_040_000, 0) .saturating_add(Weight::from_parts(0, 990)) - // Standard Error: 9_627 - .saturating_add(Weight::from_parts(12_525_557, 0).saturating_mul(u.into())) + // Standard Error: 7_280 + .saturating_add(Weight::from_parts(10_836_342, 0).saturating_mul(u.into())) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(u.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(u.into()))) .saturating_add(Weight::from_parts(0, 2607).saturating_mul(u.into())) @@ -165,11 +153,31 @@ impl pallet_balances::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1501` - // Minimum execution time: 6_375_000 picoseconds. - Weight::from_parts(6_719_000, 0) + // Minimum execution time: 5_350_000 picoseconds. + Weight::from_parts(5_593_000, 0) .saturating_add(Weight::from_parts(0, 1501)) .saturating_add(T::DbWeight::get().reads(1)) } + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) + fn burn_allow_death() -> Weight { + // Proof Size summary in bytes: + // Measured: `107` + // Estimated: `3597` + // Minimum execution time: 35_603_000 picoseconds. + Weight::from_parts(36_339_000, 0) + .saturating_add(Weight::from_parts(0, 3597)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + fn burn_keep_alive() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 16_327_000 picoseconds. + Weight::from_parts(16_772_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + } } #[cfg(test)] @@ -282,4 +290,16 @@ mod tests { > 1501 ); } + #[test] + fn test_burn_allow_death() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 3597 + ); + } } diff --git a/runtimes/spiritnet/src/weights/pallet_scheduler.rs b/runtimes/spiritnet/src/weights/pallet_scheduler.rs index f38633dbd7..5f0eb945e4 100644 --- a/runtimes/spiritnet/src/weights/pallet_scheduler.rs +++ b/runtimes/spiritnet/src/weights/pallet_scheduler.rs @@ -18,26 +18,24 @@ //! Autogenerated weights for `pallet_scheduler` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 33.0.0 -//! DATE: 2024-06-21, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-05, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `eyrie-7`, CPU: `Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz` -//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("spiritnet-dev"), DB CACHE: 1024 +//! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: -// ./target/release/kilt-parachain +// frame-omni-bencher +// v1 // benchmark // pallet -// --template=.maintain/runtime-weight-template.hbs -// --header=HEADER-GPL -// --wasm-execution=compiled -// --heap-pages=4096 -// --steps=50 -// --repeat=20 -// --chain=spiritnet-dev // --pallet=pallet-scheduler // --extrinsic=* -// --output=./runtimes/spiritnet/src/weights/pallet_scheduler.rs +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/spiritnet-runtime/spiritnet_runtime.compact.compressed.wasm +// --header=HEADER-GPL +// --template=.maintain/runtime-weight-template.hbs +// --output=./runtimes/spiritnet/src/weights/ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_imports)] @@ -49,25 +47,14 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_scheduler`. pub struct WeightInfo(PhantomData); impl pallet_scheduler::WeightInfo for WeightInfo { - - fn cancel_retry_named() -> cumulus_primitives_core::Weight { todo!() } - - fn cancel_retry() -> cumulus_primitives_core::Weight { todo!() } - - fn set_retry_named() -> cumulus_primitives_core::Weight { todo!() } - - fn schedule_retry(_: u32) -> cumulus_primitives_core::Weight { todo!() } - - fn set_retry() -> cumulus_primitives_core::Weight { todo!() } - /// Storage: `Scheduler::IncompleteSince` (r:1 w:1) /// Proof: `Scheduler::IncompleteSince` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) fn service_agendas_base() -> Weight { // Proof Size summary in bytes: // Measured: `36` // Estimated: `1493` - // Minimum execution time: 2_704_000 picoseconds. - Weight::from_parts(2_856_000, 0) + // Minimum execution time: 2_879_000 picoseconds. + Weight::from_parts(3_211_000, 0) .saturating_add(Weight::from_parts(0, 1493)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -79,11 +66,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 3_299_000 picoseconds. - Weight::from_parts(7_000_035, 0) + // Minimum execution time: 3_125_000 picoseconds. + Weight::from_parts(6_992_325, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 1_779 - .saturating_add(Weight::from_parts(460_372, 0).saturating_mul(s.into())) + // Standard Error: 2_263 + .saturating_add(Weight::from_parts(307_833, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -91,12 +78,12 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_435_000 picoseconds. - Weight::from_parts(3_651_000, 0) + // Minimum execution time: 2_868_000 picoseconds. + Weight::from_parts(3_095_000, 0) .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `Preimage::PreimageFor` (r:1 w:1) - /// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `Measured`) + /// Proof: `Preimage::PreimageFor` (`max_values`: None, `max_size`: Some(4194344), added: 4196819, mode: `MaxEncodedLen`) /// Storage: `Preimage::StatusFor` (r:1 w:0) /// Proof: `Preimage::StatusFor` (`max_values`: None, `max_size`: Some(91), added: 2566, mode: `MaxEncodedLen`) /// Storage: `Preimage::RequestStatusFor` (r:1 w:1) @@ -105,15 +92,14 @@ impl pallet_scheduler::WeightInfo for WeightInfo { fn service_task_fetched(s: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `246 + s * (1 ±0)` - // Estimated: `3711 + s * (1 ±0)` - // Minimum execution time: 18_570_000 picoseconds. - Weight::from_parts(18_744_000, 0) - .saturating_add(Weight::from_parts(0, 3711)) - // Standard Error: 19 - .saturating_add(Weight::from_parts(1_753, 0).saturating_mul(s.into())) + // Estimated: `4197809` + // Minimum execution time: 15_848_000 picoseconds. + Weight::from_parts(16_214_000, 0) + .saturating_add(Weight::from_parts(0, 4197809)) + // Standard Error: 145 + .saturating_add(Weight::from_parts(13_014, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(2)) - .saturating_add(Weight::from_parts(0, 1).saturating_mul(s.into())) } /// Storage: `Scheduler::Lookup` (r:0 w:1) /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) @@ -121,8 +107,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 5_090_000 picoseconds. - Weight::from_parts(5_248_000, 0) + // Minimum execution time: 4_182_000 picoseconds. + Weight::from_parts(4_392_000, 0) .saturating_add(Weight::from_parts(0, 0)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -130,24 +116,24 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_434_000 picoseconds. - Weight::from_parts(3_559_000, 0) + // Minimum execution time: 2_983_000 picoseconds. + Weight::from_parts(3_125_000, 0) .saturating_add(Weight::from_parts(0, 0)) } fn execute_dispatch_signed() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_287_000 picoseconds. - Weight::from_parts(2_404_000, 0) + // Minimum execution time: 1_975_000 picoseconds. + Weight::from_parts(2_086_000, 0) .saturating_add(Weight::from_parts(0, 0)) } fn execute_dispatch_unsigned() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_250_000 picoseconds. - Weight::from_parts(2_443_000, 0) + // Minimum execution time: 1_923_000 picoseconds. + Weight::from_parts(2_121_000, 0) .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `Scheduler::Agenda` (r:1 w:1) @@ -157,16 +143,18 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 10_638_000 picoseconds. - Weight::from_parts(14_687_147, 0) + // Minimum execution time: 8_705_000 picoseconds. + Weight::from_parts(12_140_021, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 1_913 - .saturating_add(Weight::from_parts(482_171, 0).saturating_mul(s.into())) + // Standard Error: 2_130 + .saturating_add(Weight::from_parts(339_543, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `Scheduler::Agenda` (r:1 w:1) /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) /// Storage: `Scheduler::Lookup` (r:0 w:1) /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) /// The range of component `s` is `[1, 50]`. @@ -174,13 +162,13 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 16_149_000 picoseconds. - Weight::from_parts(15_809_362, 0) + // Minimum execution time: 14_383_000 picoseconds. + Weight::from_parts(14_659_679, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 743 - .saturating_add(Weight::from_parts(733_748, 0).saturating_mul(s.into())) + // Standard Error: 2_290 + .saturating_add(Weight::from_parts(524_657, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) - .saturating_add(T::DbWeight::get().writes(2)) + .saturating_add(T::DbWeight::get().writes(3)) } /// Storage: `Scheduler::Lookup` (r:1 w:1) /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) @@ -191,11 +179,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `266 + s * (189 ±0)` // Estimated: `42632` - // Minimum execution time: 14_144_000 picoseconds. - Weight::from_parts(19_188_976, 0) + // Minimum execution time: 10_867_000 picoseconds. + Weight::from_parts(15_762_635, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 2_723 - .saturating_add(Weight::from_parts(514_586, 0).saturating_mul(s.into())) + // Standard Error: 3_374 + .saturating_add(Weight::from_parts(392_185, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) } @@ -203,19 +191,98 @@ impl pallet_scheduler::WeightInfo for WeightInfo { /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) /// Storage: `Scheduler::Agenda` (r:1 w:1) /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) /// The range of component `s` is `[1, 50]`. fn cancel_named(s: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `290 + s * (189 ±0)` // Estimated: `42632` - // Minimum execution time: 18_108_000 picoseconds. - Weight::from_parts(18_326_622, 0) + // Minimum execution time: 16_297_000 picoseconds. + Weight::from_parts(17_795_043, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 1_010 - .saturating_add(Weight::from_parts(757_085, 0).saturating_mul(s.into())) + // Standard Error: 2_950 + .saturating_add(Weight::from_parts(551_576, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `Scheduler::Agenda` (r:1 w:1) + /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) + /// The range of component `s` is `[1, 50]`. + fn schedule_retry(s: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `123` + // Estimated: `42632` + // Minimum execution time: 8_699_000 picoseconds. + Weight::from_parts(9_446_708, 0) + .saturating_add(Weight::from_parts(0, 42632)) + // Standard Error: 885 + .saturating_add(Weight::from_parts(32_058, 0).saturating_mul(s.into())) + .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(2)) } + /// Storage: `Scheduler::Agenda` (r:1 w:0) + /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) + fn set_retry() -> Weight { + // Proof Size summary in bytes: + // Measured: `9133` + // Estimated: `42632` + // Minimum execution time: 22_281_000 picoseconds. + Weight::from_parts(23_001_000, 0) + .saturating_add(Weight::from_parts(0, 42632)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Scheduler::Lookup` (r:1 w:0) + /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Agenda` (r:1 w:0) + /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) + fn set_retry_named() -> Weight { + // Proof Size summary in bytes: + // Measured: `9815` + // Estimated: `42632` + // Minimum execution time: 27_638_000 picoseconds. + Weight::from_parts(28_542_000, 0) + .saturating_add(Weight::from_parts(0, 42632)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Scheduler::Agenda` (r:1 w:0) + /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) + fn cancel_retry() -> Weight { + // Proof Size summary in bytes: + // Measured: `9145` + // Estimated: `42632` + // Minimum execution time: 22_572_000 picoseconds. + Weight::from_parts(23_363_000, 0) + .saturating_add(Weight::from_parts(0, 42632)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Scheduler::Lookup` (r:1 w:0) + /// Proof: `Scheduler::Lookup` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Agenda` (r:1 w:0) + /// Proof: `Scheduler::Agenda` (`max_values`: None, `max_size`: Some(39167), added: 41642, mode: `MaxEncodedLen`) + /// Storage: `Scheduler::Retries` (r:0 w:1) + /// Proof: `Scheduler::Retries` (`max_values`: None, `max_size`: Some(38), added: 2513, mode: `MaxEncodedLen`) + fn cancel_retry_named() -> Weight { + // Proof Size summary in bytes: + // Measured: `9827` + // Estimated: `42632` + // Minimum execution time: 28_629_000 picoseconds. + Weight::from_parts(29_430_000, 0) + .saturating_add(Weight::from_parts(0, 42632)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } } #[cfg(test)] @@ -253,7 +320,7 @@ mod tests { .max_extrinsic .unwrap_or_else(::max_value) .proof_size() - > 3711 + > 4197809 ); } #[test] @@ -304,4 +371,64 @@ mod tests { > 42632 ); } + #[test] + fn test_schedule_retry() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 42632 + ); + } + #[test] + fn test_set_retry() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 42632 + ); + } + #[test] + fn test_set_retry_named() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 42632 + ); + } + #[test] + fn test_cancel_retry() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 42632 + ); + } + #[test] + fn test_cancel_retry_named() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 42632 + ); + } } diff --git a/scripts/run_benches_for_runtime.sh b/scripts/run_benches_for_runtime.sh index 7720f99132..133fe0d67a 100755 --- a/scripts/run_benches_for_runtime.sh +++ b/scripts/run_benches_for_runtime.sh @@ -8,9 +8,8 @@ set -x runtime=${1-"peregrine"} profile=${2-"release"} -chain=$([ "$1" == "spiritnet" ] && echo "spiritnet-dev" || echo "dev") # Dev profile is the debug target -standard_args="--profile $profile --locked --features=runtime-benchmarks --bin=kilt-parachain" +standard_args="--profile $profile --locked --features=runtime-benchmarks --package $runtime-runtime" pallets=( pallet-migration @@ -63,27 +62,31 @@ if [ "$runtime" = "peregrine" ]; then ) fi -echo "[+] Running all runtime benchmarks for \"$runtime\", \"--chain=$chain\" and profile \"$profile\"" +echo "[+] Running all runtime benchmarks for \"$runtime\", and profile \"$profile\"" cargo build $standard_args -if [ $profile == "dev" ]; then +if [ "$profile" = "dev" ]; then target_folder="debug" + file_extension=".wasm" # We care about benchmark correctness, not accuracy. additional_args="--steps=2 --repeat=1 --default-pov-mode=ignored" else target_folder=$profile + file_extension=".compact.compressed.wasm" additional_args="--header=HEADER-GPL --template=.maintain/runtime-weight-template.hbs --output=./runtimes/${runtime}/src/weights/" fi +wasm_path="./target/$target_folder/wbuild/$runtime-runtime/${runtime}_runtime$file_extension" + for pallet in "${pallets[@]}"; do echo "Runtime: $runtime. Pallet: $pallet" # shellcheck disable=SC2086 - ./target/$target_folder/kilt-parachain benchmark pallet \ - --heap-pages=4096 \ - --chain="${chain}" \ + frame-omni-bencher v1 benchmark pallet \ --pallet="$pallet" \ --extrinsic="*" \ + --genesis-builder="runtime" \ + --runtime=$wasm_path \ $additional_args bench_status=$? From 5d89fb7ec828420b86c3466384ef5c0cef252825 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 5 May 2025 16:31:31 +0200 Subject: [PATCH 22/36] clippy --- runtimes/common/src/lib.rs | 5 ++++- runtimes/peregrine/src/genesis_state.rs | 3 ++- runtimes/spiritnet/src/genesis_state.rs | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/runtimes/common/src/lib.rs b/runtimes/common/src/lib.rs index b58bc3c63b..33f549540c 100644 --- a/runtimes/common/src/lib.rs +++ b/runtimes/common/src/lib.rs @@ -240,7 +240,9 @@ where } } -/// Helper function to generate an account ID from seed +/// Generates an account ID from a given seed. This function is primarily +/// intended for use in genesis state generation and should not be used at +/// runtime, as it may panic if the seed is invalid. pub fn get_account_id_from_secret(seed: &str) -> AccountId where AccountPublic: From<::Public>, @@ -249,6 +251,7 @@ where } pub fn get_public_key_from_secret(seed: &str) -> ::Public { + #[allow(clippy::expect_used)] TPublic::Pair::from_string(&format!("//{}", seed), None) .expect("static values are valid; qed") .public() diff --git a/runtimes/peregrine/src/genesis_state.rs b/runtimes/peregrine/src/genesis_state.rs index 8381d66625..d61481b652 100644 --- a/runtimes/peregrine/src/genesis_state.rs +++ b/runtimes/peregrine/src/genesis_state.rs @@ -15,6 +15,7 @@ // along with this program. If not, see . // If you feel like getting in touch with us, you can do so at +#![allow(clippy::expect_used)] use crate::{ BalancesConfig, CouncilConfig, ParachainInfoConfig, ParachainStakingConfig, PolkadotXcmConfig, @@ -74,7 +75,7 @@ pub mod development { parachain_staking: ParachainStakingConfig { stakers: [alice.clone(), bob.clone()] .map(|(acc, _)| -> (AccountId, Option, Balance) { - (acc, None, 2 * MinCollatorStake::get()) + (acc, None, 2u128.saturating_mul(MinCollatorStake::get())) }) .to_vec(), inflation_config: kilt_inflation_config(), diff --git a/runtimes/spiritnet/src/genesis_state.rs b/runtimes/spiritnet/src/genesis_state.rs index 3fca47ebdf..0ea700fac5 100644 --- a/runtimes/spiritnet/src/genesis_state.rs +++ b/runtimes/spiritnet/src/genesis_state.rs @@ -15,6 +15,7 @@ // along with this program. If not, see . // If you feel like getting in touch with us, you can do so at +#![allow(clippy::expect_used)] use crate::{ BalancesConfig, CouncilConfig, ParachainInfoConfig, ParachainStakingConfig, PolkadotXcmConfig, @@ -71,7 +72,7 @@ pub mod development { parachain_staking: ParachainStakingConfig { stakers: [alice.clone(), bob.clone()] .map(|(acc, _)| -> (AccountId, Option, Balance) { - (acc, None, 2 * MinCollatorStake::get()) + (acc, None, 2u128.saturating_mul(MinCollatorStake::get())) }) .to_vec(), inflation_config: kilt_inflation_config(), From 5eb7f144aef2141046b0e12667a5286ab38ceebf Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 5 May 2025 16:31:41 +0200 Subject: [PATCH 23/36] fmt --- .../kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs index ddf4d84a9e..5205196f66 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs @@ -122,7 +122,8 @@ impl where + > +where ProviderDidKeyId: Default, ProviderBlockNumber: Default, { From 1d0186d3d9b1b6d8079e2ca63a0268d4d3ef56d9 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 5 May 2025 16:41:10 +0200 Subject: [PATCH 24/36] cargo deny --- .cargo-deny.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.cargo-deny.toml b/.cargo-deny.toml index adbc9657e8..2ceea4d663 100644 --- a/.cargo-deny.toml +++ b/.cargo-deny.toml @@ -9,11 +9,9 @@ no-default-features = true [advisories] ignore = [ { id = "RUSTSEC-2020-0168", reason = "`mach` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, - { id = "RUSTSEC-2021-0139", reason = "`ansi_term` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2022-0061", reason = "`parity-wasm` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2022-0080", reason = "`parity-util-mem` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2024-0336", reason = "`rustls` vulnerability. Re-verify upon next polkadot-sdk updates." }, - { id = "RUSTSEC-2024-0344", reason = "`curve25519-dalek` vulnerability. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2024-0370", reason = "`proc-macro-error` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2024-0384", reason = "`instant` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2024-0388", reason = "`derivative` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, @@ -35,13 +33,16 @@ allow = [ "BSD-2-Clause", "BSD-3-Clause", "CC0-1.0", + "CDLA-Permissive-2.0", "GPL-3.0 WITH Classpath-exception-2.0", "GPL-3.0", "ISC", "MIT", + "MIT-0", "MPL-2.0", "OpenSSL", "SSPL-1.0", + "Unicode-3.0", "Unicode-DFS-2016", "Zlib", ] From d30fdfef05e3abed87f1ecb888a7d4f77f329eaa Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 5 May 2025 16:53:03 +0200 Subject: [PATCH 25/36] fmt --- .../src/merkle_proofs/v0/dip_subject_state/mod.rs | 3 +-- .../src/merkle_proofs/v0/dip_subject_state/tests.rs | 3 +-- .../src/merkle_proofs/v0/input_common.rs | 3 +-- .../src/merkle_proofs/v0/output_common.rs | 3 +-- .../src/merkle_proofs/v0/provider_state/mod.rs | 3 +-- .../src/merkle_proofs/v0/provider_state/tests.rs | 9 +++------ .../src/merkle_proofs/v0/relay_state/tests.rs | 6 ++---- crates/kilt-dip-primitives/src/verifier/parachain/mod.rs | 3 +-- .../kilt-dip-primitives/src/verifier/parachain/v0/mod.rs | 3 +-- .../kilt-dip-primitives/src/verifier/relaychain/mod.rs | 3 +-- .../src/verifier/relaychain/v0/mod.rs | 3 +-- pallets/pallet-bonded-coins/src/types.rs | 3 +-- 12 files changed, 15 insertions(+), 30 deletions(-) diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/mod.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/mod.rs index 348b8400b1..d6077ed9b7 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/mod.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/mod.rs @@ -87,8 +87,7 @@ impl< KiltLinkableAccountId, ConsumerBlockNumber, MAX_REVEALED_LEAVES_COUNT, - > -where + > where ConsumerBlockNumber: PartialOrd, { /// Verifies that the DIP proof signature is anchored to a block that has diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs index 0d4e07ded9..ed05091ac0 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/dip_subject_state/tests.rs @@ -38,8 +38,7 @@ mod dip_revealed_details_and_unverified_did_signature { KiltLinkableAccountId, ConsumerBlockNumber, MAX_REVEALED_LEAVES_COUNT, - > - where + > where KiltDidKeyId: Default, KiltBlockNumber: Default, ConsumerBlockNumber: Default, diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs index 5205196f66..ddf4d84a9e 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/input_common.rs @@ -122,8 +122,7 @@ impl -where + > where ProviderDidKeyId: Default, ProviderBlockNumber: Default, { diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/output_common.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/output_common.rs index b5144f95f3..757bc3c862 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/output_common.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/output_common.rs @@ -145,8 +145,7 @@ impl< KiltWeb3Name, KiltLinkableAccountId, MAX_REVEALED_LEAVES_COUNT, - > -where + > where KiltDidKeyId: crate::traits::BenchmarkDefault, KiltBlockNumber: crate::traits::BenchmarkDefault, { diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/mod.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/mod.rs index 1b6b74917d..7b93f7c2f7 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/mod.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/mod.rs @@ -423,8 +423,7 @@ impl< KiltWeb3Name, KiltLinkableAccountId, ConsumerBlockNumber, - > -where + > where KiltDidKeyId: Encode, KiltAccountId: Encode, KiltBlockNumber: Encode, diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs index fccfccb5ab..eb447321bb 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/provider_state/tests.rs @@ -47,8 +47,7 @@ mod parachain_dip_did_proof { KiltWeb3Name, KiltLinkableAccountId, ConsumerBlockNumber, - > - where + > where KiltDidKeyId: Default, KiltBlockNumber: Default, ConsumerBlockNumber: Default, @@ -214,8 +213,7 @@ mod dip_did_proof_with_verified_relay_state_root { KiltWeb3Name, KiltLinkableAccountId, ConsumerBlockNumber, - > - where + > where KiltDidKeyId: Default, KiltBlockNumber: Default, ConsumerBlockNumber: Default, @@ -442,8 +440,7 @@ mod dip_did_proof_with_verified_subject_commitment { KiltWeb3Name, KiltLinkableAccountId, ConsumerBlockNumber, - > - where + > where ConsumerBlockNumber: Default, { fn with_commitment_and_dip_proof( diff --git a/crates/kilt-dip-primitives/src/merkle_proofs/v0/relay_state/tests.rs b/crates/kilt-dip-primitives/src/merkle_proofs/v0/relay_state/tests.rs index 3b41936bd0..ca9655b8c1 100644 --- a/crates/kilt-dip-primitives/src/merkle_proofs/v0/relay_state/tests.rs +++ b/crates/kilt-dip-primitives/src/merkle_proofs/v0/relay_state/tests.rs @@ -53,8 +53,7 @@ mod relay_did_dip_proof { KiltBlockNumber, KiltWeb3Name, KiltLinkableAccountId, - > - where + > where RelayBlockNumber: Default, KiltDidKeyId: Default, KiltBlockNumber: Default, @@ -151,8 +150,7 @@ mod relay_dip_did_proof_with_verified_relay_state_root { KiltBlockNumber, KiltWeb3Name, KiltLinkableAccountId, - > - where + > where RelayBlockNumber: Default, KiltDidKeyId: Default, KiltBlockNumber: Default, diff --git a/crates/kilt-dip-primitives/src/verifier/parachain/mod.rs b/crates/kilt-dip-primitives/src/verifier/parachain/mod.rs index e2b2d8a6ff..c8cb66062a 100644 --- a/crates/kilt-dip-primitives/src/verifier/parachain/mod.rs +++ b/crates/kilt-dip-primitives/src/verifier/parachain/mod.rs @@ -174,8 +174,7 @@ impl< MAX_DID_MERKLE_PROOF_LEAVE_COUNT, MAX_DID_MERKLE_PROOF_LEAVE_SIZE, MAX_DID_MERKLE_LEAVES_REVEALED, - > -where + > where ConsumerRuntime: pallet_dip_consumer::Config, ConsumerRuntime::LocalIdentityInfo: Incrementable + Default, RelaychainRuntime: frame_system::Config, diff --git a/crates/kilt-dip-primitives/src/verifier/parachain/v0/mod.rs b/crates/kilt-dip-primitives/src/verifier/parachain/v0/mod.rs index b184c73e00..492a7a42cc 100644 --- a/crates/kilt-dip-primitives/src/verifier/parachain/v0/mod.rs +++ b/crates/kilt-dip-primitives/src/verifier/parachain/v0/mod.rs @@ -124,8 +124,7 @@ impl< MAX_DID_MERKLE_PROOF_LEAVE_COUNT, MAX_DID_MERKLE_PROOF_LEAVE_SIZE, MAX_DID_MERKLE_LEAVES_REVEALED, - > -where + > where ConsumerRuntime: pallet_dip_consumer::Config, ConsumerRuntime::LocalIdentityInfo: Incrementable + Default, RelaychainRuntime: frame_system::Config, diff --git a/crates/kilt-dip-primitives/src/verifier/relaychain/mod.rs b/crates/kilt-dip-primitives/src/verifier/relaychain/mod.rs index 1d3e1a6623..c8dac3a37f 100644 --- a/crates/kilt-dip-primitives/src/verifier/relaychain/mod.rs +++ b/crates/kilt-dip-primitives/src/verifier/relaychain/mod.rs @@ -165,8 +165,7 @@ impl< MAX_DID_MERKLE_PROOF_LEAVE_COUNT, MAX_DID_MERKLE_PROOF_LEAVE_SIZE, MAX_DID_MERKLE_LEAVES_REVEALED, - > -where + > where ConsumerRuntime: pallet_dip_consumer::Config, ConsumerRuntime::LocalIdentityInfo: Incrementable + Default, BlockNumberFor: Into + TryFrom, diff --git a/crates/kilt-dip-primitives/src/verifier/relaychain/v0/mod.rs b/crates/kilt-dip-primitives/src/verifier/relaychain/v0/mod.rs index 427abff82e..b0837835eb 100644 --- a/crates/kilt-dip-primitives/src/verifier/relaychain/v0/mod.rs +++ b/crates/kilt-dip-primitives/src/verifier/relaychain/v0/mod.rs @@ -106,8 +106,7 @@ impl< MAX_DID_MERKLE_PROOF_LEAVE_COUNT, MAX_DID_MERKLE_PROOF_LEAVE_SIZE, MAX_DID_MERKLE_LEAVES_REVEALED, - > -where + > where ConsumerRuntime: pallet_dip_consumer::Config, ConsumerRuntime::LocalIdentityInfo: Incrementable + Default, BlockNumberFor: Into + TryFrom, diff --git a/pallets/pallet-bonded-coins/src/types.rs b/pallets/pallet-bonded-coins/src/types.rs index d4209a7a65..ccdf13fcad 100644 --- a/pallets/pallet-bonded-coins/src/types.rs +++ b/pallets/pallet-bonded-coins/src/types.rs @@ -119,8 +119,7 @@ impl, - > -where + > where AccountId: PartialEq + Clone, { #[allow(clippy::too_many_arguments)] From 193124a3dbffa490028eda8d9fa04b2bf96a0842 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 5 May 2025 17:00:24 +0200 Subject: [PATCH 26/36] cargo deny --- .cargo-deny.toml | 1 + Cargo.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.cargo-deny.toml b/.cargo-deny.toml index 2ceea4d663..84f5314a97 100644 --- a/.cargo-deny.toml +++ b/.cargo-deny.toml @@ -19,6 +19,7 @@ ignore = [ { id = "RUSTSEC-2024-0436", reason = "`paste` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2025-0009", reason = "`ring` has a security vulnerability but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2025-0010", reason = "`ring` 0.16.20 is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, + { id = "RUSTSEC-2025-0017", reason = "`trust-dns` is unmaintained (renamed) but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, ] yanked = "deny" diff --git a/Cargo.lock b/Cargo.lock index 4fea092697..db5be731cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2735,7 +2735,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 2.0.101", + "syn 1.0.109", ] [[package]] @@ -3513,7 +3513,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -5235,7 +5235,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ "hermit-abi 0.5.0", "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -10907,7 +10907,7 @@ checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" dependencies = [ "bytes", "heck 0.4.1", - "itertools 0.10.5", + "itertools 0.11.0", "log", "multimap", "once_cell", @@ -11754,7 +11754,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -11767,7 +11767,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -11865,7 +11865,7 @@ dependencies = [ "security-framework 3.2.0", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -15284,7 +15284,7 @@ dependencies = [ "getrandom 0.3.2", "once_cell", "rustix 1.0.5", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -16776,7 +16776,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] From 70149268d82dbbbec1c464d38d54fb91fc659c75 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Tue, 6 May 2025 09:53:06 +0200 Subject: [PATCH 27/36] cargo deny --- .cargo-deny.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.cargo-deny.toml b/.cargo-deny.toml index 84f5314a97..665f2c11aa 100644 --- a/.cargo-deny.toml +++ b/.cargo-deny.toml @@ -11,12 +11,14 @@ ignore = [ { id = "RUSTSEC-2020-0168", reason = "`mach` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2022-0061", reason = "`parity-wasm` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2022-0080", reason = "`parity-util-mem` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, + { id = "RUSTSEC-2023-0091", reason = "`wasmtime` 8.0.1 has a security vulnerability but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2024-0336", reason = "`rustls` vulnerability. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2024-0370", reason = "`proc-macro-error` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2024-0384", reason = "`instant` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2024-0388", reason = "`derivative` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2024-0421", reason = "`idna` has a security vulnerability but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2024-0436", reason = "`paste` is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, + { id = "RUSTSEC-2024-0438", reason = "`wasmtime` 8.0.1 has a security vulnerability but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2025-0009", reason = "`ring` has a security vulnerability but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2025-0010", reason = "`ring` 0.16.20 is unmaintained but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, { id = "RUSTSEC-2025-0017", reason = "`trust-dns` is unmaintained (renamed) but a Substrate dependency. Re-verify upon next polkadot-sdk updates." }, @@ -44,7 +46,6 @@ allow = [ "OpenSSL", "SSPL-1.0", "Unicode-3.0", - "Unicode-DFS-2016", "Zlib", ] private = { ignore = false } From b825044de2b63fab9a3394051e0738cbe3ebf345 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Tue, 6 May 2025 10:40:21 +0200 Subject: [PATCH 28/36] fix benchmarking --- runtimes/peregrine/src/system/mod.rs | 8 +- .../peregrine/src/weights/pallet_collators.rs | 72 +++++++++--------- runtimes/spiritnet/src/system/mod.rs | 7 +- .../spiritnet/src/weights/pallet_collators.rs | 76 +++++++++---------- 4 files changed, 81 insertions(+), 82 deletions(-) diff --git a/runtimes/peregrine/src/system/mod.rs b/runtimes/peregrine/src/system/mod.rs index a098411907..0215720035 100644 --- a/runtimes/peregrine/src/system/mod.rs +++ b/runtimes/peregrine/src/system/mod.rs @@ -18,7 +18,7 @@ use frame_support::{ parameter_types, - traits::{AsEnsureOriginWithArg, Everything, NeverEnsureOrigin, PrivilegeCmp}, + traits::{AsEnsureOriginWithArg, Everything, PrivilegeCmp}, weights::Weight, }; use frame_system::EnsureRoot; @@ -295,9 +295,11 @@ impl pallet_membership::Config for Runtime { type RemoveOrigin = RootOrMoreThanHalfCouncil; type SwapOrigin = RootOrMoreThanHalfCouncil; type ResetOrigin = RootOrMoreThanHalfCouncil; - type PrimeOrigin = NeverEnsureOrigin; + #[cfg(not(feature = "runtime-benchmarks"))] + type PrimeOrigin = frame_support::traits::NeverEnsureOrigin; + #[cfg(feature = "runtime-benchmarks")] + type PrimeOrigin = frame_system::EnsureSigned; type MembershipInitialized = (); - #[cfg(feature = "runtime-benchmarks")] type MembershipChanged = crate::benchmarks::governance::MockMembershipChangedForBenchmarks; #[cfg(not(feature = "runtime-benchmarks"))] diff --git a/runtimes/peregrine/src/weights/pallet_collators.rs b/runtimes/peregrine/src/weights/pallet_collators.rs index fa6333702f..436f9995d6 100644 --- a/runtimes/peregrine/src/weights/pallet_collators.rs +++ b/runtimes/peregrine/src/weights/pallet_collators.rs @@ -18,20 +18,21 @@ //! Autogenerated weights for `pallet_collators` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 33.0.0 -//! DATE: 2025-04-23, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-06, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` -//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: -// ./target/release/kilt-parachain +// frame-omni-bencher +// v1 // benchmark // pallet -// --heap-pages=4096 -// --chain=dev // --pallet=pallet-collators // --extrinsic=* +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/peregrine-runtime/peregrine_runtime.compact.compressed.wasm // --header=HEADER-GPL // --template=.maintain/runtime-weight-template.hbs // --output=./runtimes/peregrine/src/weights/ @@ -56,11 +57,11 @@ impl pallet_collators::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `170 + m * (32 ±0)` // Estimated: `2510` - // Minimum execution time: 4_812_000 picoseconds. - Weight::from_parts(5_223_134, 0) + // Minimum execution time: 8_472_000 picoseconds. + Weight::from_parts(9_157_371, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 771 - .saturating_add(Weight::from_parts(16_478, 0).saturating_mul(m.into())) + // Standard Error: 1_170 + .saturating_add(Weight::from_parts(26_129, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -75,11 +76,9 @@ impl pallet_collators::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `222 + m * (32 ±0)` // Estimated: `2510 + m * (32 ±0)` - // Minimum execution time: 6_159_000 picoseconds. - Weight::from_parts(6_682_650, 0) + // Minimum execution time: 11_115_000 picoseconds. + Weight::from_parts(12_303_767, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 725 - .saturating_add(Weight::from_parts(15_110, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) .saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into())) @@ -95,11 +94,11 @@ impl pallet_collators::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `222 + m * (32 ±0)` // Estimated: `2510 + m * (32 ±0)` - // Minimum execution time: 6_279_000 picoseconds. - Weight::from_parts(6_612_007, 0) + // Minimum execution time: 10_888_000 picoseconds. + Weight::from_parts(11_823_159, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 980 - .saturating_add(Weight::from_parts(26_782, 0).saturating_mul(m.into())) + // Standard Error: 1_913 + .saturating_add(Weight::from_parts(21_019, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) .saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into())) @@ -111,15 +110,15 @@ impl pallet_collators::WeightInfo for WeightInfo { /// Storage: UNKNOWN KEY `0xdfe4dad7b89644d5962c7bb034ca6f7bb10896c85af113f86bae1ab193a37922` (r:0 w:1) /// Proof: UNKNOWN KEY `0xdfe4dad7b89644d5962c7bb034ca6f7bb10896c85af113f86bae1ab193a37922` (r:0 w:1) /// The range of component `m` is `[1, 32]`. - fn reset_member(m: u32, ) -> Weight { + fn reset_members(m: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `222 + m * (32 ±0)` // Estimated: `2510 + m * (32 ±0)` - // Minimum execution time: 6_318_000 picoseconds. - Weight::from_parts(6_828_217, 0) + // Minimum execution time: 10_864_000 picoseconds. + Weight::from_parts(11_892_378, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 932 - .saturating_add(Weight::from_parts(72_412, 0).saturating_mul(m.into())) + // Standard Error: 1_333 + .saturating_add(Weight::from_parts(63_054, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) .saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into())) @@ -135,11 +134,11 @@ impl pallet_collators::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `222 + m * (32 ±0)` // Estimated: `2510 + m * (32 ±0)` - // Minimum execution time: 6_538_000 picoseconds. - Weight::from_parts(7_074_832, 0) + // Minimum execution time: 10_998_000 picoseconds. + Weight::from_parts(11_990_124, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 891 - .saturating_add(Weight::from_parts(18_976, 0).saturating_mul(m.into())) + // Standard Error: 1_256 + .saturating_add(Weight::from_parts(19_368, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(3)) .saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into())) @@ -155,11 +154,11 @@ impl pallet_collators::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `170 + m * (32 ±0)` // Estimated: `2510 + m * (32 ±0)` - // Minimum execution time: 3_643_000 picoseconds. - Weight::from_parts(4_129_209, 0) + // Minimum execution time: 6_609_000 picoseconds. + Weight::from_parts(7_066_479, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 497 - .saturating_add(Weight::from_parts(4_023, 0).saturating_mul(m.into())) + // Standard Error: 857 + .saturating_add(Weight::from_parts(12_319, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(2)) .saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into())) @@ -168,16 +167,13 @@ impl pallet_collators::WeightInfo for WeightInfo { /// Proof: `Collators::Prime` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`) /// Storage: UNKNOWN KEY `0xdfe4dad7b89644d5962c7bb034ca6f7bb10896c85af113f86bae1ab193a37922` (r:0 w:1) /// Proof: UNKNOWN KEY `0xdfe4dad7b89644d5962c7bb034ca6f7bb10896c85af113f86bae1ab193a37922` (r:0 w:1) - /// The range of component `m` is `[1, 32]`. - fn clear_prime(m: u32, ) -> Weight { + fn clear_prime() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_096_000 picoseconds. - Weight::from_parts(1_229_794, 0) + // Minimum execution time: 2_246_000 picoseconds. + Weight::from_parts(2_417_000, 0) .saturating_add(Weight::from_parts(0, 0)) - // Standard Error: 94 - .saturating_add(Weight::from_parts(35, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().writes(2)) } } @@ -221,7 +217,7 @@ mod tests { ); } #[test] - fn test_reset_member() { + fn test_reset_members() { assert!( ::BlockWeights::get() .per_class diff --git a/runtimes/spiritnet/src/system/mod.rs b/runtimes/spiritnet/src/system/mod.rs index 70f49d2f16..0f521062ed 100644 --- a/runtimes/spiritnet/src/system/mod.rs +++ b/runtimes/spiritnet/src/system/mod.rs @@ -18,7 +18,7 @@ use frame_support::{ parameter_types, - traits::{AsEnsureOriginWithArg, Everything, NeverEnsureOrigin, PrivilegeCmp}, + traits::{AsEnsureOriginWithArg, Everything, PrivilegeCmp}, weights::Weight, }; use frame_system::EnsureRoot; @@ -289,7 +289,10 @@ impl pallet_membership::Config for Runtime { type RemoveOrigin = RootOrMoreThanHalfCouncil; type SwapOrigin = RootOrMoreThanHalfCouncil; type ResetOrigin = RootOrMoreThanHalfCouncil; - type PrimeOrigin = NeverEnsureOrigin; + #[cfg(not(feature = "runtime-benchmarks"))] + type PrimeOrigin = frame_support::traits::NeverEnsureOrigin; + #[cfg(feature = "runtime-benchmarks")] + type PrimeOrigin = frame_system::EnsureSigned; type MembershipInitialized = (); #[cfg(feature = "runtime-benchmarks")] type MembershipChanged = crate::benchmarks::governance::MockMembershipChangedForBenchmarks; diff --git a/runtimes/spiritnet/src/weights/pallet_collators.rs b/runtimes/spiritnet/src/weights/pallet_collators.rs index fa6333702f..8890bd0ade 100644 --- a/runtimes/spiritnet/src/weights/pallet_collators.rs +++ b/runtimes/spiritnet/src/weights/pallet_collators.rs @@ -18,23 +18,24 @@ //! Autogenerated weights for `pallet_collators` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 33.0.0 -//! DATE: 2025-04-23, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-06, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` -//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: -// ./target/release/kilt-parachain +// frame-omni-bencher +// v1 // benchmark // pallet -// --heap-pages=4096 -// --chain=dev // --pallet=pallet-collators // --extrinsic=* +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/spiritnet-runtime/spiritnet_runtime.compact.compressed.wasm // --header=HEADER-GPL // --template=.maintain/runtime-weight-template.hbs -// --output=./runtimes/peregrine/src/weights/ +// --output=./runtimes/spiritnet/src/weights/ #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_imports)] @@ -56,11 +57,11 @@ impl pallet_collators::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `170 + m * (32 ±0)` // Estimated: `2510` - // Minimum execution time: 4_812_000 picoseconds. - Weight::from_parts(5_223_134, 0) + // Minimum execution time: 8_720_000 picoseconds. + Weight::from_parts(9_392_733, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 771 - .saturating_add(Weight::from_parts(16_478, 0).saturating_mul(m.into())) + // Standard Error: 867 + .saturating_add(Weight::from_parts(15_705, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -75,11 +76,11 @@ impl pallet_collators::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `222 + m * (32 ±0)` // Estimated: `2510 + m * (32 ±0)` - // Minimum execution time: 6_159_000 picoseconds. - Weight::from_parts(6_682_650, 0) + // Minimum execution time: 10_650_000 picoseconds. + Weight::from_parts(11_552_390, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 725 - .saturating_add(Weight::from_parts(15_110, 0).saturating_mul(m.into())) + // Standard Error: 1_358 + .saturating_add(Weight::from_parts(16_425, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) .saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into())) @@ -95,11 +96,11 @@ impl pallet_collators::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `222 + m * (32 ±0)` // Estimated: `2510 + m * (32 ±0)` - // Minimum execution time: 6_279_000 picoseconds. - Weight::from_parts(6_612_007, 0) + // Minimum execution time: 10_847_000 picoseconds. + Weight::from_parts(11_627_801, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 980 - .saturating_add(Weight::from_parts(26_782, 0).saturating_mul(m.into())) + // Standard Error: 1_381 + .saturating_add(Weight::from_parts(20_179, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) .saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into())) @@ -111,15 +112,15 @@ impl pallet_collators::WeightInfo for WeightInfo { /// Storage: UNKNOWN KEY `0xdfe4dad7b89644d5962c7bb034ca6f7bb10896c85af113f86bae1ab193a37922` (r:0 w:1) /// Proof: UNKNOWN KEY `0xdfe4dad7b89644d5962c7bb034ca6f7bb10896c85af113f86bae1ab193a37922` (r:0 w:1) /// The range of component `m` is `[1, 32]`. - fn reset_member(m: u32, ) -> Weight { + fn reset_members(m: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `222 + m * (32 ±0)` // Estimated: `2510 + m * (32 ±0)` - // Minimum execution time: 6_318_000 picoseconds. - Weight::from_parts(6_828_217, 0) + // Minimum execution time: 10_579_000 picoseconds. + Weight::from_parts(11_637_226, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 932 - .saturating_add(Weight::from_parts(72_412, 0).saturating_mul(m.into())) + // Standard Error: 1_622 + .saturating_add(Weight::from_parts(93_061, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) .saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into())) @@ -135,11 +136,11 @@ impl pallet_collators::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `222 + m * (32 ±0)` // Estimated: `2510 + m * (32 ±0)` - // Minimum execution time: 6_538_000 picoseconds. - Weight::from_parts(7_074_832, 0) + // Minimum execution time: 11_199_000 picoseconds. + Weight::from_parts(12_267_525, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 891 - .saturating_add(Weight::from_parts(18_976, 0).saturating_mul(m.into())) + // Standard Error: 1_565 + .saturating_add(Weight::from_parts(24_021, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(3)) .saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into())) @@ -155,11 +156,11 @@ impl pallet_collators::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `170 + m * (32 ±0)` // Estimated: `2510 + m * (32 ±0)` - // Minimum execution time: 3_643_000 picoseconds. - Weight::from_parts(4_129_209, 0) + // Minimum execution time: 6_616_000 picoseconds. + Weight::from_parts(7_156_149, 0) .saturating_add(Weight::from_parts(0, 2510)) - // Standard Error: 497 - .saturating_add(Weight::from_parts(4_023, 0).saturating_mul(m.into())) + // Standard Error: 725 + .saturating_add(Weight::from_parts(11_271, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(2)) .saturating_add(Weight::from_parts(0, 32).saturating_mul(m.into())) @@ -168,16 +169,13 @@ impl pallet_collators::WeightInfo for WeightInfo { /// Proof: `Collators::Prime` (`max_values`: Some(1), `max_size`: Some(32), added: 527, mode: `MaxEncodedLen`) /// Storage: UNKNOWN KEY `0xdfe4dad7b89644d5962c7bb034ca6f7bb10896c85af113f86bae1ab193a37922` (r:0 w:1) /// Proof: UNKNOWN KEY `0xdfe4dad7b89644d5962c7bb034ca6f7bb10896c85af113f86bae1ab193a37922` (r:0 w:1) - /// The range of component `m` is `[1, 32]`. - fn clear_prime(m: u32, ) -> Weight { + fn clear_prime() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_096_000 picoseconds. - Weight::from_parts(1_229_794, 0) + // Minimum execution time: 2_312_000 picoseconds. + Weight::from_parts(2_454_000, 0) .saturating_add(Weight::from_parts(0, 0)) - // Standard Error: 94 - .saturating_add(Weight::from_parts(35, 0).saturating_mul(m.into())) .saturating_add(T::DbWeight::get().writes(2)) } } @@ -221,7 +219,7 @@ mod tests { ); } #[test] - fn test_reset_member() { + fn test_reset_members() { assert!( ::BlockWeights::get() .per_class From feda98542706d1703fa3678d55cf3656e5c117dc Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Tue, 6 May 2025 13:16:32 +0200 Subject: [PATCH 29/36] cargo docs --- pallets/pallet-asset-switch/src/lib.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pallets/pallet-asset-switch/src/lib.rs b/pallets/pallet-asset-switch/src/lib.rs index 7463634be6..4409ca903b 100644 --- a/pallets/pallet-asset-switch/src/lib.rs +++ b/pallets/pallet-asset-switch/src/lib.rs @@ -786,12 +786,9 @@ impl, I: 'static> Pallet { /// This will contain either only the XCM fee token in case of successful /// transfer, or the XCM fee token + the amount of funds supposed to be /// transferred. - /// - /// 3.2 Deposit the un-transferred asset (only if the transfer - /// failed) back into our account. - /// + /// 3.2 Deposit the un-transferred asset (only if the transfer failed) + /// back into our account. /// 3.3 Refund any surplus weight. - /// /// 3.4 Deposit the remaining XCM fee assets in the user's account. /// /// 4. Withdraw the requested asset (this operation should be infallible From ba49f36bf5d617dfee9f73dac3f2dda87f8d00b6 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Tue, 6 May 2025 13:53:20 +0200 Subject: [PATCH 30/36] add missing migration --- runtimes/spiritnet/src/migrations/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtimes/spiritnet/src/migrations/mod.rs b/runtimes/spiritnet/src/migrations/mod.rs index de90706fbe..5856e33195 100644 --- a/runtimes/spiritnet/src/migrations/mod.rs +++ b/runtimes/spiritnet/src/migrations/mod.rs @@ -23,7 +23,7 @@ use crate::{weights, Balances, ParachainSystem, Runtime, RuntimeEvent}; parameter_types! { pub const Inflation: &'static str = "Inflation"; - + pub const DmpPalletName: &'static str = "DmpQueue"; } impl cumulus_pallet_xcmp_queue::migration::v5::V5Config for Runtime { From 14d65e3cd14f4fcc7a780ea285090d5a0db858cd Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Wed, 7 May 2025 13:32:00 +0200 Subject: [PATCH 31/36] remove wasm --- peregrine_runtime.compact.compressed.wasm | Bin 1546156 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 peregrine_runtime.compact.compressed.wasm diff --git a/peregrine_runtime.compact.compressed.wasm b/peregrine_runtime.compact.compressed.wasm deleted file mode 100644 index 7293e448e67af740fcd2b4dd0550e19541775dc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1546156 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�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

Iic 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�)#$3`FqnSfLSO0m%jm!H5Z_7n8l1yEz2?E93Sx&FdP9rYM@C=y{&!-g~2P zZ`#vkGU9Xg*_QPv$x2 zY$M0vDkTit`qeUpWaFXvE4_OrrNIAAv(i`N~OT z0^}Ey*gSI_qNj&*p>SPSVsAgEC?>J@4iVz@h`oFJn(uZs`>dXj{>l}Afr!{Aa}S?! z0H~1otUJc)!dvWrfr0L!Cq9mBk?3(ybbeu_ms%2cPJwdzh^4{AGNs-4)Kf zrFvRp0IXZX>Q#2bSB7_mGl^^3tMSD#_9^%Xs7PuIT%ZzLJ7>g_UnEM`MaV0&*;+pYY_?Tf%Z#Z(&COiBVRof~E*aSL^}6*Xpf?@LXS#tBgQIf#puHIQ0Q z3cw_IkFmDgu-0q0#~H?Bu5sE2E)waxkVAd%QGWknejl;bJWcd+&U+(q^fuoZW31N` zFcGsDgywmepInS(Wz2HVF_x0J2kO8&V=fL8Q-+1Pg^4A@!rE}}Pk{C2S&P`L&J*6* zaS)LI(LZy3teseO?$l4uzTLRkS($vIbe8mIapQ>=d#YvYZ!K8aWK?kPC

vtuy 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≧0O06v2o`a40K^@z_jECW4`! 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

6LZK**m^<-e|rGeF)LKZ_@ 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 uze(fa&=ma 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Π)E*2aRvwrbwOL-XP_ld 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

H`NYv#-xLy|2oqvoGS>Cq|U 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 z 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

rBmFCB&)fqi7IpN0mS1|DSnR>9 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

n0{1Fe1>IT<{H~W!8P1GJacJ^ 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�mA8naV?~g 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

c*gyQh!C^Da@)F%!ZdBnuI>ts- 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 #^2 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

<>Vlm5h-0eGiwU9 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�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%0AdwZHlHs0cM@TgwwAU0K)c*?W@T!bL%-Xl9FP>8q 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%0DufrlI_=A7ymqTBls-Fz}rLm&!RCDFBX5Ab5d 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%0DGCdq8t-trCIiD!E! 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 From 6ba2f4320c8c8ee23467b2ea950210ba46907723 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 12 May 2025 11:06:56 +0200 Subject: [PATCH 32/36] benchmark scheduler --- .../peregrine/src/weights/pallet_scheduler.rs | 102 +++++++++--------- .../spiritnet/src/weights/pallet_scheduler.rs | 102 +++++++++--------- 2 files changed, 102 insertions(+), 102 deletions(-) diff --git a/runtimes/peregrine/src/weights/pallet_scheduler.rs b/runtimes/peregrine/src/weights/pallet_scheduler.rs index 9862fb1baa..c06d02f2d9 100644 --- a/runtimes/peregrine/src/weights/pallet_scheduler.rs +++ b/runtimes/peregrine/src/weights/pallet_scheduler.rs @@ -19,7 +19,7 @@ //! Autogenerated weights for `pallet_scheduler` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 -//! DATE: 2025-05-05, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2025-05-12, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` //! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 @@ -53,8 +53,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `36` // Estimated: `1493` - // Minimum execution time: 2_964_000 picoseconds. - Weight::from_parts(3_081_000, 0) + // Minimum execution time: 4_647_000 picoseconds. + Weight::from_parts(4_883_000, 0) .saturating_add(Weight::from_parts(0, 1493)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -66,11 +66,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 3_341_000 picoseconds. - Weight::from_parts(6_808_524, 0) + // Minimum execution time: 5_373_000 picoseconds. + Weight::from_parts(7_568_073, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 1_773 - .saturating_add(Weight::from_parts(306_913, 0).saturating_mul(s.into())) + // Standard Error: 2_446 + .saturating_add(Weight::from_parts(276_325, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -78,8 +78,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_063_000 picoseconds. - Weight::from_parts(3_282_000, 0) + // Minimum execution time: 2_935_000 picoseconds. + Weight::from_parts(3_097_000, 0) .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `Preimage::PreimageFor` (r:1 w:1) @@ -91,13 +91,13 @@ impl pallet_scheduler::WeightInfo for WeightInfo { /// The range of component `s` is `[128, 4194304]`. fn service_task_fetched(s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `246 + s * (1 ±0)` + // Measured: `213 + s * (1 ±0)` // Estimated: `4197809` - // Minimum execution time: 16_720_000 picoseconds. - Weight::from_parts(17_146_000, 0) + // Minimum execution time: 15_916_000 picoseconds. + Weight::from_parts(16_472_000, 0) .saturating_add(Weight::from_parts(0, 4197809)) - // Standard Error: 145 - .saturating_add(Weight::from_parts(12_950, 0).saturating_mul(s.into())) + // Standard Error: 142 + .saturating_add(Weight::from_parts(13_204, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(2)) } @@ -107,8 +107,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_138_000 picoseconds. - Weight::from_parts(4_355_000, 0) + // Minimum execution time: 4_171_000 picoseconds. + Weight::from_parts(4_333_000, 0) .saturating_add(Weight::from_parts(0, 0)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -116,24 +116,24 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_023_000 picoseconds. - Weight::from_parts(3_119_000, 0) + // Minimum execution time: 3_082_000 picoseconds. + Weight::from_parts(3_284_000, 0) .saturating_add(Weight::from_parts(0, 0)) } fn execute_dispatch_signed() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_899_000 picoseconds. - Weight::from_parts(2_081_000, 0) + // Minimum execution time: 1_943_000 picoseconds. + Weight::from_parts(2_110_000, 0) .saturating_add(Weight::from_parts(0, 0)) } fn execute_dispatch_unsigned() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_850_000 picoseconds. - Weight::from_parts(2_045_000, 0) + // Minimum execution time: 1_965_000 picoseconds. + Weight::from_parts(2_047_000, 0) .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `Scheduler::Agenda` (r:1 w:1) @@ -143,11 +143,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 8_746_000 picoseconds. - Weight::from_parts(12_361_403, 0) + // Minimum execution time: 8_540_000 picoseconds. + Weight::from_parts(12_005_932, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 2_193 - .saturating_add(Weight::from_parts(338_874, 0).saturating_mul(s.into())) + // Standard Error: 1_768 + .saturating_add(Weight::from_parts(313_546, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -162,11 +162,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 13_517_000 picoseconds. - Weight::from_parts(14_529_312, 0) + // Minimum execution time: 13_766_000 picoseconds. + Weight::from_parts(14_503_459, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 2_294 - .saturating_add(Weight::from_parts(542_358, 0).saturating_mul(s.into())) + // Standard Error: 1_808 + .saturating_add(Weight::from_parts(495_489, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(3)) } @@ -179,11 +179,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `266 + s * (189 ±0)` // Estimated: `42632` - // Minimum execution time: 11_219_000 picoseconds. - Weight::from_parts(16_231_326, 0) + // Minimum execution time: 11_223_000 picoseconds. + Weight::from_parts(15_993_707, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 3_277 - .saturating_add(Weight::from_parts(371_523, 0).saturating_mul(s.into())) + // Standard Error: 3_161 + .saturating_add(Weight::from_parts(349_634, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) } @@ -198,11 +198,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `290 + s * (189 ±0)` // Estimated: `42632` - // Minimum execution time: 15_550_000 picoseconds. - Weight::from_parts(16_976_892, 0) + // Minimum execution time: 15_833_000 picoseconds. + Weight::from_parts(17_229_195, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 3_254 - .saturating_add(Weight::from_parts(570_131, 0).saturating_mul(s.into())) + // Standard Error: 2_194 + .saturating_add(Weight::from_parts(518_980, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(3)) } @@ -215,11 +215,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `123` // Estimated: `42632` - // Minimum execution time: 8_521_000 picoseconds. - Weight::from_parts(9_310_610, 0) + // Minimum execution time: 8_589_000 picoseconds. + Weight::from_parts(9_308_498, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 1_652 - .saturating_add(Weight::from_parts(35_536, 0).saturating_mul(s.into())) + // Standard Error: 603 + .saturating_add(Weight::from_parts(25_962, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(2)) } @@ -231,8 +231,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `9133` // Estimated: `42632` - // Minimum execution time: 23_458_000 picoseconds. - Weight::from_parts(24_347_000, 0) + // Minimum execution time: 22_227_000 picoseconds. + Weight::from_parts(23_065_000, 0) .saturating_add(Weight::from_parts(0, 42632)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -247,8 +247,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `9815` // Estimated: `42632` - // Minimum execution time: 28_848_000 picoseconds. - Weight::from_parts(30_245_000, 0) + // Minimum execution time: 27_138_000 picoseconds. + Weight::from_parts(27_964_000, 0) .saturating_add(Weight::from_parts(0, 42632)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -261,8 +261,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `9145` // Estimated: `42632` - // Minimum execution time: 22_716_000 picoseconds. - Weight::from_parts(23_332_000, 0) + // Minimum execution time: 21_253_000 picoseconds. + Weight::from_parts(21_962_000, 0) .saturating_add(Weight::from_parts(0, 42632)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -277,8 +277,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `9827` // Estimated: `42632` - // Minimum execution time: 27_001_000 picoseconds. - Weight::from_parts(28_431_000, 0) + // Minimum execution time: 26_658_000 picoseconds. + Weight::from_parts(27_644_000, 0) .saturating_add(Weight::from_parts(0, 42632)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -320,7 +320,7 @@ mod tests { .max_extrinsic .unwrap_or_else(::max_value) .proof_size() - > 4197809 + > 3407870 ); } #[test] diff --git a/runtimes/spiritnet/src/weights/pallet_scheduler.rs b/runtimes/spiritnet/src/weights/pallet_scheduler.rs index 5f0eb945e4..e488250db5 100644 --- a/runtimes/spiritnet/src/weights/pallet_scheduler.rs +++ b/runtimes/spiritnet/src/weights/pallet_scheduler.rs @@ -19,7 +19,7 @@ //! Autogenerated weights for `pallet_scheduler` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 -//! DATE: 2025-05-05, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2025-05-12, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` //! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` //! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 @@ -53,8 +53,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `36` // Estimated: `1493` - // Minimum execution time: 2_879_000 picoseconds. - Weight::from_parts(3_211_000, 0) + // Minimum execution time: 2_760_000 picoseconds. + Weight::from_parts(3_012_000, 0) .saturating_add(Weight::from_parts(0, 1493)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -66,11 +66,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 3_125_000 picoseconds. - Weight::from_parts(6_992_325, 0) + // Minimum execution time: 3_096_000 picoseconds. + Weight::from_parts(6_711_407, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 2_263 - .saturating_add(Weight::from_parts(307_833, 0).saturating_mul(s.into())) + // Standard Error: 1_823 + .saturating_add(Weight::from_parts(307_448, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -78,8 +78,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_868_000 picoseconds. - Weight::from_parts(3_095_000, 0) + // Minimum execution time: 3_003_000 picoseconds. + Weight::from_parts(3_160_000, 0) .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `Preimage::PreimageFor` (r:1 w:1) @@ -91,13 +91,13 @@ impl pallet_scheduler::WeightInfo for WeightInfo { /// The range of component `s` is `[128, 4194304]`. fn service_task_fetched(s: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `246 + s * (1 ±0)` + // Measured: `213 + s * (1 ±0)` // Estimated: `4197809` - // Minimum execution time: 15_848_000 picoseconds. - Weight::from_parts(16_214_000, 0) + // Minimum execution time: 16_067_000 picoseconds. + Weight::from_parts(16_263_000, 0) .saturating_add(Weight::from_parts(0, 4197809)) - // Standard Error: 145 - .saturating_add(Weight::from_parts(13_014, 0).saturating_mul(s.into())) + // Standard Error: 138 + .saturating_add(Weight::from_parts(12_403, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(2)) } @@ -107,8 +107,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 4_182_000 picoseconds. - Weight::from_parts(4_392_000, 0) + // Minimum execution time: 4_220_000 picoseconds. + Weight::from_parts(4_339_000, 0) .saturating_add(Weight::from_parts(0, 0)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -116,24 +116,24 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_983_000 picoseconds. - Weight::from_parts(3_125_000, 0) + // Minimum execution time: 2_935_000 picoseconds. + Weight::from_parts(3_119_000, 0) .saturating_add(Weight::from_parts(0, 0)) } fn execute_dispatch_signed() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_975_000 picoseconds. - Weight::from_parts(2_086_000, 0) + // Minimum execution time: 1_947_000 picoseconds. + Weight::from_parts(2_044_000, 0) .saturating_add(Weight::from_parts(0, 0)) } fn execute_dispatch_unsigned() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_923_000 picoseconds. - Weight::from_parts(2_121_000, 0) + // Minimum execution time: 1_928_000 picoseconds. + Weight::from_parts(2_046_000, 0) .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `Scheduler::Agenda` (r:1 w:1) @@ -143,11 +143,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 8_705_000 picoseconds. - Weight::from_parts(12_140_021, 0) + // Minimum execution time: 8_529_000 picoseconds. + Weight::from_parts(12_074_512, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 2_130 - .saturating_add(Weight::from_parts(339_543, 0).saturating_mul(s.into())) + // Standard Error: 1_932 + .saturating_add(Weight::from_parts(326_973, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -162,11 +162,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `83 + s * (181 ±0)` // Estimated: `42632` - // Minimum execution time: 14_383_000 picoseconds. - Weight::from_parts(14_659_679, 0) + // Minimum execution time: 13_718_000 picoseconds. + Weight::from_parts(14_428_235, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 2_290 - .saturating_add(Weight::from_parts(524_657, 0).saturating_mul(s.into())) + // Standard Error: 1_107 + .saturating_add(Weight::from_parts(513_210, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(3)) } @@ -179,11 +179,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `266 + s * (189 ±0)` // Estimated: `42632` - // Minimum execution time: 10_867_000 picoseconds. - Weight::from_parts(15_762_635, 0) + // Minimum execution time: 11_058_000 picoseconds. + Weight::from_parts(15_802_187, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 3_374 - .saturating_add(Weight::from_parts(392_185, 0).saturating_mul(s.into())) + // Standard Error: 2_880 + .saturating_add(Weight::from_parts(374_796, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(2)) } @@ -198,11 +198,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `290 + s * (189 ±0)` // Estimated: `42632` - // Minimum execution time: 16_297_000 picoseconds. - Weight::from_parts(17_795_043, 0) + // Minimum execution time: 15_653_000 picoseconds. + Weight::from_parts(17_038_595, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 2_950 - .saturating_add(Weight::from_parts(551_576, 0).saturating_mul(s.into())) + // Standard Error: 1_938 + .saturating_add(Weight::from_parts(541_501, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(3)) } @@ -215,11 +215,11 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `123` // Estimated: `42632` - // Minimum execution time: 8_699_000 picoseconds. - Weight::from_parts(9_446_708, 0) + // Minimum execution time: 8_716_000 picoseconds. + Weight::from_parts(9_465_301, 0) .saturating_add(Weight::from_parts(0, 42632)) - // Standard Error: 885 - .saturating_add(Weight::from_parts(32_058, 0).saturating_mul(s.into())) + // Standard Error: 776 + .saturating_add(Weight::from_parts(25_885, 0).saturating_mul(s.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(2)) } @@ -231,8 +231,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `9133` // Estimated: `42632` - // Minimum execution time: 22_281_000 picoseconds. - Weight::from_parts(23_001_000, 0) + // Minimum execution time: 23_528_000 picoseconds. + Weight::from_parts(24_163_000, 0) .saturating_add(Weight::from_parts(0, 42632)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -247,8 +247,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `9815` // Estimated: `42632` - // Minimum execution time: 27_638_000 picoseconds. - Weight::from_parts(28_542_000, 0) + // Minimum execution time: 29_289_000 picoseconds. + Weight::from_parts(30_006_000, 0) .saturating_add(Weight::from_parts(0, 42632)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -261,8 +261,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `9145` // Estimated: `42632` - // Minimum execution time: 22_572_000 picoseconds. - Weight::from_parts(23_363_000, 0) + // Minimum execution time: 23_050_000 picoseconds. + Weight::from_parts(23_468_000, 0) .saturating_add(Weight::from_parts(0, 42632)) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -277,8 +277,8 @@ impl pallet_scheduler::WeightInfo for WeightInfo { // Proof Size summary in bytes: // Measured: `9827` // Estimated: `42632` - // Minimum execution time: 28_629_000 picoseconds. - Weight::from_parts(29_430_000, 0) + // Minimum execution time: 28_494_000 picoseconds. + Weight::from_parts(29_535_000, 0) .saturating_add(Weight::from_parts(0, 42632)) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().writes(1)) @@ -320,7 +320,7 @@ mod tests { .max_extrinsic .unwrap_or_else(::max_value) .proof_size() - > 4197809 + > 3407870 ); } #[test] From 2b62fdd0d160f48c252cee5a2fea55f592c27196 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 12 May 2025 11:09:49 +0200 Subject: [PATCH 33/36] update cargo toml --- pallets/pallet-configuration/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pallets/pallet-configuration/Cargo.toml b/pallets/pallet-configuration/Cargo.toml index 0b1b0d098b..6d21ba5573 100644 --- a/pallets/pallet-configuration/Cargo.toml +++ b/pallets/pallet-configuration/Cargo.toml @@ -34,7 +34,7 @@ frame-benchmarking = { workspace = true, optional = true } [features] default = ["std"] -mock = ["std"] +mock = [] runtime-benchmarks = [ "cumulus-pallet-parachain-system/runtime-benchmarks", "frame-benchmarking", From 6be123a366d7a058db27e3e1eb094676f2f1fc36 Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Mon, 12 May 2025 12:12:57 +0200 Subject: [PATCH 34/36] improve error handling --- pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mod.rs | 1 - .../pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/mod.rs | 2 -- 2 files changed, 3 deletions(-) diff --git a/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mod.rs b/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mod.rs index e86c05ce50..2a0a9c0e07 100644 --- a/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mod.rs +++ b/pallets/pallet-asset-switch/src/xcm/trade/xcm_fee_asset/mod.rs @@ -158,7 +158,6 @@ where switch_pair.remote_xcm_fee, e ); - *e }) .ok()?; // Double check the store asset fungibility type, in case it changes between diff --git a/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/mod.rs b/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/mod.rs index 60827af8c1..a2b5312082 100644 --- a/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/mod.rs +++ b/pallets/pallet-asset-switch/src/xcm/transfer/xcm_fee_asset/mod.rs @@ -51,7 +51,6 @@ where // 2. We only trust the EXACT configured remote location (no parent is allowed). let Ok(stored_remote_reserve_location_v4): Result = switch_pair.remote_reserve_location.clone().try_into().inspect_err(|e| { log::error!(target: LOG_TARGET, "Failed to convert stored remote reserve location {:?} into v4 xcm version with error {:?}.", switch_pair.remote_reserve_location, e); - *e }) else { return false; }; if stored_remote_reserve_location_v4 != *b { log::trace!( @@ -66,7 +65,6 @@ where // 3. Verify the asset ID matches the configured XCM fee asset ID. let Ok(stored_remote_asset_fee): Result = switch_pair.remote_xcm_fee.clone().try_into().inspect_err(|e| { log::error!(target: LOG_TARGET, "Failed to convert stored remote asset fee {:?} into v4 xcm version with error {:?}.", switch_pair.remote_xcm_fee, e); - *e }) else { return false; }; a.id == stored_remote_asset_fee.id From d53c707ee5e6393a51cbb595db0fc7a59e2cd52f Mon Sep 17 00:00:00 2001 From: Adel Golghalyani Date: Thu, 15 May 2025 15:23:32 +0200 Subject: [PATCH 35/36] use right rust version for CI --- .github/workflows/check-code.yml | 14 +++++++------- .github/workflows/publish-rustdocs.yml | 2 +- .gitlab-ci.yml | 2 +- Dockerfile | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/check-code.yml b/.github/workflows/check-code.yml index 921d85c284..fe03041c84 100644 --- a/.github/workflows/check-code.yml +++ b/.github/workflows/check-code.yml @@ -35,7 +35,7 @@ jobs: name: Run Clippy checks runs-on: ubuntu-latest container: - image: paritytech/ci-unified:bullseye-1.74.0 + image: paritytech/ci-unified:bullseye-1.81.0 env: # Configured by the Docker image. We can't change this unless the image does it. CARGO_HOME: /usr/local/cargo @@ -76,11 +76,11 @@ jobs: name: Check formatting runs-on: ubuntu-latest container: - image: paritytech/ci-unified:bullseye-1.74.0 + image: paritytech/ci-unified:bullseye-1.81.0 env: # Configured by the Docker image. We can't change this unless the image does it. CARGO_HOME: /usr/local/cargo - # Latest nightly version matching the base rustc version (1.74.0). + # Latest nightly version matching the base rustc version (1.18.0). RUSTUP_NIGHTLY_VERSION: nightly-2023-10-02 needs: get-commit-head if: ${{ !contains(needs.get-commit-head.outputs.headCommitMsg, 'ci-skip-rust') }} @@ -232,14 +232,14 @@ jobs: -v "${HOME}/.cargo/registry/cache:${{ env.CARGO_HOME }}/registry/cache" \ -v "${HOME}/.cargo/git/db:${{ env.CARGO_HOME }}/git/db" \ -w /workspace \ - paritytech/ci-unified:bullseye-1.74.0 \ + paritytech/ci-unified:bullseye-1.81.0 \ bash -c "cargo test --all-targets --locked ${{ matrix.features }}" cargo-doc: name: Check Rustdoc runs-on: ubuntu-latest container: - image: paritytech/ci-unified:bullseye-1.74.0 + image: paritytech/ci-unified:bullseye-1.81.0 env: # Configured by the Docker image. We can't change this unless the image does it. CARGO_HOME: /usr/local/cargo @@ -276,7 +276,7 @@ jobs: name: Run try-runtime runs-on: ubuntu-latest container: - image: paritytech/ci-unified:bullseye-1.74.0 + image: paritytech/ci-unified:bullseye-1.81.0 env: # Configured by the Docker image. We can't change this unless the image does it. CARGO_HOME: /usr/local/cargo @@ -368,7 +368,7 @@ jobs: -v "${HOME}/.cargo/registry/cache:${{ env.CARGO_HOME }}/registry/cache" \ -v "${HOME}/.cargo/git/db:${{ env.CARGO_HOME }}/git/db" \ -w /workspace \ - paritytech/ci-unified:bullseye-1.74.0 \ + paritytech/ci-unified:bullseye-1.81.0 \ bash -c "bash -x scripts/run_benches_for_runtime.sh ${{ matrix.runtime }} dev" trigger-gitlab: diff --git a/.github/workflows/publish-rustdocs.yml b/.github/workflows/publish-rustdocs.yml index 73ab18a0c4..d262661d5c 100644 --- a/.github/workflows/publish-rustdocs.yml +++ b/.github/workflows/publish-rustdocs.yml @@ -55,7 +55,7 @@ jobs: -v "${HOME}/.cargo:/root/.cargo" \ -e RUSTDOCFLAGS='-D warnings' \ -w /workspace \ - paritytech/ci-unified:bullseye-1.74.0 \ + paritytech/ci-unified:bullseye-1.81.0 \ bash -c " cargo doc --all-features --no-deps --locked && \ mv $DOCS_TARGET/help.html $DOCS_TARGET/index.html && \ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 85f99bfb15..51256a0bed 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,7 +38,7 @@ build-production-wasm: build-try-state-wasm: image: - name: paritytech/ci-unified:bullseye-1.74.0 + name: paritytech/ci-unified:bullseye-1.81.0 stage: build parallel: matrix: diff --git a/Dockerfile b/Dockerfile index 42be144a31..d23a89e7e9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # this container builds the kilt-parachain binary from source files and the runtime library # pinned the version to avoid build cache invalidation -FROM paritytech/ci-unified:bullseye-1.74.0 as builder +FROM paritytech/ci-unified:bullseye-1.81.0 as builder WORKDIR /build From 147fdde5ccc63f2709bc1899cb3642c43b376a0d Mon Sep 17 00:00:00 2001 From: Adel Golghalyani <48685760+Ad96el@users.noreply.github.com> Date: Fri, 16 May 2025 15:12:11 +0200 Subject: [PATCH 36/36] feat: Ismp (#888) # Implements ISMP related pallet --- .cargo-deny.toml | 7 +- Cargo.lock | 3624 ++++++++++++++--- Cargo.toml | 282 +- .../src/tests/peregrine/unpaid_execution.rs | 2 +- .../src/tests/spiritnet/unpaid_execution.rs | 2 +- nodes/parachain/Cargo.toml | 6 + nodes/parachain/src/command.rs | 6 +- nodes/parachain/src/rpc.rs | 25 +- nodes/parachain/src/service.rs | 28 +- runtimes/peregrine/Cargo.toml | 21 + runtimes/peregrine/src/benchmarks/mod.rs | 9 +- runtimes/peregrine/src/governance.rs | 2 +- runtimes/peregrine/src/ismp.rs | 103 + runtimes/peregrine/src/lib.rs | 7 + runtimes/peregrine/src/runtime_apis.rs | 67 +- .../peregrine/src/weights/ismp_parachain.rs | 134 + runtimes/peregrine/src/weights/mod.rs | 2 + .../src/weights/pallet_token_gateway.rs | 182 + runtimes/spiritnet/Cargo.toml | 29 +- runtimes/spiritnet/src/benchmarks/mod.rs | 10 +- runtimes/spiritnet/src/governance.rs | 2 +- runtimes/spiritnet/src/ismp.rs | 103 + runtimes/spiritnet/src/lib.rs | 7 + runtimes/spiritnet/src/runtime_apis.rs | 69 +- .../spiritnet/src/weights/ismp_parachain.rs | 134 + runtimes/spiritnet/src/weights/mod.rs | 2 + .../src/weights/pallet_token_gateway.rs | 184 + scripts/run_benches_for_runtime.sh | 3 + 28 files changed, 4309 insertions(+), 743 deletions(-) create mode 100644 runtimes/peregrine/src/ismp.rs create mode 100644 runtimes/peregrine/src/weights/ismp_parachain.rs create mode 100644 runtimes/peregrine/src/weights/pallet_token_gateway.rs create mode 100644 runtimes/spiritnet/src/ismp.rs create mode 100644 runtimes/spiritnet/src/weights/ismp_parachain.rs create mode 100644 runtimes/spiritnet/src/weights/pallet_token_gateway.rs diff --git a/.cargo-deny.toml b/.cargo-deny.toml index 665f2c11aa..348dff81e5 100644 --- a/.cargo-deny.toml +++ b/.cargo-deny.toml @@ -57,6 +57,9 @@ license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] name = "ring" [sources] -allow-git = ["https://github.com/paritytech/polkadot-sdk"] -unknown-git = "deny" +allow-git = [ + "https://github.com/paritytech/polkadot-sdk", + "https://github.com/polytope-labs/hyperbridge", +] +unknown-git = "deny" unknown-registry = "deny" diff --git a/Cargo.lock b/Cargo.lock index 4e699a6c74..02716fc810 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -110,6 +110,145 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +[[package]] +name = "alloy-primitives" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 0.99.20", + "hex-literal 0.4.1", + "itoa", + "proptest", + "rand 0.8.5", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-primitives" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 0.99.20", + "hex-literal 0.4.1", + "itoa", + "k256", + "keccak-asm", + "proptest", + "rand 0.8.5", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6" +dependencies = [ + "arrayvec 0.7.6", + "bytes", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c" +dependencies = [ + "const-hex", + "dunce", + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.101", + "syn-solidity 0.4.2", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b40397ddcdcc266f59f959770f601ce1280e699a91fc1862f29cef91707cd09" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck 0.5.0", + "indexmap 2.9.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.101", + "syn-solidity 0.7.7", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" +dependencies = [ + "const-hex", + "dunce", + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.101", + "syn-solidity 0.7.7", +] + +[[package]] +name = "alloy-sol-types" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98d7107bed88e8f09f0ddcc3335622d87bfb6821f3e0c7473329fb1cfad5e015" +dependencies = [ + "alloy-primitives 0.4.2", + "alloy-sol-macro 0.4.2", + "const-hex", + "serde", +] + +[[package]] +name = "alloy-sol-types" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" +dependencies = [ + "alloy-primitives 0.7.7", + "alloy-sol-macro 0.7.7", + "const-hex", +] + [[package]] name = "always-assert" version = "0.1.3" @@ -217,8 +356,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" dependencies = [ "ark-ec", - "ark-ff", - "ark-std", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-models-ext", + "ark-std 0.4.0", ] [[package]] @@ -228,9 +379,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bw6-761" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bw6-761-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2" +dependencies = [ + "ark-bw6-761", + "ark-ec", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", ] [[package]] @@ -239,14 +429,83 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff", + "ark-ff 0.4.2", "ark-poly", - "ark-serialize", - "ark-std", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", "itertools 0.10.5", "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ed-on-bls12-377" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff 0.4.2", + "ark-models-ext", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", "zeroize", ] @@ -256,20 +515,30 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "digest 0.10.7", "itertools 0.10.5", "num-bigint", "num-traits", "paste", - "rustc_version", + "rustc_version 0.4.1", "zeroize", ] +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -280,6 +549,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -293,19 +574,56 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-models-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", +] + [[package]] name = "ark-poly" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", ] +[[package]] +name = "ark-scale" +version = "0.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + [[package]] name = "ark-serialize" version = "0.4.2" @@ -313,7 +631,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-serialize-derive", - "ark-std", + "ark-std 0.4.0", "digest 0.10.7", "num-bigint", ] @@ -329,6 +647,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -336,7 +664,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", + "rayon", ] [[package]] @@ -453,7 +782,7 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "asset-hub-rococo-emulated-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "asset-hub-rococo-runtime", "bp-bridge-hub-rococo", @@ -470,7 +799,7 @@ dependencies = [ [[package]] name = "asset-hub-rococo-runtime" version = "0.22.4" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "assets-common", "bp-asset-hub-rococo", @@ -554,7 +883,7 @@ dependencies = [ [[package]] name = "asset-test-utils" version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-pallet-parachain-system", "cumulus-pallet-xcmp-queue", @@ -585,7 +914,7 @@ dependencies = [ [[package]] name = "assets-common" version = "0.18.3" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -833,6 +1162,17 @@ dependencies = [ "url", ] +[[package]] +name = "auto_impl" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "autocfg" version = "1.4.0" @@ -899,7 +1239,7 @@ checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" [[package]] name = "binary-merkle-tree" version = "15.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "hash-db", "log", @@ -944,6 +1284,21 @@ dependencies = [ "bitcoin_hashes", ] +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitcoin-internals" version = "0.2.0" @@ -1106,7 +1461,7 @@ dependencies = [ [[package]] name = "bp-asset-hub-rococo" version = "0.14.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bp-xcm-bridge-hub-router", "frame-support", @@ -1119,7 +1474,7 @@ dependencies = [ [[package]] name = "bp-asset-hub-westend" version = "0.13.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bp-xcm-bridge-hub-router", "frame-support", @@ -1132,7 +1487,7 @@ dependencies = [ [[package]] name = "bp-bridge-hub-cumulus" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bp-messages", "bp-polkadot-core", @@ -1147,7 +1502,7 @@ dependencies = [ [[package]] name = "bp-bridge-hub-rococo" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bp-bridge-hub-cumulus", "bp-messages", @@ -1163,7 +1518,7 @@ dependencies = [ [[package]] name = "bp-bridge-hub-westend" version = "0.14.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bp-bridge-hub-cumulus", "bp-messages", @@ -1179,7 +1534,7 @@ dependencies = [ [[package]] name = "bp-header-chain" version = "0.18.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bp-runtime", "finality-grandpa", @@ -1196,7 +1551,7 @@ dependencies = [ [[package]] name = "bp-messages" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bp-header-chain", "bp-runtime", @@ -1210,32 +1565,80 @@ dependencies = [ ] [[package]] -name = "bp-polkadot-core" +name = "bp-parachains" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ - "bp-messages", + "bp-header-chain", + "bp-polkadot-core", "bp-runtime", "frame-support", - "frame-system", + "impl-trait-for-tuples", "parity-scale-codec", - "parity-util-mem", "scale-info", - "serde", "sp-core", "sp-runtime", "sp-std", ] [[package]] -name = "bp-runtime" -version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +name = "bp-polkadot" +version = "0.16.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ + "bp-header-chain", + "bp-polkadot-core", + "bp-runtime", "frame-support", - "frame-system", - "hash-db", - "impl-trait-for-tuples", + "sp-api", + "sp-std", +] + +[[package]] +name = "bp-polkadot-core" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bp-messages", + "bp-runtime", + "frame-support", + "frame-system", + "parity-scale-codec", + "parity-util-mem", + "scale-info", + "serde", + "sp-core", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "bp-relayers" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-runtime", + "frame-support", + "frame-system", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "bp-runtime" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "hash-db", + "impl-trait-for-tuples", "log", "num-traits", "parity-scale-codec", @@ -1250,10 +1653,30 @@ dependencies = [ "trie-db", ] +[[package]] +name = "bp-test-utils" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bp-header-chain", + "bp-parachains", + "bp-polkadot-core", + "bp-runtime", + "ed25519-dalek", + "finality-grandpa", + "parity-scale-codec", + "sp-application-crypto", + "sp-consensus-grandpa", + "sp-core", + "sp-runtime", + "sp-std", + "sp-trie", +] + [[package]] name = "bp-xcm-bridge-hub" version = "0.4.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bp-messages", "bp-runtime", @@ -1270,13 +1693,102 @@ dependencies = [ [[package]] name = "bp-xcm-bridge-hub-router" version = "0.14.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-runtime", + "staging-xcm", +] + +[[package]] +name = "bridge-hub-common" +version = "0.10.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ + "cumulus-primitives-core", + "frame-support", + "pallet-message-queue", "parity-scale-codec", "scale-info", + "snowbridge-core", + "sp-core", + "sp-runtime", + "sp-std", + "staging-xcm", +] + +[[package]] +name = "bridge-hub-test-utils" +version = "0.20.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "asset-test-utils", + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-test-utils", + "cumulus-pallet-parachain-system", + "cumulus-pallet-xcmp-queue", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-balances", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "pallet-xcm-bridge-hub", + "parachains-common", + "parachains-runtimes-test-utils", + "parity-scale-codec", "sp-core", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-std", + "sp-tracing", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", +] + +[[package]] +name = "bridge-runtime-common" +version = "0.18.3" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "frame-support", + "frame-system", + "log", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-transaction-payment", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-io", "sp-runtime", + "sp-std", + "sp-trie", "staging-xcm", + "tuplex", ] [[package]] @@ -1606,6 +2118,27 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "color-print" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3aa954171903797d5623e047d9ab69d91b493657917bdfb8c2c80ecaf9cdb6f4" +dependencies = [ + "color-print-proc-macro", +] + +[[package]] +name = "color-print-proc-macro" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692186b5ebe54007e45a59aea47ece9eb4108e141326c304cdc91699a7118a22" +dependencies = [ + "nom", + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "colorchoice" version = "1.0.3" @@ -1660,6 +2193,19 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "const-hex" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -1956,7 +2502,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array 0.14.7", - "rand_core", + "rand_core 0.6.4", "subtle 2.6.1", "zeroize", ] @@ -1968,7 +2514,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array 0.14.7", - "rand_core", + "rand_core 0.6.4", "typenum", ] @@ -2023,7 +2569,7 @@ dependencies = [ [[package]] name = "cumulus-client-cli" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "clap", "parity-scale-codec", @@ -2040,7 +2586,7 @@ dependencies = [ [[package]] name = "cumulus-client-collator" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-client-consensus-common", "cumulus-client-network", @@ -2063,7 +2609,7 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-aura" version = "0.18.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "cumulus-client-collator", @@ -2108,7 +2654,7 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-common" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "cumulus-client-pov-recovery", @@ -2138,7 +2684,7 @@ dependencies = [ [[package]] name = "cumulus-client-consensus-proposer" version = "0.16.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "anyhow", "async-trait", @@ -2150,10 +2696,33 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "cumulus-client-consensus-relay-chain" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "async-trait", + "cumulus-client-consensus-common", + "cumulus-primitives-core", + "cumulus-relay-chain-interface", + "futures", + "parking_lot 0.12.3", + "sc-consensus", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-inherents", + "sp-runtime", + "substrate-prometheus-endpoint", + "tracing", +] + [[package]] name = "cumulus-client-network" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "cumulus-relay-chain-interface", @@ -2179,7 +2748,7 @@ dependencies = [ [[package]] name = "cumulus-client-parachain-inherent" version = "0.12.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2201,7 +2770,7 @@ dependencies = [ [[package]] name = "cumulus-client-pov-recovery" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2213,7 +2782,7 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-overseer", "polkadot-primitives", - "rand", + "rand 0.8.5", "sc-client-api", "sc-consensus", "sp-api", @@ -2227,7 +2796,7 @@ dependencies = [ [[package]] name = "cumulus-client-service" version = "0.19.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-client-cli", "cumulus-client-collator", @@ -2264,7 +2833,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-aura-ext" version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-pallet-parachain-system", "frame-support", @@ -2278,10 +2847,27 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "cumulus-pallet-dmp-queue" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "cumulus-primitives-core", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", + "staging-xcm", +] + [[package]] name = "cumulus-pallet-parachain-system" -version = "0.17.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "0.17.2" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bytes", "cumulus-pallet-parachain-system-proc-macro", @@ -2317,7 +2903,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-parachain-system-proc-macro" version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", @@ -2328,7 +2914,7 @@ dependencies = [ [[package]] name = "cumulus-pallet-session-benchmarking" version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -2338,10 +2924,25 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "cumulus-pallet-solo-to-para" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "cumulus-pallet-parachain-system", + "frame-support", + "frame-system", + "pallet-sudo", + "parity-scale-codec", + "polkadot-primitives", + "scale-info", + "sp-runtime", +] + [[package]] name = "cumulus-pallet-xcm" version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -2355,8 +2956,8 @@ dependencies = [ [[package]] name = "cumulus-pallet-xcmp-queue" -version = "0.17.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "0.17.3" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bounded-collections", "bp-xcm-bridge-hub-router", @@ -2378,10 +2979,25 @@ dependencies = [ "staging-xcm-executor", ] +[[package]] +name = "cumulus-ping" +version = "0.17.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "cumulus-pallet-xcm", + "cumulus-primitives-core", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "staging-xcm", +] + [[package]] name = "cumulus-primitives-aura" version = "0.15.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "sp-api", "sp-consensus-aura", @@ -2390,7 +3006,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-core" version = "0.16.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "polkadot-core-primitives", @@ -2406,7 +3022,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-parachain-inherent" version = "0.16.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2420,7 +3036,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-proof-size-hostfunction" version = "0.10.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "sp-externalities", "sp-runtime-interface", @@ -2430,7 +3046,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-storage-weight-reclaim" version = "8.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-primitives-core", "cumulus-primitives-proof-size-hostfunction", @@ -2446,7 +3062,7 @@ dependencies = [ [[package]] name = "cumulus-primitives-timestamp" version = "0.16.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-primitives-core", "sp-inherents", @@ -2455,8 +3071,8 @@ dependencies = [ [[package]] name = "cumulus-primitives-utility" -version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "0.17.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -2473,7 +3089,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-inprocess-interface" version = "0.19.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2497,7 +3113,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-interface" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2516,7 +3132,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-minimal-node" version = "0.19.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "async-trait", @@ -2551,7 +3167,7 @@ dependencies = [ [[package]] name = "cumulus-relay-chain-rpc-interface" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "cumulus-primitives-core", @@ -2563,7 +3179,7 @@ dependencies = [ "parity-scale-codec", "pin-project", "polkadot-overseer", - "rand", + "rand 0.8.5", "sc-client-api", "sc-rpc-api", "sc-service", @@ -2590,7 +3206,7 @@ dependencies = [ [[package]] name = "cumulus-test-relay-sproof-builder" version = "0.16.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-primitives-core", "parity-scale-codec", @@ -2611,7 +3227,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", - "rustc_version", + "rustc_version 0.4.1", "subtle 2.6.1", "zeroize", ] @@ -2635,7 +3251,7 @@ checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" dependencies = [ "byteorder", "digest 0.9.0", - "rand_core", + "rand_core 0.6.4", "subtle-ng", "zeroize", ] @@ -2735,7 +3351,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] @@ -2840,7 +3456,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "rustc_version", + "rustc_version 0.4.1", "syn 2.0.101", ] @@ -2862,6 +3478,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.101", + "unicode-xid", ] [[package]] @@ -3237,6 +3854,12 @@ version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dyn-clonable" version = "0.9.2" @@ -3297,7 +3920,7 @@ checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ "curve25519-dalek", "ed25519", - "rand_core", + "rand_core 0.6.4", "serde", "sha2 0.10.8", "subtle 2.6.1", @@ -3314,7 +3937,7 @@ dependencies = [ "ed25519", "hashbrown 0.14.5", "hex", - "rand_core", + "rand_core 0.6.4", "sha2 0.10.8", "zeroize", ] @@ -3338,7 +3961,7 @@ dependencies = [ "generic-array 0.14.7", "group", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", "serdect", "subtle 2.6.1", @@ -3348,7 +3971,7 @@ dependencies = [ [[package]] name = "emulated-integration-tests-common" version = "16.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "asset-test-utils", "bp-messages", @@ -3513,7 +4136,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3646,6 +4269,28 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec 0.7.6", + "auto_impl", + "bytes", +] + +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec 0.7.6", + "auto_impl", + "bytes", +] + [[package]] name = "fatality" version = "0.1.1" @@ -3686,7 +4331,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle 2.6.1", ] @@ -3751,7 +4396,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -3810,7 +4455,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "13.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", ] @@ -3824,6 +4469,17 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fortuples" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87630a8087e9cac4b7edfb6ee5e250ddca9112b57b6b17d8f5107375a3a8eace" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "forwarded-header-value" version = "0.1.1" @@ -3843,7 +4499,7 @@ checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" [[package]] name = "frame-benchmarking" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-support-procedural", @@ -3867,7 +4523,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "43.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "Inflector", "array-bytes", @@ -3884,7 +4540,7 @@ dependencies = [ "linked-hash-map", "log", "parity-scale-codec", - "rand", + "rand 0.8.5", "rand_pcg", "sc-block-builder", "sc-chain-spec", @@ -3914,10 +4570,24 @@ dependencies = [ "thousands", ] +[[package]] +name = "frame-benchmarking-pallet-pov" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", +] + [[package]] name = "frame-election-provider-solution-type" version = "14.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", @@ -3928,7 +4598,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -3944,7 +4614,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "aquamarine", "frame-support", @@ -3974,7 +4644,7 @@ dependencies = [ [[package]] name = "frame-metadata-hash-extension" version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "docify", @@ -3989,7 +4659,7 @@ dependencies = [ [[package]] name = "frame-support" version = "38.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "aquamarine", "array-bytes", @@ -4030,7 +4700,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "30.0.6" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "Inflector", "cfg-expr", @@ -4050,7 +4720,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "13.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 3.3.0", @@ -4062,7 +4732,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "12.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "proc-macro2", "quote", @@ -4072,7 +4742,7 @@ dependencies = [ [[package]] name = "frame-system" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cfg-if", "docify", @@ -4092,7 +4762,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -4106,7 +4776,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "parity-scale-codec", @@ -4116,7 +4786,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.44.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "parity-scale-codec", @@ -4371,8 +5041,8 @@ version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ea1015b5a70616b688dc230cfe50c8af89d972cb132d5a622814d29773b10b9" dependencies = [ - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", ] [[package]] @@ -4433,7 +5103,7 @@ dependencies = [ "parking_lot 0.12.3", "portable-atomic", "quanta", - "rand", + "rand 0.8.5", "smallvec", "spinning_top", ] @@ -4445,7 +5115,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core", + "rand_core 0.6.4", "subtle 2.6.1", ] @@ -5058,7 +5728,7 @@ dependencies = [ "http 0.2.12", "hyper 0.14.32", "log", - "rand", + "rand 0.8.5", "tokio", "url", "xmltree", @@ -5235,7 +5905,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ "hermit-abi 0.5.0", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5253,6 +5923,65 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +[[package]] +name = "ismp" +version = "0.2.2" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "anyhow", + "derive_more 1.0.0", + "displaydoc", + "hex", + "parity-scale-codec", + "primitive-types", + "scale-info", + "serde", + "serde-hex-utils", + "thiserror 2.0.12", +] + +[[package]] +name = "ismp-parachain" +version = "16.1.0" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "hex", + "hex-literal 0.4.1", + "ismp", + "log", + "pallet-ismp", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types", + "scale-info", + "serde", + "substrate-state-machine", +] + +[[package]] +name = "ismp-parachain-inherent" +version = "16.1.0" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "anyhow", + "async-trait", + "ismp", + "ismp-parachain", + "ismp-parachain-runtime-api", + "log", + "pallet-ismp-runtime-api", + "parity-scale-codec", + "polkadot-sdk", +] + +[[package]] +name = "ismp-parachain-runtime-api" +version = "16.0.0" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "polkadot-sdk", +] + [[package]] name = "itertools" version = "0.10.5" @@ -5382,7 +6111,7 @@ dependencies = [ "jsonrpsee-types", "parking_lot 0.12.3", "pin-project", - "rand", + "rand 0.8.5", "rustc-hash 2.1.1", "serde", "serde_json", @@ -5480,6 +6209,16 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + [[package]] name = "kestrel-runtime" version = "1.16.0-dev" @@ -5608,9 +6347,13 @@ dependencies = [ "frame-benchmarking", "frame-benchmarking-cli", "hex-literal 0.3.4", + "ismp-parachain-inherent", + "ismp-parachain-runtime-api", "jsonrpsee", "kilt-support", "log", + "pallet-ismp-rpc", + "pallet-ismp-runtime-api", "pallet-transaction-payment-rpc", "parity-scale-codec", "peregrine-runtime", @@ -5874,7 +6617,7 @@ dependencies = [ "parking_lot 0.12.3", "pin-project", "quick-protobuf", - "rand", + "rand 0.8.5", "rw-stream-sink", "smallvec", "thiserror 1.0.69", @@ -5932,7 +6675,7 @@ dependencies = [ "hkdf", "multihash 0.19.3", "quick-protobuf", - "rand", + "rand 0.8.5", "sha2 0.10.8", "thiserror 1.0.69", "tracing", @@ -5959,7 +6702,7 @@ dependencies = [ "log", "quick-protobuf", "quick-protobuf-codec", - "rand", + "rand 0.8.5", "sha2 0.10.8", "smallvec", "thiserror 1.0.69", @@ -5981,7 +6724,7 @@ dependencies = [ "libp2p-identity", "libp2p-swarm", "log", - "rand", + "rand 0.8.5", "smallvec", "socket2 0.5.9", "tokio", @@ -6022,7 +6765,7 @@ dependencies = [ "multihash 0.19.3", "once_cell", "quick-protobuf", - "rand", + "rand 0.8.5", "sha2 0.10.8", "snow", "static_assertions", @@ -6045,7 +6788,7 @@ dependencies = [ "libp2p-identity", "libp2p-swarm", "log", - "rand", + "rand 0.8.5", "void", ] @@ -6065,7 +6808,7 @@ dependencies = [ "log", "parking_lot 0.12.3", "quinn 0.10.2", - "rand", + "rand 0.8.5", "ring 0.16.20", "rustls 0.21.12", "socket2 0.5.9", @@ -6086,7 +6829,7 @@ dependencies = [ "libp2p-identity", "libp2p-swarm", "log", - "rand", + "rand 0.8.5", "smallvec", "void", ] @@ -6108,7 +6851,7 @@ dependencies = [ "log", "multistream-select", "once_cell", - "rand", + "rand 0.8.5", "smallvec", "tokio", "void", @@ -6266,7 +7009,7 @@ dependencies = [ "libsecp256k1-core", "libsecp256k1-gen-ecmult", "libsecp256k1-gen-genmult", - "rand", + "rand 0.8.5", "serde", "sha2 0.9.9", "typenum", @@ -6413,7 +7156,7 @@ dependencies = [ "prost 0.12.6", "prost-build 0.11.9", "quinn 0.9.4", - "rand", + "rand 0.8.5", "rcgen", "ring 0.16.20", "rustls 0.20.9", @@ -6665,7 +7408,7 @@ checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" dependencies = [ "byteorder", "keccak", - "rand_core", + "rand_core 0.6.4", "zeroize", ] @@ -6676,7 +7419,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69672161530e8aeca1d1400fbf3f1a1747ff60ea604265a4e906c2442df20532" dependencies = [ "futures", - "rand", + "rand 0.8.5", "thrift", ] @@ -6723,8 +7466,8 @@ dependencies = [ "lioness", "log", "parking_lot 0.12.3", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_distr", "subtle 2.6.1", "thiserror 1.0.69", @@ -6734,7 +7477,7 @@ dependencies = [ [[package]] name = "mmr-gadget" version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "log", @@ -6753,7 +7496,7 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -6819,6 +7562,12 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "multi-stash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685a9ac4b61f4e728e1d2c6a7844609c16527aeb5e6c865915c08e619c16410f" + [[package]] name = "multiaddr" version = "0.17.1" @@ -6967,7 +7716,7 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7bddcd3bf5144b6392de80e04c347cd7fab2508f6df16a85fc496ecd5cec39bc" dependencies = [ - "rand", + "rand 0.8.5", ] [[package]] @@ -7162,6 +7911,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "num-format" version = "0.4.4" @@ -7386,10 +8146,30 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "pallet-alliance" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "array-bytes", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-collective", + "pallet-identity", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-crypto-hashing", + "sp-io", + "sp-runtime", +] + [[package]] name = "pallet-asset-conversion" version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7407,7 +8187,7 @@ dependencies = [ [[package]] name = "pallet-asset-conversion-ops" version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7425,7 +8205,7 @@ dependencies = [ [[package]] name = "pallet-asset-conversion-tx-payment" version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -7439,7 +8219,7 @@ dependencies = [ [[package]] name = "pallet-asset-rate" version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7485,7 +8265,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7502,7 +8282,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7518,7 +8298,7 @@ dependencies = [ [[package]] name = "pallet-assets-freezer" version = "0.5.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7530,10 +8310,24 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "pallet-atomic-swap" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", +] + [[package]] name = "pallet-aura" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -7549,7 +8343,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -7564,7 +8358,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -7577,7 +8371,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7600,7 +8394,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "aquamarine", "docify", @@ -7621,7 +8415,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "39.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "frame-benchmarking", @@ -7636,7 +8430,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -7655,7 +8449,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "binary-merkle-tree", @@ -7713,7 +8507,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "37.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7727,10 +8521,29 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "pallet-bridge-grandpa" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bp-header-chain", + "bp-runtime", + "bp-test-utils", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-consensus-grandpa", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-bridge-messages" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bp-header-chain", "bp-messages", @@ -7746,10 +8559,54 @@ dependencies = [ "sp-trie", ] +[[package]] +name = "pallet-bridge-parachains" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bp-header-chain", + "bp-parachains", + "bp-polkadot-core", + "bp-runtime", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-bridge-grandpa", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "pallet-bridge-relayers" +version = "0.18.2" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bp-header-chain", + "bp-messages", + "bp-relayers", + "bp-runtime", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-transaction-payment", + "parity-scale-codec", + "scale-info", + "sp-arithmetic", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-broker" version = "0.17.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bitvec", "frame-benchmarking", @@ -7767,7 +8624,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7785,7 +8642,7 @@ dependencies = [ [[package]] name = "pallet-collator-selection" version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7795,7 +8652,7 @@ dependencies = [ "pallet-balances", "pallet-session", "parity-scale-codec", - "rand", + "rand 0.8.5", "scale-info", "sp-runtime", "sp-staking", @@ -7804,7 +8661,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7817,6 +8674,20 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "pallet-collective-content" +version = "0.16.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-runtime", +] + [[package]] name = "pallet-configuration" version = "1.16.0-dev" @@ -7836,10 +8707,100 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-contracts" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bitflags 1.3.2", + "environmental", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-balances", + "pallet-contracts-proc-macro", + "pallet-contracts-uapi", + "parity-scale-codec", + "paste", + "rand 0.8.5", + "rand_pcg", + "scale-info", + "serde", + "smallvec", + "sp-api", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "wasm-instrument", + "wasmi 0.32.3", +] + +[[package]] +name = "pallet-contracts-mock-network" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-contracts", + "pallet-contracts-proc-macro", + "pallet-contracts-uapi", + "pallet-insecure-randomness-collective-flip", + "pallet-message-queue", + "pallet-proxy", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-runtime-parachains", + "scale-info", + "sp-api", + "sp-core", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-tracing", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "xcm-simulator", +] + +[[package]] +name = "pallet-contracts-proc-macro" +version = "23.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "pallet-contracts-uapi" +version = "12.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bitflags 1.3.2", + "parity-scale-codec", + "paste", + "polkavm-derive 0.9.1", + "scale-info", +] + [[package]] name = "pallet-conviction-voting" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "assert_matches", "frame-benchmarking", @@ -7852,10 +8813,28 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "pallet-core-fellowship" +version = "22.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-ranked-collective", + "parity-scale-codec", + "scale-info", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", +] + [[package]] name = "pallet-delegated-staking" -version = "5.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "5.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -7870,7 +8849,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -7904,8 +8883,23 @@ dependencies = [ ] [[package]] -name = "pallet-did-lookup" -version = "1.16.0-dev" +name = "pallet-dev-mode" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", +] + +[[package]] +name = "pallet-did-lookup" +version = "1.16.0-dev" dependencies = [ "base58", "blake2 0.10.6", @@ -7971,7 +8965,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7980,7 +8974,7 @@ dependencies = [ "log", "pallet-election-provider-support-benchmarking", "parity-scale-codec", - "rand", + "rand 0.8.5", "scale-info", "sp-arithmetic", "sp-core", @@ -7993,7 +8987,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8006,7 +9000,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8024,7 +9018,7 @@ dependencies = [ [[package]] name = "pallet-fast-unstake" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "frame-benchmarking", @@ -8039,10 +9033,28 @@ dependencies = [ "sp-staking", ] +[[package]] +name = "pallet-glutton" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "blake2 0.10.6", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-inherents", + "sp-io", + "sp-runtime", +] + [[package]] name = "pallet-grandpa" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8061,10 +9073,24 @@ dependencies = [ "sp-staking", ] +[[package]] +name = "pallet-hyperbridge" +version = "16.0.0" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "anyhow", + "ismp", + "pallet-ismp", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types", + "scale-info", +] + [[package]] name = "pallet-identity" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "enumflags2", "frame-benchmarking", @@ -8080,7 +9106,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8099,7 +9125,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8128,10 +9154,86 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-insecure-randomness-collective-flip" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "safe-mix", + "scale-info", + "sp-runtime", +] + +[[package]] +name = "pallet-ismp" +version = "16.1.0" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "anyhow", + "fortuples", + "ismp", + "log", + "parity-scale-codec", + "polkadot-sdk", + "scale-info", + "serde", + "sp-io", +] + +[[package]] +name = "pallet-ismp-rpc" +version = "16.0.0" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "anyhow", + "hash-db", + "hex", + "hex-literal 0.4.1", + "ismp", + "jsonrpsee", + "pallet-ismp", + "pallet-ismp-runtime-api", + "parity-scale-codec", + "polkadot-sdk", + "serde", + "serde_json", + "tower", + "trie-db", +] + +[[package]] +name = "pallet-ismp-runtime-api" +version = "16.0.0" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "ismp", + "pallet-ismp", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types", + "serde", +] + +[[package]] +name = "pallet-lottery" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-runtime", +] + [[package]] name = "pallet-membership" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8147,7 +9249,7 @@ dependencies = [ [[package]] name = "pallet-message-queue" version = "41.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "environmental", "frame-benchmarking", @@ -8195,10 +9297,46 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-migrations" +version = "8.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "pallet-mixnet" +version = "0.14.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-application-crypto", + "sp-arithmetic", + "sp-io", + "sp-mixnet", + "sp-runtime", +] + [[package]] name = "pallet-mmr" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8215,7 +9353,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8230,7 +9368,7 @@ dependencies = [ [[package]] name = "pallet-nft-fractionalization" version = "21.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8246,7 +9384,7 @@ dependencies = [ [[package]] name = "pallet-nfts" version = "32.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "enumflags2", "frame-benchmarking", @@ -8263,7 +9401,7 @@ dependencies = [ [[package]] name = "pallet-nfts-runtime-api" version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "pallet-nfts", "parity-scale-codec", @@ -8273,7 +9411,7 @@ dependencies = [ [[package]] name = "pallet-nis" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8285,10 +9423,25 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "pallet-node-authorization" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", +] + [[package]] name = "pallet-nomination-pools" -version = "35.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "35.0.3" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -8306,7 +9459,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8326,7 +9479,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "33.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "pallet-nomination-pools", "parity-scale-codec", @@ -8336,7 +9489,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -8352,7 +9505,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8372,10 +9525,27 @@ dependencies = [ "sp-staking", ] +[[package]] +name = "pallet-paged-list" +version = "0.16.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-metadata-ir", + "sp-runtime", +] + [[package]] name = "pallet-parameters" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "frame-benchmarking", @@ -8404,7 +9574,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8420,7 +9590,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8434,7 +9604,7 @@ dependencies = [ [[package]] name = "pallet-ranked-collective" version = "38.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8452,7 +9622,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8466,7 +9636,7 @@ dependencies = [ [[package]] name = "pallet-referenda" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "assert_matches", "frame-benchmarking", @@ -8501,10 +9671,141 @@ dependencies = [ "sp-trie", ] +[[package]] +name = "pallet-remark" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", +] + +[[package]] +name = "pallet-revive" +version = "0.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bitflags 1.3.2", + "environmental", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-balances", + "pallet-revive-fixtures", + "pallet-revive-proc-macro", + "pallet-revive-uapi", + "parity-scale-codec", + "paste", + "polkavm 0.10.0", + "scale-info", + "serde", + "sp-api", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", +] + +[[package]] +name = "pallet-revive-fixtures" +version = "0.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "anyhow", + "frame-system", + "parity-wasm", + "polkavm-linker 0.10.0", + "sp-runtime", + "tempfile", + "toml 0.8.21", +] + +[[package]] +name = "pallet-revive-mock-network" +version = "0.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "pallet-assets", + "pallet-balances", + "pallet-message-queue", + "pallet-proxy", + "pallet-revive", + "pallet-revive-proc-macro", + "pallet-revive-uapi", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "parity-scale-codec", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-runtime-parachains", + "scale-info", + "sp-api", + "sp-core", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-tracing", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "xcm-simulator", +] + +[[package]] +name = "pallet-revive-proc-macro" +version = "0.1.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "pallet-revive-uapi" +version = "0.1.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bitflags 1.3.2", + "parity-scale-codec", + "paste", + "polkavm-derive 0.10.0", + "scale-info", +] + +[[package]] +name = "pallet-root-offences" +version = "35.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "pallet-session", + "pallet-staking", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "sp-staking", +] + [[package]] name = "pallet-root-testing" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -8515,10 +9816,46 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "pallet-safe-mode" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-proxy", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-arithmetic", + "sp-runtime", +] + +[[package]] +name = "pallet-salary" +version = "23.2.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-ranked-collective", + "parity-scale-codec", + "scale-info", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", +] + [[package]] name = "pallet-scheduler" version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "frame-benchmarking", @@ -8532,10 +9869,23 @@ dependencies = [ "sp-weights", ] +[[package]] +name = "pallet-scored-pool" +version = "38.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-io", + "sp-runtime", +] + [[package]] name = "pallet-session" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -8556,7 +9906,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8564,22 +9914,34 @@ dependencies = [ "pallet-session", "pallet-staking", "parity-scale-codec", - "rand", + "rand 0.8.5", "sp-runtime", "sp-session", ] +[[package]] +name = "pallet-skip-feeless-payment" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-runtime", +] + [[package]] name = "pallet-society" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", - "rand_chacha", + "rand_chacha 0.3.1", "scale-info", "sp-arithmetic", "sp-io", @@ -8588,8 +9950,8 @@ dependencies = [ [[package]] name = "pallet-staking" -version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "38.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8599,7 +9961,7 @@ dependencies = [ "pallet-authorship", "pallet-session", "parity-scale-codec", - "rand_chacha", + "rand_chacha 0.3.1", "scale-info", "serde", "sp-application-crypto", @@ -8611,7 +9973,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "22.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "log", "sp-arithmetic", @@ -8620,7 +9982,7 @@ dependencies = [ [[package]] name = "pallet-staking-runtime-api" version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "sp-api", @@ -8630,7 +9992,7 @@ dependencies = [ [[package]] name = "pallet-state-trie-migration" version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8643,10 +10005,27 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "pallet-statement" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-core", + "sp-io", + "sp-runtime", + "sp-statement-store", +] + [[package]] name = "pallet-sudo" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "frame-benchmarking", @@ -8661,7 +10040,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "frame-benchmarking", @@ -8680,7 +10059,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8695,10 +10074,30 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "pallet-token-gateway" +version = "16.2.0" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "alloy-primitives 0.7.7", + "alloy-sol-macro 0.7.7", + "alloy-sol-types 0.7.7", + "anyhow", + "ismp", + "log", + "pallet-hyperbridge", + "pallet-ismp", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types", + "scale-info", + "token-gateway-primitives", +] + [[package]] name = "pallet-transaction-payment" version = "38.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -8713,7 +10112,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "41.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -8729,19 +10128,39 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", "sp-api", "sp-runtime", - "sp-weights", + "sp-weights", +] + +[[package]] +name = "pallet-transaction-storage" +version = "37.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "array-bytes", + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-transaction-storage-proof", ] [[package]] name = "pallet-treasury" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "frame-benchmarking", @@ -8756,10 +10175,27 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "pallet-tx-pause" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "docify", + "frame-benchmarking", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-proxy", + "pallet-utility", + "parity-scale-codec", + "scale-info", + "sp-runtime", +] + [[package]] name = "pallet-uniques" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8773,7 +10209,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8788,7 +10224,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8821,7 +10257,7 @@ dependencies = [ [[package]] name = "pallet-whitelist" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", @@ -8834,8 +10270,8 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "17.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "17.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bounded-collections", "frame-benchmarking", @@ -8858,13 +10294,12 @@ dependencies = [ [[package]] name = "pallet-xcm-benchmarks" -version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "17.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", - "log", "parity-scale-codec", "scale-info", "sp-io", @@ -8877,7 +10312,7 @@ dependencies = [ [[package]] name = "pallet-xcm-bridge-hub" version = "0.13.3" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bp-messages", "bp-runtime", @@ -8899,7 +10334,7 @@ dependencies = [ [[package]] name = "pallet-xcm-bridge-hub-router" version = "0.15.3" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bp-xcm-bridge-hub-router", "frame-benchmarking", @@ -8944,7 +10379,7 @@ dependencies = [ [[package]] name = "parachains-common" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-primitives-core", "cumulus-primitives-utility", @@ -8973,8 +10408,8 @@ dependencies = [ [[package]] name = "parachains-runtimes-test-utils" -version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "19.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-pallet-parachain-system", "cumulus-pallet-xcmp-queue", @@ -9010,8 +10445,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" dependencies = [ "bitcoin_hashes", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "serde", "unicode-normalization", ] @@ -9037,7 +10472,7 @@ dependencies = [ "lz4", "memmap2 0.5.10", "parking_lot 0.12.3", - "rand", + "rand 0.8.5", "siphasher", "snap", "winapi", @@ -9174,7 +10609,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle 2.6.1", ] @@ -9219,6 +10654,7 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" name = "peregrine-runtime" version = "1.16.0-dev" dependencies = [ + "anyhow", "attestation", "cfg-if", "ctype", @@ -9243,6 +10679,9 @@ dependencies = [ "frame-system-rpc-runtime-api", "frame-try-runtime", "hex-literal 0.3.4", + "ismp", + "ismp-parachain", + "ismp-parachain-runtime-api", "kilt-runtime-api-did", "kilt-runtime-api-dip-provider", "kilt-runtime-api-public-credentials", @@ -9262,8 +10701,11 @@ dependencies = [ "pallet-deposit-storage", "pallet-did-lookup", "pallet-dip-provider", + "pallet-hyperbridge", "pallet-indices", "pallet-inflation", + "pallet-ismp", + "pallet-ismp-runtime-api", "pallet-membership", "pallet-message-queue", "pallet-migration", @@ -9275,6 +10717,7 @@ dependencies = [ "pallet-sudo", "pallet-timestamp", "pallet-tips", + "pallet-token-gateway", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "pallet-treasury", @@ -9430,7 +10873,7 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polkadot-approval-distribution" version = "18.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bitvec", "futures", @@ -9443,14 +10886,14 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", - "rand", + "rand 0.8.5", "tracing-gum", ] [[package]] name = "polkadot-availability-bitfield-distribution" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "always-assert", "futures", @@ -9459,14 +10902,14 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", - "rand", + "rand 0.8.5", "tracing-gum", ] [[package]] name = "polkadot-availability-distribution" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "derive_more 0.99.20", "fatality", @@ -9478,7 +10921,7 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", - "rand", + "rand 0.8.5", "sc-network", "schnellru", "sp-core", @@ -9490,7 +10933,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "fatality", @@ -9502,7 +10945,7 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", - "rand", + "rand 0.8.5", "sc-network", "schnellru", "thiserror 1.0.69", @@ -9523,7 +10966,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cfg-if", "clap", @@ -9551,7 +10994,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bitvec", "fatality", @@ -9574,7 +11017,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "15.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "scale-info", @@ -9585,7 +11028,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "derive_more 0.99.20", "fatality", @@ -9610,7 +11053,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -9624,7 +11067,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "futures-timer", @@ -9632,8 +11075,8 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-node-subsystem-util", "polkadot-primitives", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "sc-network", "sc-network-common", "sp-application-crypto", @@ -9646,7 +11089,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "always-assert", "async-trait", @@ -9669,7 +11112,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "parity-scale-codec", @@ -9687,7 +11130,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "18.3.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bitvec", "derive_more 0.99.20", @@ -9703,9 +11146,9 @@ dependencies = [ "polkadot-node-subsystem-util", "polkadot-overseer", "polkadot-primitives", - "rand", - "rand_chacha", - "rand_core", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_core 0.6.4", "sc-keystore", "schnellru", "schnorrkel 0.11.4", @@ -9720,7 +11163,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bitvec", "futures", @@ -9742,7 +11185,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bitvec", "fatality", @@ -9762,7 +11205,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "polkadot-node-subsystem", @@ -9777,7 +11220,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "futures", @@ -9799,7 +11242,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "polkadot-node-metrics", @@ -9813,7 +11256,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "futures-timer", @@ -9830,7 +11273,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "fatality", "futures", @@ -9849,7 +11292,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "futures", @@ -9866,7 +11309,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-prospective-parachains" version = "17.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "fatality", "futures", @@ -9880,7 +11323,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bitvec", "fatality", @@ -9898,7 +11341,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "always-assert", "array-bytes", @@ -9915,7 +11358,7 @@ dependencies = [ "polkadot-node-subsystem", "polkadot-parachain-primitives", "polkadot-primitives", - "rand", + "rand 0.8.5", "slotmap", "sp-core", "tempfile", @@ -9927,7 +11370,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-checker" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "polkadot-node-primitives", @@ -9943,7 +11386,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf-common" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cpu-time", "futures", @@ -9969,7 +11412,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "polkadot-node-metrics", @@ -9984,7 +11427,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "lazy_static", "log", @@ -10003,7 +11446,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bs58 0.5.1", "futures", @@ -10022,7 +11465,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "18.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-channel 1.9.0", "async-trait", @@ -10035,7 +11478,7 @@ dependencies = [ "polkadot-node-jaeger", "polkadot-node-primitives", "polkadot-primitives", - "rand", + "rand 0.8.5", "sc-authority-discovery", "sc-network", "sc-network-types", @@ -10048,7 +11491,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bitvec", "bounded-vec", @@ -10074,7 +11517,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -10084,7 +11527,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "bitvec", @@ -10114,7 +11557,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "derive_more 0.99.20", @@ -10137,7 +11580,7 @@ dependencies = [ "polkadot-overseer", "polkadot-primitives", "prioritized-metered-channel", - "rand", + "rand 0.8.5", "sc-client-api", "schnellru", "sp-application-crypto", @@ -10150,7 +11593,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "futures", @@ -10169,10 +11612,79 @@ dependencies = [ "tracing-gum", ] +[[package]] +name = "polkadot-parachain-lib" +version = "0.3.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "async-trait", + "clap", + "color-print", + "cumulus-client-cli", + "cumulus-client-collator", + "cumulus-client-consensus-aura", + "cumulus-client-consensus-common", + "cumulus-client-consensus-proposer", + "cumulus-client-consensus-relay-chain", + "cumulus-client-parachain-inherent", + "cumulus-client-service", + "cumulus-primitives-aura", + "cumulus-primitives-core", + "cumulus-relay-chain-interface", + "docify", + "frame-benchmarking", + "frame-benchmarking-cli", + "frame-support", + "frame-system-rpc-runtime-api", + "frame-try-runtime", + "futures", + "jsonrpsee", + "log", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc", + "pallet-transaction-payment-rpc-runtime-api", + "parachains-common", + "parity-scale-codec", + "polkadot-cli", + "polkadot-primitives", + "sc-basic-authorship", + "sc-chain-spec", + "sc-cli", + "sc-client-api", + "sc-client-db", + "sc-consensus", + "sc-executor", + "sc-network", + "sc-rpc", + "sc-service", + "sc-sysinfo", + "sc-telemetry", + "sc-tracing", + "sc-transaction-pool", + "serde", + "serde_json", + "sp-api", + "sp-block-builder", + "sp-consensus-aura", + "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-keystore", + "sp-runtime", + "sp-session", + "sp-timestamp", + "sp-transaction-pool", + "sp-version", + "sp-weights", + "substrate-frame-rpc-system", + "substrate-prometheus-endpoint", + "substrate-state-trie-migration-rpc", +] + [[package]] name = "polkadot-parachain-primitives" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bounded-collections", "derive_more 0.99.20", @@ -10188,7 +11700,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bitvec", "hex-literal 0.4.1", @@ -10214,7 +11726,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "jsonrpsee", "mmr-rpc", @@ -10248,8 +11760,8 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" -version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "17.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bitvec", "frame-benchmarking", @@ -10274,93 +11786,368 @@ dependencies = [ "pallet-transaction-payment", "pallet-treasury", "pallet-vesting", - "parity-scale-codec", + "parity-scale-codec", + "polkadot-primitives", + "polkadot-runtime-parachains", + "rustc-hex", + "scale-info", + "serde", + "serde_derive", + "slot-range-helper", + "sp-api", + "sp-core", + "sp-inherents", + "sp-io", + "sp-npos-elections", + "sp-runtime", + "sp-session", + "sp-staking", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", + "static_assertions", +] + +[[package]] +name = "polkadot-runtime-metrics" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bs58 0.5.1", + "frame-benchmarking", + "parity-scale-codec", + "polkadot-primitives", + "sp-tracing", +] + +[[package]] +name = "polkadot-runtime-parachains" +version = "17.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "bitflags 1.3.2", + "bitvec", + "derive_more 0.99.20", + "frame-benchmarking", + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-balances", + "pallet-broker", + "pallet-message-queue", + "pallet-mmr", + "pallet-session", + "pallet-staking", + "pallet-timestamp", + "pallet-vesting", + "parity-scale-codec", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-runtime-metrics", + "rand 0.8.5", + "rand_chacha 0.3.1", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-session", + "sp-staking", + "sp-std", + "staging-xcm", + "staging-xcm-executor", + "static_assertions", +] + +[[package]] +name = "polkadot-sdk" +version = "0.9.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "asset-test-utils", + "assets-common", + "binary-merkle-tree", + "bp-header-chain", + "bp-messages", + "bp-parachains", + "bp-polkadot", + "bp-polkadot-core", + "bp-relayers", + "bp-runtime", + "bp-test-utils", + "bp-xcm-bridge-hub", + "bp-xcm-bridge-hub-router", + "bridge-hub-common", + "bridge-hub-test-utils", + "bridge-runtime-common", + "cumulus-pallet-aura-ext", + "cumulus-pallet-dmp-queue", + "cumulus-pallet-parachain-system", + "cumulus-pallet-parachain-system-proc-macro", + "cumulus-pallet-session-benchmarking", + "cumulus-pallet-solo-to-para", + "cumulus-pallet-xcm", + "cumulus-pallet-xcmp-queue", + "cumulus-ping", + "cumulus-primitives-aura", + "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", + "cumulus-primitives-proof-size-hostfunction", + "cumulus-primitives-storage-weight-reclaim", + "cumulus-primitives-timestamp", + "cumulus-primitives-utility", + "cumulus-relay-chain-interface", + "cumulus-test-relay-sproof-builder", + "frame-benchmarking", + "frame-benchmarking-cli", + "frame-benchmarking-pallet-pov", + "frame-election-provider-support", + "frame-executive", + "frame-metadata-hash-extension", + "frame-support", + "frame-support-procedural", + "frame-system", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", + "pallet-alliance", + "pallet-asset-conversion", + "pallet-asset-conversion-ops", + "pallet-asset-conversion-tx-payment", + "pallet-asset-rate", + "pallet-asset-tx-payment", + "pallet-assets", + "pallet-assets-freezer", + "pallet-atomic-swap", + "pallet-aura", + "pallet-authority-discovery", + "pallet-authorship", + "pallet-babe", + "pallet-bags-list", + "pallet-balances", + "pallet-beefy", + "pallet-beefy-mmr", + "pallet-bounties", + "pallet-bridge-grandpa", + "pallet-bridge-messages", + "pallet-bridge-parachains", + "pallet-bridge-relayers", + "pallet-broker", + "pallet-child-bounties", + "pallet-collator-selection", + "pallet-collective", + "pallet-collective-content", + "pallet-contracts", + "pallet-contracts-mock-network", + "pallet-conviction-voting", + "pallet-core-fellowship", + "pallet-delegated-staking", + "pallet-democracy", + "pallet-dev-mode", + "pallet-election-provider-multi-phase", + "pallet-election-provider-support-benchmarking", + "pallet-elections-phragmen", + "pallet-fast-unstake", + "pallet-glutton", + "pallet-grandpa", + "pallet-identity", + "pallet-im-online", + "pallet-indices", + "pallet-insecure-randomness-collective-flip", + "pallet-lottery", + "pallet-membership", + "pallet-message-queue", + "pallet-migrations", + "pallet-mixnet", + "pallet-mmr", + "pallet-multisig", + "pallet-nft-fractionalization", + "pallet-nfts", + "pallet-nfts-runtime-api", + "pallet-nis", + "pallet-node-authorization", + "pallet-nomination-pools", + "pallet-nomination-pools-benchmarking", + "pallet-nomination-pools-runtime-api", + "pallet-offences", + "pallet-offences-benchmarking", + "pallet-paged-list", + "pallet-parameters", + "pallet-preimage", + "pallet-proxy", + "pallet-ranked-collective", + "pallet-recovery", + "pallet-referenda", + "pallet-remark", + "pallet-revive", + "pallet-revive-fixtures", + "pallet-revive-mock-network", + "pallet-root-offences", + "pallet-root-testing", + "pallet-safe-mode", + "pallet-salary", + "pallet-scheduler", + "pallet-scored-pool", + "pallet-session", + "pallet-session-benchmarking", + "pallet-skip-feeless-payment", + "pallet-society", + "pallet-staking", + "pallet-staking-reward-fn", + "pallet-staking-runtime-api", + "pallet-state-trie-migration", + "pallet-statement", + "pallet-sudo", + "pallet-timestamp", + "pallet-tips", + "pallet-transaction-payment", + "pallet-transaction-payment-rpc-runtime-api", + "pallet-transaction-storage", + "pallet-treasury", + "pallet-tx-pause", + "pallet-uniques", + "pallet-utility", + "pallet-vesting", + "pallet-whitelist", + "pallet-xcm", + "pallet-xcm-benchmarks", + "pallet-xcm-bridge-hub", + "pallet-xcm-bridge-hub-router", + "parachains-common", + "parachains-runtimes-test-utils", + "polkadot-cli", + "polkadot-core-primitives", + "polkadot-node-metrics", + "polkadot-parachain-lib", + "polkadot-parachain-primitives", "polkadot-primitives", + "polkadot-runtime-common", + "polkadot-runtime-metrics", "polkadot-runtime-parachains", - "rustc-hex", - "scale-info", - "serde", - "serde_derive", + "polkadot-sdk-frame", + "polkadot-service", + "sc-client-api", + "sc-client-db", + "sc-executor", + "sc-rpc", + "sc-service", "slot-range-helper", + "snowbridge-beacon-primitives", + "snowbridge-core", + "snowbridge-ethereum", + "snowbridge-outbound-queue-merkle-tree", + "snowbridge-outbound-queue-runtime-api", + "snowbridge-pallet-ethereum-client", + "snowbridge-pallet-ethereum-client-fixtures", + "snowbridge-pallet-inbound-queue", + "snowbridge-pallet-inbound-queue-fixtures", + "snowbridge-pallet-outbound-queue", + "snowbridge-pallet-system", + "snowbridge-router-primitives", + "snowbridge-runtime-common", + "snowbridge-runtime-test-common", + "snowbridge-system-runtime-api", "sp-api", + "sp-api-proc-macro", + "sp-application-crypto", + "sp-arithmetic", + "sp-authority-discovery", + "sp-block-builder", + "sp-blockchain", + "sp-consensus-aura", + "sp-consensus-babe", + "sp-consensus-beefy", + "sp-consensus-grandpa", + "sp-consensus-pow", + "sp-consensus-slots", "sp-core", + "sp-core-hashing", + "sp-crypto-ec-utils", + "sp-crypto-hashing", + "sp-debug-derive", + "sp-externalities", + "sp-genesis-builder", "sp-inherents", "sp-io", + "sp-keyring", + "sp-keystore", + "sp-metadata-ir", + "sp-mixnet", + "sp-mmr-primitives", "sp-npos-elections", + "sp-offchain", "sp-runtime", + "sp-runtime-interface", "sp-session", "sp-staking", + "sp-state-machine", + "sp-statement-store", + "sp-std", + "sp-storage", + "sp-timestamp", + "sp-tracing", + "sp-transaction-pool", + "sp-transaction-storage-proof", + "sp-trie", + "sp-version", + "sp-wasm-interface", + "sp-weights", + "staging-node-inspect", + "staging-parachain-info", "staging-xcm", "staging-xcm-builder", "staging-xcm-executor", - "static_assertions", -] - -[[package]] -name = "polkadot-runtime-metrics" -version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" -dependencies = [ - "bs58 0.5.1", - "frame-benchmarking", - "parity-scale-codec", - "polkadot-primitives", - "sp-tracing", + "substrate-bip39", + "testnet-parachains-constants", + "xcm-runtime-apis", ] [[package]] -name = "polkadot-runtime-parachains" -version = "17.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +name = "polkadot-sdk-frame" +version = "0.7.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ - "bitflags 1.3.2", - "bitvec", - "derive_more 0.99.20", + "docify", "frame-benchmarking", + "frame-executive", "frame-support", "frame-system", - "impl-trait-for-tuples", + "frame-system-benchmarking", + "frame-system-rpc-runtime-api", + "frame-try-runtime", "log", - "pallet-authority-discovery", - "pallet-authorship", - "pallet-babe", - "pallet-balances", - "pallet-broker", - "pallet-message-queue", - "pallet-mmr", - "pallet-session", - "pallet-staking", - "pallet-timestamp", - "pallet-vesting", "parity-scale-codec", - "polkadot-core-primitives", - "polkadot-parachain-primitives", - "polkadot-primitives", - "polkadot-runtime-metrics", - "rand", - "rand_chacha", "scale-info", - "serde", "sp-api", - "sp-application-crypto", "sp-arithmetic", + "sp-block-builder", + "sp-consensus-aura", + "sp-consensus-grandpa", "sp-core", "sp-inherents", "sp-io", - "sp-keystore", + "sp-offchain", "sp-runtime", "sp-session", - "sp-staking", - "sp-std", - "staging-xcm", - "staging-xcm-executor", - "static_assertions", + "sp-storage", + "sp-transaction-pool", + "sp-version", ] [[package]] name = "polkadot-service" -version = "19.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "19.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "frame-benchmarking", @@ -10467,7 +12254,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "arrayvec 0.7.6", "bitvec", @@ -10490,7 +12277,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -10506,9 +12293,22 @@ checksum = "8a3693e5efdb2bf74e449cd25fd777a28bd7ed87e41f5d5da75eb31b4de48b94" dependencies = [ "libc", "log", - "polkavm-assembler", - "polkavm-common", - "polkavm-linux-raw", + "polkavm-assembler 0.9.0", + "polkavm-common 0.9.0", + "polkavm-linux-raw 0.9.0", +] + +[[package]] +name = "polkavm" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7ec0c5935f2eff23cfc4653002f4f8d12b37f87a720e0631282d188c32089d6" +dependencies = [ + "libc", + "log", + "polkavm-assembler 0.10.0", + "polkavm-common 0.10.0", + "polkavm-linux-raw 0.10.0", ] [[package]] @@ -10520,6 +12320,15 @@ dependencies = [ "log", ] +[[package]] +name = "polkavm-assembler" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e4fd5a43100bf1afe9727b8130d01f966f5cfc9144d5604b21e795c2bcd80e" +dependencies = [ + "log", +] + [[package]] name = "polkavm-common" version = "0.9.0" @@ -10529,13 +12338,32 @@ dependencies = [ "log", ] +[[package]] +name = "polkavm-common" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0097b48bc0bedf9f3f537ce8f37e8f1202d8d83f9b621bdb21ff2c59b9097c50" +dependencies = [ + "log", + "polkavm-assembler 0.10.0", +] + [[package]] name = "polkavm-derive" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" dependencies = [ - "polkavm-derive-impl-macro", + "polkavm-derive-impl-macro 0.9.0", +] + +[[package]] +name = "polkavm-derive" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dcc701385c08c31bdb0569f0c51a290c580d892fa77f1dd88a7352a62679ecf" +dependencies = [ + "polkavm-derive-impl-macro 0.10.0", ] [[package]] @@ -10544,7 +12372,19 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" dependencies = [ - "polkavm-common", + "polkavm-common 0.9.0", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "polkavm-derive-impl" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7855353a5a783dd5d09e3b915474bddf66575f5a3cf45dec8d1c5e051ba320dc" +dependencies = [ + "polkavm-common 0.10.0", "proc-macro2", "quote", "syn 2.0.101", @@ -10556,7 +12396,17 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" dependencies = [ - "polkavm-derive-impl", + "polkavm-derive-impl 0.9.0", + "syn 2.0.101", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9324fe036de37c17829af233b46ef6b5562d4a0c09bb7fdb9f8378856dee30cf" +dependencies = [ + "polkavm-derive-impl 0.10.0", "syn 2.0.101", ] @@ -10570,7 +12420,22 @@ dependencies = [ "hashbrown 0.14.5", "log", "object 0.32.2", - "polkavm-common", + "polkavm-common 0.9.0", + "regalloc2 0.9.3", + "rustc-demangle", +] + +[[package]] +name = "polkavm-linker" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d704edfe7bdcc876784f19436d53d515b65eb07bc9a0fae77085d552c2dbbb5" +dependencies = [ + "gimli 0.28.1", + "hashbrown 0.14.5", + "log", + "object 0.36.7", + "polkavm-common 0.10.0", "regalloc2 0.9.3", "rustc-demangle", ] @@ -10581,6 +12446,12 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26e85d3456948e650dff0cfc85603915847faf893ed1e66b020bb82ef4557120" +[[package]] +name = "polkavm-linux-raw" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26e45fa59c7e1bb12ef5289080601e9ec9b31435f6e32800a5c90c132453d126" + [[package]] name = "polling" version = "2.8.0" @@ -10858,6 +12729,26 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "proptest" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.9.0", + "lazy_static", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_xorshift", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + [[package]] name = "prost" version = "0.11.9" @@ -10907,8 +12798,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" dependencies = [ "bytes", - "heck 0.4.1", - "itertools 0.11.0", + "heck 0.5.0", + "itertools 0.12.1", "log", "multimap", "once_cell", @@ -11010,6 +12901,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + [[package]] name = "quick-protobuf" version = "0.8.1" @@ -11075,7 +12972,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94b0b33c13a79f669c85defaf4c275dc86a0c0372807d0ca3d78e0bb87274863" dependencies = [ "bytes", - "rand", + "rand 0.8.5", "ring 0.16.20", "rustc-hash 1.1.0", "rustls 0.20.9", @@ -11093,7 +12990,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" dependencies = [ "bytes", - "rand", + "rand 0.8.5", "ring 0.16.20", "rustc-hash 1.1.0", "rustls 0.21.12", @@ -11157,8 +13054,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -11168,7 +13075,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -11177,7 +13094,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.2", ] [[package]] @@ -11187,7 +13113,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -11196,7 +13122,16 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" dependencies = [ - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", ] [[package]] @@ -11447,7 +13382,7 @@ dependencies = [ [[package]] name = "rococo-emulated-chain" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "emulated-integration-tests-common", "parachains-common", @@ -11464,7 +13399,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "18.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "binary-merkle-tree", "bitvec", @@ -11564,7 +13499,7 @@ dependencies = [ [[package]] name = "rococo-runtime-constants" version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "polkadot-primitives", @@ -11622,6 +13557,39 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "ruint" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78a46eb779843b2c4f21fac5773e25d6d5b7c8f0922876c91541790d2ca27eef" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp 0.3.1", + "fastrlp 0.4.0", + "num-bigint", + "num-integer", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand 0.8.5", + "rand 0.9.1", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + [[package]] name = "runtime-common" version = "1.16.0-dev" @@ -11701,6 +13669,24 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + [[package]] name = "rustc_version" version = "0.4.1" @@ -11757,7 +13743,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -11770,7 +13756,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.9.4", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -11868,7 +13854,7 @@ dependencies = [ "security-framework 3.2.0", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -11904,6 +13890,18 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + [[package]] name = "ruzstd" version = "0.4.0" @@ -11932,6 +13930,15 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +[[package]] +name = "safe-mix" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d3d055a2582e6b00ed7a31c1524040aa391092bf636328350813f3a0605215c" +dependencies = [ + "rustc_version 0.2.3", +] + [[package]] name = "safe_arch" version = "0.7.4" @@ -11953,7 +13960,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "log", "sp-core", @@ -11964,7 +13971,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.45.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "futures", @@ -11977,7 +13984,7 @@ dependencies = [ "parity-scale-codec", "prost 0.12.6", "prost-build 0.12.6", - "rand", + "rand 0.8.5", "sc-client-api", "sc-network", "sc-network-types", @@ -11994,7 +14001,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.45.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "futures-timer", @@ -12016,7 +14023,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.42.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "sp-api", @@ -12031,7 +14038,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "docify", @@ -12058,7 +14065,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "12.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", @@ -12069,7 +14076,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.47.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "chrono", @@ -12082,7 +14089,7 @@ dependencies = [ "names", "parity-bip39", "parity-scale-codec", - "rand", + "rand 0.8.5", "regex", "rpassword", "sc-client-api", @@ -12110,7 +14117,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "fnv", "futures", @@ -12137,7 +14144,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.44.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "hash-db", "kvdb", @@ -12163,7 +14170,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.44.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "futures", @@ -12187,7 +14194,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.45.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "futures", @@ -12216,7 +14223,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.45.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "fork-tree", @@ -12252,7 +14259,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.45.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "jsonrpsee", @@ -12274,7 +14281,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy" version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "async-channel 1.9.0", @@ -12310,7 +14317,7 @@ dependencies = [ [[package]] name = "sc-consensus-beefy-rpc" version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "jsonrpsee", @@ -12330,7 +14337,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.44.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "fork-tree", "parity-scale-codec", @@ -12343,7 +14350,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa" version = "0.30.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "ahash 0.8.11", "array-bytes", @@ -12356,7 +14363,7 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot 0.12.3", - "rand", + "rand 0.8.5", "sc-block-builder", "sc-chain-spec", "sc-client-api", @@ -12387,7 +14394,7 @@ dependencies = [ [[package]] name = "sc-consensus-grandpa-rpc" version = "0.30.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "finality-grandpa", "futures", @@ -12407,7 +14414,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.44.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "futures", @@ -12430,7 +14437,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.40.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", @@ -12453,9 +14460,9 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ - "polkavm", + "polkavm 0.9.3", "sc-allocator", "sp-maybe-compressed-blob", "sp-wasm-interface", @@ -12466,10 +14473,10 @@ dependencies = [ [[package]] name = "sc-executor-polkavm" version = "0.32.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "log", - "polkavm", + "polkavm 0.9.3", "sc-executor-common", "sp-wasm-interface", ] @@ -12477,7 +14484,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "anyhow", "cfg-if", @@ -12495,7 +14502,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.44.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "console", "futures", @@ -12512,7 +14519,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "33.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "parking_lot 0.12.3", @@ -12526,7 +14533,7 @@ dependencies = [ [[package]] name = "sc-mixnet" version = "0.15.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "arrayvec 0.7.6", @@ -12555,7 +14562,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.45.6" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "async-channel 1.9.0", @@ -12580,7 +14587,7 @@ dependencies = [ "pin-project", "prost 0.12.6", "prost-build 0.12.6", - "rand", + "rand 0.8.5", "sc-client-api", "sc-network-common", "sc-network-types", @@ -12606,7 +14613,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.44.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "bitflags 1.3.2", @@ -12624,7 +14631,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.45.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "ahash 0.8.11", "futures", @@ -12643,7 +14650,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.44.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "async-channel 1.9.0", @@ -12664,7 +14671,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.44.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "async-channel 1.9.0", @@ -12701,7 +14708,7 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.44.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "futures", @@ -12720,7 +14727,7 @@ dependencies = [ [[package]] name = "sc-network-types" version = "0.12.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bs58 0.5.1", "ed25519-dalek", @@ -12729,7 +14736,7 @@ dependencies = [ "log", "multiaddr 0.18.2", "multihash 0.19.3", - "rand", + "rand 0.8.5", "thiserror 1.0.69", "zeroize", ] @@ -12737,7 +14744,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "bytes", @@ -12751,7 +14758,7 @@ dependencies = [ "once_cell", "parity-scale-codec", "parking_lot 0.12.3", - "rand", + "rand 0.8.5", "sc-client-api", "sc-network", "sc-network-common", @@ -12771,7 +14778,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.18.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -12780,7 +14787,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "40.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "jsonrpsee", @@ -12812,7 +14819,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.44.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -12832,7 +14839,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "17.1.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "dyn-clone", "forwarded-header-value", @@ -12856,7 +14863,7 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.45.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "futures", @@ -12866,7 +14873,7 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot 0.12.3", - "rand", + "rand 0.8.5", "sc-chain-spec", "sc-client-api", "sc-rpc", @@ -12888,7 +14895,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.46.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "directories", @@ -12900,7 +14907,7 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", "pin-project", - "rand", + "rand 0.8.5", "sc-chain-spec", "sc-client-api", "sc-client-db", @@ -12952,7 +14959,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.36.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "log", "parity-scale-codec", @@ -12963,7 +14970,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.22.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "clap", "fs4", @@ -12976,7 +14983,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.45.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -12995,13 +15002,13 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "derive_more 0.99.20", "futures", "libc", "log", - "rand", + "rand 0.8.5", "rand_pcg", "regex", "sc-telemetry", @@ -13016,7 +15023,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "25.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "chrono", "futures", @@ -13024,7 +15031,7 @@ dependencies = [ "log", "parking_lot 0.12.3", "pin-project", - "rand", + "rand 0.8.5", "sc-network", "sc-utils", "serde", @@ -13036,7 +15043,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "37.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "chrono", "console", @@ -13065,7 +15072,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", @@ -13076,7 +15083,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "futures", @@ -13103,7 +15110,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "futures", @@ -13119,7 +15126,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-channel 1.9.0", "futures", @@ -13216,7 +15223,7 @@ dependencies = [ "arrayvec 0.7.6", "curve25519-dalek-ng", "merlin", - "rand_core", + "rand_core 0.6.4", "sha2 0.9.9", "subtle-ng", "zeroize", @@ -13234,7 +15241,7 @@ dependencies = [ "curve25519-dalek", "getrandom_or_panic", "merlin", - "rand_core", + "rand_core 0.6.4", "serde_bytes", "sha2 0.10.8", "subtle 2.6.1", @@ -13273,7 +15280,7 @@ dependencies = [ "crc", "fxhash", "log", - "rand", + "rand 0.8.5", "slab", "thiserror 1.0.69", ] @@ -13371,7 +15378,25 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" dependencies = [ - "semver-parser", + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser 0.10.3", ] [[package]] @@ -13389,6 +15414,15 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + [[package]] name = "send_wrapper" version = "0.6.0" @@ -13413,6 +15447,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serde-hex-utils" +version = "0.1.0" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "anyhow", + "hex", + "serde", +] + [[package]] name = "serde_bytes" version = "0.11.17" @@ -13543,6 +15587,16 @@ dependencies = [ "keccak", ] +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -13574,7 +15628,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -13629,7 +15683,7 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "slot-range-helper" version = "15.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "enumn", "parity-scale-codec", @@ -13705,8 +15759,8 @@ dependencies = [ "pbkdf2", "pin-project", "poly1305", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "ruzstd", "schnorrkel 0.10.2", "serde", @@ -13718,7 +15772,7 @@ dependencies = [ "smallvec", "soketto 0.7.1", "twox-hash", - "wasmi", + "wasmi 0.31.2", "x25519-dalek", "zeroize", ] @@ -13748,8 +15802,8 @@ dependencies = [ "no-std-net", "parking_lot 0.12.3", "pin-project", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "serde", "serde_json", "siphasher", @@ -13775,9 +15829,9 @@ dependencies = [ "blake2 0.10.6", "chacha20poly1305", "curve25519-dalek", - "rand_core", + "rand_core 0.6.4", "ring 0.17.14", - "rustc_version", + "rustc_version 0.4.1", "sha2 0.10.8", "subtle 2.6.1", ] @@ -13793,104 +15847,306 @@ dependencies = [ ] [[package]] -name = "snowbridge-beacon-primitives" +name = "snowbridge-beacon-primitives" +version = "0.10.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "byte-slice-cast", + "frame-support", + "hex", + "parity-scale-codec", + "rlp", + "scale-info", + "serde", + "snowbridge-ethereum", + "snowbridge-milagro-bls", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "ssz_rs", + "ssz_rs_derive", +] + +[[package]] +name = "snowbridge-core" +version = "0.10.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "ethabi-decode", + "frame-support", + "frame-system", + "hex-literal 0.4.1", + "parity-scale-codec", + "polkadot-parachain-primitives", + "scale-info", + "serde", + "snowbridge-beacon-primitives", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", +] + +[[package]] +name = "snowbridge-ethereum" +version = "0.9.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "ethabi-decode", + "ethbloom", + "ethereum-types", + "hex-literal 0.4.1", + "parity-bytes", + "parity-scale-codec", + "rlp", + "scale-info", + "serde", + "serde-big-array", + "sp-io", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "snowbridge-milagro-bls" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "026aa8638f690a53e3f7676024b9e913b1cab0111d1b7b92669d40a188f9d7e6" +dependencies = [ + "hex", + "lazy_static", + "parity-scale-codec", + "rand 0.8.5", + "scale-info", + "snowbridge-amcl", + "zeroize", +] + +[[package]] +name = "snowbridge-outbound-queue-merkle-tree" +version = "0.9.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-runtime", +] + +[[package]] +name = "snowbridge-outbound-queue-runtime-api" +version = "0.10.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "parity-scale-codec", + "snowbridge-core", + "snowbridge-outbound-queue-merkle-tree", + "sp-api", + "sp-std", +] + +[[package]] +name = "snowbridge-pallet-ethereum-client" +version = "0.10.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "hex-literal 0.4.1", + "log", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "serde", + "snowbridge-beacon-primitives", + "snowbridge-core", + "snowbridge-ethereum", + "snowbridge-pallet-ethereum-client-fixtures", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "static_assertions", +] + +[[package]] +name = "snowbridge-pallet-ethereum-client-fixtures" +version = "0.18.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "hex-literal 0.4.1", + "snowbridge-beacon-primitives", + "snowbridge-core", + "sp-core", + "sp-std", +] + +[[package]] +name = "snowbridge-pallet-inbound-queue" +version = "0.10.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "alloy-primitives 0.4.2", + "alloy-sol-types 0.4.2", + "frame-benchmarking", + "frame-support", + "frame-system", + "hex-literal 0.4.1", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "serde", + "snowbridge-beacon-primitives", + "snowbridge-core", + "snowbridge-pallet-inbound-queue-fixtures", + "snowbridge-router-primitives", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-executor", +] + +[[package]] +name = "snowbridge-pallet-inbound-queue-fixtures" +version = "0.18.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "hex-literal 0.4.1", + "snowbridge-beacon-primitives", + "snowbridge-core", + "sp-core", + "sp-std", +] + +[[package]] +name = "snowbridge-pallet-outbound-queue" version = "0.10.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ - "byte-slice-cast", + "bridge-hub-common", + "ethabi-decode", + "frame-benchmarking", "frame-support", - "hex", + "frame-system", "parity-scale-codec", - "rlp", "scale-info", "serde", - "snowbridge-ethereum", - "snowbridge-milagro-bls", + "snowbridge-core", + "snowbridge-outbound-queue-merkle-tree", + "sp-arithmetic", "sp-core", "sp-io", "sp-runtime", "sp-std", - "ssz_rs", - "ssz_rs_derive", ] [[package]] -name = "snowbridge-core" +name = "snowbridge-pallet-system" version = "0.10.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ - "ethabi-decode", + "frame-benchmarking", "frame-support", "frame-system", - "hex-literal 0.4.1", + "log", "parity-scale-codec", - "polkadot-parachain-primitives", "scale-info", - "serde", - "snowbridge-beacon-primitives", - "sp-arithmetic", + "snowbridge-core", "sp-core", "sp-io", "sp-runtime", "sp-std", "staging-xcm", - "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] -name = "snowbridge-ethereum" -version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +name = "snowbridge-router-primitives" +version = "0.16.1" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ - "ethabi-decode", - "ethbloom", - "ethereum-types", + "frame-support", "hex-literal 0.4.1", - "parity-bytes", + "log", "parity-scale-codec", - "rlp", "scale-info", - "serde", - "serde-big-array", + "snowbridge-core", + "sp-core", "sp-io", "sp-runtime", "sp-std", + "staging-xcm", + "staging-xcm-executor", ] [[package]] -name = "snowbridge-milagro-bls" -version = "1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "026aa8638f690a53e3f7676024b9e913b1cab0111d1b7b92669d40a188f9d7e6" +name = "snowbridge-runtime-common" +version = "0.10.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ - "hex", - "lazy_static", + "frame-support", + "log", "parity-scale-codec", - "rand", - "scale-info", - "snowbridge-amcl", - "zeroize", + "snowbridge-core", + "sp-arithmetic", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", ] [[package]] -name = "snowbridge-router-primitives" -version = "0.16.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +name = "snowbridge-runtime-test-common" +version = "0.12.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ + "cumulus-pallet-parachain-system", "frame-support", - "hex-literal 0.4.1", - "log", + "frame-system", + "pallet-balances", + "pallet-collator-selection", + "pallet-message-queue", + "pallet-session", + "pallet-timestamp", + "pallet-utility", + "pallet-xcm", + "parachains-runtimes-test-utils", "parity-scale-codec", - "scale-info", "snowbridge-core", + "snowbridge-pallet-ethereum-client", + "snowbridge-pallet-ethereum-client-fixtures", + "snowbridge-pallet-outbound-queue", + "snowbridge-pallet-system", "sp-core", "sp-io", + "sp-keyring", "sp-runtime", - "sp-std", + "staging-parachain-info", "staging-xcm", "staging-xcm-executor", ] +[[package]] +name = "snowbridge-system-runtime-api" +version = "0.10.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "parity-scale-codec", + "snowbridge-core", + "sp-api", + "sp-std", + "staging-xcm", +] + [[package]] name = "socket2" version = "0.4.10" @@ -13922,7 +16178,7 @@ dependencies = [ "futures", "httparse", "log", - "rand", + "rand 0.8.5", "sha-1 0.9.8", ] @@ -13938,14 +16194,14 @@ dependencies = [ "http 1.3.1", "httparse", "log", - "rand", + "rand 0.8.5", "sha1", ] [[package]] name = "sp-api" version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "hash-db", @@ -13967,7 +16223,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "Inflector", "blake2 0.10.6", @@ -13981,7 +16237,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "scale-info", @@ -13993,7 +16249,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "26.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "integer-sqrt", @@ -14007,7 +16263,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "scale-info", @@ -14019,7 +16275,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "sp-api", "sp-inherents", @@ -14029,7 +16285,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "37.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "futures", "parity-scale-codec", @@ -14048,7 +16304,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.40.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "futures", @@ -14063,7 +16319,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.40.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "parity-scale-codec", @@ -14079,7 +16335,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.40.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "parity-scale-codec", @@ -14097,7 +16353,7 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" version = "22.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "lazy_static", "parity-scale-codec", @@ -14118,7 +16374,7 @@ dependencies = [ [[package]] name = "sp-consensus-grandpa" version = "21.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "finality-grandpa", "log", @@ -14132,10 +16388,21 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "sp-consensus-pow" +version = "0.40.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "parity-scale-codec", + "sp-api", + "sp-core", + "sp-runtime", +] + [[package]] name = "sp-consensus-slots" version = "0.40.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "scale-info", @@ -14146,7 +16413,7 @@ dependencies = [ [[package]] name = "sp-core" version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "bitflags 1.3.2", @@ -14169,7 +16436,7 @@ dependencies = [ "parking_lot 0.12.3", "paste", "primitive-types", - "rand", + "rand 0.8.5", "scale-info", "schnorrkel 0.11.4", "secp256k1", @@ -14189,10 +16456,38 @@ dependencies = [ "zeroize", ] +[[package]] +name = "sp-core-hashing" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "sp-crypto-hashing", +] + +[[package]] +name = "sp-crypto-ec-utils" +version = "0.14.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "ark-bls12-377", + "ark-bls12-377-ext", + "ark-bls12-381", + "ark-bls12-381-ext", + "ark-bw6-761", + "ark-bw6-761-ext", + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ed-on-bls12-377-ext", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ed-on-bls12-381-bandersnatch-ext", + "ark-scale", + "sp-runtime-interface", +] + [[package]] name = "sp-crypto-hashing" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "blake2b_simd", "byteorder", @@ -14205,7 +16500,7 @@ dependencies = [ [[package]] name = "sp-crypto-hashing-proc-macro" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "quote", "sp-crypto-hashing", @@ -14215,7 +16510,7 @@ dependencies = [ [[package]] name = "sp-database" version = "10.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "kvdb", "parking_lot 0.12.3", @@ -14224,7 +16519,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "proc-macro2", "quote", @@ -14234,7 +16529,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.29.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "environmental", "parity-scale-codec", @@ -14244,7 +16539,7 @@ dependencies = [ [[package]] name = "sp-genesis-builder" version = "0.15.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "scale-info", @@ -14256,7 +16551,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -14268,8 +16563,8 @@ dependencies = [ [[package]] name = "sp-io" -version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "38.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bytes", "docify", @@ -14277,7 +16572,7 @@ dependencies = [ "libsecp256k1", "log", "parity-scale-codec", - "polkavm-derive", + "polkavm-derive 0.9.1", "rustversion", "secp256k1", "sp-core", @@ -14295,7 +16590,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "sp-core", "sp-runtime", @@ -14305,7 +16600,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.40.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", @@ -14316,7 +16611,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "thiserror 1.0.69", "zstd 0.12.4", @@ -14325,7 +16620,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.7.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -14335,7 +16630,7 @@ dependencies = [ [[package]] name = "sp-mixnet" version = "0.12.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "scale-info", @@ -14346,7 +16641,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "34.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "log", "parity-scale-codec", @@ -14363,7 +16658,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "scale-info", @@ -14376,7 +16671,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "sp-api", "sp-core", @@ -14386,7 +16681,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "13.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "backtrace", "lazy_static", @@ -14396,7 +16691,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "32.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "rustc-hash 1.1.0", "serde", @@ -14406,7 +16701,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "39.0.5" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "either", @@ -14416,7 +16711,7 @@ dependencies = [ "num-traits", "parity-scale-codec", "paste", - "rand", + "rand 0.8.5", "scale-info", "serde", "simple-mermaid", @@ -14432,12 +16727,12 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bytes", "impl-trait-for-tuples", "parity-scale-codec", - "polkavm-derive", + "polkavm-derive 0.9.1", "primitive-types", "sp-externalities", "sp-runtime-interface-proc-macro", @@ -14451,7 +16746,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "Inflector", "expander", @@ -14464,7 +16759,7 @@ dependencies = [ [[package]] name = "sp-session" version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "scale-info", @@ -14478,7 +16773,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "36.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -14491,13 +16786,13 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.43.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "hash-db", "log", "parity-scale-codec", "parking_lot 0.12.3", - "rand", + "rand 0.8.5", "smallvec", "sp-core", "sp-externalities", @@ -14511,14 +16806,14 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "18.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "aes-gcm", "curve25519-dalek", "ed25519-dalek", "hkdf", "parity-scale-codec", - "rand", + "rand 0.8.5", "scale-info", "sha2 0.10.8", "sp-api", @@ -14535,12 +16830,12 @@ dependencies = [ [[package]] name = "sp-std" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" [[package]] name = "sp-storage" version = "21.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "impl-serde", "parity-scale-codec", @@ -14552,7 +16847,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "parity-scale-codec", @@ -14564,7 +16859,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "17.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "tracing", @@ -14575,7 +16870,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "sp-api", "sp-runtime", @@ -14584,7 +16879,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "34.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "async-trait", "parity-scale-codec", @@ -14598,7 +16893,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "ahash 0.8.11", "hash-db", @@ -14607,7 +16902,7 @@ dependencies = [ "nohash-hasher", "parity-scale-codec", "parking_lot 0.12.3", - "rand", + "rand 0.8.5", "scale-info", "schnellru", "sp-core", @@ -14621,7 +16916,7 @@ dependencies = [ [[package]] name = "sp-version" version = "37.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "impl-serde", "parity-scale-codec", @@ -14638,7 +16933,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -14649,7 +16944,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "21.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -14661,7 +16956,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "31.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "bounded-collections", "parity-scale-codec", @@ -14697,6 +16992,7 @@ dependencies = [ name = "spiritnet-runtime" version = "1.16.0-dev" dependencies = [ + "anyhow", "attestation", "cfg-if", "ctype", @@ -14721,6 +17017,9 @@ dependencies = [ "frame-system-rpc-runtime-api", "frame-try-runtime", "hex-literal 0.3.4", + "ismp", + "ismp-parachain", + "ismp-parachain-runtime-api", "kilt-runtime-api-did", "kilt-runtime-api-dip-provider", "kilt-runtime-api-public-credentials", @@ -14733,13 +17032,18 @@ dependencies = [ "pallet-aura", "pallet-authorship", "pallet-balances", + "pallet-bonded-coins", + "pallet-bonded-coins-runtime-api", "pallet-collective", "pallet-democracy", "pallet-deposit-storage", "pallet-did-lookup", "pallet-dip-provider", + "pallet-hyperbridge", "pallet-indices", "pallet-inflation", + "pallet-ismp", + "pallet-ismp-runtime-api", "pallet-membership", "pallet-message-queue", "pallet-migration", @@ -14750,6 +17054,7 @@ dependencies = [ "pallet-session", "pallet-timestamp", "pallet-tips", + "pallet-token-gateway", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "pallet-treasury", @@ -14842,10 +17147,28 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "staging-node-inspect" +version = "0.23.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "clap", + "parity-scale-codec", + "sc-cli", + "sc-client-api", + "sc-service", + "sp-blockchain", + "sp-core", + "sp-io", + "sp-runtime", + "sp-statement-store", + "thiserror 1.0.69", +] + [[package]] name = "staging-parachain-info" version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -14857,8 +17180,8 @@ dependencies = [ [[package]] name = "staging-xcm" -version = "14.2.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "14.2.2" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "bounded-collections", @@ -14876,8 +17199,8 @@ dependencies = [ [[package]] name = "staging-xcm-builder" -version = "17.0.4" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "17.0.5" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "frame-system", @@ -14898,8 +17221,8 @@ dependencies = [ [[package]] name = "staging-xcm-executor" -version = "17.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "17.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "environmental", "frame-benchmarking", @@ -15016,6 +17339,17 @@ dependencies = [ "tracing", ] +[[package]] +name = "string-interner" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6a0d765f5807e98a091107bae0a56ea3799f66a5de47b2c84c94a39c09974e" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "serde", +] + [[package]] name = "strsim" version = "0.11.1" @@ -15066,7 +17400,7 @@ dependencies = [ [[package]] name = "substrate-bip39" version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "hmac 0.12.1", "pbkdf2", @@ -15078,7 +17412,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" [[package]] name = "substrate-fixed" @@ -15095,7 +17429,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "39.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "docify", "frame-system-rpc-runtime-api", @@ -15115,7 +17449,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.17.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "http-body-util", "hyper 1.6.0", @@ -15126,10 +17460,25 @@ dependencies = [ "tokio", ] +[[package]] +name = "substrate-state-machine" +version = "16.0.0" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "hash-db", + "ismp", + "pallet-ismp", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types", + "scale-info", + "serde", +] + [[package]] name = "substrate-state-trie-migration-rpc" version = "38.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "jsonrpsee", "parity-scale-codec", @@ -15155,8 +17504,8 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" -version = "24.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "24.0.2" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "build-helper", @@ -15168,7 +17517,7 @@ dependencies = [ "merkleized-metadata", "parity-scale-codec", "parity-wasm", - "polkavm-linker", + "polkavm-linker 0.9.2", "sc-executor", "sp-core", "sp-io", @@ -15222,6 +17571,30 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn-solidity" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "syn-solidity" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c837dc8852cb7074e46b444afb81783140dab12c58867b49fb3898fbafedf7ea" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "synstructure" version = "0.12.6" @@ -15288,7 +17661,7 @@ dependencies = [ "getrandom 0.3.2", "once_cell", "rustix 1.0.5", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -15341,7 +17714,7 @@ dependencies = [ [[package]] name = "testnet-parachains-constants" version = "10.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "cumulus-primitives-core", "frame-support", @@ -15537,6 +17910,24 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +[[package]] +name = "token-gateway-primitives" +version = "16.0.0" +source = "git+https://github.com/polytope-labs/hyperbridge?branch=polkadot-stable2409#c7237a7388c210a60177ce74fc512e814d331da0" +dependencies = [ + "alloy-primitives 0.7.7", + "alloy-sol-macro 0.7.7", + "alloy-sol-types 0.7.7", + "anyhow", + "ismp", + "log", + "pallet-ismp", + "parity-scale-codec", + "polkadot-sdk", + "primitive-types", + "scale-info", +] + [[package]] name = "tokio" version = "1.44.2" @@ -15766,7 +18157,7 @@ dependencies = [ [[package]] name = "tracing-gum" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "coarsetime", "polkadot-primitives", @@ -15777,7 +18168,7 @@ dependencies = [ [[package]] name = "tracing-gum-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "expander", "proc-macro-crate 3.3.0", @@ -15854,7 +18245,7 @@ dependencies = [ "idna 0.2.3", "ipnet", "lazy_static", - "rand", + "rand 0.8.5", "smallvec", "socket2 0.4.10", "thiserror 1.0.69", @@ -15880,7 +18271,7 @@ dependencies = [ "idna 0.4.0", "ipnet", "once_cell", - "rand", + "rand 0.8.5", "smallvec", "thiserror 1.0.69", "tinyvec", @@ -15901,7 +18292,7 @@ dependencies = [ "lru-cache", "once_cell", "parking_lot 0.12.3", - "rand", + "rand 0.8.5", "resolv-conf", "smallvec", "thiserror 1.0.69", @@ -15934,7 +18325,7 @@ dependencies = [ "http 0.2.12", "httparse", "log", - "rand", + "rand 0.8.5", "rustls 0.21.12", "sha1", "thiserror 1.0.69", @@ -15942,6 +18333,12 @@ dependencies = [ "utf-8", ] +[[package]] +name = "tuplex" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676ac81d5454c4dcf37955d34fa8626ede3490f744b86ca14a7b90168d2a08aa" + [[package]] name = "twox-hash" version = "1.6.3" @@ -15950,7 +18347,7 @@ checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if", "digest 0.10.7", - "rand", + "rand 0.8.5", "static_assertions", ] @@ -15978,6 +18375,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + [[package]] name = "unicode-bidi" version = "0.3.18" @@ -16129,19 +18532,28 @@ dependencies = [ "ark-bls12-377", "ark-bls12-381", "ark-ec", - "ark-ff", - "ark-serialize", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", "ark-serialize-derive", "arrayref", "digest 0.10.7", - "rand", - "rand_chacha", - "rand_core", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_core 0.6.4", "sha2 0.10.8", "sha3", "zeroize", ] +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + [[package]] name = "waker-fn" version = "1.2.0" @@ -16335,7 +18747,24 @@ dependencies = [ "smallvec", "spin 0.9.8", "wasmi_arena", - "wasmi_core", + "wasmi_core 0.13.0", + "wasmparser-nostd", +] + +[[package]] +name = "wasmi" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50386c99b9c32bd2ed71a55b6dd4040af2580530fae8bdb9a6576571a80d0cca" +dependencies = [ + "arrayvec 0.7.6", + "multi-stash", + "num-derive", + "num-traits", + "smallvec", + "spin 0.9.8", + "wasmi_collections", + "wasmi_core 0.32.3", "wasmparser-nostd", ] @@ -16345,6 +18774,17 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "104a7f73be44570cac297b3035d76b169d6599637631cf37a1703326a0727073" +[[package]] +name = "wasmi_collections" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c128c039340ffd50d4195c3f8ce31aac357f06804cfc494c8b9508d4b30dca4" +dependencies = [ + "ahash 0.8.11", + "hashbrown 0.14.5", + "string-interner", +] + [[package]] name = "wasmi_core" version = "0.13.0" @@ -16357,6 +18797,18 @@ dependencies = [ "paste", ] +[[package]] +name = "wasmi_core" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23b3a7f6c8c3ceeec6b83531ee61f0013c56e51cbf2b14b0f213548b23a4b41" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + [[package]] name = "wasmparser" version = "0.102.0" @@ -16551,7 +19003,7 @@ dependencies = [ "memfd", "memoffset", "paste", - "rand", + "rand 0.8.5", "rustix 0.36.17", "wasmtime-asm-macros", "wasmtime-environ", @@ -16609,7 +19061,7 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "westend-runtime" version = "18.0.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "binary-merkle-tree", "bitvec", @@ -16717,7 +19169,7 @@ dependencies = [ [[package]] name = "westend-runtime-constants" version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "polkadot-primitives", @@ -16780,7 +19232,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -17162,7 +19614,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ "curve25519-dalek", - "rand_core", + "rand_core 0.6.4", "serde", "zeroize", ] @@ -17204,7 +19656,7 @@ dependencies = [ [[package]] name = "xcm-emulator" version = "0.16.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "array-bytes", "cumulus-pallet-parachain-system", @@ -17281,7 +19733,7 @@ dependencies = [ [[package]] name = "xcm-procedural" version = "10.1.0" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "Inflector", "proc-macro2", @@ -17291,8 +19743,8 @@ dependencies = [ [[package]] name = "xcm-runtime-apis" -version = "0.4.2" -source = "git+https://github.com/paritytech/polkadot-sdk?tag=polkadot-stable2409-5#ac431bce9d42edd0b04530f7dada02c37c0aa1de" +version = "0.4.3" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" dependencies = [ "frame-support", "parity-scale-codec", @@ -17303,6 +19755,28 @@ dependencies = [ "staging-xcm-executor", ] +[[package]] +name = "xcm-simulator" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=stable2409#be2d857aeff5cdb6c9cb0987f9880df223a528db" +dependencies = [ + "frame-support", + "frame-system", + "parity-scale-codec", + "paste", + "polkadot-core-primitives", + "polkadot-parachain-primitives", + "polkadot-primitives", + "polkadot-runtime-parachains", + "scale-info", + "sp-io", + "sp-runtime", + "sp-std", + "staging-xcm", + "staging-xcm-builder", + "staging-xcm-executor", +] + [[package]] name = "xml-rs" version = "0.8.26" @@ -17329,7 +19803,7 @@ dependencies = [ "nohash-hasher", "parking_lot 0.12.3", "pin-project", - "rand", + "rand 0.8.5", "static_assertions", ] diff --git a/Cargo.toml b/Cargo.toml index ec4e015517..b5a575d1bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,9 +25,10 @@ version = "1.16.0-dev" [workspace.dependencies] # Build deps -substrate-wasm-builder = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +substrate-wasm-builder = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } # External (without extra features and with default disabled if necessary) +anyhow = { version = "1.0", default-features = false } base58 = { version = "0.2.0", default-features = false } bitflags = { version = "1.3.2", default-features = false } cfg-if = { version = "1.0" } @@ -98,152 +99,163 @@ peregrine-runtime = { path = "runtimes/peregrine", default-features = false } spiritnet-runtime = { path = "runtimes/spiritnet", default-features = false } # Benchmarking (with default disabled) -cumulus-pallet-session-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -frame-system-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +cumulus-pallet-session-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +frame-system-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } # Cumulus (with default disabled) -cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -cumulus-pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -cumulus-primitives-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -cumulus-primitives-core = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -cumulus-primitives-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -cumulus-primitives-utility = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -parachain-info = { package = "staging-parachain-info", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -parachains-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +cumulus-pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +cumulus-primitives-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +cumulus-primitives-core = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +cumulus-primitives-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +cumulus-primitives-utility = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +parachain-info = { package = "staging-parachain-info", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +parachains-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } # XCM Emulator tests -asset-hub-kusama-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -asset-hub-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -asset-hub-rococo-emulated-chain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -asset-hub-rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -asset-hub-westend-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -bridge-hub-kusama-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -bridge-hub-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -bridge-hub-rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -collectives-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -emulated-integration-tests-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -penpal-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -rococo-emulated-chain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -xcm-emulator = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +asset-hub-kusama-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +asset-hub-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +asset-hub-rococo-emulated-chain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +asset-hub-rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +asset-hub-westend-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +bridge-hub-kusama-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +bridge-hub-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +bridge-hub-rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +collectives-polkadot-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +emulated-integration-tests-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +penpal-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +rococo-emulated-chain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +xcm-emulator = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } # Substrate (with default disabled) -frame-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -frame-benchmarking-cli = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -frame-executive = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -frame-metadata-hash-extension = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -frame-support = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -frame-system = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -frame-try-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-assets = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-authorship = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-balances = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-collator-selection = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-collective = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-democracy = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-im-online = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-indices = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-membership = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-message-queue = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-multisig = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-preimage = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-proxy = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-scheduler = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-session = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-sudo = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-tips = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-transaction-payment = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-treasury = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-utility = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -pallet-vesting = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-arithmetic = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-authority-discovery = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-block-builder = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-consensus-babe = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-core = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-genesis-builder = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-inherents = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-io = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-metadata-ir = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-offchain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-session = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-staking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-state-machine = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-std = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-tracing = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-trie = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-version = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -sp-weights = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +frame-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +frame-benchmarking-cli = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +frame-executive = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +frame-metadata-hash-extension = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +frame-support = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +frame-system = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +frame-try-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-assets = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-authorship = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-balances = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-collator-selection = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-collective = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-democracy = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-im-online = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-indices = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-membership = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-message-queue = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-multisig = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-preimage = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-proxy = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-scheduler = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-session = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-sudo = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-tips = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-transaction-payment = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-treasury = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-utility = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +pallet-vesting = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-api = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-arithmetic = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-authority-discovery = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-block-builder = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-consensus-babe = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-core = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-genesis-builder = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-inherents = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-io = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-metadata-ir = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-offchain = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-session = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-staking = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-state-machine = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-std = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-tracing = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-trie = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-version = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +sp-weights = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } # Polkadot (with default disabled) -pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -polkadot-parachain = { package = "polkadot-parachain-primitives", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -polkadot-runtime-parachains = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -xcm = { package = "staging-xcm", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -xcm-builder = { package = "staging-xcm-builder", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -xcm-executor = { package = "staging-xcm-executor", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } -xcm-simulator = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, tag = "polkadot-stable2409-5" } +pallet-xcm = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +polkadot-parachain = { package = "polkadot-parachain-primitives", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +polkadot-runtime-parachains = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +rococo-runtime = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +xcm = { package = "staging-xcm", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +xcm-builder = { package = "staging-xcm-builder", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +xcm-executor = { package = "staging-xcm-executor", git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } +xcm-simulator = { git = "https://github.com/paritytech/polkadot-sdk", default-features = false, branch = "stable2409" } # Client-only (with default enabled) -cumulus-client-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -cumulus-client-collator = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -cumulus-client-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -cumulus-client-consensus-common = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -cumulus-client-consensus-proposer = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -cumulus-client-network = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -cumulus-client-service = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -cumulus-primitives-parachain-inherent = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -cumulus-relay-chain-inprocess-interface = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -cumulus-relay-chain-interface = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -cumulus-relay-chain-minimal-node = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -cumulus-relay-chain-rpc-interface = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -polkadot-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -polkadot-primitives = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -polkadot-service = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-basic-authorship = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-chain-spec = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-cli = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-client-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-consensus = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-executor = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-keystore = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-network = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-network-sync = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-offchain = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-rpc-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-service = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-sysinfo = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-telemetry = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-tracing = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sc-transaction-pool-api = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sp-blockchain = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sp-consensus = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sp-consensus-beefy = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sp-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sp-keyring = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sp-keystore = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -sp-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -substrate-build-script-utils = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -substrate-frame-rpc-system = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } -substrate-prometheus-endpoint = { git = "https://github.com/paritytech/polkadot-sdk", tag = "polkadot-stable2409-5" } +cumulus-client-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +cumulus-client-collator = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +cumulus-client-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +cumulus-client-consensus-common = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +cumulus-client-consensus-proposer = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +cumulus-client-network = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +cumulus-client-service = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +cumulus-primitives-parachain-inherent = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +cumulus-relay-chain-inprocess-interface = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +cumulus-relay-chain-interface = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +cumulus-relay-chain-minimal-node = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +cumulus-relay-chain-rpc-interface = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +polkadot-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +polkadot-primitives = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +polkadot-service = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-basic-authorship = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-chain-spec = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-cli = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-client-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-consensus = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-consensus-aura = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-executor = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-keystore = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-network = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-network-sync = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-offchain = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-rpc-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-service = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-sysinfo = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-telemetry = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-tracing = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-transaction-pool = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sc-transaction-pool-api = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sp-blockchain = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sp-consensus = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sp-consensus-beefy = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sp-consensus-grandpa = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sp-keyring = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sp-keystore = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +sp-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +substrate-build-script-utils = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +substrate-frame-rpc-system = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } +substrate-prometheus-endpoint = { git = "https://github.com/paritytech/polkadot-sdk", branch = "stable2409" } + +# ISMP +ismp = { git = "https://github.com/polytope-labs/hyperbridge", branch = "polkadot-stable2409", default-features = false } +ismp-parachain = { git = "https://github.com/polytope-labs/hyperbridge", branch = "polkadot-stable2409", default-features = false } +ismp-parachain-inherent = { git = "https://github.com/polytope-labs/hyperbridge", branch = "polkadot-stable2409", default-features = false } +ismp-parachain-runtime-api = { git = "https://github.com/polytope-labs/hyperbridge", branch = "polkadot-stable2409", default-features = false } +pallet-hyperbridge = { git = "https://github.com/polytope-labs/hyperbridge", branch = "polkadot-stable2409", default-features = false } +pallet-ismp = { git = "https://github.com/polytope-labs/hyperbridge", branch = "polkadot-stable2409", default-features = false } +pallet-ismp-rpc = { git = "https://github.com/polytope-labs/hyperbridge", branch = "polkadot-stable2409" } +pallet-ismp-runtime-api = { git = "https://github.com/polytope-labs/hyperbridge", branch = "polkadot-stable2409", default-features = false } +pallet-token-gateway = { git = "https://github.com/polytope-labs/hyperbridge", branch = "polkadot-stable2409", default-features = false } [profile] diff --git a/integration-tests/emulated/src/tests/peregrine/unpaid_execution.rs b/integration-tests/emulated/src/tests/peregrine/unpaid_execution.rs index a1c723e747..dd48016b05 100644 --- a/integration-tests/emulated/src/tests/peregrine/unpaid_execution.rs +++ b/integration-tests/emulated/src/tests/peregrine/unpaid_execution.rs @@ -79,7 +79,7 @@ fn test_unpaid_execution_from_asset_hub_to_peregrine() { assert_expected_events!( Peregrine, vec![ - PeregrineRuntimeEvent::MessageQueue(pallet_message_queue::Event::ProcessingFailed { .. }) => {}, + PeregrineRuntimeEvent::MessageQueue(pallet_message_queue::Event::Processed { success: false, .. }) => {}, ] ); }); diff --git a/integration-tests/emulated/src/tests/spiritnet/unpaid_execution.rs b/integration-tests/emulated/src/tests/spiritnet/unpaid_execution.rs index 2f5e8fd2d0..e1e0bad5fb 100644 --- a/integration-tests/emulated/src/tests/spiritnet/unpaid_execution.rs +++ b/integration-tests/emulated/src/tests/spiritnet/unpaid_execution.rs @@ -80,7 +80,7 @@ fn test_unpaid_execution_to_spiritnet() { assert_expected_events!( Spiritnet, vec![ - SpiritnetRuntimeEvent::MessageQueue(pallet_message_queue::Event::ProcessingFailed { .. }) => {}, + SpiritnetRuntimeEvent::MessageQueue(pallet_message_queue::Event::Processed { success: false, .. }) => {}, ] ); }); diff --git a/nodes/parachain/Cargo.toml b/nodes/parachain/Cargo.toml index 7029f0eade..0b1de5687b 100644 --- a/nodes/parachain/Cargo.toml +++ b/nodes/parachain/Cargo.toml @@ -92,6 +92,12 @@ xcm = { workspace = true, features = ["std"] } frame-benchmarking = { workspace = true, features = ["std"] } frame-benchmarking-cli = { workspace = true } +#ISMP +ismp-parachain-inherent = { workspace = true } +ismp-parachain-runtime-api = { workspace = true } +pallet-ismp-rpc = { workspace = true } +pallet-ismp-runtime-api = { workspace = true } + [features] default = [] fast-gov = ["peregrine-runtime/fast-gov", "runtime-common/fast-gov"] diff --git a/nodes/parachain/src/command.rs b/nodes/parachain/src/command.rs index de6bb8a3d7..94ff3c7ef2 100644 --- a/nodes/parachain/src/command.rs +++ b/nodes/parachain/src/command.rs @@ -69,7 +69,11 @@ macro_rules! construct_async_run { /// Parse command line arguments into service configuration. pub(crate) fn run() -> sc_cli::Result<()> { - let cli = Cli::from_args(); + let mut cli = Cli::from_args(); + + // all full nodes should store request/responses, otherwise they'd basically be + // useless without it. https://docs.hyperbridge.network/developers/polkadot/pallet-ismp#offchain-indexing + cli.run.base.offchain_worker_params.indexing_enabled = true; match &cli.subcommand { Some(Subcommand::BuildSpec(cmd)) => { diff --git a/nodes/parachain/src/rpc.rs b/nodes/parachain/src/rpc.rs index 5653b952d6..76f8909dd9 100644 --- a/nodes/parachain/src/rpc.rs +++ b/nodes/parachain/src/rpc.rs @@ -25,7 +25,8 @@ use std::sync::Arc; -use sc_client_api::AuxStore; +use pallet_ismp_rpc::{IsmpApiServer, IsmpRpcHandler}; +use sc_client_api::{AuxStore, BlockBackend, ProofProvider}; use sc_transaction_pool_api::TransactionPool; use sp_api::ProvideRuntimeApi; use sp_block_builder::BlockBuilder; @@ -37,18 +38,24 @@ use runtime_common::{opaque::Block, AccountId, Balance, Nonce}; pub(crate) type RpcExtension = jsonrpsee::RpcModule<()>; /// Full client dependencies. -pub(crate) struct FullDeps { +pub(crate) struct FullDeps { /// The client instance to use. pub client: Arc, /// Transaction pool instance. pub pool: Arc

, + /// Backend used by the node. + pub backend: Arc, } /// Instantiate all RPC extensions. -pub(crate) fn create_full(deps: FullDeps) -> Result> +pub(crate) fn create_full( + deps: FullDeps, +) -> Result> where C: ProvideRuntimeApi + HeaderBackend + + BlockBackend + + ProofProvider + AuxStore + HeaderMetadata + Send @@ -56,22 +63,26 @@ where + 'static, C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi + substrate_frame_rpc_system::AccountNonceApi - + BlockBuilder, + + BlockBuilder + + pallet_ismp_runtime_api::IsmpRuntimeApi, + P: TransactionPool + 'static, + B: sc_client_api::Backend + Send + Sync + 'static, + B::State: sc_client_api::StateBackend>, { use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer}; use substrate_frame_rpc_system::{System, SystemApiServer}; let mut module = RpcExtension::new(()); - let FullDeps { client, pool } = deps; + let FullDeps { client, pool, backend } = deps; module.merge(System::new(Arc::clone(&client), pool).into_rpc())?; - module.merge(TransactionPayment::new(client).into_rpc())?; + module.merge(TransactionPayment::new(Arc::clone(&client)).into_rpc())?; // Extend this RPC with a custom API by using the following syntax. // `YourRpcStruct` should have a reference to a client, which is needed // to call into the runtime. // - // `module.merge(YourRpcStruct::new(ReferenceToClient).into_rpc())?;` + module.merge(IsmpRpcHandler::new(client, backend)?.into_rpc())?; Ok(module) } diff --git a/nodes/parachain/src/service.rs b/nodes/parachain/src/service.rs index 63dfc1e424..fd58810244 100644 --- a/nodes/parachain/src/service.rs +++ b/nodes/parachain/src/service.rs @@ -210,7 +210,9 @@ where + pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi + substrate_frame_rpc_system::AccountNonceApi + sp_consensus_aura::AuraApi - + cumulus_primitives_aura::AuraUnincludedSegmentApi, + + cumulus_primitives_aura::AuraUnincludedSegmentApi + + pallet_ismp_runtime_api::IsmpRuntimeApi + + ismp_parachain_runtime_api::IsmpParachainApi, sc_client_api::StateBackendFor, Block>: sp_state_machine::Backend, RB: FnOnce( Arc>>, @@ -270,11 +272,13 @@ where let rpc_builder = { let client = Arc::clone(&client); let transaction_pool = Arc::clone(&transaction_pool); + let backend = Arc::clone(&backend); Box::new(move |_| { let deps = crate::rpc::FullDeps { client: Arc::clone(&client), pool: Arc::clone(&transaction_pool), + backend: Arc::clone(&backend), }; crate::rpc::create_full(deps).map_err(Into::into) @@ -430,7 +434,9 @@ where + pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi + sp_consensus_aura::AuraApi + cumulus_primitives_core::CollectCollationInfo - + cumulus_primitives_aura::AuraUnincludedSegmentApi, + + cumulus_primitives_aura::AuraUnincludedSegmentApi + + pallet_ismp_runtime_api::IsmpRuntimeApi + + ismp_parachain_runtime_api::IsmpParachainApi, sc_client_api::StateBackendFor, Block>: sp_state_machine::Backend, { start_node_impl::( @@ -476,7 +482,9 @@ where + pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi + substrate_frame_rpc_system::AccountNonceApi + sp_consensus_aura::AuraApi - + cumulus_primitives_aura::AuraUnincludedSegmentApi, + + cumulus_primitives_aura::AuraUnincludedSegmentApi + + ismp_parachain_runtime_api::IsmpParachainApi + + pallet_ismp_runtime_api::IsmpRuntimeApi, { use cumulus_client_consensus_aura::collators::lookahead::{self as aura, Params as AuraParams}; @@ -497,8 +505,20 @@ where Arc::clone(&client), ); + let (client_clone, relay_chain_interface_clone) = (Arc::clone(&client), Arc::clone(&relay_chain_interface)); + let params = AuraParams { - create_inherent_data_providers: move |_, ()| async move { Ok(()) }, + create_inherent_data_providers: move |parent, ()| { + let client = Arc::clone(&client_clone); + let relay_chain_interface = Arc::clone(&relay_chain_interface_clone); + async move { + let inherent = + ismp_parachain_inherent::ConsensusInherentProvider::create(parent, client, relay_chain_interface) + .await?; + + Ok(inherent) + } + }, block_import, para_client: Arc::clone(&client), para_backend: backend, diff --git a/runtimes/peregrine/Cargo.toml b/runtimes/peregrine/Cargo.toml index 66a6c6adaa..24dc7c4403 100644 --- a/runtimes/peregrine/Cargo.toml +++ b/runtimes/peregrine/Cargo.toml @@ -19,6 +19,7 @@ sp-io = { workspace = true } [dependencies] # External dependencies +anyhow = { workspace = true } cfg-if = { workspace = true } log = { workspace = true } parity-scale-codec = { workspace = true, features = ["derive"] } @@ -125,6 +126,15 @@ frame-system-benchmarking = { workspace = true, optional = true } # Runtime tests frame-try-runtime = { workspace = true, optional = true } +# ISMP +ismp = { workspace = true } +ismp-parachain = { workspace = true } +ismp-parachain-runtime-api = { workspace = true } +pallet-hyperbridge = { workspace = true } +pallet-ismp = { workspace = true, features = ["unsigned"] } +pallet-ismp-runtime-api = { workspace = true } +pallet-token-gateway = { workspace = true } + [features] default = ["std"] fast-gov = ["runtime-common/fast-gov"] @@ -143,6 +153,7 @@ runtime-benchmarks = [ "frame-system-benchmarking/runtime-benchmarks", "frame-system/runtime-benchmarks", "hex-literal", + "ismp-parachain/runtime-benchmarks", "kilt-support/runtime-benchmarks", "pallet-asset-switch/runtime-benchmarks", "pallet-assets/runtime-benchmarks", @@ -165,6 +176,7 @@ runtime-benchmarks = [ "pallet-sudo/runtime-benchmarks", "pallet-timestamp/runtime-benchmarks", "pallet-tips/runtime-benchmarks", + "pallet-token-gateway/runtime-benchmarks", "pallet-treasury/runtime-benchmarks", "pallet-utility/runtime-benchmarks", "pallet-vesting/runtime-benchmarks", @@ -199,6 +211,9 @@ std = [ "frame-system-rpc-runtime-api/std", "frame-system/std", "frame-try-runtime?/std", + "ismp-parachain-runtime-api/std", + "ismp-parachain/std", + "ismp/std", "kilt-runtime-api-did/std", "kilt-runtime-api-dip-provider/std", "kilt-runtime-api-public-credentials/std", @@ -220,6 +235,8 @@ std = [ "pallet-dip-provider/std", "pallet-indices/std", "pallet-inflation/std", + "pallet-ismp-runtime-api/std", + "pallet-ismp/std", "pallet-membership/std", "pallet-message-queue/std", "pallet-migration/std", @@ -231,6 +248,7 @@ std = [ "pallet-sudo/std", "pallet-timestamp/std", "pallet-tips/std", + "pallet-token-gateway/std", "pallet-transaction-payment-rpc-runtime-api/std", "pallet-transaction-payment/std", "pallet-treasury/std", @@ -276,6 +294,7 @@ try-runtime = [ "frame-support/try-runtime", "frame-system/try-runtime", "frame-try-runtime", + "ismp-parachain/try-runtime", "kilt-support/try-runtime", "pallet-asset-switch/try-runtime", "pallet-assets/try-runtime", @@ -290,6 +309,7 @@ try-runtime = [ "pallet-dip-provider/try-runtime", "pallet-indices/try-runtime", "pallet-inflation/try-runtime", + "pallet-ismp/try-runtime", "pallet-membership/try-runtime", "pallet-message-queue/try-runtime", "pallet-migration/try-runtime", @@ -301,6 +321,7 @@ try-runtime = [ "pallet-sudo/try-runtime", "pallet-timestamp/try-runtime", "pallet-tips/try-runtime", + "pallet-token-gateway/try-runtime", "pallet-transaction-payment/try-runtime", "pallet-treasury/try-runtime", "pallet-utility/try-runtime", diff --git a/runtimes/peregrine/src/benchmarks/mod.rs b/runtimes/peregrine/src/benchmarks/mod.rs index 19a42e18c6..f10abb1c07 100644 --- a/runtimes/peregrine/src/benchmarks/mod.rs +++ b/runtimes/peregrine/src/benchmarks/mod.rs @@ -39,9 +39,9 @@ use xcm::v4::{Asset, Assets, Fungibility, Location}; use crate::{ xcm::XcmConfig, AllPalletsWithSystem, AssetSwitchPool1, Attestation, Balances, BondedCurrencies, BondedFungibles, Collators, Council, Ctype, Delegation, Democracy, DepositStorage, Did, DidLookup, DipProvider, Fungibles, Indices, - MessageQueue, Migration, Multisig, ParachainStaking, ParachainSystem, Preimage, Proxy, PublicCredentials, Runtime, - RuntimeEvent, Scheduler, Sudo, System, TechnicalCommittee, TechnicalMembership, Timestamp, Tips, TipsMembership, - Treasury, Utility, Vesting, Web3Names, + IsmpParachain, MessageQueue, Migration, Multisig, ParachainStaking, ParachainSystem, Preimage, Proxy, + PublicCredentials, Runtime, RuntimeEvent, Scheduler, Sudo, System, TechnicalCommittee, TechnicalMembership, + Timestamp, Tips, TipsMembership, TokenGateway, Treasury, Utility, Vesting, Web3Names, }; pub(crate) mod asset_switch; @@ -105,6 +105,9 @@ define_benchmarks!( // pallet assets instances [pallet_assets, Fungibles] [pallet_bonded_assets, BondedFungibles] + // ISMP + [ismp_parachain, IsmpParachain] + [pallet_token_gateway, TokenGateway] ); impl pallet_xcm::benchmarking::Config for Runtime { diff --git a/runtimes/peregrine/src/governance.rs b/runtimes/peregrine/src/governance.rs index 14a6a4279b..d0de6eb0d2 100644 --- a/runtimes/peregrine/src/governance.rs +++ b/runtimes/peregrine/src/governance.rs @@ -157,7 +157,7 @@ impl pallet_collective::Config for Runtime { type SetMembersOrigin = EnsureRoot; } -type TechnicalCollective = pallet_collective::Instance2; +pub(crate) type TechnicalCollective = pallet_collective::Instance2; impl pallet_collective::Config for Runtime { type RuntimeOrigin = RuntimeOrigin; type MaxProposalWeight = MaxProposalWeight; diff --git a/runtimes/peregrine/src/ismp.rs b/runtimes/peregrine/src/ismp.rs new file mode 100644 index 0000000000..c5075c9221 --- /dev/null +++ b/runtimes/peregrine/src/ismp.rs @@ -0,0 +1,103 @@ +// KILT Blockchain – +// Copyright (C) 2025, KILT Foundation + +// The KILT Blockchain 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. + +// The KILT Blockchain 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 this program. If not, see . + +// If you feel like getting in touch with us, you can do so at + +use frame_support::parameter_types; +use ismp::{host::StateMachine, module::IsmpModule, router::IsmpRouter}; +use runtime_common::{AccountId, Balance}; +use sp_core::{ConstU8, Get}; +use sp_std::{boxed::Box, vec::Vec}; +use xcm::v4::Location; + +use crate::{ + governance::{RootOrCollectiveProportion, TechnicalCollective}, + Balances, Fungibles, Hyperbridge, Ismp, IsmpParachain, Runtime, RuntimeEvent, Timestamp, TokenGateway, Treasury, +}; + +parameter_types! { + // The hyperbridge parachain on Polkadot + pub const Coprocessor: Option = Some(StateMachine::Polkadot(4009)); + pub const HostStateMachine: StateMachine = StateMachine::Polkadot(2086); +} + +#[derive(Default)] +pub struct Router; + +impl IsmpRouter for Router { + fn module_for_id(&self, input: Vec) -> Result, anyhow::Error> { + match input.as_slice() { + pallet_hyperbridge::PALLET_HYPERBRIDGE_ID => Ok(Box::new(pallet_hyperbridge::Pallet::::default())), + id if TokenGateway::is_token_gateway(id) => { + Ok(Box::new(pallet_token_gateway::Pallet::::default())) + } + _ => Err(ismp::Error::ModuleNotFound(input))?, + } + } +} + +impl pallet_ismp::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type AdminOrigin = RootOrCollectiveProportion; + type HostStateMachine = HostStateMachine; + type TimestampProvider = Timestamp; + type Balance = Balance; + type Currency = Balances; + type Coprocessor = Coprocessor; + type ConsensusClients = (ismp_parachain::ParachainConsensusClient,); + type Router = Router; + + type WeightProvider = (); + type OffchainDB = (); +} + +impl pallet_hyperbridge::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type IsmpHost = Ismp; +} + +impl ismp_parachain::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type IsmpHost = Ismp; + type WeightInfo = crate::weights::ismp_parachain::WeightInfo; +} + +pub struct AssetAdmin; +impl Get for AssetAdmin { + fn get() -> AccountId { + Treasury::account_id() + } +} + +parameter_types! { + pub const NativeAssetId: Location = Location::here(); +} + +impl pallet_token_gateway::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type Dispatcher = Hyperbridge; + type Assets = Fungibles; + #[cfg(not(feature = "runtime-benchmarks"))] + type CreateOrigin = RootOrCollectiveProportion; + #[cfg(feature = "runtime-benchmarks")] + type CreateOrigin = frame_system::EnsureSigned; + type AssetAdmin = AssetAdmin; + type Decimals = ConstU8<15>; + type NativeCurrency = Balances; + type NativeAssetId = NativeAssetId; + type EvmToSubstrate = (); + type WeightInfo = crate::weights::pallet_token_gateway::WeightInfo; +} diff --git a/runtimes/peregrine/src/lib.rs b/runtimes/peregrine/src/lib.rs index 72d941abe2..17b72c9f50 100644 --- a/runtimes/peregrine/src/lib.rs +++ b/runtimes/peregrine/src/lib.rs @@ -61,6 +61,7 @@ pub use runtime_apis::{api, RuntimeApi}; mod system; use sp_version::RuntimeVersion; pub use system::{SessionKeys, SS_58_PREFIX}; +mod ismp; use crate::runtime_apis::RUNTIME_API_VERSION; mod weights; @@ -183,6 +184,12 @@ construct_runtime! { // DmpQueue: cumulus_pallet_dmp_queue = 85, // Queue and pass DMP messages on to be executed. MessageQueue: pallet_message_queue = 86, + + // ISMP + Ismp: pallet_ismp = 90, + Hyperbridge: pallet_hyperbridge = 91, + IsmpParachain: ismp_parachain = 92, + TokenGateway: pallet_token_gateway = 93, } } diff --git a/runtimes/peregrine/src/runtime_apis.rs b/runtimes/peregrine/src/runtime_apis.rs index eb7ca8ccb7..5499dae1a4 100644 --- a/runtimes/peregrine/src/runtime_apis.rs +++ b/runtimes/peregrine/src/runtime_apis.rs @@ -4,6 +4,7 @@ use ::xcm::{ v4::{Asset, AssetId, Location}, VersionedAssetId, VersionedLocation, VersionedXcm, }; +use cumulus_pallet_parachain_system::RelayChainState; use cumulus_primitives_aura::Slot; use cumulus_primitives_core::CollationInfo; use frame_support::{ @@ -15,6 +16,11 @@ use frame_support::{ }, weights::Weight, }; +use ismp::{ + consensus::{ConsensusClientId, StateMachineHeight, StateMachineId}, + host::StateMachine, + router::{Request, Response}, +}; use kilt_runtime_api_did::RawDidLinkedInfo; use kilt_support::traits::ItemFilter; use pallet_asset_switch::xcm::AccountId32ToAccountId32JunctionConverter; @@ -49,7 +55,7 @@ use runtime_common::{ AccountId, AuthorityId, Balance, BlockNumber, DidIdentifier, Hash, Nonce, }; use sp_api::impl_runtime_apis; -use sp_core::OpaqueMetadata; +use sp_core::{OpaqueMetadata, H256}; use sp_inherents::{CheckInherentsResult, InherentData}; use sp_metadata_ir::RuntimeApiMetadataIR; use sp_runtime::{ @@ -63,8 +69,9 @@ use crate::{ kilt::{DipProofError, DipProofRequest, NativeAndForeignAssets}, parachain::ConsensusHook, xcm::UniversalLocation, - AssetSwitchPool1, Block, BondedCurrencies, BondedFungibles, Executive, InherentDataExt, ParachainStaking, - ParachainSystem, Runtime, RuntimeCall, RuntimeGenesisConfig, SessionKeys, TransactionPayment, Web3Name, VERSION, + AssetSwitchPool1, Block, BondedCurrencies, BondedFungibles, Executive, InherentDataExt, IsmpParachain, + ParachainStaking, ParachainSystem, Runtime, RuntimeCall, RuntimeGenesisConfig, SessionKeys, TransactionPayment, + Web3Name, VERSION, }; // This is necessary since by default `RUNTIME_API_VERSIONS` generated by @@ -617,6 +624,60 @@ impl_runtime_apis! { } } + impl pallet_ismp_runtime_api::IsmpRuntimeApi::Hash> for Runtime { + fn host_state_machine() -> StateMachine { + ::HostStateMachine::get() + } + + fn challenge_period(state_machine_id: StateMachineId) -> Option { + pallet_ismp::Pallet::::challenge_period(state_machine_id) + } + + /// Fetch all ISMP events in the block, should only be called from runtime-api. + fn block_events() -> Vec<::ismp::events::Event> { + pallet_ismp::Pallet::::block_events() + } + + /// Fetch all ISMP events and their extrinsic metadata, should only be called from runtime-api. + fn block_events_with_metadata() -> Vec<(::ismp::events::Event, Option)> { + pallet_ismp::Pallet::::block_events_with_metadata() + } + + /// Return the scale encoded consensus state + fn consensus_state(id: ConsensusClientId) -> Option> { + pallet_ismp::Pallet::::consensus_states(id) + } + + /// Return the timestamp this client was last updated in seconds + fn state_machine_update_time(height: StateMachineHeight) -> Option { + pallet_ismp::Pallet::::state_machine_update_time(height) + } + + /// Return the latest height of the state machine + fn latest_state_machine_height(id: StateMachineId) -> Option { + pallet_ismp::Pallet::::latest_state_machine_height(id) + } + + /// Get actual requests + fn requests(commitments: Vec) -> Vec { + pallet_ismp::Pallet::::requests(commitments) + } + + /// Get actual requests + fn responses(commitments: Vec) -> Vec { + pallet_ismp::Pallet::::responses(commitments) + } + } + + impl ismp_parachain_runtime_api::IsmpParachainApi for Runtime { + fn para_ids() -> Vec { + IsmpParachain::para_ids() + } + + fn current_relay_chain_state() -> RelayChainState { + IsmpParachain::current_relay_chain_state() + } + } #[cfg(feature = "runtime-benchmarks")] impl frame_benchmarking::Benchmark for Runtime { diff --git a/runtimes/peregrine/src/weights/ismp_parachain.rs b/runtimes/peregrine/src/weights/ismp_parachain.rs new file mode 100644 index 0000000000..b5ce8908eb --- /dev/null +++ b/runtimes/peregrine/src/weights/ismp_parachain.rs @@ -0,0 +1,134 @@ +// KILT Blockchain – +// Copyright (C) 2025, KILT Foundation + +// The KILT Blockchain 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. + +// The KILT Blockchain 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 this program. If not, see . + +// If you feel like getting in touch with us, you can do so at + +//! Autogenerated weights for `ismp_parachain` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-15, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 + +// Executed Command: +// frame-omni-bencher +// v1 +// benchmark +// pallet +// --pallet=ismp-parachain +// --extrinsic=* +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/peregrine-runtime/peregrine_runtime.compact.compressed.wasm +// --header=HEADER-GPL +// --template=.maintain/runtime-weight-template.hbs +// --output=./runtimes/peregrine/src/weights/ + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_imports)] +#![allow(clippy::as_conversions)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `ismp_parachain`. +pub struct WeightInfo(PhantomData); +impl ismp_parachain::WeightInfo for WeightInfo { + /// Storage: `IsmpParachain::Parachains` (r:0 w:100) + /// Proof: `IsmpParachain::Parachains` (`max_values`: None, `max_size`: Some(12), added: 2487, mode: `MaxEncodedLen`) + /// Storage: `Ismp::ChallengePeriod` (r:0 w:100) + /// Proof: `Ismp::ChallengePeriod` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 100]`. + fn add_parachain(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 6_388_000 picoseconds. + Weight::from_parts(6_725_135, 0) + .saturating_add(Weight::from_parts(0, 0)) + // Standard Error: 4_114 + .saturating_add(Weight::from_parts(1_995_999, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(n.into()))) + } + /// Storage: `IsmpParachain::Parachains` (r:0 w:5) + /// Proof: `IsmpParachain::Parachains` (`max_values`: None, `max_size`: Some(12), added: 2487, mode: `MaxEncodedLen`) + /// The range of component `n` is `[1, 100]`. + fn remove_parachain(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 7_479_000 picoseconds. + Weight::from_parts(8_755_956, 0) + .saturating_add(Weight::from_parts(0, 0)) + // Standard Error: 475 + .saturating_add(Weight::from_parts(14_864, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().writes(5)) + } + /// Storage: `IsmpParachain::ConsensusUpdated` (r:1 w:1) + /// Proof: `IsmpParachain::ConsensusUpdated` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + /// Storage: `Ismp::ConsensusStateClient` (r:1 w:0) + /// Proof: `Ismp::ConsensusStateClient` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::ConsensusStates` (r:1 w:1) + /// Proof: `Ismp::ConsensusStates` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::FrozenConsensusClients` (r:1 w:0) + /// Proof: `Ismp::FrozenConsensusClients` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Timestamp::Now` (r:1 w:0) + /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `Ismp::UnbondingPeriod` (r:1 w:0) + /// Proof: `Ismp::UnbondingPeriod` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::ConsensusClientUpdateTime` (r:1 w:1) + /// Proof: `Ismp::ConsensusClientUpdateTime` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `IsmpParachain::RelayChainStateCommitments` (r:1 w:0) + /// Proof: `IsmpParachain::RelayChainStateCommitments` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `ParachainSystem::ValidationData` (r:1 w:0) + /// Proof: `ParachainSystem::ValidationData` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `IsmpParachain::Parachains` (r:2 w:0) + /// Proof: `IsmpParachain::Parachains` (`max_values`: None, `max_size`: Some(12), added: 2487, mode: `MaxEncodedLen`) + /// Storage: `Ismp::LatestStateMachineHeight` (r:1 w:1) + /// Proof: `Ismp::LatestStateMachineHeight` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::StateCommitments` (r:1 w:1) + /// Proof: `Ismp::StateCommitments` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::StateMachineUpdateTime` (r:0 w:1) + /// Proof: `Ismp::StateMachineUpdateTime` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x7374617465859b5c7d03c68da7d492f1cc906e886ce9b49cc592d063993bdd8c` (r:1 w:1) + /// Proof: UNKNOWN KEY `0x7374617465859b5c7d03c68da7d492f1cc906e886ce9b49cc592d063993bdd8c` (r:1 w:1) + fn update_parachain_consensus() -> Weight { + // Proof Size summary in bytes: + // Measured: `753` + // Estimated: `5964` + // Minimum execution time: 75_559_000 picoseconds. + Weight::from_parts(79_529_000, 0) + .saturating_add(Weight::from_parts(0, 5964)) + .saturating_add(T::DbWeight::get().reads(14)) + .saturating_add(T::DbWeight::get().writes(7)) + } +} + +#[cfg(test)] +mod tests { + #[test] + fn test_update_parachain_consensus() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 5964 + ); + } +} diff --git a/runtimes/peregrine/src/weights/mod.rs b/runtimes/peregrine/src/weights/mod.rs index e6928d4e01..d0f96e2253 100644 --- a/runtimes/peregrine/src/weights/mod.rs +++ b/runtimes/peregrine/src/weights/mod.rs @@ -23,6 +23,7 @@ pub mod cumulus_pallet_parachain_system; pub mod delegation; pub mod did; pub mod frame_system; +pub mod ismp_parachain; pub mod pallet_asset_switch; pub mod pallet_assets; pub mod pallet_balances; @@ -48,6 +49,7 @@ pub mod pallet_technical_committee_collective; pub mod pallet_technical_membership; pub mod pallet_timestamp; pub mod pallet_tips; +pub mod pallet_token_gateway; pub mod pallet_treasury; pub mod pallet_utility; pub mod pallet_vesting; diff --git a/runtimes/peregrine/src/weights/pallet_token_gateway.rs b/runtimes/peregrine/src/weights/pallet_token_gateway.rs new file mode 100644 index 0000000000..6f27639b3d --- /dev/null +++ b/runtimes/peregrine/src/weights/pallet_token_gateway.rs @@ -0,0 +1,182 @@ +// KILT Blockchain – +// Copyright (C) 2025, KILT Foundation + +// The KILT Blockchain 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. + +// The KILT Blockchain 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 this program. If not, see . + +// If you feel like getting in touch with us, you can do so at + +//! Autogenerated weights for `pallet_token_gateway` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-15, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 + +// Executed Command: +// frame-omni-bencher +// v1 +// benchmark +// pallet +// --pallet=pallet-token-gateway +// --extrinsic=* +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/peregrine-runtime/peregrine_runtime.compact.compressed.wasm +// --header=HEADER-GPL +// --template=.maintain/runtime-weight-template.hbs +// --output=./runtimes/peregrine/src/weights/ + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_imports)] +#![allow(clippy::as_conversions)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_token_gateway`. +pub struct WeightInfo(PhantomData); +impl pallet_token_gateway::WeightInfo for WeightInfo { + /// Storage: `Hyperbridge::HostParams` (r:1 w:0) + /// Proof: `Hyperbridge::HostParams` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::Nonce` (r:1 w:1) + /// Proof: `Ismp::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `TokenGateway::Precisions` (r:0 w:100) + /// Proof: `TokenGateway::Precisions` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `TokenGateway::NativeAssets` (r:0 w:1) + /// Proof: `TokenGateway::NativeAssets` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `TokenGateway::LocalAssets` (r:0 w:1) + /// Proof: `TokenGateway::LocalAssets` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `TokenGateway::SupportedAssets` (r:0 w:1) + /// Proof: `TokenGateway::SupportedAssets` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e74736dbf7451ee5809df8f986d7fa449` (r:1 w:1) + /// Proof: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e74736dbf7451ee5809df8f986d7fa449` (r:1 w:1) + /// The range of component `x` is `[1, 100]`. + fn create_erc6160_asset(x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `290` + // Estimated: `3755` + // Minimum execution time: 31_268_000 picoseconds. + Weight::from_parts(30_872_263, 0) + .saturating_add(Weight::from_parts(0, 3755)) + // Standard Error: 3_317 + .saturating_add(Weight::from_parts(1_558_070, 0).saturating_mul(x.into())) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(5)) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(x.into()))) + } + /// Storage: `TokenGateway::SupportedAssets` (r:1 w:0) + /// Proof: `TokenGateway::SupportedAssets` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `TokenGateway::NativeAssets` (r:1 w:0) + /// Proof: `TokenGateway::NativeAssets` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) + /// Storage: `TokenGateway::Precisions` (r:1 w:0) + /// Proof: `TokenGateway::Precisions` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::Nonce` (r:1 w:1) + /// Proof: `Ismp::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e747387c60cc3838067ec43c7c32db115` (r:1 w:1) + /// Proof: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e747387c60cc3838067ec43c7c32db115` (r:1 w:1) + fn teleport() -> Weight { + // Proof Size summary in bytes: + // Measured: `732` + // Estimated: `4197` + // Minimum execution time: 64_709_000 picoseconds. + Weight::from_parts(66_906_000, 0) + .saturating_add(Weight::from_parts(0, 4197)) + .saturating_add(T::DbWeight::get().reads(6)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `TokenGateway::TokenGatewayAddresses` (r:0 w:1) + /// Proof: `TokenGateway::TokenGatewayAddresses` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `x` is `[1, 100]`. + fn set_token_gateway_addresses(_x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 3_490_000 picoseconds. + Weight::from_parts(4_037_612, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Hyperbridge::HostParams` (r:1 w:0) + /// Proof: `Hyperbridge::HostParams` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::Nonce` (r:1 w:1) + /// Proof: `Ismp::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e7473063ffee434bbc145cf1b300aac5e` (r:1 w:1) + /// Proof: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e7473063ffee434bbc145cf1b300aac5e` (r:1 w:1) + fn update_erc6160_asset() -> Weight { + // Proof Size summary in bytes: + // Measured: `455` + // Estimated: `3920` + // Minimum execution time: 24_180_000 picoseconds. + Weight::from_parts(25_391_000, 0) + .saturating_add(Weight::from_parts(0, 3920)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(2)) + } + /// Storage: `TokenGateway::Precisions` (r:0 w:100) + /// Proof: `TokenGateway::Precisions` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `x` is `[1, 100]`. + fn update_asset_precision(x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 3_861_000 picoseconds. + Weight::from_parts(2_719_181, 0) + .saturating_add(Weight::from_parts(0, 0)) + // Standard Error: 3_076 + .saturating_add(Weight::from_parts(1_528_011, 0).saturating_mul(x.into())) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(x.into()))) + } +} + +#[cfg(test)] +mod tests { + #[test] + fn test_create_erc6160_asset() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 3755 + ); + } + #[test] + fn test_teleport() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 4197 + ); + } + #[test] + fn test_update_erc6160_asset() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 3920 + ); + } +} diff --git a/runtimes/spiritnet/Cargo.toml b/runtimes/spiritnet/Cargo.toml index 6241c377c4..a0a8579102 100644 --- a/runtimes/spiritnet/Cargo.toml +++ b/runtimes/spiritnet/Cargo.toml @@ -19,6 +19,7 @@ sp-io = { workspace = true } [dependencies] # External dependencies +anyhow = { workspace = true } cfg-if = { workspace = true } log = { workspace = true } parity-scale-codec = { workspace = true, features = ["derive"] } @@ -33,6 +34,7 @@ kilt-runtime-api-did = { workspace = true } kilt-runtime-api-public-credentials = { workspace = true } kilt-runtime-api-staking = { workspace = true } pallet-asset-switch-runtime-api = { workspace = true } +pallet-bonded-coins-runtime-api = { workspace = true } pallet-transaction-payment-rpc-runtime-api = { workspace = true } # KILT pallets & primitives @@ -43,6 +45,7 @@ did = { workspace = true } kilt-runtime-api-dip-provider = { workspace = true } kilt-support = { workspace = true } pallet-asset-switch = { workspace = true } +pallet-bonded-coins = { workspace = true } pallet-deposit-storage = { workspace = true } pallet-did-lookup = { workspace = true } pallet-dip-provider = { workspace = true } @@ -122,6 +125,15 @@ frame-system-benchmarking = { workspace = true, optional = true } # Runtime tests frame-try-runtime = { workspace = true, optional = true } +# ISMP +ismp = { workspace = true } +ismp-parachain = { workspace = true } +ismp-parachain-runtime-api = { workspace = true } +pallet-hyperbridge = { workspace = true } +pallet-ismp = { workspace = true, features = ["unsigned"] } +pallet-ismp-runtime-api = { workspace = true } +pallet-token-gateway = { workspace = true } + [features] default = ["std"] fast-gov = ["runtime-common/fast-gov"] @@ -132,7 +144,6 @@ runtime-benchmarks = [ "cumulus-pallet-parachain-system/runtime-benchmarks", "cumulus-pallet-session-benchmarking/runtime-benchmarks", "cumulus-pallet-xcmp-queue/runtime-benchmarks", - "cumulus-primitives-core/runtime-benchmarks", "cumulus-primitives-utility/runtime-benchmarks", "delegation/runtime-benchmarks", "did/runtime-benchmarks", @@ -141,10 +152,12 @@ runtime-benchmarks = [ "frame-system-benchmarking/runtime-benchmarks", "frame-system/runtime-benchmarks", "hex-literal", + "ismp-parachain/runtime-benchmarks", "kilt-support/runtime-benchmarks", "pallet-asset-switch/runtime-benchmarks", "pallet-assets/runtime-benchmarks", "pallet-balances/runtime-benchmarks", + "pallet-bonded-coins/runtime-benchmarks", "pallet-collective/runtime-benchmarks", "pallet-democracy/runtime-benchmarks", "pallet-deposit-storage/runtime-benchmarks", @@ -161,13 +174,13 @@ runtime-benchmarks = [ "pallet-scheduler/runtime-benchmarks", "pallet-timestamp/runtime-benchmarks", "pallet-tips/runtime-benchmarks", + "pallet-token-gateway/runtime-benchmarks", "pallet-treasury/runtime-benchmarks", "pallet-utility/runtime-benchmarks", "pallet-vesting/runtime-benchmarks", "pallet-web3-names/runtime-benchmarks", "pallet-xcm/runtime-benchmarks", "parachain-staking/runtime-benchmarks", - "polkadot-runtime-common/runtime-benchmarks", "public-credentials/runtime-benchmarks", "runtime-common/runtime-benchmarks", "sp-runtime/runtime-benchmarks", @@ -196,6 +209,9 @@ std = [ "frame-system-rpc-runtime-api/std", "frame-system/std", "frame-try-runtime?/std", + "ismp-parachain-runtime-api/std", + "ismp-parachain/std", + "ismp/std", "kilt-runtime-api-did/std", "kilt-runtime-api-dip-provider/std", "kilt-runtime-api-public-credentials/std", @@ -208,6 +224,8 @@ std = [ "pallet-aura/std", "pallet-authorship/std", "pallet-balances/std", + "pallet-bonded-coins-runtime-api/std", + "pallet-bonded-coins/std", "pallet-collective/std", "pallet-democracy/std", "pallet-deposit-storage/std", @@ -215,6 +233,8 @@ std = [ "pallet-dip-provider/std", "pallet-indices/std", "pallet-inflation/std", + "pallet-ismp-runtime-api/std", + "pallet-ismp/std", "pallet-membership/std", "pallet-message-queue/std", "pallet-migration/std", @@ -225,6 +245,7 @@ std = [ "pallet-session/std", "pallet-timestamp/std", "pallet-tips/std", + "pallet-token-gateway/std", "pallet-transaction-payment-rpc-runtime-api/std", "pallet-transaction-payment/std", "pallet-treasury/std", @@ -270,12 +291,14 @@ try-runtime = [ "frame-support/try-runtime", "frame-system/try-runtime", "frame-try-runtime", + "ismp-parachain/try-runtime", "kilt-support/try-runtime", "pallet-asset-switch/try-runtime", "pallet-assets/try-runtime", "pallet-aura/try-runtime", "pallet-authorship/try-runtime", "pallet-balances/try-runtime", + "pallet-bonded-coins/try-runtime", "pallet-collective/try-runtime", "pallet-democracy/try-runtime", "pallet-deposit-storage/try-runtime", @@ -283,6 +306,7 @@ try-runtime = [ "pallet-dip-provider/try-runtime", "pallet-indices/try-runtime", "pallet-inflation/try-runtime", + "pallet-ismp/try-runtime", "pallet-membership/try-runtime", "pallet-message-queue/try-runtime", "pallet-migration/try-runtime", @@ -293,6 +317,7 @@ try-runtime = [ "pallet-session/try-runtime", "pallet-timestamp/try-runtime", "pallet-tips/try-runtime", + "pallet-token-gateway/try-runtime", "pallet-transaction-payment/try-runtime", "pallet-treasury/try-runtime", "pallet-utility/try-runtime", diff --git a/runtimes/spiritnet/src/benchmarks/mod.rs b/runtimes/spiritnet/src/benchmarks/mod.rs index e26c2e22bf..90bf16c4c1 100644 --- a/runtimes/spiritnet/src/benchmarks/mod.rs +++ b/runtimes/spiritnet/src/benchmarks/mod.rs @@ -38,10 +38,10 @@ use xcm::v4::{Asset, Assets, Fungibility, Location}; use crate::{ xcm::XcmConfig, AllPalletsWithSystem, AssetSwitchPool1, Attestation, Balances, Collators, Council, Ctype, - Delegation, Democracy, DepositStorage, Did, DidLookup, DipProvider, Fungibles, Indices, MessageQueue, Migration, - Multisig, ParachainStaking, ParachainSystem, Preimage, Proxy, PublicCredentials, Runtime, RuntimeEvent, Scheduler, - System, TechnicalCommittee, TechnicalMembership, Timestamp, Tips, TipsMembership, Treasury, Utility, Vesting, - Web3Names, + Delegation, Democracy, DepositStorage, Did, DidLookup, DipProvider, Fungibles, Indices, IsmpParachain, + MessageQueue, Migration, Multisig, ParachainStaking, ParachainSystem, Preimage, Proxy, PublicCredentials, Runtime, + RuntimeEvent, Scheduler, System, TechnicalCommittee, TechnicalMembership, Timestamp, Tips, TipsMembership, + TokenGateway, Treasury, Utility, Vesting, Web3Names, }; pub(crate) mod asset_switch; @@ -100,6 +100,8 @@ define_benchmarks!( [pallet_did_lookup, DidLookup] // pallet_web3_names instances [pallet_web3_names, Web3Names] + [ismp_parachain, IsmpParachain] + [pallet_token_gateway, TokenGateway] ); impl pallet_xcm::benchmarking::Config for Runtime { diff --git a/runtimes/spiritnet/src/governance.rs b/runtimes/spiritnet/src/governance.rs index 8fea2144de..bd8b8d730e 100644 --- a/runtimes/spiritnet/src/governance.rs +++ b/runtimes/spiritnet/src/governance.rs @@ -157,7 +157,7 @@ impl pallet_collective::Config for Runtime { type SetMembersOrigin = EnsureRoot; } -type TechnicalCollective = pallet_collective::Instance2; +pub(crate) type TechnicalCollective = pallet_collective::Instance2; impl pallet_collective::Config for Runtime { type RuntimeOrigin = RuntimeOrigin; type MaxProposalWeight = MaxProposalWeight; diff --git a/runtimes/spiritnet/src/ismp.rs b/runtimes/spiritnet/src/ismp.rs new file mode 100644 index 0000000000..b4579db386 --- /dev/null +++ b/runtimes/spiritnet/src/ismp.rs @@ -0,0 +1,103 @@ +// KILT Blockchain – +// Copyright (C) 2025, KILT Foundation + +// The KILT Blockchain 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. + +// The KILT Blockchain 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 this program. If not, see . + +// If you feel like getting in touch with us, you can do so at + +use frame_support::parameter_types; +use ismp::{host::StateMachine, module::IsmpModule, router::IsmpRouter}; +use runtime_common::{AccountId, Balance}; +use sp_core::{ConstU8, Get}; +use sp_std::{boxed::Box, vec::Vec}; +use xcm::v4::Location; + +use crate::{ + governance::{RootOrCollectiveProportion, TechnicalCollective}, + Balances, Fungibles, Hyperbridge, Ismp, IsmpParachain, Runtime, RuntimeEvent, Timestamp, TokenGateway, Treasury, +}; + +parameter_types! { + // The hyperbridge parachain on Polkadot + pub const Coprocessor: Option = Some(StateMachine::Polkadot(3367)); + pub const HostStateMachine: StateMachine = StateMachine::Polkadot(2086); +} + +#[derive(Default)] +pub struct Router; + +impl IsmpRouter for Router { + fn module_for_id(&self, input: Vec) -> Result, anyhow::Error> { + match input.as_slice() { + pallet_hyperbridge::PALLET_HYPERBRIDGE_ID => Ok(Box::new(pallet_hyperbridge::Pallet::::default())), + id if TokenGateway::is_token_gateway(id) => { + Ok(Box::new(pallet_token_gateway::Pallet::::default())) + } + _ => Err(ismp::Error::ModuleNotFound(input))?, + } + } +} + +impl pallet_ismp::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type AdminOrigin = RootOrCollectiveProportion; + type HostStateMachine = HostStateMachine; + type TimestampProvider = Timestamp; + type Balance = Balance; + type Currency = Balances; + type Coprocessor = Coprocessor; + type ConsensusClients = (ismp_parachain::ParachainConsensusClient,); + type Router = Router; + + type WeightProvider = (); + type OffchainDB = (); +} + +impl pallet_hyperbridge::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type IsmpHost = Ismp; +} + +impl ismp_parachain::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type IsmpHost = Ismp; + type WeightInfo = crate::weights::ismp_parachain::WeightInfo; +} + +pub struct AssetAdmin; +impl Get for AssetAdmin { + fn get() -> AccountId { + Treasury::account_id() + } +} + +parameter_types! { + pub const NativeAssetId: Location = Location::here(); +} + +impl pallet_token_gateway::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + type Dispatcher = Hyperbridge; + type Assets = Fungibles; + #[cfg(not(feature = "runtime-benchmarks"))] + type CreateOrigin = RootOrCollectiveProportion; + #[cfg(feature = "runtime-benchmarks")] + type CreateOrigin = frame_system::EnsureSigned; + type AssetAdmin = AssetAdmin; + type Decimals = ConstU8<15>; + type NativeCurrency = Balances; + type NativeAssetId = NativeAssetId; + type EvmToSubstrate = (); + type WeightInfo = crate::weights::pallet_token_gateway::WeightInfo; +} diff --git a/runtimes/spiritnet/src/lib.rs b/runtimes/spiritnet/src/lib.rs index 56400590c9..351710036b 100644 --- a/runtimes/spiritnet/src/lib.rs +++ b/runtimes/spiritnet/src/lib.rs @@ -60,6 +60,7 @@ mod system; use sp_version::RuntimeVersion; pub use system::{SessionKeys, SS_58_PREFIX}; pub mod genesis_state; +mod ismp; use crate::runtime_apis::RUNTIME_API_VERSION; mod weights; @@ -176,6 +177,12 @@ construct_runtime! { // DmpQueue: cumulus_pallet_dmp_queue = 85, // Queue and pass DMP messages on to be executed. MessageQueue: pallet_message_queue = 86, + + // ISMP + Ismp: pallet_ismp = 90, + Hyperbridge: pallet_hyperbridge = 91, + IsmpParachain: ismp_parachain = 92, + TokenGateway: pallet_token_gateway = 93, } } diff --git a/runtimes/spiritnet/src/runtime_apis.rs b/runtimes/spiritnet/src/runtime_apis.rs index 3bce8a08f4..c6ef1b0adb 100644 --- a/runtimes/spiritnet/src/runtime_apis.rs +++ b/runtimes/spiritnet/src/runtime_apis.rs @@ -4,6 +4,7 @@ use ::xcm::{ v4::{Asset, AssetId, Location}, VersionedAssetId, VersionedLocation, VersionedXcm, }; +use cumulus_pallet_parachain_system::RelayChainState; use cumulus_primitives_aura::Slot; use cumulus_primitives_core::CollationInfo; use frame_support::{ @@ -12,6 +13,11 @@ use frame_support::{ traits::PalletInfoAccess, weights::Weight, }; +use ismp::{ + consensus::{ConsensusClientId, StateMachineHeight, StateMachineId}, + host::StateMachine, + router::{Request, Response}, +}; use kilt_runtime_api_did::RawDidLinkedInfo; use kilt_support::traits::ItemFilter; use pallet_asset_switch::xcm::AccountId32ToAccountId32JunctionConverter; @@ -31,7 +37,7 @@ use runtime_common::{ AccountId, AuthorityId, Balance, BlockNumber, DidIdentifier, Hash, Nonce, }; use sp_api::impl_runtime_apis; -use sp_core::OpaqueMetadata; +use sp_core::{OpaqueMetadata, H256}; use sp_inherents::{CheckInherentsResult, InherentData}; use sp_metadata_ir::RuntimeApiMetadataIR; use sp_runtime::{ @@ -45,8 +51,8 @@ use crate::{ kilt::{DipProofError, DipProofRequest}, parachain::ConsensusHook, xcm::UniversalLocation, - AssetSwitchPool1, Block, Executive, InherentDataExt, ParachainStaking, ParachainSystem, Runtime, RuntimeCall, - RuntimeGenesisConfig, SessionKeys, TransactionPayment, Web3Name, VERSION, + AssetSwitchPool1, Block, Executive, InherentDataExt, IsmpParachain, ParachainStaking, ParachainSystem, Runtime, + RuntimeCall, RuntimeGenesisConfig, SessionKeys, TransactionPayment, Web3Name, VERSION, }; // This is necessary since by default `RUNTIME_API_VERSIONS` generated by @@ -454,6 +460,63 @@ impl_runtime_apis! { } } + + impl pallet_ismp_runtime_api::IsmpRuntimeApi::Hash> for Runtime { + fn host_state_machine() -> StateMachine { + ::HostStateMachine::get() + } + + fn challenge_period(state_machine_id: StateMachineId) -> Option { + pallet_ismp::Pallet::::challenge_period(state_machine_id) + } + + /// Fetch all ISMP events in the block, should only be called from runtime-api. + fn block_events() -> Vec<::ismp::events::Event> { + pallet_ismp::Pallet::::block_events() + } + + /// Fetch all ISMP events and their extrinsic metadata, should only be called from runtime-api. + fn block_events_with_metadata() -> Vec<(::ismp::events::Event, Option)> { + pallet_ismp::Pallet::::block_events_with_metadata() + } + + /// Return the scale encoded consensus state + fn consensus_state(id: ConsensusClientId) -> Option> { + pallet_ismp::Pallet::::consensus_states(id) + } + + /// Return the timestamp this client was last updated in seconds + fn state_machine_update_time(height: StateMachineHeight) -> Option { + pallet_ismp::Pallet::::state_machine_update_time(height) + } + + /// Return the latest height of the state machine + fn latest_state_machine_height(id: StateMachineId) -> Option { + pallet_ismp::Pallet::::latest_state_machine_height(id) + } + + /// Get actual requests + fn requests(commitments: Vec) -> Vec { + pallet_ismp::Pallet::::requests(commitments) + } + + /// Get actual requests + fn responses(commitments: Vec) -> Vec { + pallet_ismp::Pallet::::responses(commitments) + } + } + + impl ismp_parachain_runtime_api::IsmpParachainApi for Runtime { + fn para_ids() -> Vec { + IsmpParachain::para_ids() + } + + fn current_relay_chain_state() -> RelayChainState { + IsmpParachain::current_relay_chain_state() + } + } + + #[cfg(feature = "runtime-benchmarks")] impl frame_benchmarking::Benchmark for Runtime { fn benchmark_metadata(extra: bool) -> ( diff --git a/runtimes/spiritnet/src/weights/ismp_parachain.rs b/runtimes/spiritnet/src/weights/ismp_parachain.rs new file mode 100644 index 0000000000..dafd48f957 --- /dev/null +++ b/runtimes/spiritnet/src/weights/ismp_parachain.rs @@ -0,0 +1,134 @@ +// KILT Blockchain – +// Copyright (C) 2025, KILT Foundation + +// The KILT Blockchain 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. + +// The KILT Blockchain 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 this program. If not, see . + +// If you feel like getting in touch with us, you can do so at + +//! Autogenerated weights for `ismp_parachain` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-15, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 + +// Executed Command: +// frame-omni-bencher +// v1 +// benchmark +// pallet +// --pallet=ismp-parachain +// --extrinsic=* +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/spiritnet-runtime/spiritnet_runtime.compact.compressed.wasm +// --header=HEADER-GPL +// --template=.maintain/runtime-weight-template.hbs +// --output=./runtimes/spiritnet/src/weights/ + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_imports)] +#![allow(clippy::as_conversions)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `ismp_parachain`. +pub struct WeightInfo(PhantomData); +impl ismp_parachain::WeightInfo for WeightInfo { + /// Storage: `IsmpParachain::Parachains` (r:0 w:100) + /// Proof: `IsmpParachain::Parachains` (`max_values`: None, `max_size`: Some(12), added: 2487, mode: `MaxEncodedLen`) + /// Storage: `Ismp::ChallengePeriod` (r:0 w:100) + /// Proof: `Ismp::ChallengePeriod` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[1, 100]`. + fn add_parachain(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 6_230_000 picoseconds. + Weight::from_parts(5_017_544, 0) + .saturating_add(Weight::from_parts(0, 0)) + // Standard Error: 3_189 + .saturating_add(Weight::from_parts(1_970_967, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().writes((2_u64).saturating_mul(n.into()))) + } + /// Storage: `IsmpParachain::Parachains` (r:0 w:5) + /// Proof: `IsmpParachain::Parachains` (`max_values`: None, `max_size`: Some(12), added: 2487, mode: `MaxEncodedLen`) + /// The range of component `n` is `[1, 100]`. + fn remove_parachain(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 7_446_000 picoseconds. + Weight::from_parts(8_612_220, 0) + .saturating_add(Weight::from_parts(0, 0)) + // Standard Error: 490 + .saturating_add(Weight::from_parts(12_386, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().writes(5)) + } + /// Storage: `IsmpParachain::ConsensusUpdated` (r:1 w:1) + /// Proof: `IsmpParachain::ConsensusUpdated` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) + /// Storage: `Ismp::ConsensusStateClient` (r:1 w:0) + /// Proof: `Ismp::ConsensusStateClient` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::ConsensusStates` (r:1 w:1) + /// Proof: `Ismp::ConsensusStates` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::FrozenConsensusClients` (r:1 w:0) + /// Proof: `Ismp::FrozenConsensusClients` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Timestamp::Now` (r:1 w:0) + /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`) + /// Storage: `Ismp::UnbondingPeriod` (r:1 w:0) + /// Proof: `Ismp::UnbondingPeriod` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::ConsensusClientUpdateTime` (r:1 w:1) + /// Proof: `Ismp::ConsensusClientUpdateTime` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `IsmpParachain::RelayChainStateCommitments` (r:1 w:0) + /// Proof: `IsmpParachain::RelayChainStateCommitments` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `MaxEncodedLen`) + /// Storage: `ParachainSystem::ValidationData` (r:1 w:0) + /// Proof: `ParachainSystem::ValidationData` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `IsmpParachain::Parachains` (r:2 w:0) + /// Proof: `IsmpParachain::Parachains` (`max_values`: None, `max_size`: Some(12), added: 2487, mode: `MaxEncodedLen`) + /// Storage: `Ismp::LatestStateMachineHeight` (r:1 w:1) + /// Proof: `Ismp::LatestStateMachineHeight` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::StateCommitments` (r:1 w:1) + /// Proof: `Ismp::StateCommitments` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::StateMachineUpdateTime` (r:0 w:1) + /// Proof: `Ismp::StateMachineUpdateTime` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x7374617465859b5c7d03c68da7d492f1cc906e886ce9b49cc592d063993bdd8c` (r:1 w:1) + /// Proof: UNKNOWN KEY `0x7374617465859b5c7d03c68da7d492f1cc906e886ce9b49cc592d063993bdd8c` (r:1 w:1) + fn update_parachain_consensus() -> Weight { + // Proof Size summary in bytes: + // Measured: `753` + // Estimated: `5964` + // Minimum execution time: 75_663_000 picoseconds. + Weight::from_parts(77_561_000, 0) + .saturating_add(Weight::from_parts(0, 5964)) + .saturating_add(T::DbWeight::get().reads(14)) + .saturating_add(T::DbWeight::get().writes(7)) + } +} + +#[cfg(test)] +mod tests { + #[test] + fn test_update_parachain_consensus() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 5964 + ); + } +} diff --git a/runtimes/spiritnet/src/weights/mod.rs b/runtimes/spiritnet/src/weights/mod.rs index b4f54e2937..ae474c2037 100644 --- a/runtimes/spiritnet/src/weights/mod.rs +++ b/runtimes/spiritnet/src/weights/mod.rs @@ -23,6 +23,7 @@ pub mod cumulus_pallet_parachain_system; pub mod delegation; pub mod did; pub mod frame_system; +pub mod ismp_parachain; pub mod pallet_asset_switch; pub mod pallet_assets; pub mod pallet_balances; @@ -45,6 +46,7 @@ pub mod pallet_technical_committee_collective; pub mod pallet_technical_membership; pub mod pallet_timestamp; pub mod pallet_tips; +pub mod pallet_token_gateway; pub mod pallet_treasury; pub mod pallet_utility; pub mod pallet_vesting; diff --git a/runtimes/spiritnet/src/weights/pallet_token_gateway.rs b/runtimes/spiritnet/src/weights/pallet_token_gateway.rs new file mode 100644 index 0000000000..6d3ffaf04d --- /dev/null +++ b/runtimes/spiritnet/src/weights/pallet_token_gateway.rs @@ -0,0 +1,184 @@ +// KILT Blockchain – +// Copyright (C) 2025, KILT Foundation + +// The KILT Blockchain 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. + +// The KILT Blockchain 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 this program. If not, see . + +// If you feel like getting in touch with us, you can do so at + +//! Autogenerated weights for `pallet_token_gateway` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 47.0.0 +//! DATE: 2025-05-15, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `rust-2`, CPU: `12th Gen Intel(R) Core(TM) i9-12900K` +//! EXECUTION: , WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 + +// Executed Command: +// frame-omni-bencher +// v1 +// benchmark +// pallet +// --pallet=pallet-token-gateway +// --extrinsic=* +// --genesis-builder=runtime +// --runtime=./target/release/wbuild/spiritnet-runtime/spiritnet_runtime.compact.compressed.wasm +// --header=HEADER-GPL +// --template=.maintain/runtime-weight-template.hbs +// --output=./runtimes/spiritnet/src/weights/ + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_imports)] +#![allow(clippy::as_conversions)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `pallet_token_gateway`. +pub struct WeightInfo(PhantomData); +impl pallet_token_gateway::WeightInfo for WeightInfo { + /// Storage: `Hyperbridge::HostParams` (r:1 w:0) + /// Proof: `Hyperbridge::HostParams` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::Nonce` (r:1 w:1) + /// Proof: `Ismp::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `TokenGateway::Precisions` (r:0 w:100) + /// Proof: `TokenGateway::Precisions` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `TokenGateway::NativeAssets` (r:0 w:1) + /// Proof: `TokenGateway::NativeAssets` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `TokenGateway::LocalAssets` (r:0 w:1) + /// Proof: `TokenGateway::LocalAssets` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `TokenGateway::SupportedAssets` (r:0 w:1) + /// Proof: `TokenGateway::SupportedAssets` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e74736dbf7451ee5809df8f986d7fa449` (r:1 w:1) + /// Proof: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e74736dbf7451ee5809df8f986d7fa449` (r:1 w:1) + /// The range of component `x` is `[1, 100]`. + fn create_erc6160_asset(x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `290` + // Estimated: `3755` + // Minimum execution time: 29_974_000 picoseconds. + Weight::from_parts(32_747_433, 0) + .saturating_add(Weight::from_parts(0, 3755)) + // Standard Error: 4_554 + .saturating_add(Weight::from_parts(1_675_177, 0).saturating_mul(x.into())) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(5)) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(x.into()))) + } + /// Storage: `TokenGateway::SupportedAssets` (r:1 w:0) + /// Proof: `TokenGateway::SupportedAssets` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `TokenGateway::NativeAssets` (r:1 w:0) + /// Proof: `TokenGateway::NativeAssets` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `System::Account` (r:1 w:1) + /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(132), added: 2607, mode: `MaxEncodedLen`) + /// Storage: `TokenGateway::Precisions` (r:1 w:0) + /// Proof: `TokenGateway::Precisions` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::Nonce` (r:1 w:1) + /// Proof: `Ismp::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e747387c60cc3838067ec43c7c32db115` (r:1 w:1) + /// Proof: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e747387c60cc3838067ec43c7c32db115` (r:1 w:1) + fn teleport() -> Weight { + // Proof Size summary in bytes: + // Measured: `732` + // Estimated: `4197` + // Minimum execution time: 64_977_000 picoseconds. + Weight::from_parts(67_796_000, 0) + .saturating_add(Weight::from_parts(0, 4197)) + .saturating_add(T::DbWeight::get().reads(6)) + .saturating_add(T::DbWeight::get().writes(3)) + } + /// Storage: `TokenGateway::TokenGatewayAddresses` (r:0 w:1) + /// Proof: `TokenGateway::TokenGatewayAddresses` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `x` is `[1, 100]`. + fn set_token_gateway_addresses(x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 3_553_000 picoseconds. + Weight::from_parts(3_928_493, 0) + .saturating_add(Weight::from_parts(0, 0)) + // Standard Error: 181 + .saturating_add(Weight::from_parts(1_795, 0).saturating_mul(x.into())) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `Hyperbridge::HostParams` (r:1 w:0) + /// Proof: `Hyperbridge::HostParams` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: `Ismp::Nonce` (r:1 w:1) + /// Proof: `Ismp::Nonce` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) + /// Storage: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e7473063ffee434bbc145cf1b300aac5e` (r:1 w:1) + /// Proof: UNKNOWN KEY `0x52657175657374436f6d6d69746d656e7473063ffee434bbc145cf1b300aac5e` (r:1 w:1) + fn update_erc6160_asset() -> Weight { + // Proof Size summary in bytes: + // Measured: `455` + // Estimated: `3920` + // Minimum execution time: 24_059_000 picoseconds. + Weight::from_parts(25_861_000, 0) + .saturating_add(Weight::from_parts(0, 3920)) + .saturating_add(T::DbWeight::get().reads(3)) + .saturating_add(T::DbWeight::get().writes(2)) + } + /// Storage: `TokenGateway::Precisions` (r:0 w:100) + /// Proof: `TokenGateway::Precisions` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `x` is `[1, 100]`. + fn update_asset_precision(x: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 3_781_000 picoseconds. + Weight::from_parts(3_283_265, 0) + .saturating_add(Weight::from_parts(0, 0)) + // Standard Error: 3_391 + .saturating_add(Weight::from_parts(1_610_356, 0).saturating_mul(x.into())) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(x.into()))) + } +} + +#[cfg(test)] +mod tests { + #[test] + fn test_create_erc6160_asset() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 3755 + ); + } + #[test] + fn test_teleport() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 4197 + ); + } + #[test] + fn test_update_erc6160_asset() { + assert!( + ::BlockWeights::get() + .per_class + .get(frame_support::dispatch::DispatchClass::Normal) + .max_extrinsic + .unwrap_or_else(::max_value) + .proof_size() + > 3920 + ); + } +} diff --git a/scripts/run_benches_for_runtime.sh b/scripts/run_benches_for_runtime.sh index dcd6d06058..b247747ca3 100755 --- a/scripts/run_benches_for_runtime.sh +++ b/scripts/run_benches_for_runtime.sh @@ -52,6 +52,9 @@ pallets=( pallet-did-lookup # `pallet-web3-names` instances pallet-web3-names + # ISMP + ismp-parachain + pallet-token-gateway ) # Add Peregrine-only pallets here!