From 0e31aa70eb5da53ccea45a1396353ae574bc6fab Mon Sep 17 00:00:00 2001 From: Jake Hemmerle Date: Wed, 2 Nov 2022 13:04:15 -0400 Subject: [PATCH] Upgrade Substrate to follow Polkadot releases (#207) * PR #201 key association logic; to be reverted * Revert "PR #201 key association logic; to be reverted" This reverts commit 44a3ed2317e528284318a499f7930f08a0d37631. * added types and comments for readability and clarity in staking-extension * subxt points to temp branch with updated deps * refactored server sp_core stuff to use subxt::ext::sp_core * updated server to use subxt 0.24.0 (from 0.20.0) * BROKEN: updated substrate to polkadot-v0.9.30 and jakehemmerle subxt * update Event and Call to RuntimeEvent and RuntimeCall * fix pallet-free-tx weights * fix pallet-transaction-pause weights * fix pallet-staking-extension weights * updated mock runtimes and tests still needs updated free-tx test since FRAME tx are transactional by default * upgraded pallet-free-tx to substrate-polkadot 0.9.30 * pallets are all updated * entropy-runtime tests pass with runtime-benchmarks * handled client rpc and service...? * entropy compiles and tests * additional refactoring * added entropy-executor * entropy tests pass with runtime-benchmarks * fixed testing-utils * thanks jesse, fixed server, everything works * clippy pt 1 * clippy pt 2 * fixing tests * reenable extensions * fixed a test * updated runtime metadata * added babe and grandpa to rpc * jesse rocks; fixed subxt Config * fmt * clippy * taplo * fmt and clippy * clippy * updated deps * updates --- Cargo.lock | 6441 ++++++++--------- README.md | 65 +- crypto/centralized-keygen/README.md | 2 +- crypto/centralized-keygen/src/lib.rs | 2 +- crypto/kvdb/Cargo.toml | 2 +- crypto/server/Cargo.toml | 10 +- crypto/server/entropy_metadata.scale | Bin 258217 -> 276869 bytes crypto/server/src/chain_api.rs | 14 +- crypto/server/src/main.rs | 2 +- crypto/server/src/message.rs | 8 +- crypto/server/src/signing_client/api.rs | 5 +- crypto/server/src/signing_client/tests.rs | 4 +- crypto/server/src/user/api.rs | 70 +- crypto/server/src/user/errors.rs | 4 +- crypto/server/src/user/mod.rs | 2 +- crypto/server/src/user/tests.rs | 74 +- crypto/server/src/user/unsafe_api.rs | 4 +- crypto/substrate-common/src/types.rs | 2 +- crypto/testing-utils/Cargo.toml | 6 +- crypto/testing-utils/src/chain_api.rs | 5 + crypto/testing-utils/src/context.rs | 41 +- crypto/testing-utils/src/lib.rs | 1 + crypto/testing-utils/src/node_proc.rs | 8 +- node/cli/Cargo.toml | 152 +- node/cli/src/benchmarking.rs | 110 + node/cli/src/chain_spec.rs | 6 +- node/cli/src/cli.rs | 31 +- node/cli/src/command.rs | 173 +- node/cli/src/lib.rs | 3 - node/cli/src/main.rs | 1 + node/cli/src/rpc.rs | 86 +- node/cli/src/service.rs | 249 +- node/rpc/Cargo.toml | 37 - node/rpc/src/lib.rs | 166 - pallets/constraints/Cargo.toml | 18 +- pallets/constraints/src/benchmarking.rs | 4 +- pallets/constraints/src/lib.rs | 2 +- pallets/constraints/src/mock.rs | 8 +- pallets/constraints/src/tests.rs | 18 +- pallets/constraints/src/weights.rs | 16 +- pallets/free-tx/Cargo.toml | 36 +- pallets/free-tx/src/benchmarking.rs | 2 +- pallets/free-tx/src/lib.rs | 44 +- pallets/free-tx/src/mock.rs | 35 +- pallets/free-tx/src/tests.rs | 100 +- pallets/free-tx/src/weights.rs | 48 +- pallets/propagation/Cargo.toml | 40 +- pallets/propagation/src/lib.rs | 2 +- pallets/propagation/src/mock.rs | 33 +- pallets/propagation/src/tests.rs | 4 +- pallets/relayer/Cargo.toml | 34 +- pallets/relayer/src/benchmarking.rs | 6 +- pallets/relayer/src/lib.rs | 26 +- pallets/relayer/src/mock.rs | 31 +- pallets/relayer/src/tests.rs | 59 +- pallets/relayer/src/weights.rs | 60 +- pallets/slashing/Cargo.toml | 32 +- pallets/slashing/src/lib.rs | 8 +- pallets/slashing/src/mock.rs | 40 +- pallets/slashing/src/tests.rs | 9 +- pallets/staking/Cargo.toml | 34 +- pallets/staking/src/benchmarking.rs | 10 +- pallets/staking/src/lib.rs | 82 +- pallets/staking/src/mock.rs | 29 +- pallets/staking/src/tests.rs | 39 +- pallets/staking/src/weights.rs | 48 +- pallets/transaction-pause/Cargo.toml | 16 +- pallets/transaction-pause/src/benchmarking.rs | 4 +- pallets/transaction-pause/src/lib.rs | 10 +- pallets/transaction-pause/src/mock.rs | 12 +- pallets/transaction-pause/src/tests.rs | 52 +- pallets/transaction-pause/src/weights.rs | 24 +- runtime/Cargo.toml | 156 +- runtime/src/impls.rs | 60 +- runtime/src/lib.rs | 551 +- runtime/src/weights/pallet_constraints.rs | 8 +- runtime/src/weights/pallet_free_tx.rs | 18 +- runtime/src/weights/pallet_relayer.rs | 30 +- .../src/weights/pallet_staking_extension.rs | 24 +- .../src/weights/pallet_transaction_pause.rs | 12 +- subxttest/Cargo.toml | 4 +- subxttest/src/entropy_metadata.scale | Bin 307262 -> 276869 bytes subxttest/src/main.rs | 17 +- 83 files changed, 5027 insertions(+), 4714 deletions(-) create mode 100644 crypto/testing-utils/src/chain_api.rs create mode 100644 node/cli/src/benchmarking.rs delete mode 100644 node/cli/src/lib.rs delete mode 100644 node/rpc/Cargo.toml delete mode 100644 node/rpc/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 142319ffc..91a8fbd8a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9,7 +9,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" dependencies = [ "lazy_static", - "regex 1.5.5", + "regex 1.6.0", ] [[package]] @@ -52,12 +52,23 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cipher 0.3.0", - "cpufeatures 0.2.2", + "cpufeatures", "opaque-debug 0.3.0", ] +[[package]] +name = "aes" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" +dependencies = [ + "cfg-if", + "cipher 0.4.3", + "cpufeatures", +] + [[package]] name = "aes-gcm" version = "0.9.4" @@ -65,10 +76,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" dependencies = [ "aead 0.4.3", - "aes", + "aes 0.7.5", "cipher 0.3.0", - "ctr", - "ghash", + "ctr 0.8.0", + "ghash 0.4.4", + "subtle 2.4.1", +] + +[[package]] +name = "aes-gcm" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e1366e0c69c9f927b1fa5ce2c7bf9eafc8f9268c0b9800729e8b267612447c" +dependencies = [ + "aead 0.5.1", + "aes 0.8.2", + "cipher 0.4.3", + "ctr 0.9.2", + "ghash 0.5.0", "subtle 2.4.1", ] @@ -78,8 +103,8 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.6", - "once_cell 1.12.0", + "getrandom 0.2.8", + "once_cell 1.16.0", "version_check", ] @@ -94,11 +119,20 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.18" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +dependencies = [ + "memchr 2.5.0", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "memchr 2.4.1", + "libc", ] [[package]] @@ -112,9 +146,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.58" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" [[package]] name = "approx" @@ -122,9 +156,15 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" dependencies = [ - "num-traits 0.2.14", + "num-traits 0.2.15", ] +[[package]] +name = "array-bytes" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a913633b0c922e6b745072795f50d90ebea78ba31a57e2ac8c2fc7b50950949" + [[package]] name = "arrayref" version = "0.3.6" @@ -166,9 +206,9 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "async-channel" -version = "1.6.1" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" +checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28" dependencies = [ "concurrent-queue", "event-listener", @@ -185,73 +225,84 @@ dependencies = [ "concurrent-queue", "fastrand", "futures-lite", - "once_cell 1.12.0", + "once_cell 1.16.0", "slab", ] [[package]] name = "async-global-executor" -version = "2.0.4" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c290043c9a95b05d45e952fb6383c67bcb61471f60cfa21e890dba6654234f43" +checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" dependencies = [ "async-channel", "async-executor", "async-io", - "async-mutex", + "async-lock", "blocking", "futures-lite", - "num_cpus", - "once_cell 1.12.0", + "once_cell 1.16.0", ] [[package]] name = "async-io" -version = "1.6.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a811e6a479f2439f0c04038796b5cfb3d2ad56c230e0f2d3f7b04d68cfee607b" +checksum = "e8121296a9f05be7f34aa4196b1747243b3b62e048bb7906f644f3fbfc490cf7" dependencies = [ + "async-lock", + "autocfg 1.1.0", "concurrent-queue", "futures-lite", "libc", "log", - "once_cell 1.12.0", "parking", "polling", "slab", - "socket2 0.4.4", + "socket2", "waker-fn", "winapi 0.3.9", ] [[package]] name = "async-lock" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" +checksum = "c8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685" dependencies = [ "event-listener", + "futures-lite", ] [[package]] -name = "async-mutex" -version = "1.4.0" +name = "async-process" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" +checksum = "02111fd8655a613c25069ea89fc8d9bb89331fa77486eb3bc059ee757cfa481c" dependencies = [ + "async-io", + "autocfg 1.1.0", + "blocking", + "cfg-if", "event-listener", + "futures-lite", + "libc", + "once_cell 1.16.0", + "signal-hook", + "winapi 0.3.9", ] [[package]] name = "async-std" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52580991739c5cdb36cde8b2a516371c0a3b70dda36d916cc08b82372916808c" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" dependencies = [ "async-channel", "async-global-executor", "async-io", "async-lock", + "async-process", "crossbeam-utils", "futures-channel", "futures-core", @@ -260,10 +311,9 @@ dependencies = [ "gloo-timers", "kv-log-macro", "log", - "memchr 2.4.1", - "num_cpus", - "once_cell 1.12.0", - "pin-project-lite 0.2.8", + "memchr 2.5.0", + "once_cell 1.16.0", + "pin-project-lite 0.2.9", "pin-utils", "slab", "wasm-bindgen-futures", @@ -271,15 +321,16 @@ dependencies = [ [[package]] name = "async-std-resolver" -version = "0.20.4" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf3e776afdf3a2477ef4854b85ba0dff3bd85792f685fb3c68948b4d304e4f0" +checksum = "0f2f8a4a203be3325981310ab243a28e6e4ea55b6519bffce05d41ab60e09ad8" dependencies = [ "async-std", "async-trait", "futures-io", "futures-util", "pin-utils", + "socket2", "trust-dns-resolver", ] @@ -306,45 +357,32 @@ dependencies = [ [[package]] name = "async-task" -version = "4.2.0" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30696a84d817107fc028e049980e09d5e140e8da8f1caeb17e8e950658a3cea9" +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" [[package]] name = "async-trait" -version = "0.1.53" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600" +checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c" dependencies = [ "proc-macro2", "quote", "syn", ] -[[package]] -name = "asynchronous-codec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4401f0a3622dad2e0763fa79e0eb328bc70fb7dccfdd645341f00d671247d6" -dependencies = [ - "bytes 1.1.0", - "futures-sink", - "futures-util", - "memchr 2.4.1", - "pin-project-lite 0.2.8", -] - [[package]] name = "asynchronous-codec" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0de5164e5edbf51c45fb8c2d9664ae1c095cce1b265ecf7569093c0d66ef690" dependencies = [ - "bytes 1.1.0", + "bytes", "futures-sink", "futures-util", - "memchr 2.4.1", - "pin-project-lite 0.2.8", + "memchr 2.5.0", + "pin-project-lite 0.2.9", ] [[package]] @@ -390,13 +428,13 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.64" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" +checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" dependencies = [ "addr2line", "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "miniz_oxide", "object", @@ -405,9 +443,9 @@ dependencies = [ [[package]] name = "base-x" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" [[package]] name = "base16ct" @@ -423,9 +461,9 @@ checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64ct" @@ -435,25 +473,34 @@ checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" [[package]] name = "beef" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed554bd50246729a1ec158d08aa3235d1b69d94ad120ebe187e28894787e736" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" dependencies = [ "serde", ] +[[package]] +name = "beefy-merkle-tree" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "beefy-primitives", + "sp-api", +] + [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] @@ -491,7 +538,7 @@ dependencies = [ "peeking_take_while", "proc-macro2", "quote", - "regex 1.5.5", + "regex 1.6.0", "rustc-hash", "shlex", ] @@ -518,9 +565,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitvec" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1489fcb93a5bb47da0462ca93ad252ad6af2145cce58d10d46a83931ba9f016b" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", @@ -528,24 +575,13 @@ dependencies = [ "wyz", ] -[[package]] -name = "blake2" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" -dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - [[package]] name = "blake2" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388" dependencies = [ - "digest 0.10.3", + "digest 0.10.5", ] [[package]] @@ -560,39 +596,37 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "0.5.11" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" +checksum = "72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127" dependencies = [ "arrayref", - "arrayvec 0.5.2", + "arrayvec 0.7.2", "constant_time_eq", ] [[package]] name = "blake2s_simd" -version = "0.5.11" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2" +checksum = "db539cc2b5f6003621f1cd9ef92d7ded8ea5232c7de0f9faa2de251cd98730d4" dependencies = [ "arrayref", - "arrayvec 0.5.2", + "arrayvec 0.7.2", "constant_time_eq", ] [[package]] name = "blake3" -version = "0.3.8" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" +checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f" dependencies = [ "arrayref", - "arrayvec 0.5.2", + "arrayvec 0.7.2", "cc", - "cfg-if 0.1.10", + "cfg-if", "constant_time_eq", - "crypto-mac 0.8.0", - "digest 0.9.0", ] [[package]] @@ -601,7 +635,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" dependencies = [ - "block-padding 0.1.5", + "block-padding", "byte-tools", "byteorder", "generic-array 0.12.4", @@ -613,15 +647,14 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "block-padding 0.2.1", "generic-array 0.14.6", ] [[package]] name = "block-buffer" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" dependencies = [ "generic-array 0.14.6", ] @@ -635,12 +668,6 @@ dependencies = [ "byte-tools", ] -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - [[package]] name = "blocking" version = "1.2.0" @@ -652,7 +679,7 @@ dependencies = [ "atomic-waker", "fastrand", "futures-lite", - "once_cell 1.12.0", + "once_cell 1.16.0", ] [[package]] @@ -667,7 +694,7 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" dependencies = [ - "memchr 2.4.1", + "memchr 2.5.0", ] [[package]] @@ -681,15 +708,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.9.1" +version = "3.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" [[package]] name = "byte-slice-cast" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c5fdd0166095e1d463fc6cc01aa8ce547ad77a4e84d42eb6762b084e28067e" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "byte-tools" @@ -705,19 +732,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -dependencies = [ - "byteorder", - "iovec", -] - -[[package]] -name = "bytes" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" dependencies = [ "serde", ] @@ -741,9 +758,9 @@ checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" [[package]] name = "camino" -version = "1.0.7" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f3132262930b0522068049f5870a856ab8affc80c70d08b6ecb785771a6fc23" +checksum = "88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e" dependencies = [ "serde", ] @@ -765,16 +782,16 @@ checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" dependencies = [ "camino", "cargo-platform", - "semver 1.0.7", + "semver 1.0.14", "serde", "serde_json", ] [[package]] name = "cc" -version = "1.0.73" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "581f5dba903aac52ea3feb5ec4810848460ee833876f1f9b0fdeab1f19091574" dependencies = [ "jobserver", ] @@ -797,10 +814,13 @@ dependencies = [ ] [[package]] -name = "cfg-if" -version = "0.1.10" +name = "cfg-expr" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "0aacacf4d96c24b2ad6eb8ee6df040e4f27b0d0b39a5710c30091baa830485db" +dependencies = [ + "smallvec 1.10.0", +] [[package]] name = "cfg-if" @@ -809,16 +829,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "chacha20" -version = "0.7.1" +name = "cfg_aliases" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee7ad89dc1128635074c268ee661f90c3f7e83d9fd12910608c36b47d6c3412" -dependencies = [ - "cfg-if 1.0.0", - "cipher 0.3.0", - "cpufeatures 0.1.5", - "zeroize", -] +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chacha20" @@ -826,9 +840,9 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cipher 0.3.0", - "cpufeatures 0.2.2", + "cpufeatures", "zeroize", ] @@ -838,22 +852,9 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7fc89c7c5b9e7a02dfe45cd2367bae382f9ed31c61ca8debe5f827c420a2f08" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cipher 0.4.3", - "cpufeatures 0.2.2", -] - -[[package]] -name = "chacha20poly1305" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1580317203210c517b6d44794abfbe600698276db18127e37ad3e69bf5e848e5" -dependencies = [ - "aead 0.4.3", - "chacha20 0.7.1", - "cipher 0.3.0", - "poly1305 0.7.2", - "zeroize", + "cpufeatures", ] [[package]] @@ -882,34 +883,32 @@ dependencies = [ "zeroize", ] -[[package]] -name = "chameleon" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bd83544cd11113170ce1eee45383928f3f720bc8b305af18c2a3da3547e1ae" - [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" dependencies = [ - "libc", + "iana-time-zone", + "js-sys", "num-integer", - "num-traits 0.2.14", + "num-traits 0.2.15", "time 0.1.44", + "wasm-bindgen", "winapi 0.3.9", ] [[package]] name = "cid" -version = "0.6.1" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff0e3bc0b6446b3f9663c1a6aba6ef06c5aeaa1bc92bd18077be337198ab9768" +checksum = "f6ed9c8b2d17acb8110c46f1da5bf4a696d745e1474a16db0cd2b49cd0249bf2" dependencies = [ + "core2", "multibase", - "multihash 0.13.2", - "unsigned-varint 0.5.1", + "multihash", + "serde", + "unsigned-varint", ] [[package]] @@ -932,20 +931,11 @@ dependencies = [ "zeroize", ] -[[package]] -name = "ckb-merkle-mountain-range" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f061f97d64fd1822664bdfb722f7ae5469a97b77567390f7442be5b5dc82a5b" -dependencies = [ - "cfg-if 0.1.10", -] - [[package]] name = "clang-sys" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc00842eed744b858222c4c9faf7243aafc6d33f92f96935263ef4d8a41ce21" +checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" dependencies = [ "glob", "libc", @@ -969,26 +959,35 @@ dependencies = [ [[package]] name = "clap" -version = "3.1.8" +version = "3.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c47df61d9e16dc010b55dba1952a57d8c215dbb533fd13cdd13369aac73b1c" +checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" dependencies = [ "atty", "bitflags", "clap_derive", + "clap_lex", "indexmap", - "lazy_static", - "os_str_bytes", + "once_cell 1.16.0", "strsim 0.10.0", "termcolor", - "textwrap 0.15.0", + "textwrap 0.16.0", +] + +[[package]] +name = "clap_complete" +version = "3.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f7a2e0a962c45ce25afce14220bc24f9dade0a1787f185cecf96bfba7847cd8" +dependencies = [ + "clap 3.2.23", ] [[package]] name = "clap_derive" -version = "3.1.7" +version = "3.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3aab4734e083b809aaf5794e14e756d1c798d2c69c7f7de7a09a2f5214993c1" +checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" dependencies = [ "heck 0.4.0", "proc-macro-error", @@ -997,6 +996,15 @@ dependencies = [ "syn", ] +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + [[package]] name = "cloudabi" version = "0.0.3" @@ -1006,11 +1014,41 @@ dependencies = [ "bitflags", ] +[[package]] +name = "cmake" +version = "0.1.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" +dependencies = [ + "cc", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "comfy-table" +version = "6.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1090f39f45786ec6dc6286f8ea9c75d0a7ef0a0d3cda674cef0c3af7b307fbc2" +dependencies = [ + "strum", + "strum_macros", + "unicode-width", +] + [[package]] name = "concurrent-queue" -version = "1.2.2" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" +checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" dependencies = [ "cache-padded", ] @@ -1031,27 +1069,21 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" name = "constraints" version = "0.1.0" -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - [[package]] name = "cookie" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d4706de1b0fa5b132270cddffa8585166037822e260a944fe161acd137ca05" +checksum = "344adc371239ef32293cb1c4fe519592fcf21206c79c02854320afcdf3ab4917" dependencies = [ - "aes-gcm", + "aes-gcm 0.10.1", "base64", "hkdf", "hmac 0.12.1", - "percent-encoding 2.1.0", + "percent-encoding", "rand 0.8.5", - "sha2 0.10.2", + "sha2 0.10.6", "subtle 2.4.1", - "time 0.3.11", + "time 0.3.16", "version_check", ] @@ -1072,99 +1104,108 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] -name = "cpp_demangle" -version = "0.3.5" +name = "core2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" dependencies = [ - "cfg-if 1.0.0", + "memchr 2.5.0", ] [[package]] -name = "cpufeatures" -version = "0.1.5" +name = "cpp_demangle" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c99696f6c9dd7f35d486b9d04d7e6e202aa3e8c40d553f2fdf5e7e0c6a71ef" +checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" dependencies = [ - "libc", + "cfg-if", ] [[package]] name = "cpufeatures" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" dependencies = [ "libc", ] [[package]] name = "cranelift-bforest" -version = "0.80.1" +version = "0.88.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62fc68cdb867b7d27b5f33cd65eb11376dfb41a2d09568a1a2c2bc1dc204f4ef" +checksum = "44409ccf2d0f663920cab563d2b79fcd6b2e9a2bcc6e929fef76c8f82ad6c17a" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.80.1" +version = "0.88.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31253a44ab62588f8235a996cc9b0636d98a299190069ced9628b8547329b47a" +checksum = "98de2018ad96eb97f621f7d6b900a0cc661aec8d02ea4a50e56ecb48e5a2fcaf" dependencies = [ + "arrayvec 0.7.2", + "bumpalo", "cranelift-bforest", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", + "cranelift-isle", "gimli", "log", - "regalloc", - "smallvec 1.8.0", + "regalloc2", + "smallvec 1.10.0", "target-lexicon", ] [[package]] name = "cranelift-codegen-meta" -version = "0.80.1" +version = "0.88.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a20ab4627d30b702fb1b8a399882726d216b8164d3b3fa6189e3bf901506afe" +checksum = "5287ce36e6c4758fbaf298bd1a8697ad97a4f2375a3d1b61142ea538db4877e5" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.80.1" +version = "0.88.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6687d9668dacfed4468361f7578d86bded8ca4db978f734d9b631494bebbb5b8" +checksum = "2855c24219e2f08827f3f4ffb2da92e134ae8d8ecc185b11ec8f9878cf5f588e" [[package]] name = "cranelift-entity" -version = "0.80.1" +version = "0.88.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77c5d72db97ba2cb36f69037a709edbae0d29cb25503775891e7151c5c874bf" +checksum = "0b65673279d75d34bf11af9660ae2dbd1c22e6d28f163f5c72f4e1dc56d56103" dependencies = [ "serde", ] [[package]] name = "cranelift-frontend" -version = "0.80.1" +version = "0.88.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "426dca83f63c7c64ea459eb569aadc5e0c66536c0042ed5d693f91830e8750d0" +checksum = "3ed2b3d7a4751163f6c4a349205ab1b7d9c00eecf19dcea48592ef1f7688eefc" dependencies = [ "cranelift-codegen", "log", - "smallvec 1.8.0", + "smallvec 1.10.0", "target-lexicon", ] +[[package]] +name = "cranelift-isle" +version = "0.88.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be64cecea9d90105fc6a2ba2d003e98c867c1d6c4c86cc878f97ad9fb916293" + [[package]] name = "cranelift-native" -version = "0.80.1" +version = "0.88.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8007864b5d0c49b026c861a15761785a2871124e401630c03ef1426e6d0d559e" +checksum = "c4a03a6ac1b063e416ca4b93f6247978c991475e8271465340caa6f92f3c16a4" dependencies = [ "cranelift-codegen", "libc", @@ -1173,16 +1214,16 @@ dependencies = [ [[package]] name = "cranelift-wasm" -version = "0.80.1" +version = "0.88.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94cf12c071415ba261d897387ae5350c4d83c238376c8c5a96514ecfa2ea66a3" +checksum = "c699873f7b30bc5f20dd03a796b4183e073a46616c91704792ec35e45d13f913" dependencies = [ "cranelift-codegen", "cranelift-entity", "cranelift-frontend", "itertools", "log", - "smallvec 1.8.0", + "smallvec 1.10.0", "wasmparser", "wasmtime-types", ] @@ -1193,52 +1234,50 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.8" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" +checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" dependencies = [ "autocfg 1.1.0", - "cfg-if 1.0.0", + "cfg-if", "crossbeam-utils", - "lazy_static", "memoffset", "scopeguard 1.1.0", ] [[package]] name = "crossbeam-utils" -version = "0.8.8" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" +checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" dependencies = [ - "cfg-if 1.0.0", - "lazy_static", + "cfg-if", ] [[package]] @@ -1300,20 +1339,11 @@ dependencies = [ "subtle 2.4.1", ] -[[package]] -name = "ct-logs" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" -dependencies = [ - "sct 0.6.1", -] - [[package]] name = "ctor" -version = "0.1.22" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c" +checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" dependencies = [ "quote", "syn", @@ -1328,6 +1358,15 @@ dependencies = [ "cipher 0.3.0", ] +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher 0.4.3", +] + [[package]] name = "cuckoofilter" version = "0.5.0" @@ -1366,34 +1405,91 @@ dependencies = [ ] [[package]] -name = "darling" -version = "0.13.4" +name = "curve25519-dalek" +version = "4.0.0-pre.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +checksum = "4033478fbf70d6acf2655ac70da91ee65852d69daf7a67bf7a2f518fb47aafcf" dependencies = [ - "darling_core", - "darling_macro", + "byteorder", + "digest 0.9.0", + "rand_core 0.6.4", + "subtle 2.4.1", + "zeroize", ] [[package]] -name = "darling_core" -version = "0.13.4" +name = "cxx" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +checksum = "6b7d4e43b25d3c994662706a1d4fcfc32aaa6afd287502c111b237093bb23f3a" dependencies = [ - "fnv", - "ident_case", + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84f8829ddc213e2c1368e51a2564c552b65a8cb6a28f31e576270ac81d5e5827" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell 1.16.0", "proc-macro2", "quote", - "strsim 0.10.0", + "scratch", "syn", ] [[package]] -name = "darling_macro" -version = "0.13.4" +name = "cxxbridge-flags" +version = "1.0.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e72537424b474af1460806647c41d4b6d35d09ef7fe031c5c2fa5766047cc56a" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "309e4fb93eed90e1e14bea0da16b209f81813ba9fc7830c20ed151dd7bc0a4d7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "darling" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" dependencies = [ "darling_core", "quote", @@ -1452,10 +1548,8 @@ version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ - "convert_case", "proc-macro2", "quote", - "rustc_version 0.4.0", "syn", ] @@ -1512,11 +1606,11 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" dependencies = [ - "block-buffer 0.10.2", + "block-buffer 0.10.3", "crypto-common", "subtle 2.4.1", ] @@ -1536,7 +1630,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "dirs-sys-next", ] @@ -1569,7 +1663,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" dependencies = [ "byteorder", - "quick-error 1.2.3", + "quick-error", ] [[package]] @@ -1580,9 +1674,9 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] name = "dtoa" -version = "0.4.8" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" +checksum = "f8a6eee2d5d0d113f015688310da018bd1d864d86bd567c8fca9c266889e1bfa" [[package]] name = "dyn-clonable" @@ -1607,9 +1701,9 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28" +checksum = "4f94fa09c2aeea5b8839e414b7b841bf429fd25b9c522116ac97ee87856d88b2" [[package]] name = "ecdsa" @@ -1625,9 +1719,9 @@ dependencies = [ [[package]] name = "ed25519" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d5c4b5e5959dc2c2b89918d8e2cc40fcdd623cef026ed09d2f0ee05199dc8e4" +checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369" dependencies = [ "signature", ] @@ -1646,11 +1740,25 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ed25519-zebra" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" +dependencies = [ + "curve25519-dalek 3.2.0", + "hashbrown 0.12.3", + "hex", + "rand_core 0.6.4", + "sha2 0.9.9", + "zeroize", +] + [[package]] name = "either" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" [[package]] name = "elliptic-curve" @@ -1677,28 +1785,32 @@ version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "entropy" version = "3.0.0-monthly-2021-10" dependencies = [ - "clap 3.1.8", + "clap 3.2.23", + "clap_complete", "entropy-runtime", "frame-benchmarking", "frame-benchmarking-cli", "frame-system", - "futures 0.3.21", + "frame-system-rpc-runtime-api", + "futures", "hex-literal", "jsonrpc-core", - "node-executor", + "jsonrpsee", + "node-inspect", "node-primitives", - "node-rpc", + "pallet-balances", "pallet-free-tx", "pallet-im-online", "pallet-transaction-payment", "pallet-transaction-payment-rpc", + "parity-scale-codec", "rand 0.7.3", "sc-authority-discovery", "sc-basic-authorship", @@ -1717,11 +1829,13 @@ dependencies = [ "sc-finality-grandpa-rpc", "sc-keystore", "sc-network", + "sc-network-common", "sc-rpc", "sc-rpc-api", "sc-service", "sc-service-test", "sc-sync-state-rpc", + "sc-sysinfo", "sc-telemetry", "sc-transaction-pool", "sc-transaction-pool-api", @@ -1734,19 +1848,21 @@ dependencies = [ "sp-consensus", "sp-consensus-aura", "sp-consensus-babe", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-finality-grandpa", "sp-inherents", - "sp-keyring 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-keyring", + "sp-keystore", + "sp-runtime", "sp-timestamp", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", "sp-transaction-storage-proof", "structopt", "substrate-build-script-utils", + "substrate-frame-cli", "substrate-frame-rpc-system", + "substrate-state-trie-migration-rpc", "tempfile", + "try-runtime-cli", ] [[package]] @@ -1775,10 +1891,10 @@ dependencies = [ "pallet-constraints", "pallet-contracts", "pallet-contracts-primitives", - "pallet-contracts-rpc-runtime-api", "pallet-conviction-voting", "pallet-democracy", "pallet-election-provider-multi-phase", + "pallet-election-provider-support-benchmarking", "pallet-elections-phragmen", "pallet-free-tx", "pallet-grandpa", @@ -1788,6 +1904,9 @@ dependencies = [ "pallet-lottery", "pallet-membership", "pallet-multisig", + "pallet-nomination-pools", + "pallet-nomination-pools-benchmarking", + "pallet-nomination-pools-runtime-api", "pallet-offences", "pallet-offences-benchmarking", "pallet-preimage", @@ -1821,16 +1940,16 @@ dependencies = [ "sp-authority-discovery", "sp-block-builder", "sp-consensus-babe", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-inherents", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keyring 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-keyring", "sp-npos-elections", "sp-offchain", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "sp-session", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", "sp-transaction-pool", "sp-version", "static_assertions", @@ -1840,9 +1959,9 @@ dependencies = [ [[package]] name = "enum-as-inner" -version = "0.3.4" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "570d109b813e904becc80d8d5da38376818a143348413f7149f1340fe04754d4" +checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" dependencies = [ "heck 0.4.0", "proc-macro2", @@ -1852,9 +1971,9 @@ dependencies = [ [[package]] name = "enumflags2" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b3ab37dc79652c9d85f1f7b6070d77d321d2467f5fe7b00d6b7a86c57b092ae" +checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb" dependencies = [ "enumflags2_derive", ] @@ -1872,14 +1991,14 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +checksum = "c90bf5f19754d10198ccb95b70664fc925bd1fc090a0fd9a6ebc54acc8cd6272" dependencies = [ "atty", "humantime", "log", - "regex 1.5.5", + "regex 1.6.0", "termcolor", ] @@ -1921,9 +2040,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "eventsource-stream" @@ -1933,7 +2052,7 @@ checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab" dependencies = [ "futures-core", "nom", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", ] [[package]] @@ -1942,7 +2061,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" dependencies = [ - "futures 0.3.21", + "futures", ] [[package]] @@ -1981,9 +2100,9 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fastrand" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" dependencies = [ "instant", ] @@ -2009,9 +2128,9 @@ dependencies = [ [[package]] name = "figment" -version = "0.10.6" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790b4292c72618abbab50f787a477014fe15634f96291de45672ce46afe122df" +checksum = "4e56602b469b2201400dec66a66aec5a9b8761ee97cd1b8c96ab2483fcc16cc9" dependencies = [ "atomic", "pear", @@ -2031,19 +2150,31 @@ dependencies = [ "log", ] +[[package]] +name = "filetime" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9663d381d07ae25dc88dbdf27df458faa83a9b25336bcac83d5e452b5fc9d3" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "windows-sys 0.42.0", +] + [[package]] name = "finality-grandpa" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9def033d8505edf199f6a5d07aa7e6d2d6185b164293b77f0efd108f4f3e11d" +checksum = "b22349c6a11563a202d95772a68e0fcf56119e74ea8a2a19cf2301460fcd0df5" dependencies = [ "either", - "futures 0.3.21", + "futures", "futures-timer", "log", - "num-traits 0.2.14", + "num-traits 0.2.15", "parity-scale-codec", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "scale-info", ] @@ -2061,19 +2192,17 @@ dependencies = [ [[package]] name = "fixedbitset" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" dependencies = [ - "cfg-if 1.0.0", "crc32fast", - "libc", "libz-sys", "miniz_oxide", ] @@ -2102,94 +2231,100 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", ] [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" dependencies = [ - "matches", - "percent-encoding 2.1.0", + "percent-encoding", ] [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "frame-system", "linregress", "log", "parity-scale-codec", - "paste 1.0.7", + "paste 1.0.9", "scale-info", "serde", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-storage 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-runtime-interface", + "sp-std", + "sp-storage", ] [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "Inflector", + "array-bytes", "chrono", - "clap 3.1.8", + "clap 3.2.23", + "comfy-table", "frame-benchmarking", "frame-support", "frame-system", + "gethostname", "handlebars", "hash-db", - "hex", "itertools", "kvdb 0.11.0", + "lazy_static", "linked-hash-map", "log", "memory-db", "parity-scale-codec", "rand 0.8.5", + "rand_pcg 0.3.1", "sc-block-builder", "sc-cli", "sc-client-api", "sc-client-db", "sc-executor", "sc-service", + "sc-sysinfo", "serde", "serde_json", "serde_nanos", "sp-api", "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-database", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-externalities", "sp-inherents", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-storage 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-keystore", + "sp-runtime", + "sp-state-machine", + "sp-storage", + "sp-trie", + "tempfile", + "thiserror", "thousands", ] [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -2198,33 +2333,34 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-election-provider-solution-type", "frame-support", "frame-system", "parity-scale-codec", "scale-info", - "sp-arithmetic 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-arithmetic", "sp-npos-elections", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "frame-system", + "frame-try-runtime", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-tracing", ] [[package]] @@ -2233,7 +2369,18 @@ version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "frame-metadata" +version = "15.0.0" +source = "git+https://github.com/paritytech/frame-metadata/#d41046b12c08fe5e2abdcd407cb05779d58e5e6b" +dependencies = [ + "cfg-if", "parity-scale-codec", "scale-info", "serde", @@ -2242,39 +2389,44 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "bitflags", - "frame-metadata", + "frame-metadata 15.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "frame-support-procedural", "impl-trait-for-tuples", + "k256", "log", - "once_cell 1.12.0", + "once_cell 1.16.0", "parity-scale-codec", - "paste 1.0.7", + "paste 1.0.9", "scale-info", "serde", - "smallvec 1.8.0", - "sp-arithmetic 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "smallvec 1.10.0", + "sp-api", + "sp-arithmetic", + "sp-core", "sp-core-hashing-proc-macro", "sp-inherents", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", "sp-staking", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-state-machine", + "sp-std", + "sp-tracing", + "sp-weights", "tt-call", ] [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "Inflector", + "cfg-expr", "frame-support-procedural-tools", + "itertools", "proc-macro2", "quote", "syn", @@ -2283,10 +2435,10 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -2295,7 +2447,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "proc-macro2", "quote", @@ -2305,39 +2457,40 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "log", "parity-scale-codec", "scale-info", "serde", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", "sp-version", + "sp-weights", ] [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", "sp-api", @@ -2346,12 +2499,13 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", + "parity-scale-codec", "sp-api", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] @@ -2388,22 +2542,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -dependencies = [ - "bitflags", - "fuchsia-zircon-sys", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - [[package]] name = "funty" version = "2.0.0" @@ -2412,15 +2550,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" - -[[package]] -name = "futures" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" +checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" dependencies = [ "futures-channel", "futures-core", @@ -2433,9 +2565,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" dependencies = [ "futures-core", "futures-sink", @@ -2443,15 +2575,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" [[package]] name = "futures-executor" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" dependencies = [ "futures-core", "futures-task", @@ -2461,9 +2593,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" [[package]] name = "futures-lite" @@ -2474,17 +2606,17 @@ dependencies = [ "fastrand", "futures-core", "futures-io", - "memchr 2.4.1", + "memchr 2.5.0", "parking", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", "waker-fn", ] [[package]] name = "futures-macro" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" dependencies = [ "proc-macro2", "quote", @@ -2493,26 +2625,26 @@ dependencies = [ [[package]] name = "futures-rustls" -version = "0.21.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8b" +checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd" dependencies = [ "futures-io", - "rustls 0.19.1", - "webpki 0.21.4", + "rustls", + "webpki", ] [[package]] name = "futures-sink" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" [[package]] name = "futures-task" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" [[package]] name = "futures-timer" @@ -2522,19 +2654,18 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" dependencies = [ - "futures 0.1.31", "futures-channel", "futures-core", "futures-io", "futures-macro", "futures-sink", "futures-task", - "memchr 2.4.1", - "pin-project-lite 0.2.8", + "memchr 2.5.0", + "pin-project-lite 0.2.9", "pin-utils", "slab", ] @@ -2550,15 +2681,15 @@ dependencies = [ [[package]] name = "generator" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1d9279ca822891c1a4dae06d185612cf8fc6acfe5dff37781b41297811b12ee" +checksum = "cc184cace1cea8335047a471cc1da80f18acf8a76f3bab2028d499e328948ec7" dependencies = [ "cc", "libc", "log", "rustversion", - "winapi 0.3.9", + "windows 0.32.0", ] [[package]] @@ -2580,13 +2711,23 @@ dependencies = [ "version_check", ] +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi 0.3.9", +] + [[package]] name = "getrandom" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "libc", "wasi 0.9.0+wasi-snapshot-preview1", @@ -2595,13 +2736,13 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", - "wasi 0.10.0+wasi-snapshot-preview1", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] @@ -2611,14 +2752,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" dependencies = [ "opaque-debug 0.3.0", - "polyval", + "polyval 0.5.3", +] + +[[package]] +name = "ghash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" +dependencies = [ + "opaque-debug 0.3.0", + "polyval 0.6.0", ] [[package]] name = "gimli" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" dependencies = [ "fallible-iterator", "indexmap", @@ -2633,22 +2784,22 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "globset" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd" +checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a" dependencies = [ - "aho-corasick 0.7.18", + "aho-corasick 0.7.19", "bstr", "fnv", "log", - "regex 1.5.5", + "regex 1.6.0", ] [[package]] name = "gloo-timers" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d12a7f4e95cfe710f1d624fb1210b7d961a5fb05c4fd942f4feab06e61f590e" +checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9" dependencies = [ "futures-channel", "futures-core", @@ -2669,11 +2820,11 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" +checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" dependencies = [ - "bytes 1.1.0", + "bytes", "fnv", "futures-core", "futures-sink", @@ -2682,22 +2833,22 @@ dependencies = [ "indexmap", "slab", "tokio", - "tokio-util 0.7.1", + "tokio-util", "tracing", ] [[package]] name = "handlebars" -version = "4.2.2" +version = "4.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d6a30320f094710245150395bc763ad23128d6a1ebbad7594dc4164b62c56b" +checksum = "433e4ab33f1213cdc25b5fa45c76881240cfe79284cf2b395e8b9e312a30a2fd" dependencies = [ "log", "pest", "pest_derive", - "quick-error 2.0.1", "serde", "serde_json", + "thiserror", ] [[package]] @@ -2727,18 +2878,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.12.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c21d40587b92fa6a6c6e3c1bdbf87d75511db5672f9c93175574b3a00df1758" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ "ahash", ] @@ -2837,7 +2979,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.3", + "digest 0.10.5", ] [[package]] @@ -2864,31 +3006,31 @@ dependencies = [ [[package]] name = "http" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff8670570af52249509a86f5e3e18a08c60b177071826898fde8997cf5f6bfbb" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" dependencies = [ - "bytes 1.1.0", + "bytes", "fnv", - "itoa 1.0.1", + "itoa", ] [[package]] name = "http-body" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "bytes 1.1.0", + "bytes", "http", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", ] [[package]] name = "httparse" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" @@ -2904,11 +3046,11 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.18" +version = "0.14.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b26ae0a80afebe130861d90abf98e3814a4f28a4c6ffeb5ab8ebb2be311e0ef2" +checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" dependencies = [ - "bytes 1.1.0", + "bytes", "futures-channel", "futures-core", "futures-util", @@ -2917,9 +3059,9 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 1.0.1", - "pin-project-lite 0.2.8", - "socket2 0.4.4", + "itoa", + "pin-project-lite 0.2.9", + "socket2", "tokio", "tower-service", "tracing", @@ -2928,19 +3070,17 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.22.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" +checksum = "d87c48c02e0dc5e3b849a2041db3029fd066650f8f717c07bf8ed78ccb895cac" dependencies = [ - "ct-logs", - "futures-util", + "http", "hyper", "log", - "rustls 0.19.1", - "rustls-native-certs 0.5.0", + "rustls", + "rustls-native-certs", "tokio", - "tokio-rustls 0.22.0", - "webpki 0.21.4", + "tokio-rustls", ] [[package]] @@ -2949,13 +3089,37 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ - "bytes 1.1.0", + "bytes", "hyper", "native-tls", "tokio", "tokio-native-tls", ] +[[package]] +name = "iana-time-zone" +version = "0.1.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "winapi 0.3.9", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2964,9 +3128,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.1.5" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" dependencies = [ "matches", "unicode-bidi", @@ -2975,50 +3139,40 @@ dependencies = [ [[package]] name = "idna" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] [[package]] name = "if-addrs" -version = "0.6.7" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2273e421f7c4f0fc99e1934fe4776f59d8df2972f4199d703fc0da9f2a9f73de" +checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" dependencies = [ - "if-addrs-sys", "libc", "winapi 0.3.9", ] -[[package]] -name = "if-addrs-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79ea" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "if-watch" -version = "0.2.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8ab7f67bad3240049cb24fb9cb0b4c2c6af4c245840917fbbdededeee91179" +checksum = "015a7df1eb6dda30df37f34b63ada9b7b352984b0e84de2a20ed526345000791" dependencies = [ "async-io", - "futures 0.3.21", - "futures-lite", + "core-foundation", + "fnv", + "futures", "if-addrs", "ipnet", - "libc", "log", - "winapi 0.3.9", + "rtnetlink", + "system-configuration", + "windows 0.34.0", ] [[package]] @@ -3052,12 +3206,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.8.1" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" dependencies = [ "autocfg 1.1.0", - "hashbrown 0.11.2", + "hashbrown 0.12.3", "serde", ] @@ -3082,7 +3236,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -3091,26 +3245,14 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" dependencies = [ - "num-traits 0.2.14", + "num-traits 0.2.15", ] [[package]] name = "io-lifetimes" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ef6787e7f0faedc040f95716bdd0e62bcfcf4ba93da053b62dea2691c13864" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "iovec" -version = "0.1.4" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] +checksum = "e6e481ccbe3dea62107216d0d1138bb8ad8e5e5c43009a098bd1990272c497b0" [[package]] name = "ip_network" @@ -3120,84 +3262,62 @@ checksum = "aa2f047c0a98b2f299aa5d6d7088443570faae494e9ae1305e48be000c9e0eb1" [[package]] name = "ipconfig" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" +checksum = "723519edce41262b05d4143ceb95050e4c614f483e78e9fd9e39a8275a84ad98" dependencies = [ - "socket2 0.3.19", + "socket2", "widestring", "winapi 0.3.9", - "winreg 0.6.2", + "winreg 0.7.0", ] [[package]] name = "ipnet" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e70ee094dc02fd9c13fdad4940090f22dbd6ac7c9e7094a46cf0232a50bc7c" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" [[package]] name = "itertools" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] [[package]] name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" [[package]] name = "jobserver" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.56" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" dependencies = [ "wasm-bindgen", ] -[[package]] -name = "jsonrpc-client-transports" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3a" -dependencies = [ - "derive_more", - "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-pubsub", - "log", - "serde", - "serde_json", - "url 1.7.2", -] - [[package]] name = "jsonrpc-core" version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures 0.3.21", + "futures", "futures-executor", "futures-util", "log", @@ -3207,172 +3327,148 @@ dependencies = [ ] [[package]] -name = "jsonrpc-core-client" -version = "18.0.0" +name = "jsonrpsee" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0" +checksum = "8bd0d559d5e679b1ab2f869b486a11182923863b1b3ee8b421763cdd707b783a" dependencies = [ - "futures 0.3.21", - "jsonrpc-client-transports", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-http-server", + "jsonrpsee-proc-macros", + "jsonrpsee-types", + "jsonrpsee-ws-client", + "jsonrpsee-ws-server", + "tracing", ] [[package]] -name = "jsonrpc-derive" -version = "18.0.0" +name = "jsonrpsee-client-transport" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2" +checksum = "8752740ecd374bcbf8b69f3e80b0327942df76f793f8d4e60d3355650c31fb74" dependencies = [ - "proc-macro-crate 0.1.5", - "proc-macro2", - "quote", - "syn", + "futures-util", + "http", + "jsonrpsee-core", + "jsonrpsee-types", + "pin-project", + "rustls-native-certs", + "soketto", + "thiserror", + "tokio", + "tokio-rustls", + "tokio-util", + "tracing", + "webpki-roots", ] [[package]] -name = "jsonrpc-http-server" -version = "18.0.0" +name = "jsonrpsee-core" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" +checksum = "f3dc3e9cf2ba50b7b1d7d76a667619f82846caa39e8e8daa8a4962d74acaddca" dependencies = [ - "futures 0.3.21", + "anyhow", + "arrayvec 0.7.2", + "async-lock", + "async-trait", + "beef", + "futures-channel", + "futures-timer", + "futures-util", + "globset", + "http", "hyper", - "jsonrpc-core", - "jsonrpc-server-utils", - "log", - "net2", - "parking_lot 0.11.2", - "unicase", -] - -[[package]] -name = "jsonrpc-ipc-server" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382bb0206323ca7cda3dcd7e245cea86d37d02457a02a975e3378fb149a48845" -dependencies = [ - "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-server-utils", - "log", - "parity-tokio-ipc", - "parking_lot 0.11.2", - "tower-service", -] - -[[package]] -name = "jsonrpc-pubsub" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011" -dependencies = [ - "futures 0.3.21", - "jsonrpc-core", + "jsonrpsee-types", "lazy_static", - "log", - "parking_lot 0.11.2", - "rand 0.7.3", + "parking_lot 0.12.1", + "rand 0.8.5", + "rustc-hash", "serde", + "serde_json", + "soketto", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "unicase", ] [[package]] -name = "jsonrpc-server-utils" -version = "18.0.0" +name = "jsonrpsee-http-server" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4" +checksum = "03802f0373a38c2420c70b5144742d800b509e2937edc4afb116434f07120117" dependencies = [ - "bytes 1.1.0", - "futures 0.3.21", - "globset", - "jsonrpc-core", - "lazy_static", - "log", + "futures-channel", + "futures-util", + "hyper", + "jsonrpsee-core", + "jsonrpsee-types", + "serde", + "serde_json", "tokio", - "tokio-stream", - "tokio-util 0.6.9", - "unicase", + "tracing", + "tracing-futures", ] [[package]] -name = "jsonrpc-ws-server" -version = "18.0.0" +name = "jsonrpsee-proc-macros" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f892c7d766369475ab7b0669f417906302d7c0fb521285c0a0c92e52e7c8e946" +checksum = "bd67957d4280217247588ac86614ead007b301ca2fa9f19c19f880a536f029e3" dependencies = [ - "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-server-utils", - "log", - "parity-ws", - "parking_lot 0.11.2", - "slab", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "jsonrpsee" -version = "0.9.0" +name = "jsonrpsee-types" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d0b8cc1959f8c05256ace093b2317482da9127f1d9227564f47e7e6bf9bda8" +checksum = "e290bba767401b646812f608c099b922d8142603c9e73a50fb192d3ac86f4a0d" dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", + "tracing", ] [[package]] -name = "jsonrpsee-client-transport" -version = "0.9.0" +name = "jsonrpsee-ws-client" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa370c2c717d798c3c0a315ae3f0a707a388c6963c11f9da7dbbe1d3f7392f5f" +checksum = "6ee5feddd5188e62ac08fcf0e56478138e581509d4730f3f7be9b57dd402a4ff" dependencies = [ - "futures 0.3.21", "http", + "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-types", - "pin-project 1.0.10", - "rustls-native-certs 0.6.1", - "soketto", - "thiserror", - "tokio", - "tokio-rustls 0.23.3", - "tokio-util 0.6.9", - "tracing", - "webpki-roots 0.22.2", ] [[package]] -name = "jsonrpsee-core" -version = "0.9.0" +name = "jsonrpsee-ws-server" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22abc3274b265dcefe2e26c4beecf9fda4fffa48cf94930443a6c73678f020d5" +checksum = "d488ba74fb369e5ab68926feb75a483458b88e768d44319f37e4ecad283c7325" dependencies = [ - "anyhow", - "arrayvec 0.7.2", - "async-trait", - "beef", "futures-channel", "futures-util", - "hyper", + "http", + "jsonrpsee-core", "jsonrpsee-types", - "rustc-hash", - "serde", "serde_json", "soketto", - "thiserror", "tokio", + "tokio-stream", + "tokio-util", "tracing", -] - -[[package]] -name = "jsonrpsee-types" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f4c45d2e2aa1db4c7d7d7dbaabc10a5b5258d99cd9d42fbfd5260b76f80c324" -dependencies = [ - "anyhow", - "beef", - "serde", - "serde_json", - "thiserror", - "tracing", + "tracing-futures", ] [[package]] @@ -3381,7 +3477,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19c3a5e0a0b8450278feda242592512e09f61c72e018b8cd5c859482802daf2d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "ecdsa", "elliptic-curve", "sec1", @@ -3390,9 +3486,9 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" +checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838" [[package]] name = "kernel32-sys" @@ -3420,13 +3516,13 @@ dependencies = [ "chacha20poly1305 0.9.1", "project-root", "rand 0.8.5", - "rpassword", + "rpassword 5.0.1", "scrypt", "serde", "serial_test 0.6.0", "sled", "thiserror", - "tofn 0.1.0 (git+https://github.com/Entropyxyz/tofn?branch=main)", + "tofn 0.1.0 (git+https://github.com/entropyxyz/tofn?branch=main)", "tokio", "tracing", "zeroize", @@ -3439,7 +3535,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a301d8ecb7989d4a6e2c57a49baca77d353bdbf879909debe3f375fe25d61f86" dependencies = [ "parity-util-mem", - "smallvec 1.8.0", + "smallvec 1.10.0", ] [[package]] @@ -3450,7 +3546,7 @@ checksum = "ece7e668abd21387aeb6628130a6f4c802787f014fa46bc83221448322250357" dependencies = [ "kvdb 0.11.0", "parity-util-mem", - "parking_lot 0.12.0", + "parking_lot 0.12.1", ] [[package]] @@ -3465,10 +3561,10 @@ dependencies = [ "num_cpus", "owning_ref", "parity-util-mem", - "parking_lot 0.12.0", - "regex 1.5.5", + "parking_lot 0.12.1", + "regex 1.6.0", "rocksdb", - "smallvec 1.8.0", + "smallvec 1.10.0", ] [[package]] @@ -3485,9 +3581,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.121" +version = "0.2.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" +checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" [[package]] name = "libloading" @@ -3505,26 +3601,29 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "winapi 0.3.9", ] [[package]] name = "libm" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33a33a362ce288760ec6a508b94caaec573ae7d3bbbd91b87aa0bad4456839db" +checksum = "292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565" [[package]] name = "libp2p" -version = "0.40.0" +version = "0.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bec54343492ba5940a6c555e512c6721139835d28c59bc22febece72dfd0d9d" +checksum = "81327106887e42d004fbdab1fef93675be2e2e07c1b95fce45e2cc813485611d" dependencies = [ - "atomic", - "bytes 1.1.0", - "futures 0.3.21", + "bytes", + "futures", + "futures-timer", + "getrandom 0.2.8", + "instant", "lazy_static", + "libp2p-autonat", "libp2p-core", "libp2p-deflate", "libp2p-dns", @@ -3550,228 +3649,258 @@ dependencies = [ "libp2p-websocket", "libp2p-yamux", "multiaddr", - "parking_lot 0.11.2", - "pin-project 1.0.10", - "smallvec 1.8.0", - "wasm-timer", + "parking_lot 0.12.1", + "pin-project", + "rand 0.7.3", + "smallvec 1.10.0", +] + +[[package]] +name = "libp2p-autonat" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4decc51f3573653a9f4ecacb31b1b922dd20c25a6322bb15318ec04287ec46f9" +dependencies = [ + "async-trait", + "futures", + "futures-timer", + "instant", + "libp2p-core", + "libp2p-request-response", + "libp2p-swarm", + "log", + "prost 0.10.4", + "prost-build 0.10.4", + "rand 0.8.5", ] [[package]] name = "libp2p-core" -version = "0.30.2" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86aad7d54df283db817becded03e611137698a6509d4237a96881976a162340c" +checksum = "fbf9b94cefab7599b2d3dff2f93bee218c6621d68590b23ede4485813cbcece6" dependencies = [ "asn1_der", "bs58", "ed25519-dalek", "either", "fnv", - "futures 0.3.21", + "futures", "futures-timer", "instant", "lazy_static", "libsecp256k1", "log", "multiaddr", - "multihash 0.14.0", + "multihash", "multistream-select", - "parking_lot 0.11.2", - "pin-project 1.0.10", - "prost", - "prost-build", + "parking_lot 0.12.1", + "pin-project", + "prost 0.10.4", + "prost-build 0.10.4", "rand 0.8.5", "ring", "rw-stream-sink", - "sha2 0.9.9", - "smallvec 1.8.0", + "sha2 0.10.6", + "smallvec 1.10.0", "thiserror", - "unsigned-varint 0.7.1", + "unsigned-varint", "void", "zeroize", ] [[package]] name = "libp2p-deflate" -version = "0.30.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51a800adb195f33de63f4b17b63fe64cfc23bf2c6a0d3d0d5321328664e65197" +checksum = "d0183dc2a3da1fbbf85e5b6cf51217f55b14f5daea0c455a9536eef646bfec71" dependencies = [ "flate2", - "futures 0.3.21", + "futures", "libp2p-core", ] [[package]] name = "libp2p-dns" -version = "0.30.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb8f89d15cb6e3c5bc22afff7513b11bab7856f2872d3cfba86f7f63a06bc498" +checksum = "6cbf54723250fa5d521383be789bf60efdabe6bacfb443f87da261019a49b4b5" dependencies = [ "async-std-resolver", - "futures 0.3.21", + "futures", "libp2p-core", "log", - "smallvec 1.8.0", + "parking_lot 0.12.1", + "smallvec 1.10.0", "trust-dns-resolver", ] [[package]] name = "libp2p-floodsub" -version = "0.31.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab3d7210901ea51b7bae2b581aa34521797af8c4ec738c980bda4a06434067f" +checksum = "98a4b6ffd53e355775d24b76f583fdda54b3284806f678499b57913adb94f231" dependencies = [ "cuckoofilter", "fnv", - "futures 0.3.21", + "futures", "libp2p-core", "libp2p-swarm", "log", - "prost", - "prost-build", + "prost 0.10.4", + "prost-build 0.10.4", "rand 0.7.3", - "smallvec 1.8.0", + "smallvec 1.10.0", ] [[package]] name = "libp2p-gossipsub" -version = "0.33.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfeead619eb5dac46e65acc78c535a60aaec803d1428cca6407c3a4fc74d698d" +checksum = "74b4b888cfbeb1f5551acd3aa1366e01bf88ede26cc3c4645d0d2d004d5ca7b0" dependencies = [ - "asynchronous-codec 0.6.0", + "asynchronous-codec", "base64", "byteorder", - "bytes 1.1.0", + "bytes", "fnv", - "futures 0.3.21", + "futures", "hex_fmt", + "instant", "libp2p-core", "libp2p-swarm", "log", - "prost", - "prost-build", + "prometheus-client", + "prost 0.10.4", + "prost-build 0.10.4", "rand 0.7.3", - "regex 1.5.5", - "sha2 0.9.9", - "smallvec 1.8.0", - "unsigned-varint 0.7.1", + "regex 1.6.0", + "sha2 0.10.6", + "smallvec 1.10.0", + "unsigned-varint", "wasm-timer", ] [[package]] name = "libp2p-identify" -version = "0.31.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca1275574183f288ff8b72d535d5ffa5ea9292ef7829af8b47dcb197c7b0dcd" +checksum = "c50b585518f8efd06f93ac2f976bd672e17cdac794644b3117edd078e96bda06" dependencies = [ - "futures 0.3.21", + "asynchronous-codec", + "futures", + "futures-timer", "libp2p-core", "libp2p-swarm", "log", - "lru 0.6.6", - "prost", - "prost-build", - "smallvec 1.8.0", - "wasm-timer", + "lru", + "prost 0.10.4", + "prost-build 0.10.4", + "prost-codec", + "smallvec 1.10.0", + "thiserror", + "void", ] [[package]] name = "libp2p-kad" -version = "0.32.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2297dc0ca285f3a09d1368bde02449e539b46f94d32d53233f53f6625bcd3ba" +checksum = "740862893bb5f06ac24acc9d49bdeadc3a5e52e51818a30a25c1f3519da2c851" dependencies = [ - "arrayvec 0.5.2", - "asynchronous-codec 0.6.0", - "bytes 1.1.0", + "arrayvec 0.7.2", + "asynchronous-codec", + "bytes", "either", "fnv", - "futures 0.3.21", + "futures", + "futures-timer", + "instant", "libp2p-core", "libp2p-swarm", "log", - "prost", - "prost-build", + "prost 0.10.4", + "prost-build 0.10.4", "rand 0.7.3", - "sha2 0.9.9", - "smallvec 1.8.0", + "sha2 0.10.6", + "smallvec 1.10.0", + "thiserror", "uint", - "unsigned-varint 0.7.1", + "unsigned-varint", "void", - "wasm-timer", ] [[package]] name = "libp2p-mdns" -version = "0.32.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c864b64bdc8a84ff3910a0df88e6535f256191a450870f1e7e10cbf8e64d45" +checksum = "66e5e5919509603281033fd16306c61df7a4428ce274b67af5e14b07de5cdcb2" dependencies = [ "async-io", "data-encoding", "dns-parser", - "futures 0.3.21", + "futures", "if-watch", "lazy_static", "libp2p-core", "libp2p-swarm", "log", "rand 0.8.5", - "smallvec 1.8.0", - "socket2 0.4.4", + "smallvec 1.10.0", + "socket2", "void", ] [[package]] name = "libp2p-metrics" -version = "0.1.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4af432fcdd2f8ba4579b846489f8f0812cfd738ced2c0af39df9b1c48bbb6ab2" +checksum = "ef8aff4a1abef42328fbb30b17c853fff9be986dc39af17ee39f9c5f755c5e0c" dependencies = [ "libp2p-core", + "libp2p-gossipsub", "libp2p-identify", "libp2p-kad", "libp2p-ping", + "libp2p-relay", "libp2p-swarm", - "open-metrics-client", + "prometheus-client", ] [[package]] name = "libp2p-mplex" -version = "0.30.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2cd64ef597f40e14bfce0497f50ecb63dd6d201c61796daeb4227078834fbf" +checksum = "61fd1b20638ec209c5075dfb2e8ce6a7ea4ec3cd3ad7b77f7a477c06d53322e2" dependencies = [ - "asynchronous-codec 0.6.0", - "bytes 1.1.0", - "futures 0.3.21", + "asynchronous-codec", + "bytes", + "futures", "libp2p-core", "log", "nohash-hasher", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "rand 0.7.3", - "smallvec 1.8.0", - "unsigned-varint 0.7.1", + "smallvec 1.10.0", + "unsigned-varint", ] [[package]] name = "libp2p-noise" -version = "0.33.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8772c7a99088221bb7ca9c5c0574bf55046a7ab4c319f3619b275f28c8fb87a" +checksum = "762408cb5d84b49a600422d7f9a42c18012d8da6ebcd570f9a4a4290ba41fb6f" dependencies = [ - "bytes 1.1.0", + "bytes", "curve25519-dalek 3.2.0", - "futures 0.3.21", + "futures", "lazy_static", "libp2p-core", "log", - "prost", - "prost-build", + "prost 0.10.4", + "prost-build 0.10.4", "rand 0.8.5", - "sha2 0.9.9", + "sha2 0.10.6", "snow", "static_assertions", "x25519-dalek 1.1.1", @@ -3780,135 +3909,143 @@ dependencies = [ [[package]] name = "libp2p-ping" -version = "0.31.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80ef7b0ec5cf06530d9eb6cf59ae49d46a2c45663bde31c25a12f682664adbcf" +checksum = "100a6934ae1dbf8a693a4e7dd1d730fd60b774dafc45688ed63b554497c6c925" dependencies = [ - "futures 0.3.21", + "futures", + "futures-timer", + "instant", "libp2p-core", "libp2p-swarm", "log", "rand 0.7.3", "void", - "wasm-timer", ] [[package]] name = "libp2p-plaintext" -version = "0.30.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fba1a6ff33e4a274c89a3b1d78b9f34f32af13265cc5c46c16938262d4e945a" +checksum = "be27bf0820a6238a4e06365b096d428271cce85a129cf16f2fe9eb1610c4df86" dependencies = [ - "asynchronous-codec 0.6.0", - "bytes 1.1.0", - "futures 0.3.21", + "asynchronous-codec", + "bytes", + "futures", "libp2p-core", "log", - "prost", - "prost-build", - "unsigned-varint 0.7.1", + "prost 0.10.4", + "prost-build 0.10.4", + "unsigned-varint", "void", ] [[package]] name = "libp2p-pnet" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f1a458bbda880107b5b36fcb9b5a1ef0c329685da0e203ed692a8ebe64cc92c" +checksum = "1a5a702574223aa55d8878bdc8bf55c84a6086f87ddaddc28ce730b4caa81538" dependencies = [ - "futures 0.3.21", + "futures", "log", - "pin-project 1.0.10", - "rand 0.7.3", - "salsa20", - "sha3 0.9.1", + "pin-project", + "rand 0.8.5", + "salsa20 0.10.2", + "sha3", ] [[package]] name = "libp2p-relay" -version = "0.4.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2852b61c90fa8ce3c8fcc2aba76e6cefc20d648f9df29157d6b3a916278ef3e3" +checksum = "4931547ee0cce03971ccc1733ff05bb0c4349fd89120a39e9861e2bbe18843c3" dependencies = [ - "asynchronous-codec 0.6.0", - "bytes 1.1.0", - "futures 0.3.21", + "asynchronous-codec", + "bytes", + "either", + "futures", "futures-timer", + "instant", "libp2p-core", "libp2p-swarm", "log", - "pin-project 1.0.10", - "prost", - "prost-build", - "rand 0.7.3", - "smallvec 1.8.0", - "unsigned-varint 0.7.1", + "pin-project", + "prost 0.10.4", + "prost-build 0.10.4", + "prost-codec", + "rand 0.8.5", + "smallvec 1.10.0", + "static_assertions", + "thiserror", "void", - "wasm-timer", ] [[package]] name = "libp2p-rendezvous" -version = "0.1.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14a6d2b9e7677eff61dc3d2854876aaf3976d84a01ef6664b610c77a0c9407c5" +checksum = "9511c9672ba33284838e349623319c8cad2d18cfad243ae46c6b7e8a2982ea4e" dependencies = [ - "asynchronous-codec 0.6.0", + "asynchronous-codec", "bimap", - "futures 0.3.21", + "futures", + "futures-timer", + "instant", "libp2p-core", "libp2p-swarm", "log", - "prost", - "prost-build", + "prost 0.10.4", + "prost-build 0.10.4", "rand 0.8.5", - "sha2 0.9.9", + "sha2 0.10.6", "thiserror", - "unsigned-varint 0.7.1", + "unsigned-varint", "void", - "wasm-timer", ] [[package]] name = "libp2p-request-response" -version = "0.13.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a877a4ced6d46bf84677e1974e8cf61fb434af73b2e96fb48d6cb6223a4634d8" +checksum = "508a189e2795d892c8f5c1fa1e9e0b1845d32d7b0b249dbf7b05b18811361843" dependencies = [ "async-trait", - "bytes 1.1.0", - "futures 0.3.21", + "bytes", + "futures", + "instant", "libp2p-core", "libp2p-swarm", "log", - "lru 0.7.5", "rand 0.7.3", - "smallvec 1.8.0", - "unsigned-varint 0.7.1", - "wasm-timer", + "smallvec 1.10.0", + "unsigned-varint", ] [[package]] name = "libp2p-swarm" -version = "0.31.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f5184a508f223bc100a12665517773fb8730e9f36fc09eefb670bf01b107ae9" +checksum = "95ac5be6c2de2d1ff3f7693fda6faf8a827b1f3e808202277783fea9f527d114" dependencies = [ "either", - "futures 0.3.21", + "fnv", + "futures", + "futures-timer", + "instant", "libp2p-core", "log", + "pin-project", "rand 0.7.3", - "smallvec 1.8.0", + "smallvec 1.10.0", + "thiserror", "void", - "wasm-timer", ] [[package]] name = "libp2p-swarm-derive" -version = "0.25.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "072c290f727d39bdc4e9d6d1c847978693d25a673bd757813681e33e5f6c00c2" +checksum = "9f54a64b6957249e0ce782f8abf41d97f69330d02bf229f0672d864f0650cc76" dependencies = [ "quote", "syn", @@ -3916,40 +4053,40 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.30.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7399c5b6361ef525d41c11fcf51635724f832baf5819b30d3d873eabb4fbae4b" +checksum = "8a6771dc19aa3c65d6af9a8c65222bfc8fcd446630ddca487acd161fa6096f3b" dependencies = [ "async-io", - "futures 0.3.21", + "futures", "futures-timer", "if-watch", "ipnet", "libc", "libp2p-core", "log", - "socket2 0.4.4", + "socket2", ] [[package]] name = "libp2p-uds" -version = "0.30.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8b7563e46218165dfd60f64b96f7ce84590d75f53ecbdc74a7dd01450dc5973" +checksum = "d125e3e5f0d58f3c6ac21815b20cf4b6a88b8db9dc26368ea821838f4161fd4d" dependencies = [ "async-std", - "futures 0.3.21", + "futures", "libp2p-core", "log", ] [[package]] name = "libp2p-wasm-ext" -version = "0.30.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1008a302b73c5020251f9708c653f5ed08368e530e247cc9cd2f109ff30042cf" +checksum = "ec894790eec3c1608f8d1a8a0bdf0dbeb79ed4de2dce964222011c2896dfa05a" dependencies = [ - "futures 0.3.21", + "futures", "js-sys", "libp2p-core", "parity-send-wrapper", @@ -3959,31 +4096,32 @@ dependencies = [ [[package]] name = "libp2p-websocket" -version = "0.31.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e12df82d1ed64969371a9e65ea92b91064658604cc2576c2757f18ead9a1cf" +checksum = "9808e57e81be76ff841c106b4c5974fb4d41a233a7bdd2afbf1687ac6def3818" dependencies = [ "either", - "futures 0.3.21", + "futures", "futures-rustls", "libp2p-core", "log", + "parking_lot 0.12.1", "quicksink", "rw-stream-sink", "soketto", - "url 2.2.2", - "webpki-roots 0.21.1", + "url", + "webpki-roots", ] [[package]] name = "libp2p-yamux" -version = "0.34.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7362abb8867d7187e7e93df17f460d554c997fc5c8ac57dc1259057f6889af" +checksum = "c6dea686217a06072033dc025631932810e2f6ad784e4fafa42e27d311c7a81c" dependencies = [ - "futures 0.3.21", + "futures", "libp2p-core", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "thiserror", "yamux", ] @@ -4018,9 +4156,9 @@ dependencies = [ [[package]] name = "libsecp256k1" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37" +checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" dependencies = [ "arrayref", "base64", @@ -4066,20 +4204,29 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.5" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f35facd4a5673cb5a48822be2be1d4236c1c99cb4113cab7061ac720d5bf859" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" dependencies = [ "cc", "pkg-config", "vcpkg", ] +[[package]] +name = "link-cplusplus" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +dependencies = [ + "cc", +] + [[package]] name = "linked-hash-map" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linked_hash_set" @@ -4102,9 +4249,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.0.36" +version = "0.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a261afc61b7a5e323933b402ca6a1765183687c614789b1e4db7762ed4230bca" +checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d" [[package]] name = "lite-json" @@ -4144,9 +4291,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ "autocfg 1.1.0", "scopeguard 1.1.0", @@ -4158,41 +4305,32 @@ version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "value-bag", ] [[package]] name = "loom" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc5c7d328e32cc4954e8e01193d7f0ef5ab257b5090b70a964e099a36034309" +checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "generator", "scoped-tls", "serde", "serde_json", "tracing", - "tracing-subscriber 0.3.11", + "tracing-subscriber 0.3.16", ] [[package]] name = "lru" -version = "0.6.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" dependencies = [ - "hashbrown 0.11.2", -] - -[[package]] -name = "lru" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32613e41de4c47ab04970c348ca7ae7382cf116625755af070b008a15516a889" -dependencies = [ - "hashbrown 0.11.2", + "hashbrown 0.12.3", ] [[package]] @@ -4206,9 +4344,9 @@ dependencies = [ [[package]] name = "lz4" -version = "1.23.3" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4edcb94251b1c375c459e5abe9fb0168c1c826c3370172684844f8f3f8d1a885" +checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" dependencies = [ "libc", "lz4-sys", @@ -4216,9 +4354,9 @@ dependencies = [ [[package]] name = "lz4-sys" -version = "1.9.3" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7be8908e2ed6f31c02db8a9fa962f03e36c53fbfde437363eae3306b85d7e17" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" dependencies = [ "cc", "libc", @@ -4233,12 +4371,6 @@ dependencies = [ "libc", ] -[[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" @@ -4295,24 +4427,24 @@ dependencies = [ [[package]] name = "memchr" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] -name = "memmap2" -version = "0.2.3" +name = "memfd" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4" +checksum = "480b5a5de855d11ff13195950bdc8b98b5e942ef47afc447f6615cdcc4e15d80" dependencies = [ - "libc", + "rustix", ] [[package]] name = "memmap2" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f" +checksum = "95af15f345b17af2efc8ead6080fb8bc376f8cec1b35277b935637595fe77498" dependencies = [ "libc", ] @@ -4333,15 +4465,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6566c70c1016f525ced45d7b7f97730a2bafb037c788211d0c186ef5b2189f0a" dependencies = [ "hash-db", - "hashbrown 0.12.0", + "hashbrown 0.12.3", "parity-util-mem", ] [[package]] name = "memory_units" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" [[package]] name = "merlin" @@ -4369,129 +4501,68 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" dependencies = [ "adler", - "autocfg 1.1.0", ] [[package]] name = "mio" -version = "0.6.23" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" dependencies = [ - "cfg-if 0.1.10", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", "libc", "log", - "miow 0.2.2", - "net2", - "slab", - "winapi 0.2.8", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.42.0", ] -[[package]] -name = "mio" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" -dependencies = [ - "libc", - "log", - "miow 0.3.7", - "ntapi", - "wasi 0.11.0+wasi-snapshot-preview1", - "winapi 0.3.9", -] - -[[package]] -name = "mio-extras" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" -dependencies = [ - "lazycell", - "log", - "mio 0.6.23", - "slab", -] - -[[package]] -name = "miow" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" -dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", -] - -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "more-asserts" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" - [[package]] name = "multer" -version = "2.0.2" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8f35e687561d5c1667590911e6698a8cb714a134a7505718a182e7bc9d3836" +checksum = "6ed4198ce7a4cbd2a57af78d28c6fbb57d81ac5f1d6ad79ac6c5587419cbdf22" dependencies = [ - "bytes 1.1.0", + "bytes", "encoding_rs", "futures-util", "http", "httparse", "log", - "memchr 2.4.1", + "memchr 2.5.0", "mime", - "spin 0.9.2", + "spin 0.9.4", "tokio", - "tokio-util 0.6.9", + "tokio-util", "version_check", ] [[package]] name = "multiaddr" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48ee4ea82141951ac6379f964f71b20876d43712bea8faf6dd1a375e08a46499" +checksum = "3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261" dependencies = [ "arrayref", "bs58", "byteorder", "data-encoding", - "multihash 0.14.0", - "percent-encoding 2.1.0", + "multihash", + "percent-encoding", "serde", "static_assertions", - "unsigned-varint 0.7.1", - "url 2.2.2", + "unsigned-varint", + "url", ] [[package]] name = "multibase" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b78c60039650ff12e140ae867ef5299a58e19dded4d334c849dc7177083667e2" +checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" dependencies = [ "base-x", "data-encoding", @@ -4500,41 +4571,28 @@ dependencies = [ [[package]] name = "multihash" -version = "0.13.2" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dac63698b887d2d929306ea48b63760431ff8a24fac40ddb22f9c7f49fb7cab" +checksum = "1c346cf9999c631f002d8f977c4eaeaa0e6386f16007202308d0b3757522c2cc" dependencies = [ "blake2b_simd", "blake2s_simd", "blake3", - "digest 0.9.0", - "generic-array 0.14.6", + "core2", + "digest 0.10.5", "multihash-derive", - "sha2 0.9.9", - "sha3 0.9.1", - "unsigned-varint 0.5.1", -] - -[[package]] -name = "multihash" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8" -dependencies = [ - "digest 0.9.0", - "generic-array 0.14.6", - "multihash-derive", - "sha2 0.9.9", - "unsigned-varint 0.7.1", + "sha2 0.10.6", + "sha3", + "unsigned-varint", ] [[package]] name = "multihash-derive" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99" +checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro-error", "proc-macro2", "quote", @@ -4550,16 +4608,16 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] name = "multistream-select" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56a336acba8bc87c8876f6425407dbbe6c417bf478b22015f8fb0994ef3bc0ab" +checksum = "363a84be6453a70e63513660f4894ef815daf88e3356bffcda9ca27d810ce83b" dependencies = [ - "bytes 1.1.0", - "futures 0.3.21", + "bytes", + "futures", "log", - "pin-project 1.0.10", - "smallvec 1.8.0", - "unsigned-varint 0.7.1", + "pin-project", + "smallvec 1.10.0", + "unsigned-varint", ] [[package]] @@ -4572,8 +4630,8 @@ dependencies = [ "matrixmultiply", "nalgebra-macros", "num-complex", - "num-rational 0.4.0", - "num-traits 0.2.14", + "num-rational 0.4.1", + "num-traits 0.2.15", "rand 0.8.5", "rand_distr", "simba", @@ -4619,159 +4677,110 @@ dependencies = [ ] [[package]] -name = "net2" -version = "0.2.37" +name = "netlink-packet-core" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" +checksum = "345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297" dependencies = [ - "cfg-if 0.1.10", + "anyhow", + "byteorder", "libc", - "winapi 0.3.9", + "netlink-packet-utils", ] [[package]] -name = "node-executor" -version = "3.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +name = "netlink-packet-route" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaab" dependencies = [ - "frame-benchmarking", - "node-primitives", - "node-runtime", - "parity-scale-codec", - "sc-executor", - "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "anyhow", + "bitflags", + "byteorder", + "libc", + "netlink-packet-core", + "netlink-packet-utils", ] [[package]] -name = "node-primitives" -version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +name = "netlink-packet-utils" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25af9cf0dc55498b7bd94a1508af7a78706aa0ab715a73c5169273e03c84845e" dependencies = [ - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "anyhow", + "byteorder", + "paste 1.0.9", + "thiserror", ] [[package]] -name = "node-rpc" -version = "3.0.0-dev" +name = "netlink-proto" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" dependencies = [ - "jsonrpc-core", - "node-primitives", - "pallet-contracts-rpc", - "pallet-mmr-rpc", - "pallet-transaction-payment-rpc", - "sc-chain-spec", + "bytes", + "futures", + "log", + "netlink-packet-core", + "netlink-sys", + "thiserror", + "tokio", +] + +[[package]] +name = "netlink-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92b654097027250401127914afb37cb1f311df6610a9891ff07a757e94199027" +dependencies = [ + "async-io", + "bytes", + "futures", + "libc", + "log", +] + +[[package]] +name = "nix" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" +dependencies = [ + "bitflags", + "cfg-if", + "libc", +] + +[[package]] +name = "node-inspect" +version = "0.9.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "clap 3.2.23", + "parity-scale-codec", + "sc-cli", "sc-client-api", - "sc-consensus-babe", - "sc-consensus-babe-rpc", - "sc-consensus-epochs", - "sc-finality-grandpa", - "sc-finality-grandpa-rpc", - "sc-rpc", - "sc-rpc-api", - "sc-sync-state-rpc", - "sc-transaction-pool-api", - "sp-api", - "sp-block-builder", + "sc-executor", + "sc-service", "sp-blockchain", - "sp-consensus", - "sp-consensus-babe", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "substrate-frame-rpc-system", + "sp-core", + "sp-runtime", + "thiserror", ] [[package]] -name = "node-runtime" -version = "3.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +name = "node-primitives" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "frame-benchmarking", - "frame-election-provider-support", - "frame-executive", - "frame-support", "frame-system", - "frame-system-rpc-runtime-api", - "frame-try-runtime", - "log", - "node-primitives", - "pallet-asset-tx-payment", - "pallet-assets", - "pallet-authority-discovery", - "pallet-authorship", - "pallet-babe", - "pallet-bags-list", - "pallet-balances", - "pallet-bounties", - "pallet-child-bounties", - "pallet-collective", - "pallet-contracts", - "pallet-contracts-primitives", - "pallet-contracts-rpc-runtime-api", - "pallet-conviction-voting", - "pallet-democracy", - "pallet-election-provider-multi-phase", - "pallet-elections-phragmen", - "pallet-gilt", - "pallet-grandpa", - "pallet-identity", - "pallet-im-online", - "pallet-indices", - "pallet-lottery", - "pallet-membership", - "pallet-mmr", - "pallet-multisig", - "pallet-offences", - "pallet-preimage", - "pallet-proxy", - "pallet-randomness-collective-flip", - "pallet-recovery", - "pallet-referenda", - "pallet-scheduler", - "pallet-session", - "pallet-society", - "pallet-staking", - "pallet-staking-reward-curve", - "pallet-state-trie-migration", - "pallet-sudo", - "pallet-timestamp", - "pallet-tips", - "pallet-transaction-payment", - "pallet-transaction-payment-rpc-runtime-api", - "pallet-transaction-storage", - "pallet-treasury", - "pallet-uniques", - "pallet-utility", - "pallet-vesting", - "pallet-whitelist", "parity-scale-codec", "scale-info", - "sp-api", - "sp-authority-discovery", - "sp-block-builder", - "sp-consensus-babe", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-inherents", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-offchain", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-sandbox", - "sp-session", - "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-transaction-pool", - "sp-version", - "static_assertions", - "substrate-wasm-builder", + "sp-application-crypto", + "sp-core", + "sp-runtime", ] [[package]] @@ -4792,16 +4801,17 @@ version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" dependencies = [ - "memchr 2.4.1", + "memchr 2.5.0", "minimal-lexical", ] [[package]] -name = "ntapi" -version = "0.3.7" +name = "nu-ansi-term" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ + "overload", "winapi 0.3.9", ] @@ -4813,36 +4823,47 @@ checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" dependencies = [ "autocfg 1.1.0", "num-integer", - "num-traits 0.2.14", + "num-traits 0.2.15", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg 1.1.0", + "num-integer", + "num-traits 0.2.15", ] [[package]] name = "num-complex" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085" +checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" dependencies = [ - "num-traits 0.2.14", + "num-traits 0.2.15", ] [[package]] name = "num-format" -version = "0.4.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465" +checksum = "54b862ff8df690cf089058c98b183676a7ed0f974cc08b426800093227cbff3b" dependencies = [ - "arrayvec 0.4.12", - "itoa 0.4.8", + "arrayvec 0.7.2", + "itoa", ] [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg 1.1.0", - "num-traits 0.2.14", + "num-traits 0.2.15", ] [[package]] @@ -4852,20 +4873,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" dependencies = [ "autocfg 1.1.0", - "num-bigint", + "num-bigint 0.2.6", "num-integer", - "num-traits 0.2.14", + "num-traits 0.2.15", ] [[package]] name = "num-rational" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg 1.1.0", + "num-bigint 0.4.3", "num-integer", - "num-traits 0.2.14", + "num-traits 0.2.15", ] [[package]] @@ -4874,14 +4896,14 @@ version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" dependencies = [ - "num-traits 0.2.14", + "num-traits 0.2.15", ] [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg 1.1.0", "libm", @@ -4908,13 +4930,14 @@ dependencies = [ [[package]] name = "object" -version = "0.27.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" dependencies = [ "crc32fast", + "hashbrown 0.12.3", "indexmap", - "memchr 2.4.1", + "memchr 2.5.0", ] [[package]] @@ -4928,9 +4951,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.12.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" +checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" [[package]] name = "opaque-debug" @@ -4945,42 +4968,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] -name = "open-metrics-client" -version = "0.12.0" +name = "openssl" +version = "0.10.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7337d80c23c2d8b1349563981bc4fb531220733743ba8115454a67b181173f0d" +checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" dependencies = [ - "dtoa", - "itoa 0.4.8", - "open-metrics-client-derive-text-encode", - "owning_ref", + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell 1.16.0", + "openssl-macros", + "openssl-sys", ] [[package]] -name = "open-metrics-client-derive-text-encode" -version = "0.1.1" +name = "openssl-macros" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c83b586f00268c619c1cb3340ec1a6f59dd9ba1d9833a273a68e6d5cd8ffc" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" dependencies = [ "proc-macro2", "quote", "syn", ] -[[package]] -name = "openssl" -version = "0.10.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" -dependencies = [ - "bitflags", - "cfg-if 1.0.0", - "foreign-types", - "libc", - "once_cell 1.12.0", - "openssl-sys", -] - [[package]] name = "openssl-probe" version = "0.1.5" @@ -4989,9 +5001,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.72" +version = "0.9.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" +checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a" dependencies = [ "autocfg 1.1.0", "cc", @@ -5002,12 +5014,15 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.0.0" +version = "6.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" -dependencies = [ - "memchr 2.4.1", -] +checksum = "3baf96e39c5359d2eb0dd6ccb42c62b91d9678aa68160d261b9e0ccbf9e9dea9" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "owning_ref" @@ -5018,56 +5033,40 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "pallet-asset-tx-payment" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "frame-support", - "frame-system", - "pallet-transaction-payment", - "parity-scale-codec", - "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "frame-system", "pallet-session", "parity-scale-codec", "scale-info", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", "sp-authority-discovery", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "frame-system", @@ -5075,14 +5074,14 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-authorship", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5093,20 +5092,20 @@ dependencies = [ "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", "sp-consensus-babe", "sp-consensus-vrf", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", "sp-session", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", ] [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5116,17 +5115,17 @@ dependencies = [ "pallet-balances", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-tracing", ] [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5134,14 +5133,14 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5150,34 +5149,16 @@ dependencies = [ "pallet-treasury", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "pallet-child-bounties" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "frame-support", - "frame-system", - "log", - "pallet-bounties", - "pallet-treasury", - "parity-scale-codec", - "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5185,10 +5166,10 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] @@ -5203,22 +5184,23 @@ dependencies = [ "pallet-authorship", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", ] [[package]] name = "pallet-contracts" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "bitflags", "frame-benchmarking", "frame-support", "frame-system", + "impl-trait-for-tuples", "log", "pallet-contracts-primitives", "pallet-contracts-proc-macro", @@ -5226,77 +5208,45 @@ dependencies = [ "rand 0.8.5", "scale-info", "serde", - "smallvec 1.8.0", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-sandbox", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "wasm-instrument", - "wasmi-validation", -] - -[[package]] -name = "pallet-contracts-primitives" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "bitflags", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-rpc", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "pallet-contracts-proc-macro" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "smallvec 1.10.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-sandbox", + "sp-std", + "wasm-instrument", + "wasmi-validation", ] [[package]] -name = "pallet-contracts-rpc" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +name = "pallet-contracts-primitives" +version = "6.0.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "pallet-contracts-primitives", - "pallet-contracts-rpc-runtime-api", + "bitflags", "parity-scale-codec", + "scale-info", "serde", - "sp-api", - "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-rpc", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-contracts-rpc-runtime-api" +name = "pallet-contracts-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "pallet-contracts-primitives", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "pallet-conviction-voting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5305,15 +5255,15 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5321,38 +5271,52 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", "frame-support", "frame-system", "log", + "pallet-election-provider-support-benchmarking", "parity-scale-codec", "rand 0.7.3", "scale-info", - "sp-arithmetic 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-arithmetic", + "sp-core", + "sp-io", "sp-npos-elections", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", "static_assertions", "strum", ] +[[package]] +name = "pallet-election-provider-support-benchmarking" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "frame-benchmarking", + "frame-election-provider-support", + "frame-system", + "parity-scale-codec", + "sp-npos-elections", + "sp-runtime", +] + [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5360,11 +5324,11 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", "sp-npos-elections", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] @@ -5387,34 +5351,19 @@ dependencies = [ "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", "sp-npos-elections", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "pallet-gilt" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-arithmetic 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", + "sp-tracing", ] [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5424,20 +5373,20 @@ dependencies = [ "pallet-session", "parity-scale-codec", "scale-info", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", + "sp-core", "sp-finality-grandpa", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", "sp-session", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", ] [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5445,15 +5394,15 @@ dependencies = [ "frame-system", "parity-scale-codec", "scale-info", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5462,49 +5411,49 @@ dependencies = [ "pallet-authorship", "parity-scale-codec", "scale-info", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", ] [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keyring 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-keyring", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-lottery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", "scale-info", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5512,82 +5461,78 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-mmr" +name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "ckb-merkle-mountain-range", "frame-benchmarking", "frame-support", "frame-system", - "pallet-mmr-primitives", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] -name = "pallet-mmr-primitives" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +name = "pallet-nomination-pools" +version = "1.0.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "frame-system", "log", "parity-scale-codec", - "serde", - "sp-api", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] -name = "pallet-mmr-rpc" -version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +name = "pallet-nomination-pools-benchmarking" +version = "1.0.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "pallet-mmr-primitives", + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "pallet-bags-list", + "pallet-nomination-pools", + "pallet-staking", "parity-scale-codec", - "serde", - "sp-api", - "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "scale-info", + "sp-runtime", + "sp-runtime-interface", + "sp-staking", + "sp-std", ] [[package]] -name = "pallet-multisig" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +name = "pallet-nomination-pools-runtime-api" +version = "1.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", "parity-scale-codec", - "scale-info", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-api", + "sp-std", ] [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "frame-system", @@ -5596,15 +5541,15 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", ] [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5619,25 +5564,25 @@ dependencies = [ "pallet-staking", "parity-scale-codec", "scale-info", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", ] [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] @@ -5663,12 +5608,12 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.11.2", "scale-info", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-keystore", "sp-npos-elections", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "sp-staking", "substrate-common", ] @@ -5676,50 +5621,51 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", "scale-info", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", "safe-mix", "scale-info", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ + "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", "scale-info", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-referenda" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "assert_matches", "frame-benchmarking", @@ -5728,9 +5674,10 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-arithmetic", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] @@ -5754,19 +5701,19 @@ dependencies = [ "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", "sp-npos-elections", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", "substrate-common", ] [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5774,15 +5721,15 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "frame-system", @@ -5791,19 +5738,19 @@ dependencies = [ "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", "sp-session", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", + "sp-trie", ] [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5811,9 +5758,9 @@ dependencies = [ "pallet-session", "pallet-staking", "rand 0.7.3", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "sp-session", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", ] [[package]] @@ -5834,32 +5781,32 @@ dependencies = [ "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", + "sp-core", + "sp-io", "sp-npos-elections", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "sp-staking", ] [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", "rand_chacha 0.2.2", "scale-info", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5872,11 +5819,11 @@ dependencies = [ "rand_chacha 0.2.2", "scale-info", "serde", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", + "sp-io", + "sp-runtime", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", ] [[package]] @@ -5895,60 +5842,43 @@ dependencies = [ "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", "sp-npos-elections", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", ] [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", ] -[[package]] -name = "pallet-state-trie-migration" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", "scale-info", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5957,16 +5887,16 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-inherents", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", + "sp-std", "sp-timestamp", ] [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5976,10 +5906,10 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] @@ -5993,82 +5923,80 @@ dependencies = [ "pallet-constraints", "parity-scale-codec", "scale-info", - "smallvec 1.8.0", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "smallvec 1.10.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", "scale-info", "serde", - "smallvec 1.8.0", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", + "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", "parity-scale-codec", "sp-api", "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-rpc", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", ] [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", "sp-api", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", ] [[package]] name = "pallet-transaction-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ + "array-bytes", "frame-benchmarking", "frame-support", "frame-system", - "hex-literal", + "log", "pallet-balances", "parity-scale-codec", "scale-info", "serde", "sp-inherents", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-runtime", + "sp-std", "sp-transaction-storage-proof", ] [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6078,45 +6006,30 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "pallet-uniques" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", - "log", - "parity-scale-codec", - "scale-info", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-benchmarking", "frame-support", @@ -6124,29 +6037,15 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "pallet-whitelist" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-api", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "parity-db" -version = "0.3.11" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e7f385d61562f5834282b90aa50b41f38a35cf64d5209b8b05487b50553dbe" +checksum = "2c8fdb726a43661fa54b43e7114e6b88b2289cae388eb3ad766d9d1754d83fce" dependencies = [ "blake2-rfc", "crc32fast", @@ -6155,21 +6054,22 @@ dependencies = [ "libc", "log", "lz4", - "memmap2 0.2.3", - "parking_lot 0.11.2", + "memmap2", + "parking_lot 0.12.1", "rand 0.8.5", "snap", ] [[package]] name = "parity-scale-codec" -version = "3.1.2" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8b44461635bbb1a0300f100a841e571e7d919c81c73075ef5d152ffdb521066" +checksum = "366e44391a8af4cfd6002ef6ba072bae071a96aafca98d7d448a34c5dca38b6a" dependencies = [ "arrayvec 0.7.2", "bitvec", "byte-slice-cast", + "bytes", "impl-trait-for-tuples", "parity-scale-codec-derive", "serde", @@ -6177,11 +6077,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.1.2" +version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c45ed1f39709f5a89338fab50e59816b2e8815f5bb58276e7ddf9afd495f73f8" +checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -6193,33 +6093,19 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" -[[package]] -name = "parity-tokio-ipc" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6" -dependencies = [ - "futures 0.3.21", - "libc", - "log", - "rand 0.7.3", - "tokio", - "winapi 0.3.9", -] - [[package]] name = "parity-util-mem" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c32561d248d352148124f036cac253a644685a21dc9fea383eb4907d7bd35a8f" dependencies = [ - "cfg-if 1.0.0", - "hashbrown 0.12.0", + "cfg-if", + "hashbrown 0.12.3", "impl-trait-for-tuples", "parity-util-mem-derive", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "primitive-types", - "smallvec 1.8.0", + "smallvec 1.10.0", "winapi 0.3.9", ] @@ -6245,27 +6131,9 @@ dependencies = [ [[package]] name = "parity-wasm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be5e13c266502aadf83426d87d81a0f5d1ef45b8027f5a471c360abfe4bfae92" - -[[package]] -name = "parity-ws" -version = "0.11.1" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5983d3929ad50f12c3eb9a6743f19d691866ecd44da74c0a3308c3f8a56df0c6" -dependencies = [ - "byteorder", - "bytes 0.4.12", - "httparse", - "log", - "mio 0.6.23", - "mio-extras", - "rand 0.7.3", - "sha-1 0.8.2", - "slab", - "url 2.2.2", -] +checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" [[package]] name = "parking" @@ -6290,18 +6158,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", - "lock_api 0.4.7", + "lock_api 0.4.9", "parking_lot_core 0.8.5", ] [[package]] name = "parking_lot" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ - "lock_api 0.4.7", - "parking_lot_core 0.9.2", + "lock_api 0.4.9", + "parking_lot_core 0.9.4", ] [[package]] @@ -6323,25 +6191,25 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "instant", "libc", "redox_syscall", - "smallvec 1.8.0", + "smallvec 1.10.0", "winapi 0.3.9", ] [[package]] name = "parking_lot_core" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995f667a6c822200b0433ac218e05582f0e2efa1b922a3fd2fbaadc5f87bab37" +checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "redox_syscall", - "smallvec 1.8.0", - "windows-sys", + "smallvec 1.10.0", + "windows-sys 0.42.0", ] [[package]] @@ -6367,9 +6235,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" +checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" [[package]] name = "paste-impl" @@ -6415,7 +6283,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" dependencies = [ - "digest 0.10.3", + "digest 0.10.5", ] [[package]] @@ -6449,30 +6317,25 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "percent-encoding" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" - -[[package]] -name = "percent-encoding" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.1.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +checksum = "dbc7bc69c062e492337d74d59b120c274fd3d261b6bf6d3207d499b4b379c41a" dependencies = [ + "thiserror", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.1.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" +checksum = "60b75706b9642ebcb34dab3bc7750f811609a0eb1dd8b88c2d15bf628c1c65b2" dependencies = [ "pest", "pest_generator", @@ -6480,9 +6343,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.1.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" +checksum = "f4f9272122f5979a6511a749af9db9bfc810393f63119970d7085fed1c4ea0db" dependencies = [ "pest", "pest_meta", @@ -6493,20 +6356,20 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.1.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" +checksum = "4c8717927f9b79515e565a64fe46c38b8cd0427e64c40680b14a7365ab09ac8d" dependencies = [ - "maplit", + "once_cell 1.16.0", "pest", - "sha-1 0.8.2", + "sha1", ] [[package]] name = "petgraph" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f" +checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" dependencies = [ "fixedbitset", "indexmap", @@ -6514,38 +6377,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9615c18d31137579e9ff063499264ddc1278e7b1982757ebc111028c4d1dc909" -dependencies = [ - "pin-project-internal 0.4.29", -] - -[[package]] -name = "pin-project" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" -dependencies = [ - "pin-project-internal 1.0.10", -] - -[[package]] -name = "pin-project-internal" -version = "0.4.29" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "044964427019eed9d49d9d5bbce6047ef18f37100ea400912a9fa4a3523ab12a" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" dependencies = [ - "proc-macro2", - "quote", - "syn", + "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.10" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ "proc-macro2", "quote", @@ -6560,9 +6403,9 @@ checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" [[package]] name = "pin-project-lite" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" [[package]] name = "pin-utils" @@ -6583,9 +6426,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "platforms" @@ -6595,11 +6438,12 @@ checksum = "e8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94" [[package]] name = "polling" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" +checksum = "ab4609a838d88b73d8238967b60dd115cc08d38e2bbaf51ee1e4b695f89122e2" dependencies = [ - "cfg-if 1.0.0", + "autocfg 1.1.0", + "cfg-if", "libc", "log", "wepoll-ffi", @@ -6612,7 +6456,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" dependencies = [ - "cpufeatures 0.2.2", + "cpufeatures", "opaque-debug 0.3.0", "universal-hash 0.4.1", ] @@ -6623,7 +6467,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ - "cpufeatures 0.2.2", + "cpufeatures", "opaque-debug 0.3.0", "universal-hash 0.5.0", ] @@ -6634,12 +6478,24 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" dependencies = [ - "cfg-if 1.0.0", - "cpufeatures 0.2.2", + "cfg-if", + "cpufeatures", "opaque-debug 0.3.0", "universal-hash 0.4.1", ] +[[package]] +name = "polyval" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef234e08c11dfcb2e56f79fd70f6f2eb7f025c0ce2333e82f4f0518ecad30c6" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug 0.3.0", + "universal-hash 0.5.0", +] + [[package]] name = "ppv-lite86" version = "0.2.16" @@ -6661,19 +6517,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[package]] -name = "proc-macro-crate" -version = "1.1.3" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" dependencies = [ + "once_cell 1.16.0", "thiserror", "toml", ] @@ -6710,11 +6558,11 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.37" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -6738,53 +6586,134 @@ checksum = "8bccbff07d5ed689c4087d20d7307a52ab6141edeedf487c3876a55b86cf63df" [[package]] name = "prometheus" -version = "0.13.0" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f64969ffd5dd8f39bd57a68ac53c163a095ed9d0fb707146da1b27025a3504" +checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "fnv", "lazy_static", - "memchr 2.4.1", - "parking_lot 0.11.2", + "memchr 2.5.0", + "parking_lot 0.12.1", "thiserror", ] [[package]] -name = "prost" -version = "0.9.0" +name = "prometheus-client" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1abe0255c04d15f571427a2d1e00099016506cf3297b53853acd2b7eb87825" +dependencies = [ + "dtoa", + "itoa", + "owning_ref", + "prometheus-client-derive-text-encode", +] + +[[package]] +name = "prometheus-client-derive-text-encode" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8e12d01b9d66ad9eb4529c57666b6263fc1993cb30261d83ead658fdd932652" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71adf41db68aa0daaefc69bb30bcd68ded9b9abaad5d1fbb6304c4fb390e083e" +dependencies = [ + "bytes", + "prost-derive 0.10.1", +] + +[[package]] +name = "prost" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "399c3c31cdec40583bb68f0b18403400d01ec4289c383aa047560439952c4dd7" +dependencies = [ + "bytes", + "prost-derive 0.11.0", +] + +[[package]] +name = "prost-build" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae5a4388762d5815a9fc0dea33c56b021cdc8dde0c55e0c9ca57197254b0cab" +dependencies = [ + "bytes", + "cfg-if", + "cmake", + "heck 0.4.0", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost 0.10.4", + "prost-types 0.10.1", + "regex 1.6.0", + "tempfile", + "which", +] + +[[package]] +name = "prost-build" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f835c582e6bd972ba8347313300219fed5bfa52caf175298d860b61ff6069bb" +dependencies = [ + "bytes", + "heck 0.4.0", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost 0.11.0", + "prost-types 0.11.1", + "regex 1.6.0", + "tempfile", + "which", +] + +[[package]] +name = "prost-codec" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +checksum = "00af1e92c33b4813cc79fda3f2dbf56af5169709be0202df730e9ebc3e4cd007" dependencies = [ - "bytes 1.1.0", - "prost-derive", + "asynchronous-codec", + "bytes", + "prost 0.10.4", + "thiserror", + "unsigned-varint", ] [[package]] -name = "prost-build" -version = "0.9.0" +name = "prost-derive" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" +checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc" dependencies = [ - "bytes 1.1.0", - "heck 0.3.3", + "anyhow", "itertools", - "lazy_static", - "log", - "multimap", - "petgraph", - "prost", - "prost-types", - "regex 1.5.5", - "tempfile", - "which", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "prost-derive" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +checksum = "7345d5f0e08c0536d7ac7229952590239e77abf0a0100a1b1d890add6ea96364" dependencies = [ "anyhow", "itertools", @@ -6795,19 +6724,29 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" +checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68" dependencies = [ - "bytes 1.1.0", - "prost", + "bytes", + "prost 0.10.4", +] + +[[package]] +name = "prost-types" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dfaa718ad76a44b3415e6c4d53b17c8f99160dcb3a99b10470fce8ad43f6e3e" +dependencies = [ + "bytes", + "prost 0.11.0", ] [[package]] name = "psm" -version = "0.1.18" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "871372391786ccec00d3c5d3d6608905b3d4db263639cfe075d3b60a736d115a" +checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" dependencies = [ "cc", ] @@ -6818,12 +6757,6 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - [[package]] name = "quicksink" version = "0.1.2" @@ -6837,9 +6770,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.17" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] @@ -6954,7 +6887,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.6", + "getrandom 0.2.8", ] [[package]] @@ -6963,7 +6896,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" dependencies = [ - "num-traits 0.2.14", + "num-traits 0.2.15", "rand 0.8.5", ] @@ -7038,6 +6971,15 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_pcg" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" +dependencies = [ + "rand_core 0.6.4", +] + [[package]] name = "rand_xorshift" version = "0.1.1" @@ -7055,9 +6997,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" dependencies = [ "autocfg 1.1.0", "crossbeam-deque", @@ -7067,14 +7009,13 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.1" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" dependencies = [ "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "lazy_static", "num_cpus", ] @@ -7089,9 +7030,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags", ] @@ -7102,25 +7043,25 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.6", + "getrandom 0.2.8", "redox_syscall", "thiserror", ] [[package]] name = "ref-cast" -version = "1.0.6" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300f2a835d808734ee295d45007adacb9ebb29dd3ae2424acfa17930cae541da" +checksum = "12a733f1746c929b4913fe48f8697fcf9c55e3304ba251a79ffb41adfeaf49c2" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.6" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c38e3aecd2b21cb3959637b883bb3714bc7e43f0268b9a29d3743ee3e55cdd2" +checksum = "5887de4a01acafd221861463be6113e6e87275e79804e56779f4cdc131c60368" dependencies = [ "proc-macro2", "quote", @@ -7128,14 +7069,15 @@ dependencies = [ ] [[package]] -name = "regalloc" -version = "0.0.33" +name = "regalloc2" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d808cff91dfca7b239d40b972ba628add94892b1d9e19a842aedc5cfae8ab1a" +checksum = "d43a209257d978ef079f3d446331d0f1794f5e0fc19b306a199983857833a779" dependencies = [ + "fxhash", "log", - "rustc-hash", - "smallvec 1.8.0", + "slice-group-by", + "smallvec 1.10.0", ] [[package]] @@ -7153,13 +7095,13 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.5" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" dependencies = [ - "aho-corasick 0.7.18", - "memchr 2.4.1", - "regex-syntax 0.6.25", + "aho-corasick 0.7.19", + "memchr 2.5.0", + "regex-syntax 0.6.27", ] [[package]] @@ -7168,7 +7110,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax 0.6.25", + "regex-syntax 0.6.27", ] [[package]] @@ -7179,20 +7121,25 @@ checksum = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957" [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.6.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" [[package]] -name = "region" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0" +name = "remote-externalities" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "bitflags", - "libc", - "mach", - "winapi 0.3.9", + "env_logger", + "jsonrpsee", + "log", + "parity-scale-codec", + "serde", + "serde_json", + "sp-core", + "sp-io", + "sp-runtime", + "sp-version", ] [[package]] @@ -7206,12 +7153,12 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.10" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a1f7aa4f35e5e8b4160449f51afc758f0ce6454315a9fa7d0d113e958c41eb" +checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc" dependencies = [ "base64", - "bytes 1.1.0", + "bytes", "encoding_rs", "futures-core", "futures-util", @@ -7222,19 +7169,20 @@ dependencies = [ "hyper-tls", "ipnet", "js-sys", - "lazy_static", "log", "mime", "native-tls", - "percent-encoding 2.1.0", - "pin-project-lite 0.2.8", + "once_cell 1.16.0", + "percent-encoding", + "pin-project-lite 0.2.9", "serde", "serde_json", "serde_urlencoded", "tokio", "tokio-native-tls", - "tokio-util 0.6.9", - "url 2.2.2", + "tokio-util", + "tower-service", + "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -7252,7 +7200,7 @@ dependencies = [ "futures-timer", "mime", "nom", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", "reqwest", "thiserror", ] @@ -7264,15 +7212,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" dependencies = [ "hostname", - "quick-error 1.2.3", + "quick-error", ] -[[package]] -name = "retain_mut" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c31b5c4033f8fdde8700e4657be2c497e7288f01515be52168c631e2e4d4086" - [[package]] name = "rfc6979" version = "0.1.0" @@ -7292,7 +7234,7 @@ checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" dependencies = [ "cc", "libc", - "once_cell 1.12.0", + "once_cell 1.16.0", "spin 0.5.2", "untrusted", "web-sys", @@ -7310,17 +7252,17 @@ dependencies = [ "atomic", "atty", "binascii", - "bytes 1.1.0", + "bytes", "either", "figment", - "futures 0.3.21", + "futures", "indexmap", "log", - "memchr 2.4.1", + "memchr 2.5.0", "multer", "num_cpus", - "parking_lot 0.12.0", - "pin-project-lite 0.2.8", + "parking_lot 0.12.1", + "pin-project-lite 0.2.9", "rand 0.8.5", "ref-cast", "rocket_codegen", @@ -7329,10 +7271,10 @@ dependencies = [ "serde_json", "state", "tempfile", - "time 0.3.11", + "time 0.3.16", "tokio", "tokio-stream", - "tokio-util 0.7.1", + "tokio-util", "ubyte", "version_check", "yansi", @@ -7362,21 +7304,21 @@ checksum = "2ded65d127954de3c12471630bf4b81a2792f065984461e65b91d0fdaafc17a2" dependencies = [ "cookie", "either", - "futures 0.3.21", + "futures", "http", "hyper", "indexmap", "log", - "memchr 2.4.1", + "memchr 2.5.0", "pear", - "percent-encoding 2.1.0", - "pin-project-lite 0.2.8", + "percent-encoding", + "pin-project-lite 0.2.9", "ref-cast", "serde", - "smallvec 1.8.0", + "smallvec 1.10.0", "stable-pattern", "state", - "time 0.3.11", + "time 0.3.16", "tokio", "uncased", ] @@ -7401,6 +7343,31 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "rpassword" +version = "7.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20c9f5d2a0c3e2ea729ab3706d22217177770654c3ef5056b68b69d07332d3f5" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "rtnetlink" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0" +dependencies = [ + "async-global-executor", + "futures", + "log", + "netlink-packet-route", + "netlink-proto", + "nix", + "thiserror", +] + [[package]] name = "rust-gmp" version = "0.5.0" @@ -7438,80 +7405,46 @@ 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.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.7", + "semver 1.0.14", ] [[package]] name = "rustix" -version = "0.31.3" +version = "0.35.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2dcfc2778a90e38f56a708bfc90572422e11d6c7ee233d053d1f782cf9df6d2" +checksum = "985947f9b6423159c4726323f373be0a21bdb514c5af06a849cb3d2dce2d01e8" dependencies = [ "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "winapi 0.3.9", -] - -[[package]] -name = "rustls" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" -dependencies = [ - "base64", - "log", - "ring", - "sct 0.6.1", - "webpki 0.21.4", + "windows-sys 0.36.1", ] [[package]] name = "rustls" -version = "0.20.4" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fbfeb8d0ddb84706bc597a5574ab8912817c52a397f819e5b614e2265206921" +checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c" dependencies = [ "log", "ring", - "sct 0.7.0", - "webpki 0.22.0", -] - -[[package]] -name = "rustls-native-certs" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" -dependencies = [ - "openssl-probe", - "rustls 0.19.1", - "schannel", - "security-framework", + "sct", + "webpki", ] [[package]] name = "rustls-native-certs" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca9ebdfa27d3fc180e42879037b5338ab1c040c06affd00d8338598e7800943" +checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" dependencies = [ "openssl-probe", "rustls-pemfile", @@ -7521,35 +7454,35 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "0.2.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" dependencies = [ "base64", ] [[package]] name = "rustversion" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" +checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" [[package]] name = "rw-stream-sink" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da5fcb054c46f5a5dff833b129285a93d3f0179531735e6c866e8cc307d2020" +checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04" dependencies = [ - "futures 0.3.21", - "pin-project 0.4.29", + "futures", + "pin-project", "static_assertions", ] [[package]] name = "ryu" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" [[package]] name = "safe-mix" @@ -7569,6 +7502,15 @@ dependencies = [ "cipher 0.3.0", ] +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher 0.4.3", +] + [[package]] name = "same-file" version = "1.0.6" @@ -7581,37 +7523,37 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "log", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-wasm-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-wasm-interface", "thiserror", ] [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "futures-timer", "ip_network", "libp2p", "log", "parity-scale-codec", - "prost", - "prost-build", + "prost 0.10.4", + "prost-build 0.10.4", "rand 0.7.3", "sc-client-api", - "sc-network", + "sc-network-common", "sp-api", "sp-authority-discovery", "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-keystore", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", ] @@ -7619,9 +7561,9 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", + "futures", "futures-timer", "log", "parity-scale-codec", @@ -7633,51 +7575,51 @@ dependencies = [ "sp-api", "sp-blockchain", "sp-consensus", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-inherents", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "substrate-prometheus-endpoint", ] [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", "sc-client-api", "sp-api", "sp-block-builder", "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-inherents", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-state-machine", ] [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "impl-trait-for-tuples", - "memmap2 0.5.3", + "memmap2", "parity-scale-codec", "sc-chain-spec-derive", - "sc-network", + "sc-network-common", "sc-telemetry", "serde", "serde_json", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-runtime", ] [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -7686,23 +7628,25 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ + "array-bytes", "chrono", - "clap 3.1.8", + "clap 3.2.23", "fdlimit", - "futures 0.3.21", - "hex", + "futures", "libp2p", "log", "names", "parity-scale-codec", "rand 0.7.3", - "regex 1.5.5", - "rpassword", + "regex 1.6.0", + "rpassword 7.1.0", "sc-client-api", + "sc-client-db", "sc-keystore", "sc-network", + "sc-network-common", "sc-service", "sc-telemetry", "sc-tracing", @@ -7710,11 +7654,11 @@ dependencies = [ "serde", "serde_json", "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keyring 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-panic-handler 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-keyring", + "sp-keystore", + "sp-panic-handler", + "sp-runtime", "sp-version", "thiserror", "tiny-bip39", @@ -7724,35 +7668,35 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "fnv", - "futures 0.3.21", + "futures", "hash-db", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-executor", "sc-transaction-pool-api", "sc-utils", "sp-api", "sp-blockchain", "sp-consensus", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-database", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-storage 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-externalities", + "sp-keystore", + "sp-runtime", + "sp-state-machine", + "sp-storage", + "sp-trie", "substrate-prometheus-endpoint", ] [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "hash-db", "kvdb 0.11.0", @@ -7762,38 +7706,38 @@ dependencies = [ "log", "parity-db", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-client-api", "sc-state-db", - "sp-arithmetic 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-arithmetic", "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-database", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-state-machine", + "sp-trie", ] [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "futures-timer", "libp2p", "log", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-client-api", "sc-utils", "serde", "sp-api", "sp-blockchain", "sp-consensus", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-runtime", + "sp-state-machine", "substrate-prometheus-endpoint", "thiserror", ] @@ -7801,10 +7745,10 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "log", "parity-scale-codec", "sc-block-builder", @@ -7813,16 +7757,16 @@ dependencies = [ "sc-consensus-slots", "sc-telemetry", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", "sp-block-builder", "sp-blockchain", "sp-consensus", "sp-consensus-aura", "sp-consensus-slots", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-inherents", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-keystore", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", ] @@ -7830,20 +7774,19 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", "fork-tree", - "futures 0.3.21", + "futures", "log", "merlin", - "num-bigint", + "num-bigint 0.2.6", "num-rational 0.2.4", - "num-traits 0.2.14", + "num-traits 0.2.15", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "rand 0.7.3", - "retain_mut", "sc-client-api", "sc-consensus", "sc-consensus-epochs", @@ -7853,18 +7796,18 @@ dependencies = [ "schnorrkel", "serde", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", "sp-block-builder", "sp-blockchain", "sp-consensus", "sp-consensus-babe", "sp-consensus-slots", "sp-consensus-vrf", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-inherents", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-keystore", + "sp-runtime", "sp-version", "substrate-prometheus-endpoint", "thiserror", @@ -7873,99 +7816,96 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", + "futures", + "jsonrpsee", "sc-consensus-babe", "sc-consensus-epochs", "sc-rpc-api", "serde", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", "sp-blockchain", "sp-consensus", "sp-consensus-babe", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-keystore", + "sp-runtime", "thiserror", ] [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "fork-tree", "parity-scale-codec", "sc-client-api", "sc-consensus", "sp-blockchain", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", ] [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "futures-timer", "log", "parity-scale-codec", "sc-client-api", "sc-consensus", "sc-telemetry", - "sp-arithmetic 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-arithmetic", "sp-blockchain", "sp-consensus", "sp-consensus-slots", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-inherents", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-timestamp", + "sp-runtime", + "sp-state-machine", "thiserror", ] [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "sc-client-api", "sp-authorship", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "thiserror", ] [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "lazy_static", - "lru 0.7.5", + "lru", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-executor-common", "sc-executor-wasmi", "sc-executor-wasmtime", "sp-api", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-core-hashing-proc-macro", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-panic-handler 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-externalities", + "sp-io", + "sp-panic-handler", + "sp-runtime-interface", "sp-tasks", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-trie", "sp-version", - "sp-wasm-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-wasm-interface", "tracing", "wasmi", ] @@ -7973,15 +7913,14 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "environmental", "parity-scale-codec", "sc-allocator", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", "sp-maybe-compressed-blob", - "sp-serializer", - "sp-wasm-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-sandbox", + "sp-wasm-interface", "thiserror", "wasm-instrument", "wasmi", @@ -7990,53 +7929,54 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "log", "parity-scale-codec", "sc-allocator", "sc-executor-common", - "scoped-tls", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-wasm-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime-interface", + "sp-sandbox", + "sp-wasm-interface", "wasmi", ] [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "log", + "once_cell 1.16.0", "parity-scale-codec", - "parity-wasm 0.42.2", + "parity-wasm 0.45.0", + "rustix", "sc-allocator", "sc-executor-common", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-wasm-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime-interface", + "sp-sandbox", + "sp-wasm-interface", "wasmtime", ] [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "ahash", + "array-bytes", "async-trait", "dyn-clone", "finality-grandpa", "fork-tree", - "futures 0.3.21", + "futures", "futures-timer", - "hex", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "rand 0.8.5", "sc-block-builder", "sc-chain-spec", @@ -8044,19 +7984,20 @@ dependencies = [ "sc-consensus", "sc-keystore", "sc-network", + "sc-network-common", "sc-network-gossip", "sc-telemetry", "sc-utils", "serde_json", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-arithmetic 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", + "sp-arithmetic", "sp-blockchain", "sp-consensus", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-finality-grandpa", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-keystore", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", ] @@ -8064,14 +8005,11 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "finality-grandpa", - "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-pubsub", + "futures", + "jsonrpsee", "log", "parity-scale-codec", "sc-client-api", @@ -8080,133 +8018,248 @@ dependencies = [ "serde", "serde_json", "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-runtime", "thiserror", ] [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "ansi_term", - "futures 0.3.21", + "futures", "futures-timer", "log", "parity-util-mem", "sc-client-api", - "sc-network", + "sc-network-common", "sc-transaction-pool-api", "sp-blockchain", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", ] [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ + "array-bytes", "async-trait", - "hex", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "serde_json", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", + "sp-core", + "sp-keystore", "thiserror", ] [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ + "array-bytes", "async-trait", - "asynchronous-codec 0.5.0", + "asynchronous-codec", "bitflags", - "bytes 1.1.0", + "bytes", "cid", "either", "fnv", "fork-tree", - "futures 0.3.21", + "futures", "futures-timer", - "hex", "ip_network", "libp2p", "linked-hash-map", "linked_hash_set", "log", - "lru 0.7.5", + "lru", "parity-scale-codec", - "parking_lot 0.12.0", - "pin-project 1.0.10", - "prost", - "prost-build", + "parking_lot 0.12.1", + "pin-project", + "prost 0.10.4", "rand 0.7.3", "sc-block-builder", "sc-client-api", "sc-consensus", + "sc-network-common", "sc-peerset", "sc-utils", "serde", "serde_json", - "smallvec 1.8.0", - "sp-arithmetic 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "smallvec 1.10.0", + "sp-arithmetic", "sp-blockchain", "sp-consensus", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-finality-grandpa", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", - "unsigned-varint 0.6.0", - "void", + "unsigned-varint", "zeroize", ] +[[package]] +name = "sc-network-bitswap" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "cid", + "futures", + "libp2p", + "log", + "prost 0.11.0", + "prost-build 0.11.1", + "sc-client-api", + "sc-network-common", + "sp-blockchain", + "sp-runtime", + "thiserror", + "unsigned-varint", + "void", +] + +[[package]] +name = "sc-network-common" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "async-trait", + "bitflags", + "bytes", + "futures", + "futures-timer", + "libp2p", + "linked_hash_set", + "parity-scale-codec", + "prost-build 0.10.4", + "sc-consensus", + "sc-peerset", + "serde", + "smallvec 1.10.0", + "sp-blockchain", + "sp-consensus", + "sp-finality-grandpa", + "sp-runtime", + "substrate-prometheus-endpoint", + "thiserror", +] + [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "ahash", - "futures 0.3.21", + "futures", "futures-timer", "libp2p", "log", - "lru 0.7.5", - "sc-network", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "lru", + "sc-network-common", + "sc-peerset", + "sp-runtime", "substrate-prometheus-endpoint", "tracing", ] +[[package]] +name = "sc-network-light" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "array-bytes", + "futures", + "libp2p", + "log", + "parity-scale-codec", + "prost 0.10.4", + "prost-build 0.10.4", + "sc-client-api", + "sc-network-common", + "sc-peerset", + "sp-blockchain", + "sp-core", + "sp-runtime", + "thiserror", +] + +[[package]] +name = "sc-network-sync" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "array-bytes", + "fork-tree", + "futures", + "libp2p", + "log", + "lru", + "parity-scale-codec", + "prost 0.10.4", + "prost-build 0.10.4", + "sc-client-api", + "sc-consensus", + "sc-network-common", + "sc-peerset", + "smallvec 1.10.0", + "sp-arithmetic", + "sp-blockchain", + "sp-consensus", + "sp-core", + "sp-finality-grandpa", + "sp-runtime", + "thiserror", +] + +[[package]] +name = "sc-network-transactions" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "array-bytes", + "futures", + "hex", + "libp2p", + "log", + "parity-scale-codec", + "pin-project", + "sc-network-common", + "sc-peerset", + "sp-consensus", + "sp-runtime", + "substrate-prometheus-endpoint", +] + [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "bytes 1.1.0", + "array-bytes", + "bytes", "fnv", - "futures 0.3.21", + "futures", "futures-timer", - "hex", "hyper", "hyper-rustls", + "libp2p", "num_cpus", - "once_cell 1.12.0", + "once_cell 1.16.0", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "rand 0.7.3", "sc-client-api", - "sc-network", + "sc-network-common", + "sc-peerset", "sc-utils", "sp-api", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-offchain", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "threadpool", "tracing", ] @@ -8214,9 +8267,9 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", + "futures", "libp2p", "log", "sc-utils", @@ -8227,7 +8280,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8236,15 +8289,14 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", + "futures", "hash-db", - "jsonrpc-core", - "jsonrpc-pubsub", + "jsonrpsee", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-block-builder", "sc-chain-spec", "sc-client-api", @@ -8255,11 +8307,11 @@ dependencies = [ "serde_json", "sp-api", "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-keystore", "sp-offchain", "sp-rpc", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "sp-session", "sp-version", ] @@ -8267,25 +8319,22 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-pubsub", + "futures", + "jsonrpsee", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-chain-spec", "sc-transaction-pool-api", "scale-info", "serde", "serde_json", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-rpc", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-tracing", "sp-version", "thiserror", ] @@ -8293,14 +8342,10 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-http-server", - "jsonrpc-ipc-server", - "jsonrpc-pubsub", - "jsonrpc-ws-server", + "futures", + "jsonrpsee", "log", "serde_json", "substrate-prometheus-endpoint", @@ -8310,21 +8355,20 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", "directories", "exit-future", - "futures 0.3.21", + "futures", "futures-timer", "hash-db", - "jsonrpc-core", - "jsonrpc-pubsub", + "jsonrpsee", "log", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.12.0", - "pin-project 1.0.10", + "parking_lot 0.12.1", + "pin-project", "rand 0.7.3", "sc-block-builder", "sc-chain-spec", @@ -8335,9 +8379,15 @@ dependencies = [ "sc-informant", "sc-keystore", "sc-network", + "sc-network-bitswap", + "sc-network-common", + "sc-network-light", + "sc-network-sync", + "sc-network-transactions", "sc-offchain", "sc-rpc", "sc-rpc-server", + "sc-sysinfo", "sc-telemetry", "sc-tracing", "sc-transaction-pool", @@ -8346,23 +8396,24 @@ dependencies = [ "serde", "serde_json", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", "sp-block-builder", "sp-blockchain", "sp-consensus", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-externalities", "sp-inherents", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-keystore", + "sp-runtime", "sp-session", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-storage 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-state-machine", + "sp-storage", + "sp-tracing", "sp-transaction-pool", "sp-transaction-storage-proof", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-trie", "sp-version", + "static_init", "substrate-prometheus-endpoint", "tempfile", "thiserror", @@ -8374,34 +8425,34 @@ dependencies = [ [[package]] name = "sc-service-test" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ + "array-bytes", "fdlimit", - "futures 0.3.21", - "hex", - "hex-literal", + "futures", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-block-builder", "sc-client-api", "sc-client-db", "sc-consensus", "sc-executor", "sc-network", + "sc-network-common", "sc-service", "sc-transaction-pool-api", "sp-api", "sp-blockchain", "sp-consensus", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-panic-handler 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-storage 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-externalities", + "sp-panic-handler", + "sp-runtime", + "sp-state-machine", + "sp-storage", + "sp-tracing", + "sp-trie", "substrate-test-runtime", "substrate-test-runtime-client", "tempfile", @@ -8411,25 +8462,23 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "log", "parity-scale-codec", "parity-util-mem", "parity-util-mem-derive", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sc-client-api", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", ] [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", + "jsonrpsee", "parity-scale-codec", "sc-chain-spec", "sc-client-api", @@ -8439,21 +8488,40 @@ dependencies = [ "serde", "serde_json", "sp-blockchain", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "thiserror", ] +[[package]] +name = "sc-sysinfo" +version = "6.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "futures", + "libc", + "log", + "rand 0.7.3", + "rand_pcg 0.2.1", + "regex 1.6.0", + "sc-telemetry", + "serde", + "serde_json", + "sp-core", + "sp-io", + "sp-std", +] + [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "chrono", - "futures 0.3.21", + "futures", "libp2p", "log", - "parking_lot 0.12.0", - "pin-project 1.0.10", + "parking_lot 0.12.1", + "pin-project", "rand 0.7.3", "serde", "serde_json", @@ -8464,7 +8532,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "ansi_term", "atty", @@ -8472,9 +8540,9 @@ dependencies = [ "lazy_static", "libc", "log", - "once_cell 1.12.0", - "parking_lot 0.12.0", - "regex 1.5.5", + "once_cell 1.16.0", + "parking_lot 0.12.1", + "regex 1.6.0", "rustc-hash", "sc-client-api", "sc-rpc-server", @@ -8482,10 +8550,10 @@ dependencies = [ "serde", "sp-api", "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-rpc", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-tracing", "thiserror", "tracing", "tracing-log", @@ -8495,9 +8563,9 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -8506,25 +8574,24 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", + "futures", "futures-timer", "linked-hash-map", "log", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.12.0", - "retain_mut", + "parking_lot 0.12.1", "sc-client-api", "sc-transaction-pool-api", "sc-utils", "serde", "sp-api", "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-runtime", + "sp-tracing", "sp-transaction-pool", "substrate-prometheus-endpoint", "thiserror", @@ -8533,37 +8600,60 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", + "futures", "log", "serde", "sp-blockchain", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", "thiserror", ] [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", + "futures", "futures-timer", "lazy_static", "log", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "prometheus", ] +[[package]] +name = "scale-bits" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd7aca73785181cc41f0bbe017263e682b585ca660540ba569133901d013ecf" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "scale-decode" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d823d4be477fc33321f93d08fb6c2698273d044f01362dc27573a750deb7c233" +dependencies = [ + "parity-scale-codec", + "scale-bits", + "scale-info", + "thiserror", +] + [[package]] name = "scale-info" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c46be926081c9f4dd5dd9b6f1d3e3229f2360bc6502dd8836f84a93b7c75e99a" +checksum = "333af15b02563b8182cd863f925bd31ef8fa86a0e095d30c091956057d436153" dependencies = [ "bitvec", - "cfg-if 1.0.0", + "cfg-if", "derive_more", "parity-scale-codec", "scale-info-derive", @@ -8572,24 +8662,41 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e334bb10a245e28e5fd755cabcafd96cfcd167c99ae63a46924ca8d8703a3c" +checksum = "53f56acbd0743d29ffa08f911ab5397def774ad01bab3786804cf6ee057fb5e1" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", ] +[[package]] +name = "scale-value" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16a5e7810815bd295da73e4216d1dfbced3c7c7c7054d70fa5f6e4c58123fff4" +dependencies = [ + "either", + "frame-metadata 15.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec", + "scale-bits", + "scale-decode", + "scale-info", + "serde", + "thiserror", + "yap", +] + [[package]] name = "schannel" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" dependencies = [ "lazy_static", - "winapi 0.3.9", + "windows-sys 0.36.1", ] [[package]] @@ -8628,6 +8735,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "scratch" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" + [[package]] name = "scrypt" version = "0.8.1" @@ -8637,18 +8750,8 @@ dependencies = [ "hmac 0.12.1", "password-hash", "pbkdf2 0.10.1", - "salsa20", - "sha2 0.10.2", -] - -[[package]] -name = "sct" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" -dependencies = [ - "ring", - "untrusted", + "salsa20 0.9.0", + "sha2 0.10.6", ] [[package]] @@ -8677,18 +8780,18 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.21.3" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c42e6f1735c5f00f51e43e28d6634141f2bcad10931b2609ddd74a86d751260" +checksum = "ff55dc09d460954e9ef2fa8a7ced735a964be9981fd50e870b2b3b0705e14964" dependencies = [ "secp256k1-sys", ] [[package]] name = "secp256k1-sys" -version = "0.4.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957da2573cde917463ece3570eab4a0b3f19de6f1646cde62e6fd3868f566036" +checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" dependencies = [ "cc", ] @@ -8704,9 +8807,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.6.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" dependencies = [ "bitflags", "core-foundation", @@ -8731,7 +8834,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" dependencies = [ - "semver-parser 0.7.0", + "semver-parser", ] [[package]] @@ -8740,23 +8843,14 @@ 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.2", + "semver-parser", ] [[package]] name = "semver" -version = "1.0.7" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" dependencies = [ "serde", ] @@ -8767,20 +8861,11 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - [[package]] name = "serde" -version = "1.0.136" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" dependencies = [ "serde_derive", ] @@ -8796,9 +8881,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.136" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" dependencies = [ "proc-macro2", "quote", @@ -8807,11 +8892,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.79" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" +checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" dependencies = [ - "itoa 1.0.1", + "itoa", "ryu", "serde", ] @@ -8832,7 +8917,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.1", + "itoa", "ryu", "serde", ] @@ -8854,10 +8939,10 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7eec42e7232e5ca56aa59d63af3c7f991fe71ee6a3ddd2d3480834cf3902b007" dependencies = [ - "futures 0.3.21", + "futures", "lazy_static", "log", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "serial_test_derive 0.8.0", ] @@ -8895,12 +8980,12 @@ dependencies = [ "base64", "bincode", "bip39", - "blake2 0.10.4", - "bytes 1.1.0", + "blake2", + "bytes", "chacha20poly1305 0.10.1", "constraints", "envy", - "futures 0.3.21", + "futures", "generic-array 0.14.6", "hex", "hex-literal", @@ -8917,34 +9002,22 @@ dependencies = [ "serde", "serde_json", "serial_test 0.8.0", - "sp-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-keyring 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core", + "sp-keyring", "substrate-common", "subxt", "testing-utils", "thiserror", - "tofn 0.1.0 (git+https://github.com/Entropyxyz/tofn?branch=main)", + "tofn 0.1.0 (git+https://github.com/entropyxyz/tofn?branch=main)", "tokio", "tracing", - "tracing-subscriber 0.3.11", + "tracing-subscriber 0.3.16", "tylift", "uuid", "x25519-dalek 2.0.0-pre.1", "zeroize", ] -[[package]] -name = "sha-1" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", -] - [[package]] name = "sha-1" version = "0.9.8" @@ -8952,12 +9025,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" dependencies = [ "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures 0.2.2", + "cfg-if", + "cpufeatures", "digest 0.9.0", "opaque-debug 0.3.0", ] +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.5", +] + [[package]] name = "sha2" version = "0.8.2" @@ -8977,21 +9061,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures 0.2.2", + "cfg-if", + "cpufeatures", "digest 0.9.0", "opaque-debug 0.3.0", ] [[package]] name = "sha2" -version = "0.10.2" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ - "cfg-if 1.0.0", - "cpufeatures 0.2.2", - "digest 0.10.3", + "cfg-if", + "cpufeatures", + "digest 0.10.5", "sha2-asm", ] @@ -9006,23 +9090,11 @@ dependencies = [ [[package]] name = "sha3" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "keccak", - "opaque-debug 0.3.0", -] - -[[package]] -name = "sha3" -version = "0.10.1" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881bf8156c87b6301fc5ca6b27f11eeb2761224c7081e69b409d5a1951a70c86" +checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" dependencies = [ - "digest 0.10.3", + "digest 0.10.5", "keccak", ] @@ -9041,6 +9113,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +[[package]] +name = "signal-hook" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" +dependencies = [ + "libc", + "signal-hook-registry", +] + [[package]] name = "signal-hook-registry" version = "1.4.0" @@ -9052,9 +9134,9 @@ dependencies = [ [[package]] name = "signature" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2807892cfa58e081aa1f1111391c7a0649d4fa127a4ffbe34bcbfb35a1171a4" +checksum = "02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788" dependencies = [ "digest 0.9.0", "rand_core 0.6.4", @@ -9068,15 +9150,18 @@ checksum = "8e82063457853d00243beda9952e910b82593e4b07ae9f721b9278a99a0d3d5c" dependencies = [ "approx", "num-complex", - "num-traits 0.2.14", - "paste 1.0.7", + "num-traits 0.2.15", + "paste 1.0.9", ] [[package]] name = "slab" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg 1.1.0", +] [[package]] name = "sled" @@ -9094,6 +9179,12 @@ dependencies = [ "parking_lot 0.11.2", ] +[[package]] +name = "slice-group-by" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" + [[package]] name = "smallvec" version = "0.6.14" @@ -9105,9 +9196,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "snap" @@ -9117,38 +9208,26 @@ checksum = "45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451" [[package]] name = "snow" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6142f7c25e94f6fd25a32c3348ec230df9109b463f59c8c7acc4bd34936babb7" +checksum = "774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0d" dependencies = [ - "aes-gcm", - "blake2 0.9.2", - "chacha20poly1305 0.8.0", - "rand 0.8.5", + "aes-gcm 0.9.4", + "blake2", + "chacha20poly1305 0.9.1", + "curve25519-dalek 4.0.0-pre.1", "rand_core 0.6.4", "ring", - "rustc_version 0.3.3", - "sha2 0.9.9", + "rustc_version 0.4.0", + "sha2 0.10.6", "subtle 2.4.1", - "x25519-dalek 1.1.1", -] - -[[package]] -name = "socket2" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "winapi 0.3.9", ] [[package]] name = "socket2" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" dependencies = [ "libc", "winapi 0.3.9", @@ -9161,28 +9240,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ "base64", - "bytes 1.1.0", + "bytes", "flate2", - "futures 0.3.21", + "futures", "httparse", "log", "rand 0.8.5", - "sha-1 0.9.8", + "sha-1", ] [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "hash-db", "log", "parity-scale-codec", "sp-api-proc-macro", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", "sp-version", "thiserror", ] @@ -9190,10 +9270,10 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "blake2 0.10.4", - "proc-macro-crate 1.1.3", + "blake2", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -9202,131 +9282,101 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acb4490364cb3b097a6755343e552495b0013778152300714be4647d107e9a2e" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-io 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "sp-application-crypto" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "sp-arithmetic" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31ef21f82cc10f75ed046b65e2f8048080ee76e59f1b8aed55c7150daebfd35b" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "integer-sqrt", - "num-traits 0.2.14", "parity-scale-codec", "scale-info", "serde", - "sp-debug-derive 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions", + "sp-core", + "sp-io", + "sp-std", ] [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "integer-sqrt", - "num-traits 0.2.14", + "num-traits 0.2.15", "parity-scale-codec", "scale-info", "serde", - "sp-debug-derive 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-debug-derive", + "sp-std", "static_assertions", ] [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", "parity-scale-codec", "sp-inherents", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", "sp-api", "sp-inherents", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", + "futures", "log", - "lru 0.7.5", + "lru", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "sp-api", "sp-consensus", "sp-database", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-state-machine", "thiserror", ] [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "futures-timer", "log", "parity-scale-codec", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-inherents", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-state-machine", + "sp-std", "sp-version", "thiserror", ] @@ -9334,25 +9384,25 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", "parity-scale-codec", "scale-info", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", "sp-consensus", "sp-consensus-slots", "sp-inherents", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", "sp-timestamp", ] [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", "merlin", @@ -9360,129 +9410,83 @@ dependencies = [ "scale-info", "serde", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", "sp-consensus", "sp-consensus-slots", "sp-consensus-vrf", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-inherents", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-keystore", + "sp-runtime", + "sp-std", "sp-timestamp", ] [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-arithmetic", + "sp-runtime", + "sp-std", "sp-timestamp", ] [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "parity-scale-codec", - "schnorrkel", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "sp-core" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77963e2aa8fadb589118c3aede2e78b6c4bcf1c01d588fbf33e915b390825fbd" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "base58", - "bitflags", - "blake2-rfc", - "byteorder", - "dyn-clonable", - "ed25519-dalek", - "futures 0.3.21", - "hash-db", - "hash256-std-hasher", - "hex", - "impl-serde", - "lazy_static", - "libsecp256k1", - "log", - "merlin", - "num-traits 0.2.14", "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.12.0", - "primitive-types", - "rand 0.7.3", - "regex 1.5.5", "scale-info", "schnorrkel", - "secp256k1", - "secrecy", - "serde", - "sp-core-hashing 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-debug-derive 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-externalities 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-storage 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ss58-registry", - "substrate-bip39", - "thiserror", - "tiny-bip39", - "wasmi", - "zeroize", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ + "array-bytes", "base58", "bitflags", - "blake2-rfc", + "blake2", "byteorder", "dyn-clonable", - "ed25519-dalek", - "futures 0.3.21", + "ed25519-zebra", + "futures", "hash-db", "hash256-std-hasher", - "hex", "impl-serde", "lazy_static", "libsecp256k1", "log", "merlin", - "num-traits 0.2.14", + "num-traits 0.2.15", "parity-scale-codec", "parity-util-mem", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "primitive-types", "rand 0.7.3", - "regex 1.5.5", + "regex 1.6.0", "scale-info", "schnorrkel", "secp256k1", "secrecy", "serde", - "sp-core-hashing 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-debug-derive 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-storage 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core-hashing", + "sp-debug-derive", + "sp-externalities", + "sp-runtime-interface", + "sp-std", + "sp-storage", "ss58-registry", "substrate-bip39", "thiserror", @@ -9494,66 +9498,41 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec864a6a67249f0c8dd3d5acab43623a61677e85ff4f2f9b04b802d2fe780e83" -dependencies = [ - "blake2-rfc", - "byteorder", - "sha2 0.9.9", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak", - "twox-hash", -] - -[[package]] -name = "sp-core-hashing" -version = "4.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "blake2 0.10.4", + "blake2", "byteorder", - "digest 0.10.3", - "sha2 0.10.2", - "sha3 0.10.1", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "digest 0.10.5", + "sha2 0.10.6", + "sha3", + "sp-std", "twox-hash", ] [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "proc-macro2", "quote", - "sp-core-hashing 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core-hashing", "syn", ] [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "kvdb 0.11.0", - "parking_lot 0.12.0", -] - -[[package]] -name = "sp-debug-derive" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d676664972e22a0796176e81e7bec41df461d1edf52090955cdab55f2c956ff2" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "parking_lot 0.12.1", ] [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "proc-macro2", "quote", @@ -9563,30 +9542,18 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcfd91f92a2a59224230a77c4a5d6f51709620c0aab4e51f108ccece6adc56f" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-storage 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "sp-externalities" -version = "0.12.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "environmental", "parity-scale-codec", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-storage 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", + "sp-storage", ] [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "finality-grandpa", "log", @@ -9594,139 +9561,85 @@ dependencies = [ "scale-info", "serde", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", + "sp-core", + "sp-keystore", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", "impl-trait-for-tuples", "parity-scale-codec", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-runtime", + "sp-std", "thiserror", ] [[package]] name = "sp-io" version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "935fd3c71bad6811a7984cabb74d323b8ca3107024024c3eabb610e0182ba8d3" -dependencies = [ - "futures 0.3.21", - "hash-db", - "libsecp256k1", - "log", - "parity-scale-codec", - "parking_lot 0.12.0", - "secp256k1", - "sp-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-externalities 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-keystore 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-state-machine 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-tracing 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-trie 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-wasm-interface 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing", - "tracing-core", -] - -[[package]] -name = "sp-io" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", + "bytes", + "futures", "hash-db", "libsecp256k1", "log", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "secp256k1", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-wasm-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-externalities", + "sp-keystore", + "sp-runtime-interface", + "sp-state-machine", + "sp-std", + "sp-tracing", + "sp-trie", + "sp-wasm-interface", "tracing", "tracing-core", ] [[package]] name = "sp-keyring" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ae05359a224787068adb14ebd007545543de07b907b4eb71947a7d49004f73" -dependencies = [ - "lazy_static", - "sp-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "strum", -] - -[[package]] -name = "sp-keyring" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "lazy_static", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "strum", -] - -[[package]] -name = "sp-keystore" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3261eddca8c8926e3e1de136a7980cb3afc3455247d9d6f3119d9b292f73aaee" +version = "6.0.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "async-trait", - "futures 0.3.21", - "merlin", - "parity-scale-codec", - "parking_lot 0.12.0", - "schnorrkel", - "sp-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-externalities 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror", + "lazy_static", + "sp-core", + "sp-runtime", + "strum", ] [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", - "futures 0.3.21", + "futures", "merlin", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "schnorrkel", "serde", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-externalities", "thiserror", ] [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "thiserror", "zstd", @@ -9735,85 +9648,51 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-arithmetic", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "sp-api", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "sp-panic-handler" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2101f3c555fceafcfcfb0e61c55ea9ed80dc60bd77d54d9f25b369edb029e9a4" -dependencies = [ - "backtrace", - "lazy_static", - "regex 1.5.5", + "sp-core", + "sp-runtime", ] [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "backtrace", "lazy_static", - "regex 1.5.5", + "regex 1.6.0", ] [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "rustc-hash", "serde", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "sp-runtime" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d8a8d5ab5d349c6cf9300af1721b7b6446ba63401dbb11c10a1d65197aa5f" -dependencies = [ - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "parity-util-mem", - "paste 1.0.7", - "rand 0.7.3", - "scale-info", - "serde", - "sp-application-crypto 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-arithmetic 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-io 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core", ] [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "either", "hash256-std-hasher", @@ -9821,72 +9700,43 @@ dependencies = [ "log", "parity-scale-codec", "parity-util-mem", - "paste 1.0.7", + "paste 1.0.9", "rand 0.7.3", "scale-info", "serde", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-arithmetic 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "sp-runtime-interface" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "158bf0305c75a50fc0e334b889568f519a126e32b87900c3f4251202dece7b4b" -dependencies = [ - "impl-trait-for-tuples", - "parity-scale-codec", - "primitive-types", - "sp-externalities 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime-interface-proc-macro 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-storage 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-tracing 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-wasm-interface 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-std", + "sp-weights", ] [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ + "bytes", "impl-trait-for-tuples", "parity-scale-codec", "primitive-types", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime-interface-proc-macro 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-storage 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-tracing 5.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-wasm-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-externalities", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", "static_assertions", ] [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ecb916b9664ed9f90abef0ff5a3e61454c1efea5861b2997e03f39b59b955f" -dependencies = [ - "Inflector", - "proc-macro-crate 1.1.3", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "sp-runtime-interface-proc-macro" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "Inflector", - "proc-macro-crate 1.1.3", + "proc-macro-crate", "proc-macro2", "quote", "syn", @@ -9895,92 +9745,59 @@ dependencies = [ [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "log", "parity-scale-codec", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-wasm-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-io", + "sp-std", + "sp-wasm-interface", "wasmi", ] -[[package]] -name = "sp-serializer" -version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", "scale-info", "sp-api", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-runtime", "sp-staking", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", ] [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", "scale-info", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "sp-state-machine" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecee3b33eb78c99997676a571656bcc35db6886abecfddd13e76a73b5871c6c1" -dependencies = [ - "hash-db", - "log", - "num-traits 0.2.14", - "parity-scale-codec", - "parking_lot 0.12.0", - "rand 0.7.3", - "smallvec 1.8.0", - "sp-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-externalities 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-panic-handler 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-trie 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror", - "tracing", - "trie-db", - "trie-root", + "sp-runtime", + "sp-std", ] [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "hash-db", "log", - "num-traits 0.2.14", + "num-traits 0.2.15", "parity-scale-codec", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "rand 0.7.3", - "smallvec 1.8.0", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-panic-handler 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "smallvec 1.10.0", + "sp-core", + "sp-externalities", + "sp-panic-handler", + "sp-std", + "sp-trie", "thiserror", "tracing", "trie-root", @@ -9989,58 +9806,38 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14804d6069ee7a388240b665f17908d98386ffb0b5d39f89a4099fc7a2a4c03f" - -[[package]] -name = "sp-std" -version = "4.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" - -[[package]] -name = "sp-storage" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dab53af846068e3e0716d3ccc70ea0db44035c79b2ed5821aaa6635039efa37" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "impl-serde", "parity-scale-codec", "ref-cast", "serde", - "sp-debug-derive 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-debug-derive", + "sp-std", ] [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "log", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-externalities", + "sp-io", + "sp-runtime-interface", + "sp-std", ] [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", "futures-timer", @@ -10048,31 +9845,18 @@ dependencies = [ "parity-scale-codec", "sp-api", "sp-inherents", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", "thiserror", ] [[package]] name = "sp-tracing" version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69a67e555d171c4238bd223393cda747dd20ec7d4f5fe5c042c056cb7fde9eda" -dependencies = [ - "parity-scale-codec", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tracing", - "tracing-core", - "tracing-subscriber 0.2.25", -] - -[[package]] -name = "sp-tracing" -version = "5.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-std", "tracing", "tracing-core", "tracing-subscriber 0.2.25", @@ -10081,56 +9865,47 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "sp-api", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", ] [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "async-trait", "log", "parity-scale-codec", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", "sp-inherents", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", -] - -[[package]] -name = "sp-trie" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6fc34f4f291886914733e083b62708d829f3e6b8d7a7ca7fa8a55a3d7640b0b" -dependencies = [ - "hash-db", - "memory-db", - "parity-scale-codec", - "scale-info", - "sp-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-db", - "trie-root", + "sp-runtime", + "sp-std", + "sp-trie", ] [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ + "ahash", "hash-db", + "hashbrown 0.12.3", + "lazy_static", + "lru", "memory-db", + "nohash-hasher", "parity-scale-codec", + "parking_lot 0.12.1", "scale-info", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-std", "thiserror", + "tracing", "trie-db", "trie-root", ] @@ -10138,16 +9913,16 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "impl-serde", "parity-scale-codec", - "parity-wasm 0.42.2", + "parity-wasm 0.45.0", "scale-info", "serde", "sp-core-hashing-proc-macro", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-std", "sp-version-proc-macro", "thiserror", ] @@ -10155,7 +9930,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10166,27 +9941,30 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d88debe690c2b24eaa9536a150334fcef2ae184c21a0e5b3e80135407a7d52" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "impl-trait-for-tuples", "log", "parity-scale-codec", - "sp-std 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std", "wasmi", + "wasmtime", ] [[package]] -name = "sp-wasm-interface" -version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +name = "sp-weights" +version = "4.0.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "impl-trait-for-tuples", - "log", "parity-scale-codec", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "wasmi", - "wasmtime", + "scale-info", + "serde", + "smallvec 1.10.0", + "sp-arithmetic", + "sp-core", + "sp-debug-derive", + "sp-std", ] [[package]] @@ -10197,9 +9975,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "spin" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "511254be0c5bcf062b019a6c89c01a664aa359ded62f78aa72c6fc137c0590e5" +checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" [[package]] name = "spki" @@ -10213,9 +9991,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.17.0" +version = "1.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b84a70894df7a73666e0694f44b41a9571625e9546fb58a0818a565d2c7e084" +checksum = "3ab7554f8a8b6f8d71cd5a8e6536ef116e2ce0504cf97ebf16311d58065dc8a6" dependencies = [ "Inflector", "num-format", @@ -10232,7 +10010,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4564168c00635f88eaed410d5efa8131afa8d8699a612c80c455a0ba05c21045" dependencies = [ - "memchr 2.4.1", + "memchr 2.5.0", ] [[package]] @@ -10256,6 +10034,34 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "static_init" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a2a1c578e98c1c16fc3b8ec1328f7659a500737d7a0c6d625e73e830ff9c1f6" +dependencies = [ + "bitflags", + "cfg_aliases", + "libc", + "parking_lot 0.11.2", + "parking_lot_core 0.8.5", + "static_init_macro", + "winapi 0.3.9", +] + +[[package]] +name = "static_init_macro" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a2595fc3aa78f2d0e45dd425b22282dd863273761cc77780914b2cf3003acf" +dependencies = [ + "cfg_aliases", + "memchr 2.5.0", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "statrs" version = "0.15.0" @@ -10265,7 +10071,7 @@ dependencies = [ "approx", "lazy_static", "nalgebra", - "num-traits 0.2.14", + "num-traits 0.2.15", "rand 0.8.5", ] @@ -10307,20 +10113,20 @@ dependencies = [ [[package]] name = "strum" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bb" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.23.1" +version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck 0.3.3", + "heck 0.4.0", "proc-macro2", "quote", "rustversion", @@ -10343,7 +10149,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "platforms", ] @@ -10357,32 +10163,44 @@ dependencies = [ "serde", ] +[[package]] +name = "substrate-frame-cli" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "clap 3.2.23", + "frame-support", + "frame-system", + "sc-cli", + "sp-core", + "sp-runtime", +] + [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "frame-system-rpc-runtime-api", - "futures 0.3.21", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", + "futures", + "jsonrpsee", "log", "parity-scale-codec", "sc-client-api", "sc-rpc-api", "sc-transaction-pool-api", + "serde_json", "sp-api", "sp-block-builder", "sp-blockchain", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-runtime", ] [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "futures-util", "hyper", @@ -10392,14 +10210,35 @@ dependencies = [ "tokio", ] +[[package]] +name = "substrate-state-trie-migration-rpc" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "jsonrpsee", + "log", + "parity-scale-codec", + "sc-client-api", + "sc-rpc-api", + "scale-info", + "serde", + "sp-core", + "sp-io", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", + "trie-db", +] + [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ + "array-bytes", "async-trait", - "futures 0.3.21", - "hex", + "futures", "parity-scale-codec", "sc-client-api", "sc-client-db", @@ -10411,20 +10250,21 @@ dependencies = [ "serde_json", "sp-blockchain", "sp-consensus", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keyring 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keystore 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-keyring", + "sp-keystore", + "sp-runtime", + "sp-state-machine", ] [[package]] name = "substrate-test-runtime" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ + "beefy-merkle-tree", "beefy-primitives", - "cfg-if 1.0.0", + "cfg-if", "frame-support", "frame-system", "frame-system-rpc-runtime-api", @@ -10438,24 +10278,24 @@ dependencies = [ "scale-info", "serde", "sp-api", - "sp-application-crypto 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-application-crypto", "sp-block-builder", "sp-consensus-aura", "sp-consensus-babe", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-externalities 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-externalities", "sp-finality-grandpa", "sp-inherents", - "sp-io 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-keyring 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-io", + "sp-keyring", "sp-offchain", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime-interface 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-runtime", + "sp-runtime-interface", "sp-session", - "sp-state-machine 0.12.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-std 4.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-state-machine", + "sp-std", "sp-transaction-pool", - "sp-trie 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-trie", "sp-version", "substrate-wasm-builder", "trie-db", @@ -10464,9 +10304,9 @@ dependencies = [ [[package]] name = "substrate-test-runtime-client" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ - "futures 0.3.21", + "futures", "parity-scale-codec", "sc-block-builder", "sc-client-api", @@ -10474,8 +10314,8 @@ dependencies = [ "sp-api", "sp-blockchain", "sp-consensus", - "sp-core 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", - "sp-runtime 6.0.0 (git+https://github.com/paritytech/substrate.git?branch=master)", + "sp-core", + "sp-runtime", "substrate-test-client", "substrate-test-runtime", ] @@ -10483,11 +10323,12 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=master#c89d524dea7bfb474f2e036ebc486fca9c81533f" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" dependencies = [ "ansi_term", "build-helper", "cargo_metadata", + "filetime", "sp-maybe-compressed-blob", "strum", "tempfile", @@ -10510,74 +10351,78 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "subxt" -version = "0.20.0" -source = "git+https://github.com/paritytech/subxt.git#dffeee431e35d299f431f08755e09270b2ca477f" +version = "0.24.0" +source = "git+https://github.com/entropyxyz/subxt.git?branch=substrate-master#fc20409cae5214d825ada0e3b23f2756f54ffd70" dependencies = [ - "async-trait", "bitvec", - "chameleon", "derivative", - "frame-metadata", - "futures 0.3.21", + "frame-metadata 15.0.0 (git+https://github.com/paritytech/frame-metadata/)", + "futures", "hex", "jsonrpsee", - "log", "parity-scale-codec", + "parking_lot 0.12.1", + "scale-decode", "scale-info", + "scale-value", "serde", "serde_json", - "sp-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-runtime 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core", + "sp-runtime", "subxt-macro", + "subxt-metadata", "thiserror", + "tracing", ] [[package]] name = "subxt-codegen" -version = "0.20.0" -source = "git+https://github.com/paritytech/subxt.git#dffeee431e35d299f431f08755e09270b2ca477f" +version = "0.24.0" +source = "git+https://github.com/entropyxyz/subxt.git?branch=substrate-master#fc20409cae5214d825ada0e3b23f2756f54ffd70" dependencies = [ - "async-trait", "darling", - "frame-metadata", + "frame-metadata 15.0.0 (git+https://github.com/paritytech/frame-metadata/)", "heck 0.4.0", "parity-scale-codec", - "proc-macro-crate 0.1.5", "proc-macro-error", "proc-macro2", "quote", "scale-info", + "subxt-metadata", "syn", ] [[package]] name = "subxt-macro" -version = "0.20.0" -source = "git+https://github.com/paritytech/subxt.git#dffeee431e35d299f431f08755e09270b2ca477f" +version = "0.24.0" +source = "git+https://github.com/entropyxyz/subxt.git?branch=substrate-master#fc20409cae5214d825ada0e3b23f2756f54ffd70" dependencies = [ - "async-trait", "darling", - "frame-metadata", - "heck 0.4.0", - "parity-scale-codec", - "proc-macro-crate 0.1.5", "proc-macro-error", - "proc-macro2", - "quote", - "scale-info", "subxt-codegen", "syn", ] +[[package]] +name = "subxt-metadata" +version = "0.24.0" +source = "git+https://github.com/entropyxyz/subxt.git?branch=substrate-master#fc20409cae5214d825ada0e3b23f2756f54ffd70" +dependencies = [ + "frame-metadata 15.0.0 (git+https://github.com/paritytech/frame-metadata/)", + "parity-scale-codec", + "scale-info", + "sp-core", +] + [[package]] name = "syn" -version = "1.0.91" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" +checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -10592,6 +10437,27 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "system-configuration" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75182f12f490e953596550b65ee31bda7c8e043d9386174b353bda50838c3fd" +dependencies = [ + "bitflags", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -10600,9 +10466,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fa7e55043acb85fca6b3c01485a2eeb6b69c5d21002e273c79e465f43b7ac1" +checksum = "c02424087780c9b71cc96799eaeddff35af2bc513278cda5c99fc1f5d026d3c1" [[package]] name = "tempfile" @@ -10610,7 +10476,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "fastrand", "libc", "redox_syscall", @@ -10635,8 +10501,8 @@ dependencies = [ "log", "parity-scale-codec", "project-root", - "sp-core 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-keyring 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core", + "sp-keyring", "subxt", "which", ] @@ -10652,24 +10518,24 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" dependencies = [ "proc-macro2", "quote", @@ -10707,7 +10573,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" dependencies = [ - "once_cell 1.12.0", + "once_cell 1.16.0", ] [[package]] @@ -10743,21 +10609,32 @@ dependencies = [ [[package]] name = "time" -version = "0.3.11" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217" +checksum = "0fab5c8b9980850e06d92ddbe3ab839c062c801f3927c0fb8abd6fc8e918fbca" dependencies = [ - "itoa 1.0.1", + "itoa", "libc", "num_threads", + "serde", + "time-core", "time-macros", ] +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + [[package]] name = "time-macros" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" +checksum = "65bb801831d812c562ae7d2bfb531f26e66e4e1f6b17307ba4149c5064710e5b" +dependencies = [ + "time-core", +] [[package]] name = "tiny-bip39" @@ -10767,7 +10644,7 @@ checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" dependencies = [ "anyhow", "hmac 0.8.1", - "once_cell 1.12.0", + "once_cell 1.16.0", "pbkdf2 0.4.0", "rand 0.7.3", "rustc-hash", @@ -10778,20 +10655,11 @@ dependencies = [ "zeroize", ] -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -10805,12 +10673,12 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tofn" version = "0.1.0" -source = "git+https://github.com/Entropyxyz/tofn?branch=main#d4d63da29f1585c8ab8ea6c78a19ffcc8b887b1d" +source = "git+https://github.com/entropyxyz/tofn?branch=main#d4d63da29f1585c8ab8ea6c78a19ffcc8b887b1d" dependencies = [ "anyhow", "bincode", "chrono", - "clap 3.1.8", + "clap 3.2.23", "ecdsa", "hex", "hmac 0.12.1", @@ -10821,10 +10689,10 @@ dependencies = [ "rand_core 0.6.4", "serde", "serde_json", - "sha2 0.10.2", - "sha3 0.10.1", + "sha2 0.10.6", + "sha3", "tracing", - "tracing-subscriber 0.3.11", + "tracing-subscriber 0.3.16", "zeroize", ] @@ -10836,7 +10704,7 @@ dependencies = [ "anyhow", "bincode", "chrono", - "clap 3.1.8", + "clap 3.2.23", "ecdsa", "hex", "hmac 0.12.1", @@ -10847,38 +10715,38 @@ dependencies = [ "rand_core 0.6.4", "serde", "serde_json", - "sha2 0.10.2", - "sha3 0.10.1", + "sha2 0.10.6", + "sha3", "tracing", - "tracing-subscriber 0.3.11", + "tracing-subscriber 0.3.16", "zeroize", ] [[package]] name = "tokio" -version = "1.17.0" +version = "1.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" dependencies = [ - "bytes 1.1.0", + "autocfg 1.1.0", + "bytes", "libc", - "memchr 2.4.1", - "mio 0.8.2", + "memchr 2.5.0", + "mio", "num_cpus", - "once_cell 1.12.0", - "parking_lot 0.12.0", - "pin-project-lite 0.2.8", + "parking_lot 0.12.1", + "pin-project-lite 0.2.9", "signal-hook-registry", - "socket2 0.4.4", + "socket2", "tokio-macros", "winapi 0.3.9", ] [[package]] name = "tokio-macros" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" dependencies = [ "proc-macro2", "quote", @@ -10897,98 +10765,73 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" -dependencies = [ - "rustls 0.19.1", - "tokio", - "webpki 0.21.4", -] - -[[package]] -name = "tokio-rustls" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4151fda0cf2798550ad0b34bcfc9b9dcc2a9d2471c895c68f3a8818e54f2389e" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "rustls 0.20.4", + "rustls", "tokio", - "webpki 0.22.0", + "webpki", ] [[package]] name = "tokio-stream" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" -dependencies = [ - "futures-core", - "pin-project-lite 0.2.8", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.6.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" +checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" dependencies = [ - "bytes 1.1.0", "futures-core", - "futures-io", - "futures-sink", - "log", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", "tokio", ] [[package]] name = "tokio-util" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0edfdeb067411dba2044da6d1cb2df793dd35add7888d73c16e3381ded401764" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" dependencies = [ - "bytes 1.1.0", + "bytes", "futures-core", + "futures-io", "futures-sink", - "pin-project-lite 0.2.8", + "pin-project-lite 0.2.9", "tokio", "tracing", ] [[package]] name = "toml" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] [[package]] name = "tower-service" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.35" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ - "cfg-if 1.0.0", - "pin-project-lite 0.2.8", + "cfg-if", + "pin-project-lite 0.2.9", "tracing-attributes", "tracing-core", ] [[package]] name = "tracing-attributes" -version = "0.1.20" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", "quote", @@ -10997,11 +10840,11 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.27" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7709595b8878a4965ce5e87ebf880a7d39c9afc6837721b21a5a816a8117d921" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" dependencies = [ - "once_cell 1.12.0", + "once_cell 1.16.0", "valuable", ] @@ -11011,15 +10854,15 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ - "pin-project 1.0.10", + "pin-project", "tracing", ] [[package]] name = "tracing-log" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" dependencies = [ "lazy_static", "log", @@ -11047,11 +10890,11 @@ dependencies = [ "lazy_static", "matchers 0.0.1", "parking_lot 0.11.2", - "regex 1.5.5", + "regex 1.6.0", "serde", "serde_json", "sharded-slab", - "smallvec 1.8.0", + "smallvec 1.10.0", "thread_local 1.1.4", "tracing", "tracing-core", @@ -11061,16 +10904,16 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.11" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bc28f93baff38037f64e6f43d34cfa1605f27a49c34e8a04c5e78b0babf2596" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" dependencies = [ - "ansi_term", - "lazy_static", "matchers 0.1.0", - "regex 1.5.5", + "nu-ansi-term", + "once_cell 1.16.0", + "regex 1.6.0", "sharded-slab", - "smallvec 1.8.0", + "smallvec 1.10.0", "thread_local 1.1.4", "tracing", "tracing-core", @@ -11079,15 +10922,15 @@ dependencies = [ [[package]] name = "trie-db" -version = "0.23.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32d034c0d3db64b43c31de38e945f15b40cd4ca6d2dcfc26d4798ce8de4ab83" +checksum = "004e1e8f92535694b4cb1444dc5a8073ecf0815e3357f729638b9f8fc4062908" dependencies = [ "hash-db", - "hashbrown 0.12.0", + "hashbrown 0.12.3", "log", "rustc-hex", - "smallvec 1.8.0", + "smallvec 1.10.0", ] [[package]] @@ -11101,12 +10944,12 @@ dependencies = [ [[package]] name = "trust-dns-proto" -version = "0.20.4" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca94d4e9feb6a181c690c4040d7a24ef34018d8313ac5044a61d21222ae24e31" +checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" dependencies = [ "async-trait", - "cfg-if 1.0.0", + "cfg-if", "data-encoding", "enum-as-inner", "futures-channel", @@ -11117,27 +10960,27 @@ dependencies = [ "lazy_static", "log", "rand 0.8.5", - "smallvec 1.8.0", + "smallvec 1.10.0", "thiserror", "tinyvec", - "url 2.2.2", + "url", ] [[package]] name = "trust-dns-resolver" -version = "0.20.4" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecae383baad9995efaa34ce8e57d12c3f305e545887472a492b838f4b5cfb77a" +checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "futures-util", "ipconfig", "lazy_static", "log", "lru-cache", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "resolv-conf", - "smallvec 1.8.0", + "smallvec 1.10.0", "thiserror", "trust-dns-proto", ] @@ -11148,6 +10991,32 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +[[package]] +name = "try-runtime-cli" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-v0.9.30#a3ed0119c45cdd0d571ad34e5b3ee7518c8cef8d" +dependencies = [ + "clap 3.2.23", + "frame-try-runtime", + "jsonrpsee", + "log", + "parity-scale-codec", + "remote-externalities", + "sc-chain-spec", + "sc-cli", + "sc-executor", + "sc-service", + "serde", + "sp-core", + "sp-externalities", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-state-machine", + "sp-version", + "zstd", +] + [[package]] name = "tt-call" version = "1.0.8" @@ -11156,12 +11025,12 @@ checksum = "5e66dcbec4290c69dd03c57e76c2469ea5c7ce109c6dd4351c13055cf71ea055" [[package]] name = "twox-hash" -version = "1.6.2" +version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ - "cfg-if 1.0.0", - "digest 0.10.3", + "cfg-if", + "digest 0.10.5", "rand 0.8.5", "static_assertions", ] @@ -11185,24 +11054,24 @@ checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "ubyte" -version = "0.10.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42756bb9e708855de2f8a98195643dff31a97f0485d90d8467b39dc24be9e8fe" +checksum = "c81f0dae7d286ad0d9366d7679a77934cfc3cf3a8d67e82669794412b2368fe6" dependencies = [ "serde", ] [[package]] name = "ucd-trie" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" +checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" [[package]] name = "uint" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0" +checksum = "a45526d29728d135c2900b0d30573fe3ee79fceb12ef534c7bb30e810a91b601" dependencies = [ "byteorder", "crunchy", @@ -11212,9 +11081,9 @@ dependencies = [ [[package]] name = "uncased" -version = "0.9.6" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baeed7327e25054889b9bd4f975f32e5f4c5d434042d59ab6cd4142c0a76ed0" +checksum = "09b01702b0fd0b3fadcf98e098780badda8742d4f4a7676615cad90e8ac73622" dependencies = [ "serde", "version_check", @@ -11231,36 +11100,42 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" [[package]] name = "unicode-width" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "universal-hash" @@ -11295,32 +11170,14 @@ dependencies = [ "zeroize", ] -[[package]] -name = "unsigned-varint" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fdeedbf205afadfe39ae559b75c3240f24e257d0ca27e85f85cb82aa19ac35" - -[[package]] -name = "unsigned-varint" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35581ff83d4101e58b582e607120c7f5ffb17e632a980b1f38334d76b36908b2" -dependencies = [ - "asynchronous-codec 0.5.0", - "bytes 1.1.0", - "futures-io", - "futures-util", -] - [[package]] name = "unsigned-varint" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" dependencies = [ - "asynchronous-codec 0.6.0", - "bytes 1.1.0", + "asynchronous-codec", + "bytes", "futures-io", "futures-util", ] @@ -11333,25 +11190,13 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -dependencies = [ - "idna 0.1.5", - "matches", - "percent-encoding 1.0.1", -] - -[[package]] -name = "url" -version = "2.2.2" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" dependencies = [ "form_urlencoded", - "idna 0.2.3", - "matches", - "percent-encoding 2.1.0", + "idna 0.3.0", + "percent-encoding", ] [[package]] @@ -11362,11 +11207,11 @@ checksum = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f" [[package]] name = "uuid" -version = "1.1.2" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" +checksum = "feb41e78f93363bb2df8b0e86a2ca30eed7806ea16ea0c790d757cf93f79be83" dependencies = [ - "getrandom 0.2.6", + "getrandom 0.2.8", "serde", ] @@ -11457,23 +11302,23 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.79" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.79" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell 1.16.0", "proc-macro2", "quote", "syn", @@ -11482,11 +11327,11 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.29" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -11494,9 +11339,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.79" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -11504,9 +11349,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.79" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ "proc-macro2", "quote", @@ -11517,9 +11362,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.79" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" [[package]] name = "wasm-gc-api" @@ -11534,11 +11379,11 @@ dependencies = [ [[package]] name = "wasm-instrument" -version = "0.1.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "962e5b0401bbb6c887f54e69b8c496ea36f704df65db73e81fd5ff8dc3e63a9f" +checksum = "aa1dafb3e60065305741e83db35c6c2584bb3725b692b5b66148a38d72ace6cd" dependencies = [ - "parity-wasm 0.42.2", + "parity-wasm 0.45.0", ] [[package]] @@ -11547,7 +11392,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" dependencies = [ - "futures 0.3.21", + "futures", "js-sys", "parking_lot 0.11.2", "pin-utils", @@ -11558,56 +11403,63 @@ dependencies = [ [[package]] name = "wasmi" -version = "0.9.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca00c5147c319a8ec91ec1a0edbec31e566ce2c9cc93b3f9bb86a9efd0eb795d" +checksum = "06c326c93fbf86419608361a2c925a31754cf109da1b8b55737070b4d6669422" dependencies = [ - "downcast-rs", - "libc", - "libm", - "memory_units", - "num-rational 0.2.4", - "num-traits 0.2.14", - "parity-wasm 0.42.2", + "parity-wasm 0.45.0", "wasmi-validation", + "wasmi_core", ] [[package]] name = "wasmi-validation" -version = "0.4.1" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ff416ad1ff0c42e5a926ed5d5fab74c0f098749aa0ad8b2a34b982ce0e867b" +dependencies = [ + "parity-wasm 0.45.0", +] + +[[package]] +name = "wasmi_core" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "165343ecd6c018fc09ebcae280752702c9a2ef3e6f8d02f1cfcbdb53ef6d7937" +checksum = "57d20cb3c59b788653d99541c646c561c9dd26506f25c0cebfe810659c54c6d7" dependencies = [ - "parity-wasm 0.42.2", + "downcast-rs", + "libm", + "memory_units", + "num-rational 0.4.1", + "num-traits 0.2.15", ] [[package]] name = "wasmparser" -version = "0.81.0" +version = "0.89.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98930446519f63d00a836efdc22f67766ceae8dbcc1571379f2bcabc6b2b9abc" +checksum = "ab5d3e08b13876f96dd55608d03cd4883a0545884932d5adf11925876c96daef" +dependencies = [ + "indexmap", +] [[package]] name = "wasmtime" -version = "0.33.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c9c724da92e39a85d2231d4c2a942c8be295211441dbca581c6c3f3f45a9f00" +checksum = "f1f511c4917c83d04da68333921107db75747c4e11a2f654a8e909cc5e0520dc" dependencies = [ "anyhow", - "backtrace", "bincode", - "cfg-if 1.0.0", - "cpp_demangle", + "cfg-if", "indexmap", - "lazy_static", "libc", "log", "object", - "paste 1.0.7", + "once_cell 1.16.0", + "paste 1.0.9", "psm", "rayon", - "region", - "rustc-demangle", "serde", "target-lexicon", "wasmparser", @@ -11616,14 +11468,23 @@ dependencies = [ "wasmtime-environ", "wasmtime-jit", "wasmtime-runtime", - "winapi 0.3.9", + "windows-sys 0.36.1", +] + +[[package]] +name = "wasmtime-asm-macros" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39bf3debfe744bf19dd3732990ce6f8c0ced7439e2370ba4e1d8f5a3660a3178" +dependencies = [ + "cfg-if", ] [[package]] name = "wasmtime-cache" -version = "0.33.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da4439d99100298344567c0eb6916ad5864e99e54760b8177c427e529077fb30" +checksum = "ece42fa4676a263f7558cdaaf5a71c2592bebcbac22a0580e33cf3406c103da2" dependencies = [ "anyhow", "base64", @@ -11635,15 +11496,15 @@ dependencies = [ "serde", "sha2 0.9.9", "toml", - "winapi 0.3.9", + "windows-sys 0.36.1", "zstd", ] [[package]] name = "wasmtime-cranelift" -version = "0.33.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1762765dd69245f00e5d9783b695039e449a7be0f9c5383e4c78465dd6131aeb" +checksum = "058217e28644b012bdcdf0e445f58d496d78c2e0b6a6dd93558e701591dad705" dependencies = [ "anyhow", "cranelift-codegen", @@ -11653,7 +11514,6 @@ dependencies = [ "cranelift-wasm", "gimli", "log", - "more-asserts", "object", "target-lexicon", "thiserror", @@ -11663,16 +11523,15 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "0.33.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4468301d95ec71710bb6261382efe27d1296447711645e3dbabaea6e4de3504" +checksum = "c7af06848df28b7661471d9a80d30a973e0f401f2e3ed5396ad7e225ed217047" dependencies = [ "anyhow", "cranelift-entity", "gimli", "indexmap", "log", - "more-asserts", "object", "serde", "target-lexicon", @@ -11683,56 +11542,70 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "0.33.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab0ae6e581ff014b470ec35847ea3c0b4c3ace89a55df5a04c802a11f4574e7d" +checksum = "9028fb63a54185b3c192b7500ef8039c7bb8d7f62bfc9e7c258483a33a3d13bb" dependencies = [ "addr2line", "anyhow", "bincode", - "cfg-if 1.0.0", + "cfg-if", + "cpp_demangle", "gimli", + "log", "object", - "region", + "rustc-demangle", "rustix", "serde", "target-lexicon", "thiserror", "wasmtime-environ", + "wasmtime-jit-debug", "wasmtime-runtime", - "winapi 0.3.9", + "windows-sys 0.36.1", +] + +[[package]] +name = "wasmtime-jit-debug" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25e82d4ef93296785de7efca92f7679dc67fe68a13b625a5ecc8d7503b377a37" +dependencies = [ + "object", + "once_cell 1.16.0", + "rustix", ] [[package]] name = "wasmtime-runtime" -version = "0.33.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9c28877ae37a367cda7b52b8887589816152e95dde9b7c80cc686f52761961" +checksum = "9f0e9bea7d517d114fe66b930b2124ee086516ee93eeebfd97f75f366c5b0553" dependencies = [ "anyhow", - "backtrace", "cc", - "cfg-if 1.0.0", + "cfg-if", "indexmap", - "lazy_static", "libc", "log", "mach", + "memfd", "memoffset", - "more-asserts", + "paste 1.0.9", "rand 0.8.5", - "region", "rustix", "thiserror", + "wasmtime-asm-macros", "wasmtime-environ", - "winapi 0.3.9", + "wasmtime-jit-debug", + "windows-sys 0.36.1", ] [[package]] name = "wasmtime-types" -version = "0.33.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395726e8f5dd8c57cb0db445627b842343f7e29ed7489467fdf7953ed9d3cd4f" +checksum = "69b83e93ed41b8fdc936244cfd5e455480cf1eca1fd60c78a0040038b4ce5075" dependencies = [ "cranelift-entity", "serde", @@ -11742,24 +11615,14 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.56" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" dependencies = [ "js-sys", "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki" version = "0.22.0" @@ -11772,20 +11635,11 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" -dependencies = [ - "webpki 0.21.4", -] - -[[package]] -name = "webpki-roots" -version = "0.22.2" +version = "0.22.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552ceb903e957524388c4d3475725ff2c8b7960922063af6ce53c9a43da07449" +checksum = "368bfe657969fb01238bb756d351dcade285e0f6fcbd36dcb23359a5169975be" dependencies = [ - "webpki 0.22.0", + "webpki", ] [[package]] @@ -11799,20 +11653,20 @@ dependencies = [ [[package]] name = "which" -version = "4.2.5" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae" +checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" dependencies = [ "either", - "lazy_static", "libc", + "once_cell 1.16.0", ] [[package]] name = "widestring" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" [[package]] name = "winapi" @@ -11858,53 +11712,196 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows-sys" +name = "windows" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbedf6db9096bc2364adce0ae0aa636dcd89f3c3f2cd67947062aaf0ca2a10ec" +dependencies = [ + "windows_aarch64_msvc 0.32.0", + "windows_i686_gnu 0.32.0", + "windows_i686_msvc 0.32.0", + "windows_x86_64_gnu 0.32.0", + "windows_x86_64_msvc 0.32.0", +] + +[[package]] +name = "windows" version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5acdd78cb4ba54c0045ac14f62d8f94a03d10047904ae2a40afa1e99d8f70825" +checksum = "45296b64204227616fdbf2614cefa4c236b98ee64dfaaaa435207ed99fe7829f" +dependencies = [ + "windows_aarch64_msvc 0.34.0", + "windows_i686_gnu 0.34.0", + "windows_i686_msvc 0.34.0", + "windows_x86_64_gnu 0.34.0", + "windows_x86_64_msvc 0.34.0", +] + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" + [[package]] name = "windows_aarch64_msvc" version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" + +[[package]] +name = "windows_i686_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" + [[package]] name = "windows_i686_gnu" version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" + +[[package]] +name = "windows_i686_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" + [[package]] name = "windows_i686_msvc" version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" + [[package]] name = "windows_x86_64_gnu" version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" + [[package]] name = "windows_x86_64_msvc" version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" + [[package]] name = "winreg" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" +checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" dependencies = [ "winapi 0.3.9", ] @@ -11918,16 +11915,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - [[package]] name = "wyz" version = "0.5.0" @@ -11961,14 +11948,14 @@ dependencies = [ [[package]] name = "yamux" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107" +checksum = "e5d9ba232399af1783a58d8eb26f6b5006fbefe2dc9ef36bd283324792d03ea5" dependencies = [ - "futures 0.3.21", + "futures", "log", "nohash-hasher", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "rand 0.8.5", "static_assertions", ] @@ -11979,6 +11966,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "yap" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc77f52dc9e9b10d55d3f4462c3b7fc393c4f17975d641542833ab2d3bc26ef" + [[package]] name = "zeroize" version = "1.5.7" @@ -12002,18 +11995,18 @@ dependencies = [ [[package]] name = "zstd" -version = "0.9.2+zstd.1.5.1" +version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "4.1.3+zstd.1.5.1" +version = "5.0.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" dependencies = [ "libc", "zstd-sys", @@ -12021,9 +12014,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.6.2+zstd.1.5.1" +version = "2.0.1+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" +checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b" dependencies = [ "cc", "libc", diff --git a/README.md b/README.md index 043d1422f..ccb22e008 100644 --- a/README.md +++ b/README.md @@ -204,18 +204,20 @@ by appending your own. A few useful ones are as follow. ``` ## testnet - * Currently our network requires 2 binaries - * ``` cargo build --release ``` will build both - * to run both you can reference /scrips.alice.sh for the chain and /scripts/sig_client.sh for the threshold client - * the sig client requires a mneumonic as an env and the one in the /scripts/sig_client.sh file is already hardcoded into the chain config (best to use that one) + +- Currently our network requires 2 binaries +- ``` cargo build --release ``` will build both +- to run both you can reference /scrips.alice.sh for the chain and /scripts/sig_client.sh for the threshold client +- the sig client requires a mneumonic as an env and the one in the /scripts/sig_client.sh file is already hardcoded into the chain config (best to use that one) ### changing defaults -* all defaults are ready to go out the box but can be changed if needed with varying degrees of difficult -* to change chain address away from default ws://127.0.0.1:9944 you need to inform the sig client which can be done with the env variable ```export ENDPOINT=``` -* To change the default of the sig client from ```http://127.0.0.1:3001/sign``` you need to tell the chain after it is running by making an rpc call. Example code can be found here ```https://github.com/Entropyxyz/util-scripts/blob/master/setEndpoint.ts```. You also need to maintain the route as /sign +* all defaults are ready to go out the box but can be changed if needed with varying degrees of difficult +- to change chain address away from default ws://127.0.0.1:9944 you need to inform the sig client which can be done with the env variable ```export ENDPOINT=``` +- To change the default of the sig client from ```http://127.0.0.1:3001/sign``` you need to tell the chain after it is running by making an rpc call. Example code can be found here ```https://github.com/entropyxyz/util-scripts/blob/master/setEndpoint.ts```. You also need to maintain the route as /sign ## Threshold keys + * keys for internal testnet use only, not secure, here for convience do not use them for anything real Alice @@ -234,43 +236,42 @@ Secret phrase `where sight patient orphan general short empower hope party hurt Account ID: 0x2a8200850770290c7ea3b50a8ff64c6761c882ff8393dc95fccb5d1475eff17f SS58 Address: 5D2SVCUkK5FgFiBwPTJuTN65J6fACSEoZrL41thZBAycwnQV - ## Running Devnet -* devnet requires 2 validator nodes, 2 threshold clients running on the same machine -* open 5 terminals lol +* devnet requires 2 validator nodes, 2 threshold clients running on the same machine -* In terminal 1 set up chain 1 - * ```cargo build --release``` - * ```./scripts/alice.sh``` +- open 5 terminals lol -* In terminal 2 run alice threshold client - * ```cargo build --release --features="alice unsafe"``` - * ```./scripts/server.sh``` +- In terminal 1 set up chain 1 + - ```cargo build --release``` + - ```./scripts/alice.sh``` -* In termainl 3 run chain 2 - * ```./scripts/bob.sh``` +- In terminal 2 run alice threshold client + - ```cargo build --release --features="alice unsafe"``` + - ```./scripts/server.sh``` -* In termainl 5run bob threshold client - * ```cargo build --release --features="bob unsafe"``` - * ```./scripts/server_bob.sh``` +- In termainl 3 run chain 2 + - ```./scripts/bob.sh``` +- In termainl 5run bob threshold client + - ```cargo build --release --features="bob unsafe"``` + - ```./scripts/server_bob.sh``` With all 4 nodes running the chain is now working, next we now have a clash where both chains by default send their OCW messages to port 3001, you need to change one of those -* from this repo https://github.com/entropyxyz/util-scripts - * need to setup the repo and link the wasm first - * ```cd pkg``` - * ```npm link``` - * ```cd ..``` - * ```npm link x25519-chacha20poly1305-wasm``` -* run setEndpoint.ts - * ```ts-node setEndpoint.ts``` - +- from this repo + - need to setup the repo and link the wasm first + - ```cd pkg``` + - ```npm link``` + - ```cd ..``` + - ```npm link x25519-chacha20poly1305-wasm``` +- run setEndpoint.ts + - ```ts-node setEndpoint.ts``` next register - * ```ts-node register.ts``` + +- ```ts-node register.ts``` now you can sign - * ```ts-node sign.ts``` +- ```ts-node sign.ts``` diff --git a/crypto/centralized-keygen/README.md b/crypto/centralized-keygen/README.md index aa7f300d7..f95168f9b 100644 --- a/crypto/centralized-keygen/README.md +++ b/crypto/centralized-keygen/README.md @@ -1,2 +1,2 @@ # Protocol Implementation -A convenience wrapper around methods from our [tofn](https://github.com/Entropyxyz/tofn) fork. +A convenience wrapper around methods from our [tofn](https://github.com/entropyxyz/tofn) fork. diff --git a/crypto/centralized-keygen/src/lib.rs b/crypto/centralized-keygen/src/lib.rs index f4087a759..8d213509a 100644 --- a/crypto/centralized-keygen/src/lib.rs +++ b/crypto/centralized-keygen/src/lib.rs @@ -5,7 +5,7 @@ use tofn::gg20::ceygen; /// Split a `secret_key` into `threshold`-of-`parties` shards, write to directory `path`. /// A wrapper around entropyxyz/tofn. -/// See https://github.com/Entropyxyz/tofn for details. +/// See https://github.com/entropyxyz/tofn for details. pub fn ceygen( path: PathBuf, parties: usize, diff --git a/crypto/kvdb/Cargo.toml b/crypto/kvdb/Cargo.toml index e5b07dca4..0e6131bea 100644 --- a/crypto/kvdb/Cargo.toml +++ b/crypto/kvdb/Cargo.toml @@ -13,7 +13,7 @@ thiserror ="1.0.31" project-root="0.2.2" # Crypto -tofn ={ git="https://github.com/Entropyxyz/tofn", branch="main" } +tofn ={ git="https://github.com/entropyxyz/tofn", branch="main" } zeroize ={ version="1.4", features=["zeroize_derive"], default-features=false } rpassword ={ version="5.0", default-features=false } scrypt ={ version="0.8", default-features=false, features=["std"] } diff --git a/crypto/server/Cargo.toml b/crypto/server/Cargo.toml index 0e170c08b..3d4ec7150 100644 --- a/crypto/server/Cargo.toml +++ b/crypto/server/Cargo.toml @@ -24,15 +24,15 @@ futures="0.3" tokio ={ version="1.16", features=["macros", "fs", "rt-multi-thread", "io-util"] } # HTTP -rocket ={ version="0.5.0-rc.1", default-features=false, features=["json"] } +rocket ={ version="0.5.0-rc.2", default-features=false, features=["json"] } reqwest={ version="0.11", features=["json", "stream"] } # Substrate +subxt ={ package="subxt", git="https://github.com/entropyxyz/subxt.git", branch="substrate-master" } parity-scale-codec="3.0.0" -subxt ={ git="https://github.com/paritytech/subxt.git" } -sp-keyring ="6.0.0" -sp-core ="6.0.0" -tofn ={ git="https://github.com/Entropyxyz/tofn", branch="main" } +sp-keyring ={ package="sp-keyring", git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } +sp-core ={ package="sp-core", git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } +tofn ={ git="https://github.com/entropyxyz/tofn", branch="main" } # Entropy substrate-common={ path="../substrate-common", default-features=false } diff --git a/crypto/server/entropy_metadata.scale b/crypto/server/entropy_metadata.scale index b05f789bfd90c0e951e5b149a5f28a340d3a4a44..3ce31d5a1817ee39cd5bcb3ace0bf52f31120b4e 100644 GIT binary patch delta 48048 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 - /// Creates an api instance to talk to chain /// Chain endpoint set on launch -pub async fn get_api(url: &str) -> Result> { - let api = ClientBuilder::new().set_url(url).build().await?.to_runtime_api::(); +pub async fn get_api(url: &str) -> Result, subxt::Error> { + let api = OnlineClient::::from_url(url).await?; Ok(api) } diff --git a/crypto/server/src/main.rs b/crypto/server/src/main.rs index 28d29ce0e..a560ff9ec 100644 --- a/crypto/server/src/main.rs +++ b/crypto/server/src/main.rs @@ -29,9 +29,9 @@ use bip39::{Language, Mnemonic, MnemonicType}; extern crate rocket; use kvdb::kv_manager::{error::KvError, KeyReservation, KvManager}; use rocket::routes; -use sp_core::{crypto::AccountId32, sr25519, Pair}; use sp_keyring::AccountKeyring; use substrate_common::SIGNING_PARTY_SIZE; +use subxt::ext::sp_core::{crypto::AccountId32, sr25519, Pair}; use self::{ signing_client::{api::*, SignerState}, diff --git a/crypto/server/src/message.rs b/crypto/server/src/message.rs index 140e47552..6914a0b88 100644 --- a/crypto/server/src/message.rs +++ b/crypto/server/src/message.rs @@ -7,8 +7,8 @@ use chacha20poly1305::{ use rand_core::OsRng; use rocket::serde::json::to_string; use serde::{Deserialize, Serialize}; -use sp_core::{crypto::AccountId32, sr25519, sr25519::Signature, Bytes, Pair}; use sp_keyring::AccountKeyring; +use subxt::ext::sp_core::{crypto::AccountId32, sr25519, sr25519::Signature, Bytes, Pair}; use x25519_dalek::{PublicKey, StaticSecret}; use zeroize::Zeroize; @@ -60,7 +60,7 @@ impl SignedMessage { Ok(SignedMessage { pk: sk.public().0, a: *a.as_bytes(), - msg: sp_core::Bytes(ciphertext), + msg: subxt::ext::sp_core::Bytes(ciphertext), nonce: static_nonce, sig: sk.sign(&hash), recip: recip.to_bytes(), @@ -179,7 +179,7 @@ mod tests { // Test encryption & signing. let encrypt_result = SignedMessage::new(&alice, &plaintext, &bob_public_key); // Assert no error received in encryption. - assert!(!encrypt_result.is_err()); + assert!(encrypt_result.is_ok()); let encrypted_message = encrypt_result.unwrap(); // Test signature validity @@ -188,7 +188,7 @@ mod tests { // Test decryption let decrypt_result = encrypted_message.decrypt(&bob); // Assert no error received in decryption. - assert!(!decrypt_result.is_err()); + assert!(decrypt_result.is_ok()); let decrypted_result = decrypt_result.unwrap(); // Check the decrypted message equals the plaintext. diff --git a/crypto/server/src/signing_client/api.rs b/crypto/server/src/signing_client/api.rs index 88d3efee6..6ea923c07 100644 --- a/crypto/server/src/signing_client/api.rs +++ b/crypto/server/src/signing_client/api.rs @@ -1,11 +1,11 @@ -use std::str; +use std::{io, str}; use k256::ecdsa::recoverable; use kvdb::kv_manager::KvManager; use parity_scale_codec::Decode; use rocket::{http::Status, response::stream::EventStream, serde::json::Json, Shutdown, State}; use substrate_common::OCWMessage; -use subxt::sp_runtime::AccountId32; +use subxt::ext::sp_runtime::AccountId32; use tofn::sdk::api::Signature; use tracing::instrument; @@ -81,7 +81,6 @@ pub async fn new_party( /// Other nodes in the party call this method to subscribe to this node's broadcasts. /// The SigningProtocol begins when all nodes in the party have called this method on this node. -#[instrument] #[post("/subscribe_to_me", data = "")] pub async fn subscribe_to_me( msg: Json, diff --git a/crypto/server/src/signing_client/tests.rs b/crypto/server/src/signing_client/tests.rs index cbc499484..73fc3c299 100644 --- a/crypto/server/src/signing_client/tests.rs +++ b/crypto/server/src/signing_client/tests.rs @@ -21,7 +21,7 @@ use serial_test::serial; use sp_core::{crypto::AccountId32, sr25519::Pair as Sr25519Pair, Pair as Pair2}; use sp_keyring::AccountKeyring; use substrate_common::{Message, SigRequest}; -use subxt::{sp_core::sr25519, PairSigner}; +use subxt::{ext::sp_core::sr25519, tx::PairSigner}; use testing_utils::context::{test_context, test_context_stationary}; use tofn::{ gg20::keygen::{KeygenPartyId, SecretKeyShare}, @@ -152,7 +152,7 @@ async fn create_clients(port: i64, key_number: String) -> Rocket { // Shortcut: store the shares manually let root = project_root::get_project_root().unwrap(); - let share_id = if port == 3001 { 0 } else { 1 }; + let share_id = i32::from(port != 3001); let path: PathBuf = [root, "test_data".into(), "key_shares".into(), share_id.to_string().into()] .into_iter() diff --git a/crypto/server/src/user/api.rs b/crypto/server/src/user/api.rs index 9fec3e35c..e61185aa9 100644 --- a/crypto/server/src/user/api.rs +++ b/crypto/server/src/user/api.rs @@ -6,15 +6,21 @@ use kvdb::kv_manager::{ }; use log::info; use rocket::{http::Status, response::stream::EventStream, serde::json::Json, Shutdown, State}; -use sp_core::{sr25519, Pair}; use substrate_common::SIGNING_PARTY_SIZE; -use subxt::{sp_runtime::AccountId32, DefaultConfig, PairSigner}; +use subxt::{ + ext::{ + sp_core::{sr25519, Pair}, + sp_runtime::AccountId32, + }, + tx::PairSigner, + OnlineClient, +}; use tracing::instrument; use zeroize::Zeroize; use super::{ParsedUserInputPartyInfo, UserErr, UserInputPartyInfo}; use crate::{ - chain_api::{entropy, get_api, EntropyRuntime}, + chain_api::{entropy, get_api, EntropyConfig}, message::SignedMessage, signing_client::SignerState, Configuration, @@ -49,7 +55,7 @@ pub async fn new_user( // store new user data in kvdb let subgroup = get_subgroup(&api, &signer) .await? - .ok_or(UserErr::SubgroupError("Subgroup Error"))?; + .ok_or_else(|| UserErr::SubgroupError("Subgroup Error"))?; let reservation = state.kv().reserve_key(key.to_string()).await?; state.kv().put(reservation, v).await?; // TODO: Error handling really complex needs to be thought about. @@ -62,14 +68,15 @@ pub async fn new_user( Ok(Status::Ok) } -pub async fn is_registering(api: &EntropyRuntime, who: &AccountId32) -> Result { - let is_registering = api - .storage() - .relayer() - .registering(who, None) - .await? - .ok_or(UserErr::NotRegistering("Register Onchain first"))?; - Ok(is_registering.is_registering) +pub async fn is_registering( + api: &OnlineClient, + who: &AccountId32, +) -> Result { + let is_registering_query = entropy::storage().relayer().registering(who); + let is_registering = api.storage().fetch(&is_registering_query, None).await.unwrap(); + Ok(is_registering + .ok_or_else(|| UserErr::NotRegistering("Register Onchain first"))? + .is_registering) } // Returns PairSigner for this nodes threshold server. @@ -77,13 +84,13 @@ pub async fn is_registering(api: &EntropyRuntime, who: &AccountId32) -> Result Result, KvError> { +) -> Result, KvError> { let exists = kv.kv().exists("MNEMONIC").await?; let raw_m = kv.kv().get("MNEMONIC").await?; match core::str::from_utf8(&raw_m) { Ok(s) => match Mnemonic::from_phrase(s, Language::English) { Ok(m) => match ::from_phrase(m.phrase(), None) { - Ok(p) => Ok(PairSigner::::new(p.0)), + Ok(p) => Ok(PairSigner::::new(p.0)), Err(e) => Err(KvError::GetErr(InnerKvError::LogicalErr("SENSITIVE".to_owned()))), }, Err(e) => Err(KvError::GetErr(InnerKvError::LogicalErr(e.to_string()))), @@ -93,19 +100,20 @@ pub async fn get_signer( } pub async fn get_subgroup( - api: &EntropyRuntime, - signer: &subxt::PairSigner, + api: &OnlineClient, + signer: &PairSigner, ) -> Result, UserErr> { let mut subgroup: Option = None; let address = signer.account_id(); // TODO: stash keys are broken up into subgroups....need to get stash key here from threshold for i in 0..SIGNING_PARTY_SIZE { + let signing_group_addresses_query = + entropy::storage().staking_extension().signing_groups(i as u8); let signing_group_addresses = api .storage() - .staking_extension() - .signing_groups(&(i as u8), None) + .fetch(&signing_group_addresses_query, None) .await? - .ok_or(UserErr::SubgroupError("Subgroup Error"))?; + .ok_or_else(|| UserErr::SubgroupError("Subgroup Error"))?; if signing_group_addresses.contains(address) { subgroup = Some(i as u8); break; @@ -115,19 +123,23 @@ pub async fn get_subgroup( } pub async fn confirm_registered( - api: &EntropyRuntime, + api: &OnlineClient, who: AccountId32, subgroup: u8, - signer: &subxt::PairSigner, -) -> Result<(), subxt::Error> { + signer: &PairSigner, +) -> Result<(), subxt::error::Error> { // TODO error handling + return error // TODO fire and forget, or wait for in block maybe Ddos error - let _ = api.tx().relayer() - .confirm_register(who, subgroup) - // TODO: Understand this better, potentially use sign_and_submit_default - // or other method under sign_and_* - .sign_and_submit_then_watch_default(signer).await? - .wait_for_in_block().await? - .wait_for_success().await?; + // TODO: Understand this better, potentially use sign_and_submit_default + // or other method under sign_and_* + let registration_tx = entropy::tx().relayer().confirm_register(who, subgroup); + let _ = api + .tx() + .sign_and_submit_then_watch_default(®istration_tx, signer) + .await? + .wait_for_in_block() + .await? + .wait_for_success() + .await?; Ok(()) } diff --git a/crypto/server/src/user/errors.rs b/crypto/server/src/user/errors.rs index 16a46fa5c..049efe5a2 100644 --- a/crypto/server/src/user/errors.rs +++ b/crypto/server/src/user/errors.rs @@ -20,9 +20,9 @@ pub enum UserErr { #[error("Kv error: {0}")] Kv(#[from] kvdb::kv_manager::error::KvError), #[error("Substrate error: {0}")] - Substrate(#[from] subxt::Error), + Substrate(#[from] subxt::error::DispatchError), #[error("Generic Substrate error: {0}")] - GenericSubstrate(#[from] subxt::GenericError), + GenericSubstrate(#[from] subxt::error::Error), #[error("Not Registering error: {0}")] NotRegistering(&'static str), #[error("Subgroup error: {0}")] diff --git a/crypto/server/src/user/mod.rs b/crypto/server/src/user/mod.rs index 9de5427fc..bc4d9ba43 100644 --- a/crypto/server/src/user/mod.rs +++ b/crypto/server/src/user/mod.rs @@ -22,7 +22,7 @@ use std::{ use kvdb::kv_manager::value::{KvValue, PartyInfo}; use rocket::{http::Status, serde::json::Json, State}; use serde::{Deserialize, Serialize}; -use subxt::sp_runtime::AccountId32; +use subxt::ext::sp_runtime::AccountId32; pub use self::errors::*; diff --git a/crypto/server/src/user/tests.rs b/crypto/server/src/user/tests.rs index db4f4f84b..beeeb17ff 100644 --- a/crypto/server/src/user/tests.rs +++ b/crypto/server/src/user/tests.rs @@ -1,7 +1,6 @@ use std::env; use bip39::{Language, Mnemonic, MnemonicType}; -use hex; use hex_literal::hex as h; use kvdb::clean_tests; use rocket::{ @@ -12,13 +11,13 @@ use rocket::{ use serial_test::serial; use sp_core::{sr25519, Bytes, Pair}; use sp_keyring::{AccountKeyring, Sr25519Keyring}; -use subxt::{sp_runtime::AccountId32, DefaultConfig, PairSigner}; +use subxt::{ext::sp_runtime::AccountId32, tx::PairSigner, OnlineClient}; use testing_utils::context::{test_context, test_context_stationary, TestContext}; use x25519_dalek::{PublicKey, StaticSecret}; use super::{api::get_subgroup, UserInputPartyInfo}; use crate::{ - chain_api::{get_api, EntropyRuntime}, + chain_api::{entropy, get_api, EntropyConfig}, get_signer, load_kv_store, message::{derive_static_secret, mnemonic_to_pair, new_mnemonic, SignedMessage}, user::unsafe_api::UnsafeQuery, @@ -55,7 +54,7 @@ async fn test_unsafe_get_endpoint() { assert_eq!(response.status(), Status::Ok); let response_mnemonic = response.into_string().await.unwrap(); - assert!(response_mnemonic.len() > 0); + assert!(!response_mnemonic.is_empty()); // Update the mnemonic, testing the put endpoint works let put_response = client @@ -86,16 +85,17 @@ async fn test_store_share() { let alice = AccountKeyring::Alice; let alice_stash_id: AccountId32 = h!["be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f"].into(); - let key: AccountId32 = alice.to_account_id().into(); + let key: AccountId32 = alice.to_account_id(); let value: Vec = vec![0]; let cxt = test_context_stationary().await; let client = setup_client().await; let api = get_api(&cxt.node_proc.ws_url).await.unwrap(); - let query_result = - api.storage().staking_extension().threshold_accounts(&alice_stash_id, None).await.unwrap(); - assert!(!query_result.is_none()); + let threshold_accounts_query = + entropy::storage().staking_extension().threshold_accounts(&alice_stash_id); + let query_result = api.storage().fetch(&threshold_accounts_query, None).await.unwrap(); + assert!(query_result.is_some()); let res = query_result.unwrap(); let server_public_key = PublicKey::from(res.1); @@ -146,8 +146,9 @@ async fn test_store_share() { // fails with wrong node key let bob_stash_id: AccountId32 = h!["fe65717dad0447d715f660a0a58411de509b42e6efb8375f562f58a554d5860e"].into(); - let query_result_bob = - api.storage().staking_extension().threshold_accounts(&bob_stash_id, None).await.unwrap(); + + let query_bob = entropy::storage().staking_extension().threshold_accounts(&bob_stash_id); + let query_result_bob = api.storage().fetch(&query_bob, None).await.unwrap(); let res_bob = query_result_bob.unwrap(); let server_public_key_bob = PublicKey::from(res_bob.1); let user_input_bob = @@ -164,16 +165,16 @@ async fn test_store_share() { assert_eq!(response_4.status(), Status::InternalServerError); assert_eq!(response_4.into_string().await.unwrap(), "Parse error: failed decrypting message"); - let sig: [u8; 64] = [0; 64].try_into().unwrap(); - let slice: [u8; 32] = [0; 32].try_into().unwrap(); - let nonce: [u8; 12] = [0; 12].try_into().unwrap(); + let sig: [u8; 64] = [0; 64]; + let slice: [u8; 32] = [0; 32]; + let nonce: [u8; 12] = [0; 12]; let user_input_bad = SignedMessage::new_test( Bytes(value), sr25519::Signature::from_raw(sig), - slice.clone(), - slice.clone(), - slice.clone(), - nonce.clone(), + slice, + slice, + slice, + nonce, ) .to_json(); @@ -218,32 +219,33 @@ async fn test_get_signing_group() { let client = setup_client().await; let api = get_api(&cxt.node_proc.ws_url).await.unwrap(); let p_alice = ::from_string("//Alice//stash", None).unwrap(); - let signer_alice = PairSigner::::new(p_alice); + let signer_alice = PairSigner::::new(p_alice); let result_alice = get_subgroup(&api, &signer_alice).await.unwrap(); assert_eq!(result_alice, Some(0)); let p_bob = ::from_string("//Bob//stash", None).unwrap(); - let signer_bob = PairSigner::::new(p_bob); + let signer_bob = PairSigner::::new(p_bob); let result_bob = get_subgroup(&api, &signer_bob).await.unwrap(); assert_eq!(result_bob, Some(1)); let p_charlie = ::from_string("//Charlie//stash", None).unwrap(); - let signer_charlie = PairSigner::::new(p_charlie); + let signer_charlie = PairSigner::::new(p_charlie); let result_charlie = get_subgroup(&api, &signer_charlie).await.unwrap(); assert_eq!(result_charlie, None); clean_tests(); } -pub async fn make_register(api: &EntropyRuntime, alice: &Sr25519Keyring) { +pub async fn make_register(api: &OnlineClient, alice: &Sr25519Keyring) { let signer = PairSigner::new(alice.pair()); - let is_registering_1 = - api.storage().relayer().registering(&alice.to_account_id(), None).await.unwrap(); - assert_eq!(is_registering_1.is_none(), true); + let registering_query = entropy::storage().relayer().registering(&alice.to_account_id()); + let is_registering_1 = api.storage().fetch(®istering_query, None).await.unwrap(); + assert!(is_registering_1.is_none()); + + let registering_tx = entropy::tx().relayer().register(); + api.tx() - .relayer() - .register() - .sign_and_submit_then_watch_default(&signer) + .sign_and_submit_then_watch_default(®istering_tx, &signer) .await .unwrap() .wait_for_in_block() @@ -252,18 +254,18 @@ pub async fn make_register(api: &EntropyRuntime, alice: &Sr25519Keyring) { .wait_for_success() .await .unwrap(); - let is_registering_2 = - api.storage().relayer().registering(&alice.to_account_id(), None).await.unwrap(); - assert_eq!(is_registering_2.unwrap().is_registering, true); + + let is_registering_2 = api.storage().fetch(®istering_query, None).await; + assert!(is_registering_2.unwrap().unwrap().is_registering); } -pub async fn check_if_confirmation(api: &EntropyRuntime, alice: &Sr25519Keyring) { - let is_registering = - api.storage().relayer().registering(&alice.to_account_id(), None).await.unwrap(); +pub async fn check_if_confirmation(api: &OnlineClient, alice: &Sr25519Keyring) { + let registering_query = entropy::storage().relayer().registering(&alice.to_account_id()); + let registered_query = entropy::storage().relayer().registered(&alice.to_account_id()); + let is_registering = api.storage().fetch(®istering_query, None).await.unwrap(); // make sure there is one confirmation assert_eq!(is_registering.unwrap().confirmations.len(), 1); - let is_registered = - api.storage().relayer().registered(&alice.to_account_id(), None).await.unwrap(); + let is_registered = api.storage().fetch(®istered_query, None).await.unwrap(); // still not registered need more confirmations - assert_eq!(is_registered.is_none(), true); + assert!(is_registered.is_none()); } diff --git a/crypto/server/src/user/unsafe_api.rs b/crypto/server/src/user/unsafe_api.rs index bc0474a5f..fce637cb9 100644 --- a/crypto/server/src/user/unsafe_api.rs +++ b/crypto/server/src/user/unsafe_api.rs @@ -15,12 +15,12 @@ use rocket::{ }; use serde::{Deserialize, Serialize}; use sp_core::{sr25519, Pair}; -use subxt::{sp_runtime::AccountId32, DefaultConfig, PairSigner}; +use subxt::{ext::sp_runtime::AccountId32, tx::PairSigner}; use tracing::instrument; use super::{ParsedUserInputPartyInfo, UserErr, UserInputPartyInfo}; use crate::{ - chain_api::{entropy, get_api, EntropyRuntime}, + chain_api::{entropy, get_api}, message::SignedMessage, signing_client::SignerState, Configuration, diff --git a/crypto/substrate-common/src/types.rs b/crypto/substrate-common/src/types.rs index 7ebd29dc8..a303bfa24 100644 --- a/crypto/substrate-common/src/types.rs +++ b/crypto/substrate-common/src/types.rs @@ -9,7 +9,7 @@ pub struct RegistrationMessage { // ToDo: TypeInfo marco only works for basic types out of the box. // Out of the box it does not work for types like SecretKey or PublicKey // TypeInfo needs to be implemented for these types. - // see https://github.com/Entropyxyz/entropy-core/issues/29 + // see https://github.com/entropyxyz/entropy-core/issues/29 // /// Session ID/nonce. Check that this ID has not beed used before // /// This will be 0 for account creation. diff --git a/crypto/testing-utils/Cargo.toml b/crypto/testing-utils/Cargo.toml index f6b1c41dc..bee97a1ff 100644 --- a/crypto/testing-utils/Cargo.toml +++ b/crypto/testing-utils/Cargo.toml @@ -6,11 +6,11 @@ edition="2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -sp-keyring ="6.0.0" +subxt ={ git="https://github.com/entropyxyz/subxt.git", branch="substrate-master" } +sp-keyring ={ package="sp-keyring", git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } project-root ="0.2.2" -sp-core ={ version="6.0.0", default-features=false } +sp-core ={ package="sp-core", git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } env_logger ="0.9.0" log ="0.4.14" which ="4.0.2" -subxt ={ git="https://github.com/paritytech/subxt.git" } parity-scale-codec="3.0.0" diff --git a/crypto/testing-utils/src/chain_api.rs b/crypto/testing-utils/src/chain_api.rs new file mode 100644 index 000000000..57d4e00b6 --- /dev/null +++ b/crypto/testing-utils/src/chain_api.rs @@ -0,0 +1,5 @@ +#![allow(clippy::all)] +pub use subxt::config::PolkadotConfig as EntropyConfig; + +#[subxt::subxt(runtime_metadata_path = "../server/entropy_metadata.scale")] +pub mod entropy {} diff --git a/crypto/testing-utils/src/context.rs b/crypto/testing-utils/src/context.rs index c349c2b02..17a7a5351 100644 --- a/crypto/testing-utils/src/context.rs +++ b/crypto/testing-utils/src/context.rs @@ -1,8 +1,8 @@ -use sp_core::sr25519::Pair; use sp_keyring::AccountKeyring; -use subxt::{Client, DefaultConfig, PairSigner, SubstrateExtrinsicParams}; +use subxt::{tx::SubstrateExtrinsicParams, OnlineClient}; use super::node_proc::TestNodeProcess; +use crate::chain_api::*; /// substrate node should be installed fn get_path() -> String { @@ -12,61 +12,56 @@ fn get_path() -> String { ) } -pub type NodeRuntimeSignedExtra = SubstrateExtrinsicParams; +pub type NodeRuntimeSignedExtra = SubstrateExtrinsicParams; -pub async fn test_node_process_with(key: AccountKeyring) -> TestNodeProcess { +pub async fn test_node_process_with(key: AccountKeyring) -> TestNodeProcess { let path = get_path(); - let proc = TestNodeProcess::::build(path.as_str()) + let proc = TestNodeProcess::::build(path.as_str()) .with_authority(key) .scan_for_open_ports() - .spawn::() + .spawn::() .await; proc.unwrap() } -pub async fn test_node(key: AccountKeyring) -> TestNodeProcess { +pub async fn test_node(key: AccountKeyring) -> TestNodeProcess { let path = get_path(); - let proc = TestNodeProcess::::build(path.as_str()) + let proc = TestNodeProcess::::build(path.as_str()) .with_authority(key) - .spawn::() + .spawn::() .await; proc.unwrap() } -pub async fn test_node_process() -> TestNodeProcess { +pub async fn test_node_process() -> TestNodeProcess { test_node_process_with(AccountKeyring::Alice).await } -pub async fn test_node_process_stationary() -> TestNodeProcess { +pub async fn test_node_process_stationary() -> TestNodeProcess { test_node(AccountKeyring::Alice).await } -#[subxt::subxt(runtime_metadata_path = "../server/entropy_metadata.scale")] -pub mod entropy {} - pub struct TestContext { - pub node_proc: TestNodeProcess, - pub api: entropy::RuntimeApi>, + pub node_proc: TestNodeProcess, + pub api: OnlineClient, } impl TestContext { - pub fn client(&self) -> &Client { &self.api.client } + pub fn client(&self) -> &OnlineClient { &self.api } } pub async fn test_context() -> TestContext { env_logger::try_init().ok(); - let node_proc: TestNodeProcess = test_node_process().await; - let api = node_proc.client().clone().to_runtime_api(); + let node_proc: TestNodeProcess = test_node_process().await; + let api = node_proc.client().clone(); TestContext { node_proc, api } } pub async fn test_context_stationary() -> TestContext { env_logger::try_init().ok(); - let node_proc: TestNodeProcess = test_node_process_stationary().await; - let api = node_proc.client().clone().to_runtime_api(); + let node_proc: TestNodeProcess = test_node_process_stationary().await; + let api = node_proc.client().clone(); TestContext { node_proc, api } } - -pub fn pair_signer(pair: Pair) -> PairSigner { PairSigner::new(pair) } diff --git a/crypto/testing-utils/src/lib.rs b/crypto/testing-utils/src/lib.rs index ad411bd87..05512d021 100644 --- a/crypto/testing-utils/src/lib.rs +++ b/crypto/testing-utils/src/lib.rs @@ -1,3 +1,4 @@ +mod chain_api; pub mod context; mod node_proc; pub use context::*; diff --git a/crypto/testing-utils/src/node_proc.rs b/crypto/testing-utils/src/node_proc.rs index 287bfb3ff..53ad8d11a 100644 --- a/crypto/testing-utils/src/node_proc.rs +++ b/crypto/testing-utils/src/node_proc.rs @@ -7,12 +7,12 @@ use std::{ }; use sp_keyring::AccountKeyring; -use subxt::{Client, ClientBuilder, Config}; +use subxt::{Config, OnlineClient}; /// Spawn a local substrate node for testing subxt. pub struct TestNodeProcess { proc: process::Child, - client: Client, + client: OnlineClient, pub ws_url: String, } @@ -43,7 +43,7 @@ where R: Config } /// Returns the subxt client connected to the running node. - pub fn client(&self) -> &Client { &self.client } + pub fn client(&self) -> &OnlineClient { &self.client } } /// Construct a test node process. @@ -115,7 +115,7 @@ impl TestNodeProcessBuilder { attempts, MAX_ATTEMPTS ); - let result = ClientBuilder::new().set_url(ws_url.clone()).build().await; + let result = OnlineClient::::from_url(ws_url.clone()).await; match result { Ok(client) => break Ok(client), Err(err) => { diff --git a/node/cli/Cargo.toml b/node/cli/Cargo.toml index 7222b962e..683e8fd34 100644 --- a/node/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -16,50 +16,62 @@ targets=['x86_64-unknown-linux-gnu'] [[bin]] name='entropy' -[build-dependencies.substrate-build-script-utils] -git ='https://github.com/paritytech/substrate.git' -branch ="master" -version='3.0.0' - [dependencies] -jsonrpc-core ='18.0.0' -structopt ='0.3.8' -grandpa-primitives ={ version="4.0.0-dev", package="sp-finality-grandpa", git='https://github.com/paritytech/substrate.git', branch="master" } -hex-literal ="0.3.1" -pallet-im-online ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sc-chain-spec ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -serde ={ version="1.0.126", features=["derive"] } -sp-authority-discovery ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-consensus-babe ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -node-primitives ={ version="2.0.0", git='https://github.com/paritytech/substrate.git', branch="master" } -rand ="0.7.2" -sc-sync-state-rpc ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -futures ="0.3.16" -node-executor ={ version="3.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-consensus-babe ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-network ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -grandpa ={ version="0.10.0-dev", package="sc-finality-grandpa", git='https://github.com/paritytech/substrate.git', branch="master" } -node-rpc ={ version="3.0.0-dev", path="../rpc" } -sc-consensus-slots ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-transaction-storage-proof={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-authority-discovery ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-authorship ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-consensus-uncles ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-consensus-babe-rpc ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-consensus-epochs ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-finality-grandpa-rpc ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-keystore ={ version="0.12.0", git='https://github.com/paritytech/substrate.git', branch="master" } -clap ={ version="3.0", features=["derive"] } +jsonrpc-core ='18.0.0' +clap ={ version="3.1.18", features=["derive"] } +codec ={ package="parity-scale-codec", version="3.0.0" } +structopt ='0.3.8' +grandpa-primitives ={ version="4.0.0-dev", package="sp-finality-grandpa", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +hex-literal ="0.3.1" +pallet-im-online ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-chain-spec ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +serde ={ version="1.0.126", features=["derive"] } +sp-authority-discovery ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-consensus-babe ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +node-primitives ={ version="2.0.0", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +rand ="0.7.2" +sc-sync-state-rpc ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +futures ="0.3.16" +sc-consensus-babe ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-network ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-network-common ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-consensus-slots ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-transaction-storage-proof ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-authority-discovery ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-authorship ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-consensus-uncles ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-consensus-babe-rpc ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-consensus-epochs ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-finality-grandpa ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-finality-grandpa-rpc ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-keystore ={ version="0.12.0", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +jsonrpsee ={ version="0.15.1", features=["server"] } +sp-inherents ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-keyring ={ version="6.0.0", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-system ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-system-rpc-runtime-api ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-transaction-payment ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-free-tx ={ version="3.0.0-monthly-2021-10", path="../../pallets/free-tx" } +node-inspect ={ version="0.9.0-dev", optional=true, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +substrate-frame-cli ={ version="4.0.0-dev", optional=true, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-sysinfo ={ version="6.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +substrate-state-trie-migration-rpc={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } + +[build-dependencies] +clap ={ version="3.1.18", optional=true } +clap_complete ={ version="3.0", optional=true } +node-inspect ={ version="0.9.0-dev", optional=true, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +substrate-build-script-utils={ version="3.0.0", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +substrate-frame-cli ={ version="4.0.0-dev", optional=true, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +try-runtime-cli ={ version="0.10.0-dev", optional=true, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sc-cli ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-balances ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } + +sc-service-test={ version="2.0.0", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } [dev-dependencies] -sc-service-test ={ version="2.0.0", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-inherents ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-keyring ={ version="6.0.0", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-tracing ={ version="5.0.0", git='https://github.com/paritytech/substrate.git', branch="master" } -frame-system ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-transaction-payment={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -tempfile ="3.1.0" -pallet-free-tx ={ version="3.0.0-monthly-2021-10", path="../../pallets/free-tx" } +sc-service-test={ version="2.0.0", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +tempfile ="3.1.0" [dependencies.entropy-runtime] path ='../../runtime' @@ -67,132 +79,136 @@ version='3.0.0-monthly-2021-10' [dependencies.frame-benchmarking] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.frame-benchmarking-cli] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.pallet-transaction-payment-rpc] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.sc-basic-authorship] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='0.10.0-dev' [dependencies.sc-cli] features=['wasmtime'] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='0.10.0-dev' [dependencies.sc-client-api] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.sc-consensus] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='0.10.0-dev' [dependencies.sc-consensus-aura] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='0.10.0-dev' [dependencies.sc-executor] features=['wasmtime'] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='0.10.0-dev' [dependencies.sc-keystore] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.sc-rpc] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.sc-rpc-api] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='0.10.0-dev' [dependencies.sc-service] features=['wasmtime'] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='0.10.0-dev' [dependencies.sc-telemetry] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.sc-transaction-pool] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.sc-transaction-pool-api] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.sp-api] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.sp-block-builder] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.sp-blockchain] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.sp-consensus] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='0.10.0-dev' [dependencies.sp-consensus-aura] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='0.10.0-dev' [dependencies.sp-core] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='6.0.0' [dependencies.sp-runtime] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='6.0.0' [dependencies.sp-timestamp] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [dependencies.substrate-frame-rpc-system] git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version='4.0.0-dev' [features] -default =[] -runtime-benchmarks=['entropy-runtime/runtime-benchmarks'] +default=[] +runtime-benchmarks=[ + 'entropy-runtime/runtime-benchmarks', + "frame-benchmarking/runtime-benchmarks", + "frame-benchmarking-cli/runtime-benchmarks", +] diff --git a/node/cli/src/benchmarking.rs b/node/cli/src/benchmarking.rs new file mode 100644 index 000000000..37750d0ba --- /dev/null +++ b/node/cli/src/benchmarking.rs @@ -0,0 +1,110 @@ +// This file is part of Substrate. + +// Copyright (C) 2022 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program 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. + +// This program 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 . + +//! Setup code for [`super::command`] which would otherwise bloat that module. +//! +//! Should only be used for benchmarking as it may break in other contexts. + +use std::{sync::Arc, time::Duration}; + +use entropy_runtime::{BalancesCall, SystemCall}; +use node_primitives::{AccountId, Balance}; +use sc_cli::Result; +use sp_inherents::{InherentData, InherentDataProvider}; +use sp_keyring::Sr25519Keyring; +use sp_runtime::OpaqueExtrinsic; + +use crate::service::{create_extrinsic, FullClient}; + +/// Generates `System::Remark` extrinsics for the benchmarks. +/// +/// Note: Should only be used for benchmarking. +pub struct RemarkBuilder { + client: Arc, +} + +impl RemarkBuilder { + /// Creates a new [`Self`] from the given client. + pub fn new(client: Arc) -> Self { Self { client } } +} + +impl frame_benchmarking_cli::ExtrinsicBuilder for RemarkBuilder { + fn pallet(&self) -> &str { "system" } + + fn extrinsic(&self) -> &str { "remark" } + + fn build(&self, nonce: u32) -> std::result::Result { + let acc = Sr25519Keyring::Bob.pair(); + let extrinsic: OpaqueExtrinsic = create_extrinsic( + self.client.as_ref(), + acc, + SystemCall::remark { remark: vec![] }, + Some(nonce), + ) + .into(); + + Ok(extrinsic) + } +} + +/// Generates `Balances::TransferKeepAlive` extrinsics for the benchmarks. +/// +/// Note: Should only be used for benchmarking. +pub struct TransferKeepAliveBuilder { + client: Arc, + dest: AccountId, + value: Balance, +} + +impl TransferKeepAliveBuilder { + /// Creates a new [`Self`] from the given client. + pub fn new(client: Arc, dest: AccountId, value: Balance) -> Self { + Self { client, dest, value } + } +} + +impl frame_benchmarking_cli::ExtrinsicBuilder for TransferKeepAliveBuilder { + fn pallet(&self) -> &str { "balances" } + + fn extrinsic(&self) -> &str { "transfer_keep_alive" } + + fn build(&self, nonce: u32) -> std::result::Result { + let acc = Sr25519Keyring::Bob.pair(); + let extrinsic: OpaqueExtrinsic = create_extrinsic( + self.client.as_ref(), + acc, + BalancesCall::transfer_keep_alive { dest: self.dest.clone().into(), value: self.value }, + Some(nonce), + ) + .into(); + + Ok(extrinsic) + } +} + +/// Generates inherent data for the `benchmark overhead` command. +pub fn inherent_benchmark_data() -> Result { + let mut inherent_data = InherentData::new(); + let d = Duration::from_millis(0); + let timestamp = sp_timestamp::InherentDataProvider::new(d.into()); + + timestamp + .provide_inherent_data(&mut inherent_data) + .map_err(|e| format!("creating inherent data: {:?}", e))?; + Ok(inherent_data) +} diff --git a/node/cli/src/chain_spec.rs b/node/cli/src/chain_spec.rs index d26aa3e18..cc3d726ff 100644 --- a/node/cli/src/chain_spec.rs +++ b/node/cli/src/chain_spec.rs @@ -18,6 +18,7 @@ //! Substrate chain configurations. +#![allow(dead_code)] pub use entropy_runtime::GenesisConfig; use entropy_runtime::{ constants::currency::*, wasm_binary_unwrap, AuthorityDiscoveryConfig, BabeConfig, @@ -409,6 +410,7 @@ pub fn testnet_genesis( vesting: Default::default(), transaction_storage: Default::default(), transaction_payment: Default::default(), + nomination_pools: Default::default(), } } @@ -513,11 +515,9 @@ pub(crate) mod tests { #[test] #[ignore] fn test_connectivity() { - sp_tracing::try_init_simple(); - sc_service_test::connectivity(integration_test_config_with_two_authorities(), |config| { let NewFullBase { task_manager, client, network, transaction_pool, .. } = - new_full_base(config, |_, _| ())?; + new_full_base(config, false, |_, _| ())?; Ok(sc_service_test::TestNetComponents::new( task_manager, client, diff --git a/node/cli/src/cli.rs b/node/cli/src/cli.rs index de55442bd..f5b34c306 100644 --- a/node/cli/src/cli.rs +++ b/node/cli/src/cli.rs @@ -1,5 +1,4 @@ -use sc_cli::RunCmd; - +/// An overarching CLI command definition. #[derive(Debug, clap::Parser)] pub struct Cli { /// Possible subcommand with parameters. @@ -8,7 +7,17 @@ pub struct Cli { #[allow(missing_docs)] #[clap(flatten)] - pub run: RunCmd, + pub run: sc_cli::RunCmd, + + /// Disable automatic hardware benchmarks. + /// + /// By default these benchmarks are automatically ran at startup and measure + /// the CPU speed, the memory bandwidth and the disk speed. + /// + /// The results are then printed out in the logs, and also sent as part of + /// telemetry, if telemetry is enabled. + #[clap(long)] + pub no_hardware_benchmarks: bool, } #[derive(Debug, clap::Subcommand)] @@ -16,6 +25,7 @@ pub enum Subcommand { /// Key management cli utilities #[clap(subcommand)] Key(sc_cli::KeySubcommand), + /// Build a chain specification. BuildSpec(sc_cli::BuildSpecCmd), @@ -37,7 +47,18 @@ pub enum Subcommand { /// Revert the chain to a previous state. Revert(sc_cli::RevertCmd), - /// The custom benchmark subcommmand benchmarking runtime pallets. - #[clap(name = "benchmark", about = "Benchmark runtime pallets.")] + /// Sub-commands concerned with benchmarking. + #[clap(subcommand)] Benchmark(frame_benchmarking_cli::BenchmarkCmd), + + /// Try some command against runtime state. + #[cfg(feature = "try-runtime")] + TryRuntime(try_runtime_cli::TryRuntimeCmd), + + /// Try some command against runtime state. Note: `try-runtime` feature must be enabled. + #[cfg(not(feature = "try-runtime"))] + TryRuntime, + + /// Db meta columns information. + ChainInfo(sc_cli::ChainInfoCmd), } diff --git a/node/cli/src/command.rs b/node/cli/src/command.rs index 239188b3f..c09ab5d5f 100644 --- a/node/cli/src/command.rs +++ b/node/cli/src/command.rs @@ -1,31 +1,14 @@ -// This file is part of Substrate. - -// Copyright (C) 2017-2021 Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program 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. - -// This program 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 . - -use entropy_runtime::Block; -use node_executor::ExecutorDispatch; -use sc_cli::{ChainSpec, Result, RuntimeVersion, SubstrateCli}; +use entropy_runtime::{Block, EXISTENTIAL_DEPOSIT}; +use frame_benchmarking_cli::{BenchmarkCmd, ExtrinsicFactory, SUBSTRATE_REFERENCE_HARDWARE}; +use sc_cli::{ChainSpec, RuntimeVersion, SubstrateCli}; use sc_service::PartialComponents; +use sp_keyring::Sr25519Keyring; use crate::{ + benchmarking::{inherent_benchmark_data, RemarkBuilder, TransferKeepAliveBuilder}, chain_spec, cli::{Cli, Subcommand}, service, - service::new_partial, }; impl SubstrateCli for Cli { @@ -37,23 +20,17 @@ impl SubstrateCli for Cli { fn author() -> String { env!("CARGO_PKG_AUTHORS").into() } - fn support_url() -> String { "https://github.com/paritytech/substrate/issues/new".into() } + fn support_url() -> String { "support.anonymous.an".into() } fn copyright_start_year() -> i32 { 2017 } - fn load_spec(&self, id: &str) -> std::result::Result, String> { - let spec = match id { - "" => - return Err("Please specify which chain you want to run, e.g. --dev or \ - --chain=local" - .into()), + fn load_spec(&self, id: &str) -> Result, String> { + Ok(match id { "dev" => Box::new(chain_spec::development_config()), - "local" => Box::new(chain_spec::local_testnet_config()), - "staging" => Box::new(chain_spec::staging_testnet_config()), + "" | "local" => Box::new(chain_spec::local_testnet_config()), path => Box::new(chain_spec::ChainSpec::from_json_file(std::path::PathBuf::from(path))?), - }; - Ok(spec) + }) } fn native_runtime_version(_: &Box) -> &'static RuntimeVersion { @@ -61,27 +38,11 @@ impl SubstrateCli for Cli { } } -/// Parse command line arguments into service configuration. -pub fn run() -> Result<()> { +/// Parse and run command line arguments +pub fn run() -> sc_cli::Result<()> { let cli = Cli::from_args(); match &cli.subcommand { - None => { - let runner = cli.create_runner(&cli.run)?; - runner.run_node_until_exit(|config| async move { - service::new_full(config).map_err(sc_cli::Error::Service) - }) - }, - Some(Subcommand::Benchmark(cmd)) => - if cfg!(feature = "runtime-benchmarks") { - let runner = cli.create_runner(cmd)?; - - runner.sync_run(|config| cmd.run::(config)) - } else { - Err("Benchmarking wasn't enabled when building the node. You can enable it with \ - `--features runtime-benchmarks`." - .into()) - }, Some(Subcommand::Key(cmd)) => cmd.run(&cli), Some(Subcommand::BuildSpec(cmd)) => { let runner = cli.create_runner(cmd)?; @@ -91,21 +52,21 @@ pub fn run() -> Result<()> { let runner = cli.create_runner(cmd)?; runner.async_run(|config| { let PartialComponents { client, task_manager, import_queue, .. } = - new_partial(&config)?; + service::new_partial(&config)?; Ok((cmd.run(client, import_queue), task_manager)) }) }, Some(Subcommand::ExportBlocks(cmd)) => { let runner = cli.create_runner(cmd)?; runner.async_run(|config| { - let PartialComponents { client, task_manager, .. } = new_partial(&config)?; + let PartialComponents { client, task_manager, .. } = service::new_partial(&config)?; Ok((cmd.run(client, config.database), task_manager)) }) }, Some(Subcommand::ExportState(cmd)) => { let runner = cli.create_runner(cmd)?; runner.async_run(|config| { - let PartialComponents { client, task_manager, .. } = new_partial(&config)?; + let PartialComponents { client, task_manager, .. } = service::new_partial(&config)?; Ok((cmd.run(client, config.chain_spec), task_manager)) }) }, @@ -113,7 +74,7 @@ pub fn run() -> Result<()> { let runner = cli.create_runner(cmd)?; runner.async_run(|config| { let PartialComponents { client, task_manager, import_queue, .. } = - new_partial(&config)?; + service::new_partial(&config)?; Ok((cmd.run(client, import_queue), task_manager)) }) }, @@ -124,14 +85,106 @@ pub fn run() -> Result<()> { Some(Subcommand::Revert(cmd)) => { let runner = cli.create_runner(cmd)?; runner.async_run(|config| { - let PartialComponents { client, task_manager, backend, .. } = new_partial(&config)?; - let revert_aux = Box::new(|client, backend, blocks| { - sc_consensus_babe::revert(client, backend, blocks)?; - // TODO: grandpa revert + let PartialComponents { client, task_manager, backend, .. } = + service::new_partial(&config)?; + let aux_revert = Box::new(|client, _, blocks| { + sc_finality_grandpa::revert(client, blocks)?; Ok(()) }); + Ok((cmd.run(client, backend, Some(aux_revert)), task_manager)) + }) + }, + Some(Subcommand::Benchmark(cmd)) => { + let runner = cli.create_runner(cmd)?; - Ok((cmd.run(client, backend, Some(revert_aux)), task_manager)) + runner.sync_run(|config| { + // This switch needs to be in the client, since the client decides + // which sub-commands it wants to support. + match cmd { + BenchmarkCmd::Pallet(cmd) => { + if !cfg!(feature = "runtime-benchmarks") { + return Err("Runtime benchmarking wasn't enabled when building the \ + node. You can enable it with `--features \ + runtime-benchmarks`." + .into()); + } + + cmd.run::(config) + }, + BenchmarkCmd::Block(cmd) => { + let PartialComponents { client, .. } = service::new_partial(&config)?; + cmd.run(client) + }, + #[cfg(not(feature = "runtime-benchmarks"))] + BenchmarkCmd::Storage(_) => Err("Storage benchmarking can be enabled with \ + `--features runtime-benchmarks`." + .into()), + #[cfg(feature = "runtime-benchmarks")] + BenchmarkCmd::Storage(cmd) => { + let PartialComponents { client, backend, .. } = + service::new_partial(&config)?; + let db = backend.expose_db(); + let storage = backend.expose_storage(); + + cmd.run(config, client, db, storage) + }, + BenchmarkCmd::Overhead(cmd) => { + let PartialComponents { client, .. } = service::new_partial(&config)?; + let ext_builder = RemarkBuilder::new(client.clone()); + + cmd.run( + config, + client, + inherent_benchmark_data()?, + Vec::new(), + &ext_builder, + ) + }, + BenchmarkCmd::Extrinsic(cmd) => { + let PartialComponents { client, .. } = service::new_partial(&config)?; + // Register the *Remark* and *TKA* builders. + let ext_factory = ExtrinsicFactory(vec![ + Box::new(RemarkBuilder::new(client.clone())), + Box::new(TransferKeepAliveBuilder::new( + client.clone(), + Sr25519Keyring::Alice.to_account_id(), + EXISTENTIAL_DEPOSIT, + )), + ]); + + cmd.run(client, inherent_benchmark_data()?, Vec::new(), &ext_factory) + }, + BenchmarkCmd::Machine(cmd) => + cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone()), + } + }) + }, + #[cfg(feature = "try-runtime")] + Some(Subcommand::TryRuntime(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.async_run(|config| { + // we don't need any of the components of new_partial, just a runtime, or a task + // manager to do `async_run`. + let registry = config.prometheus_config.as_ref().map(|cfg| &cfg.registry); + let task_manager = + sc_service::TaskManager::new(config.tokio_handle.clone(), registry) + .map_err(|e| sc_cli::Error::Service(sc_service::Error::Prometheus(e)))?; + Ok((cmd.run::(config), task_manager)) + }) + }, + #[cfg(not(feature = "try-runtime"))] + Some(Subcommand::TryRuntime) => Err("TryRuntime wasn't enabled when building the node. \ + You can enable it with `--features try-runtime`." + .into()), + Some(Subcommand::ChainInfo(cmd)) => { + let runner = cli.create_runner(cmd)?; + runner.sync_run(|config| cmd.run::(&config)) + }, + None => { + let runner = cli.create_runner(&cli.run)?; + runner.run_node_until_exit(|config| async move { + service::new_full(config, cli.no_hardware_benchmarks) + .map_err(sc_cli::Error::Service) }) }, } diff --git a/node/cli/src/lib.rs b/node/cli/src/lib.rs deleted file mode 100644 index f117b8aae..000000000 --- a/node/cli/src/lib.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod chain_spec; -pub mod rpc; -pub mod service; diff --git a/node/cli/src/main.rs b/node/cli/src/main.rs index 7aa59b6da..c9f32d7e9 100644 --- a/node/cli/src/main.rs +++ b/node/cli/src/main.rs @@ -4,6 +4,7 @@ mod chain_spec; #[macro_use] mod service; +mod benchmarking; mod cli; mod command; mod rpc; diff --git a/node/cli/src/rpc.rs b/node/cli/src/rpc.rs index 4fbcafca0..66bbbb0f6 100644 --- a/node/cli/src/rpc.rs +++ b/node/cli/src/rpc.rs @@ -33,15 +33,14 @@ use std::sync::Arc; -use grandpa::{ - FinalityProofProvider, GrandpaJustificationStream, SharedAuthoritySet, SharedVoterState, -}; +use jsonrpsee::RpcModule; use node_primitives::{AccountId, Balance, Block, BlockNumber, Hash, Index}; use sc_client_api::AuxStore; -use sc_consensus_babe::{Config, Epoch}; -use sc_consensus_babe_rpc::BabeRpcHandler; +use sc_consensus_babe::{BabeConfiguration, Epoch}; use sc_consensus_epochs::SharedEpochChanges; -use sc_finality_grandpa_rpc::GrandpaRpcHandler; +use sc_finality_grandpa::{ + FinalityProofProvider, GrandpaJustificationStream, SharedAuthoritySet, SharedVoterState, +}; use sc_rpc::SubscriptionTaskExecutor; pub use sc_rpc_api::DenyUnsafe; use sc_transaction_pool_api::TransactionPool; @@ -55,7 +54,7 @@ use sp_keystore::SyncCryptoStorePtr; /// Extra dependencies for BABE. pub struct BabeDeps { /// BABE protocol config. - pub babe_config: Config, + pub babe_config: BabeConfiguration, /// BABE pending epoch changes. pub shared_epoch_changes: SharedEpochChanges, /// The keystore that manages the keys of the node. @@ -94,15 +93,13 @@ pub struct FullDeps { pub grandpa: GrandpaDeps, } -/// A IO handler that uses all Full RPC extensions. -pub type IoHandler = jsonrpc_core::IoHandler; - /// Instantiate all Full RPC extensions. pub fn create_full( deps: FullDeps, -) -> Result, Box> +) -> Result, Box> where C: ProvideRuntimeApi + + sc_client_api::BlockBackend + HeaderBackend + AuxStore + HeaderMetadata @@ -118,12 +115,17 @@ where B: sc_client_api::Backend + Send + Sync + 'static, B::State: sc_client_api::backend::StateBackend>, { - use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; - use substrate_frame_rpc_system::{FullSystem, SystemApi}; + use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer}; + use sc_consensus_babe_rpc::{Babe, BabeApiServer}; + use sc_finality_grandpa_rpc::{Grandpa, GrandpaApiServer}; + use sc_rpc::dev::{Dev, DevApiServer}; + use sc_sync_state_rpc::{SyncState, SyncStateApiServer}; + use substrate_frame_rpc_system::{System, SystemApiServer}; + // use substrate_state_trie_migration_rpc::{StateMigration, StateMigrationApiServer}; - let mut io = jsonrpc_core::IoHandler::default(); - let FullDeps { client, pool, select_chain, chain_spec, deny_unsafe, babe, grandpa } = deps; + let mut io = RpcModule::new(()); + let FullDeps { client, pool, select_chain, chain_spec, deny_unsafe, babe, grandpa } = deps; let BabeDeps { keystore, babe_config, shared_epoch_changes } = babe; let GrandpaDeps { shared_voter_state, @@ -133,35 +135,37 @@ where finality_provider, } = grandpa; - io.extend_with(SystemApi::to_delegate(FullSystem::new(client.clone(), pool, deny_unsafe))); + io.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?; // Making synchronous calls in light client freezes the browser currently, // more context: https://github.com/paritytech/substrate/pull/3480 // These RPCs should use an asynchronous caller instead. - io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new(client.clone()))); - io.extend_with(sc_consensus_babe_rpc::BabeApi::to_delegate(BabeRpcHandler::new( - client.clone(), - shared_epoch_changes.clone(), - keystore, - babe_config, - select_chain, - deny_unsafe, - ))); - io.extend_with(sc_finality_grandpa_rpc::GrandpaApi::to_delegate(GrandpaRpcHandler::new( - shared_authority_set.clone(), - shared_voter_state, - justification_stream, - subscription_executor, - finality_provider, - ))); - - io.extend_with(sc_sync_state_rpc::SyncStateRpcApi::to_delegate( - sc_sync_state_rpc::SyncStateRpcHandler::new( - chain_spec, - client, - shared_authority_set, - shared_epoch_changes, - )?, - )); + io.merge(TransactionPayment::new(client.clone()).into_rpc())?; + io.merge( + Babe::new( + client.clone(), + shared_epoch_changes.clone(), + keystore, + babe_config, + select_chain, + deny_unsafe, + ) + .into_rpc(), + )?; + io.merge( + Grandpa::new( + subscription_executor, + shared_authority_set.clone(), + shared_voter_state, + justification_stream, + finality_provider, + ) + .into_rpc(), + )?; + io.merge( + SyncState::new(chain_spec, client.clone(), shared_authority_set, shared_epoch_changes)? + .into_rpc(), + )?; + io.merge(Dev::new(client, deny_unsafe).into_rpc())?; Ok(io) } diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index 5a39ee95d..57af33f06 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -22,26 +22,124 @@ use std::sync::Arc; +use codec::Encode; use entropy_runtime::RuntimeApi; +use frame_system_rpc_runtime_api::AccountNonceApi; use futures::prelude::*; -use node_executor::ExecutorDispatch; use node_primitives::Block; -use sc_client_api::{BlockBackend, ExecutorProvider}; +use sc_client_api::BlockBackend; use sc_consensus_babe::{self, SlotProportion}; use sc_executor::NativeElseWasmExecutor; -use sc_network::{Event, NetworkService}; -use sc_service::{config::Configuration, error::Error as ServiceError, TaskManager}; +use sc_network::NetworkService; +use sc_network_common::{protocol::event::Event, service::NetworkEventStream}; +use sc_service::{config::Configuration, error::Error as ServiceError, RpcHandlers, TaskManager}; use sc_telemetry::{Telemetry, TelemetryWorker}; -use sp_runtime::traits::Block as BlockT; +use sp_api::ProvideRuntimeApi; +use sp_core::crypto::Pair; +use sp_runtime::{generic, traits::Block as BlockT, SaturatedConversion}; -type FullClient = +pub type FullClient = sc_service::TFullClient>; type FullBackend = sc_service::TFullBackend; type FullSelectChain = sc_consensus::LongestChain; type FullGrandpaBlockImport = - grandpa::GrandpaBlockImport; + sc_finality_grandpa::GrandpaBlockImport; + +pub type TransactionPool = sc_transaction_pool::FullPool; + +// Our native executor instance. +pub struct ExecutorDispatch; + +impl sc_executor::NativeExecutionDispatch for ExecutorDispatch { + /// Only enable the benchmarking host functions when we actually want to benchmark. + #[cfg(feature = "runtime-benchmarks")] + type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; + /// Otherwise we only use the default Substrate host functions. + #[cfg(not(feature = "runtime-benchmarks"))] + type ExtendHostFunctions = (); + + fn dispatch(method: &str, data: &[u8]) -> Option> { + entropy_runtime::api::dispatch(method, data) + } + + fn native_version() -> sc_executor::NativeVersion { entropy_runtime::native_version() } +} + +/// Fetch the nonce of the given `account` from the chain state. +/// +/// Note: Should only be used for tests. +pub fn fetch_nonce(client: &FullClient, account: sp_core::sr25519::Pair) -> u32 { + let best_hash = client.chain_info().best_hash; + client + .runtime_api() + .account_nonce(&generic::BlockId::Hash(best_hash), account.public().into()) + .expect("Fetching account nonce works; qed") +} + +/// Create a transaction using the given `call`. +/// +/// The transaction will be signed by `sender`. If `nonce` is `None` it will be fetched from the +/// state of the best block. +/// +/// Note: Should only be used for tests. +pub fn create_extrinsic( + client: &FullClient, + sender: sp_core::sr25519::Pair, + function: impl Into, + nonce: Option, +) -> entropy_runtime::UncheckedExtrinsic { + let function = function.into(); + let genesis_hash = client.block_hash(0).ok().flatten().expect("Genesis block exists; qed"); + let best_hash = client.chain_info().best_hash; + let best_block = client.chain_info().best_number; + let nonce = nonce.unwrap_or_else(|| fetch_nonce(client, sender.clone())); + + let period = entropy_runtime::BlockHashCount::get() + .checked_next_power_of_two() + .map(|c| c / 2) + .unwrap_or(2) as u64; + let tip = 0; + let extra: entropy_runtime::SignedExtra = ( + frame_system::CheckSpecVersion::::new(), + frame_system::CheckTxVersion::::new(), + frame_system::CheckGenesis::::new(), + frame_system::CheckEra::::from(generic::Era::mortal( + period, + best_block.saturated_into(), + )), + frame_system::CheckNonce::::from(nonce), + frame_system::CheckWeight::::new(), + pallet_transaction_payment::ChargeTransactionPayment::::from(tip), + pallet_free_tx::ValidateElectricityPayment::::new(), + ); + + let raw_payload = entropy_runtime::SignedPayload::from_raw( + function.clone(), + extra.clone(), + ( + entropy_runtime::VERSION.spec_version, + entropy_runtime::VERSION.transaction_version, + genesis_hash, + best_hash, + (), + (), + (), + (), + ), + ); + let signature = raw_payload.using_encoded(|e| sender.sign(e)); + + entropy_runtime::UncheckedExtrinsic::new_signed( + function, + sp_runtime::AccountId32::from(sender.public()).into(), + entropy_runtime::Signature::Sr25519(signature), + extra, + ) +} #[allow(clippy::type_complexity)] // todo @jesse, refactor this result type to a wrapper +/// Creates a new partial node. +/// Creates a new partial node. pub fn new_partial( config: &Configuration, ) -> Result< @@ -53,15 +151,15 @@ pub fn new_partial( sc_transaction_pool::FullPool, ( impl Fn( - node_rpc::DenyUnsafe, + crate::rpc::DenyUnsafe, sc_rpc::SubscriptionTaskExecutor, - ) -> Result, + ) -> Result, sc_service::Error>, ( sc_consensus_babe::BabeBlockImport, - grandpa::LinkHalf, + sc_finality_grandpa::LinkHalf, sc_consensus_babe::BabeLink, ), - grandpa::SharedVoterState, + sc_finality_grandpa::SharedVoterState, Option, ), >, @@ -108,7 +206,7 @@ pub fn new_partial( client.clone(), ); - let (grandpa_block_import, grandpa_link) = grandpa::block_import( + let (grandpa_block_import, grandpa_link) = sc_finality_grandpa::block_import( client.clone(), &(client.clone() as Arc<_>), select_chain.clone(), @@ -117,7 +215,7 @@ pub fn new_partial( let justification_import = grandpa_block_import.clone(); let (block_import, babe_link) = sc_consensus_babe::block_import( - sc_consensus_babe::Config::get(&*client)?, + sc_consensus_babe::configuration(&*client)?, grandpa_block_import, client.clone(), )?; @@ -133,19 +231,18 @@ pub fn new_partial( let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); let slot = - sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_slot_duration( - *timestamp, - slot_duration, - ); + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_slot_duration( + *timestamp, + slot_duration, + ); let uncles = sp_authorship::InherentDataProvider::<::Header>::check_inherents(); - Ok((timestamp, slot, uncles)) + Ok((slot, timestamp, uncles)) }, &task_manager.spawn_essential_handle(), config.prometheus_registry(), - sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()), telemetry.as_ref().map(|x| x.handle()), )?; @@ -156,10 +253,10 @@ pub fn new_partial( let justification_stream = grandpa_link.justification_stream(); let shared_authority_set = grandpa_link.shared_authority_set().clone(); - let shared_voter_state = grandpa::SharedVoterState::empty(); - let rpc_setup = shared_voter_state.clone(); + let shared_voter_state = sc_finality_grandpa::SharedVoterState::empty(); + let shared_voter_state2 = shared_voter_state.clone(); - let finality_proof_provider = grandpa::FinalityProofProvider::new_for_service( + let finality_proof_provider = sc_finality_grandpa::FinalityProofProvider::new_for_service( backend.clone(), Some(shared_authority_set.clone()), ); @@ -173,19 +270,20 @@ pub fn new_partial( let keystore = keystore_container.sync_keystore(); let chain_spec = config.chain_spec.cloned_box(); + let _rpc_backend = backend.clone(); let rpc_extensions_builder = move |deny_unsafe, subscription_executor| { - let deps = node_rpc::FullDeps { + let deps = crate::rpc::FullDeps { client: client.clone(), pool: pool.clone(), select_chain: select_chain.clone(), chain_spec: chain_spec.cloned_box(), deny_unsafe, - babe: node_rpc::BabeDeps { + babe: crate::rpc::BabeDeps { babe_config: babe_config.clone(), shared_epoch_changes: shared_epoch_changes.clone(), keystore: keystore.clone(), }, - grandpa: node_rpc::GrandpaDeps { + grandpa: crate::rpc::GrandpaDeps { shared_voter_state: shared_voter_state.clone(), shared_authority_set: shared_authority_set.clone(), justification_stream: justification_stream.clone(), @@ -194,10 +292,10 @@ pub fn new_partial( }, }; - node_rpc::create_full(deps).map_err(Into::into) + crate::rpc::create_full(deps).map_err(Into::into) }; - (rpc_extensions_builder, rpc_setup) + (rpc_extensions_builder, shared_voter_state2) }; Ok(sc_service::PartialComponents { @@ -212,21 +310,38 @@ pub fn new_partial( }) } +/// Result of [`new_full_base`]. pub struct NewFullBase { + /// The task manager of the node. pub task_manager: TaskManager, + /// The client instance of the node. pub client: Arc, + /// The networking service of the node. pub network: Arc::Hash>>, - pub transaction_pool: Arc>, + /// The transaction pool of the node. + pub transaction_pool: Arc, + /// The rpc handlers of the node. + pub rpc_handlers: RpcHandlers, } /// Creates a full service from the configuration. pub fn new_full_base( mut config: Configuration, + disable_hardware_benchmarks: bool, with_startup_data: impl FnOnce( &sc_consensus_babe::BabeBlockImport, &sc_consensus_babe::BabeLink, ), ) -> Result { + let hwbench = if !disable_hardware_benchmarks { + config.database.path().map(|database_path| { + let _ = std::fs::create_dir_all(database_path); + sc_sysinfo::gather_hwbench(Some(database_path)) + }) + } else { + None + }; + let sc_service::PartialComponents { client, backend, @@ -235,26 +350,27 @@ pub fn new_full_base( keystore_container, select_chain, transaction_pool, - other: (rpc_extensions_builder, import_setup, rpc_setup, mut telemetry), + other: (rpc_builder, import_setup, rpc_setup, mut telemetry), } = new_partial(&config)?; let shared_voter_state = rpc_setup; let auth_disc_publish_non_global_ips = config.network.allow_non_globals_in_dht; - let grandpa_protocol_name = grandpa::protocol_standard_name( + let grandpa_protocol_name = sc_finality_grandpa::protocol_standard_name( &client.block_hash(0).ok().flatten().expect("Genesis block exists; qed"), &config.chain_spec, ); + config .network .extra_sets - .push(grandpa::grandpa_peers_set_config(grandpa_protocol_name.clone())); - let warp_sync = Arc::new(grandpa::warp_proof::NetworkProvider::new( + .push(sc_finality_grandpa::grandpa_peers_set_config(grandpa_protocol_name.clone())); + let warp_sync = Arc::new(sc_finality_grandpa::warp_proof::NetworkProvider::new( backend.clone(), import_setup.1.shared_authority_set().clone(), Vec::default(), )); - let (network, system_rpc_tx, network_starter) = + let (network, system_rpc_tx, tx_handler_controller, network_starter) = sc_service::build_network(sc_service::BuildNetworkParams { config: &config, client: client.clone(), @@ -282,19 +398,33 @@ pub fn new_full_base( let enable_grandpa = !config.disable_grandpa; let prometheus_registry = config.prometheus_registry().cloned(); - let _rpc_handlers = sc_service::spawn_tasks(sc_service::SpawnTasksParams { + let rpc_handlers = sc_service::spawn_tasks(sc_service::SpawnTasksParams { config, backend, client: client.clone(), keystore: keystore_container.sync_keystore(), network: network.clone(), - rpc_extensions_builder: Box::new(rpc_extensions_builder), + rpc_builder: Box::new(rpc_builder), transaction_pool: transaction_pool.clone(), task_manager: &mut task_manager, system_rpc_tx, + tx_handler_controller, telemetry: telemetry.as_mut(), })?; + if let Some(hwbench) = hwbench { + sc_sysinfo::print_hwbench(&hwbench); + + if let Some(ref mut telemetry) = telemetry { + let telemetry_handle = telemetry.handle(); + task_manager.spawn_handle().spawn( + "telemetry_hwbench", + None, + sc_sysinfo::initialize_hwbench_telemetry(telemetry_handle, hwbench), + ); + } + } + let (block_import, grandpa_link, babe_link) = import_setup; (with_startup_data)(&block_import, &babe_link); @@ -308,9 +438,6 @@ pub fn new_full_base( telemetry.as_ref().map(|x| x.handle()), ); - let can_author_with = - sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()); - let client_clone = client.clone(); let slot_duration = babe_link.config().slot_duration(); let babe_config = sc_consensus_babe::BabeParams { @@ -332,10 +459,10 @@ pub fn new_full_base( let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); let slot = - sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_slot_duration( - *timestamp, - slot_duration, - ); + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_slot_duration( + *timestamp, + slot_duration, + ); let storage_proof = sp_transaction_storage_proof::registration::new_data_provider( @@ -343,13 +470,12 @@ pub fn new_full_base( &parent, )?; - Ok((timestamp, slot, uncles, storage_proof)) + Ok((slot, timestamp, uncles, storage_proof)) } }, force_authoring, backoff_authoring_blocks, babe_link, - can_author_with, block_proposal_slot_portion: SlotProportion::new(0.5), max_block_proposal_slot_portion: None, telemetry: telemetry.as_ref().map(|x| x.handle()), @@ -399,7 +525,7 @@ pub fn new_full_base( let keystore = if role.is_authority() { Some(keystore_container.sync_keystore()) } else { None }; - let config = grandpa::Config { + let config = sc_finality_grandpa::Config { // FIXME #1578 make this available through chainspec gossip_duration: std::time::Duration::from_millis(333), justification_period: 512, @@ -418,12 +544,12 @@ pub fn new_full_base( // and vote data availability than the observer. The observer has not // been tested extensively yet and having most nodes in a network run it // could lead to finality stalls. - let grandpa_config = grandpa::GrandpaParams { + let grandpa_config = sc_finality_grandpa::GrandpaParams { config, link: grandpa_link, network: network.clone(), telemetry: telemetry.as_ref().map(|x| x.handle()), - voting_rule: grandpa::VotingRulesBuilder::default().build(), + voting_rule: sc_finality_grandpa::VotingRulesBuilder::default().build(), prometheus_registry, shared_voter_state, }; @@ -433,17 +559,21 @@ pub fn new_full_base( task_manager.spawn_essential_handle().spawn_blocking( "grandpa-voter", None, - grandpa::run_grandpa_voter(grandpa_config)?, + sc_finality_grandpa::run_grandpa_voter(grandpa_config)?, ); } network_starter.start_network(); - Ok(NewFullBase { task_manager, client, network, transaction_pool }) + Ok(NewFullBase { task_manager, client, network, transaction_pool, rpc_handlers }) } /// Builds a new service for a full client. -pub fn new_full(config: Configuration) -> Result { - new_full_base(config, |_, _| ()).map(|NewFullBase { task_manager, .. }| task_manager) +pub fn new_full( + config: Configuration, + disable_hardware_benchmarks: bool, +) -> Result { + new_full_base(config, disable_hardware_benchmarks, |_, _| ()) + .map(|NewFullBase { task_manager, .. }| task_manager) } #[cfg(test)] @@ -452,7 +582,7 @@ mod tests { use entropy_runtime::{ constants::{currency::CENTS, time::SLOT_DURATION}, - Address, BalancesCall, Call, UncheckedExtrinsic, + Address, BalancesCall, RuntimeCall, UncheckedExtrinsic, }; use node_primitives::{Block, DigestItem, Signature}; use sc_client_api::BlockBackend; @@ -484,8 +614,6 @@ mod tests { // This can be run locally with `cargo test --release -p node-cli test_sync -- --ignored`. #[ignore] fn test_sync() { - sp_tracing::try_init_simple(); - let keystore_path = tempfile::tempdir().expect("Creates keystore path"); let keystore: SyncCryptoStorePtr = Arc::new(LocalKeystore::open(keystore_path.path(), None).expect("Creates keystore")); @@ -511,6 +639,7 @@ mod tests { let NewFullBase { task_manager, client, network, transaction_pool, .. } = new_full_base( config, + false, |block_import: &sc_consensus_babe::BabeBlockImport, babe_link: &sc_consensus_babe::BabeLink| { setup_handles = Some((block_import.clone(), babe_link.clone())); @@ -564,10 +693,7 @@ mod tests { .epoch_changes() .shared_data() .epoch_data(&epoch_descriptor, |slot| { - sc_consensus_babe::Epoch::genesis( - babe_link.config().genesis_config(), - slot, - ) + sc_consensus_babe::Epoch::genesis(babe_link.config(), slot) }) .unwrap(); @@ -644,7 +770,8 @@ mod tests { }; let signer = charlie.clone(); - let function = Call::Balances(BalancesCall::transfer { dest: to, value: amount }); + let function = + RuntimeCall::Balances(BalancesCall::transfer { dest: to, value: amount }); let check_spec_version = frame_system::CheckSpecVersion::new(); let check_tx_version = frame_system::CheckTxVersion::new(); @@ -681,13 +808,11 @@ mod tests { #[test] #[ignore] fn test_consensus() { - sp_tracing::try_init_simple(); - sc_service_test::consensus( crate::chain_spec::tests::integration_test_config_with_two_authorities(), |config| { let NewFullBase { task_manager, client, network, transaction_pool, .. } = - new_full_base(config, |_, _| ())?; + new_full_base(config, false, |_, _| ())?; Ok(sc_service_test::TestNetComponents::new( task_manager, client, diff --git a/node/rpc/Cargo.toml b/node/rpc/Cargo.toml deleted file mode 100644 index d3b0f12e4..000000000 --- a/node/rpc/Cargo.toml +++ /dev/null @@ -1,37 +0,0 @@ -[package] -name ="node-rpc" -version ="3.0.0-dev" -authors =["Parity Technologies "] -edition ="2021" -license ="Apache-2.0" -homepage ="https://substrate.io" -repository="https://github.com/paritytech/substrate/" - -[package.metadata.docs.rs] -targets=["x86_64-unknown-linux-gnu"] - -[dependencies] -jsonrpc-core ="18.0.0" -node-primitives ={ version="2.0.0", git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-contracts-rpc ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-mmr-rpc ={ version="3.0.0", git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-transaction-payment-rpc={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-client-api ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-consensus-babe ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-consensus-babe-rpc ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-consensus-epochs ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-chain-spec ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-finality-grandpa ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-finality-grandpa-rpc ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-rpc-api ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-rpc ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-sync-state-rpc ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-api ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-block-builder ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-blockchain ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-keystore ={ version="0.12.0", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-consensus ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-consensus-babe ={ version="0.10.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -sp-runtime ={ version="6.0.0", git='https://github.com/paritytech/substrate.git', branch="master" } -sc-transaction-pool-api ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } -substrate-frame-rpc-system ={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } diff --git a/node/rpc/src/lib.rs b/node/rpc/src/lib.rs deleted file mode 100644 index eb891b604..000000000 --- a/node/rpc/src/lib.rs +++ /dev/null @@ -1,166 +0,0 @@ -// This file is part of Substrate. - -// Copyright (C) 2019-2021 Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! A collection of node-specific RPC methods. -//! -//! Since `substrate` core functionality makes no assumptions -//! about the modules used inside the runtime, so do -//! RPC methods defined in `sc-rpc` crate. -//! It means that `client/rpc` can't have any methods that -//! need some strong assumptions about the particular runtime. -//! -//! The RPCs available in this crate however can make some assumptions -//! about how the runtime is constructed and what FRAME pallets -//! are part of it. Therefore all node-runtime-specific RPCs can -//! be placed here or imported from corresponding FRAME RPC definitions. - -#![warn(missing_docs)] - -use std::sync::Arc; - -use node_primitives::{AccountId, Balance, Block, BlockNumber, Hash, Index}; -use sc_client_api::AuxStore; -use sc_consensus_babe::{Config, Epoch}; -use sc_consensus_babe_rpc::BabeRpcHandler; -use sc_consensus_epochs::SharedEpochChanges; -use sc_finality_grandpa::{ - FinalityProofProvider, GrandpaJustificationStream, SharedAuthoritySet, SharedVoterState, -}; -use sc_finality_grandpa_rpc::GrandpaRpcHandler; -use sc_rpc::SubscriptionTaskExecutor; -pub use sc_rpc_api::DenyUnsafe; -use sc_transaction_pool_api::TransactionPool; -use sp_api::ProvideRuntimeApi; -use sp_block_builder::BlockBuilder; -use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata}; -use sp_consensus::SelectChain; -use sp_consensus_babe::BabeApi; -use sp_keystore::SyncCryptoStorePtr; - -/// Extra dependencies for BABE. -pub struct BabeDeps { - /// BABE protocol config. - pub babe_config: Config, - /// BABE pending epoch changes. - pub shared_epoch_changes: SharedEpochChanges, - /// The keystore that manages the keys of the node. - pub keystore: SyncCryptoStorePtr, -} - -/// Extra dependencies for GRANDPA -pub struct GrandpaDeps { - /// Voting round info. - pub shared_voter_state: SharedVoterState, - /// Authority set info. - pub shared_authority_set: SharedAuthoritySet, - /// Receives notifications about justification events from Grandpa. - pub justification_stream: GrandpaJustificationStream, - /// Executor to drive the subscription manager in the Grandpa RPC handler. - pub subscription_executor: SubscriptionTaskExecutor, - /// Finality proof provider. - pub finality_provider: Arc>, -} - -/// Full client dependencies. -pub struct FullDeps { - /// The client instance to use. - pub client: Arc, - /// Transaction pool instance. - pub pool: Arc

, - /// The SelectChain Strategy - pub select_chain: SC, - /// A copy of the chain spec. - pub chain_spec: Box, - /// Whether to deny unsafe calls - pub deny_unsafe: DenyUnsafe, - /// BABE specific dependencies. - pub babe: BabeDeps, - /// GRANDPA specific dependencies. - pub grandpa: GrandpaDeps, -} - -/// A IO handler that uses all Full RPC extensions. -pub type IoHandler = jsonrpc_core::IoHandler; - -/// Instantiate all Full RPC extensions. -pub fn create_full( - deps: FullDeps, -) -> Result, Box> -where - C: ProvideRuntimeApi - + HeaderBackend - + AuxStore - + HeaderMetadata - + Sync - + Send - + 'static, - C::Api: substrate_frame_rpc_system::AccountNonceApi, - C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi, - C::Api: BabeApi, - C::Api: BlockBuilder, - P: TransactionPool + 'static, - SC: SelectChain + 'static, - B: sc_client_api::Backend + Send + Sync + 'static, - B::State: sc_client_api::backend::StateBackend>, -{ - use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApi}; - use substrate_frame_rpc_system::{FullSystem, SystemApi}; - - let mut io = jsonrpc_core::IoHandler::default(); - let FullDeps { client, pool, select_chain, chain_spec, deny_unsafe, babe, grandpa } = deps; - - let BabeDeps { keystore, babe_config, shared_epoch_changes } = babe; - let GrandpaDeps { - shared_voter_state, - shared_authority_set, - justification_stream, - subscription_executor, - finality_provider, - } = grandpa; - - io.extend_with(SystemApi::to_delegate(FullSystem::new(client.clone(), pool, deny_unsafe))); - // Making synchronous calls in light client freezes the browser currently, - // more context: https://github.com/paritytech/substrate/pull/3480 - // These RPCs should use an asynchronous caller instead. - io.extend_with(TransactionPaymentApi::to_delegate(TransactionPayment::new(client.clone()))); - io.extend_with(sc_consensus_babe_rpc::BabeApi::to_delegate(BabeRpcHandler::new( - client.clone(), - shared_epoch_changes.clone(), - keystore, - babe_config, - select_chain, - deny_unsafe, - ))); - io.extend_with(sc_finality_grandpa_rpc::GrandpaApi::to_delegate(GrandpaRpcHandler::new( - shared_authority_set.clone(), - shared_voter_state, - justification_stream, - subscription_executor, - finality_provider, - ))); - - io.extend_with(sc_sync_state_rpc::SyncStateRpcApi::to_delegate( - sc_sync_state_rpc::SyncStateRpcHandler::new( - chain_spec, - client, - shared_authority_set, - shared_epoch_changes, - )?, - )); - - Ok(io) -} diff --git a/pallets/constraints/Cargo.toml b/pallets/constraints/Cargo.toml index d65ba6cf7..35a630023 100644 --- a/pallets/constraints/Cargo.toml +++ b/pallets/constraints/Cargo.toml @@ -16,7 +16,7 @@ targets=['x86_64-unknown-linux-gnu'] [dev-dependencies.sp-core] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='6.0.0' [dependencies.codec] @@ -28,32 +28,32 @@ version ='3.0.0' [dependencies.frame-benchmarking] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" optional =true version ='4.0.0-dev' [dependencies.frame-support] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='4.0.0-dev' [dependencies.frame-system] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='4.0.0-dev' [dependencies] -pallet-authorship={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +pallet-authorship={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } scale-info={ version="2.0.1", default-features=false, features=["derive"] } log ={ version="0.4.0", default-features=false } -sp-staking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-io ={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="master" } +sp-staking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-io ={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } lite-json ={ version="0.1", default-features=false } -sp-runtime={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="master" } -sp-std ={ package="sp-std", git="https://github.com/paritytech/substrate", branch="master", default-features=false } +sp-runtime={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } +sp-std ={ package="sp-std", git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } [features] default=['std'] diff --git a/pallets/constraints/src/benchmarking.rs b/pallets/constraints/src/benchmarking.rs index 7ad5c4088..647cc515e 100644 --- a/pallets/constraints/src/benchmarking.rs +++ b/pallets/constraints/src/benchmarking.rs @@ -8,9 +8,9 @@ use super::*; #[allow(unused)] use crate::Pallet as Constraints; -fn assert_last_event(generic_event: ::Event) { +fn assert_last_event(generic_event: ::RuntimeEvent) { let events = frame_system::Pallet::::events(); - let system_event: ::Event = generic_event.into(); + let system_event: ::RuntimeEvent = generic_event.into(); // compare to the last event record let EventRecord { event, .. } = &events[events.len() - 1]; assert_eq!(event, &system_event); diff --git a/pallets/constraints/src/lib.rs b/pallets/constraints/src/lib.rs index e8eb47c0b..30c886526 100644 --- a/pallets/constraints/src/lib.rs +++ b/pallets/constraints/src/lib.rs @@ -33,7 +33,7 @@ pub mod pallet { #[pallet::config] pub trait Config: frame_system::Config { - type Event: From> + IsType<::Event>; + type RuntimeEvent: From> + IsType<::RuntimeEvent>; type MaxWhitelist: Get; type MaxAddressLength: Get; diff --git a/pallets/constraints/src/mock.rs b/pallets/constraints/src/mock.rs index 3dae09747..2637f4fae 100644 --- a/pallets/constraints/src/mock.rs +++ b/pallets/constraints/src/mock.rs @@ -36,9 +36,7 @@ impl system::Config for Test { type BlockLength = (); type BlockNumber = u64; type BlockWeights = (); - type Call = Call; type DbWeight = (); - type Event = Event; type Hash = H256; type Hashing = BlakeTwo256; type Header = Header; @@ -48,8 +46,10 @@ impl system::Config for Test { type OnKilledAccount = (); type OnNewAccount = (); type OnSetCode = (); - type Origin = Origin; type PalletInfo = PalletInfo; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; type SS58Prefix = SS58Prefix; type SystemWeightInfo = (); type Version = (); @@ -61,9 +61,9 @@ parameter_types! { } impl pallet_constraints::Config for Test { - type Event = Event; type MaxAddressLength = MaxAddressLength; type MaxWhitelist = MaxWhitelist; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } diff --git a/pallets/constraints/src/tests.rs b/pallets/constraints/src/tests.rs index 7da760a74..48dd2f483 100644 --- a/pallets/constraints/src/tests.rs +++ b/pallets/constraints/src/tests.rs @@ -13,32 +13,38 @@ fn whitelist_address() { assert_noop!( Constraints::add_whitelist_address( - Origin::signed(1), + RuntimeOrigin::signed(1), [address_2.clone(), address_3.clone(), address_4.clone(), address_5.clone()] .to_vec() ), Error::::MaxWhitelist ); assert_ok!(Constraints::add_whitelist_address( - Origin::signed(1), + RuntimeOrigin::signed(1), [address_2.clone(), address_3.clone()].to_vec() )); assert_eq!(Constraints::address_whitelist(1), [address_2.clone(), address_3.clone()]); assert_noop!( - Constraints::add_whitelist_address(Origin::signed(1), [address_2.clone()].to_vec()), + Constraints::add_whitelist_address( + RuntimeOrigin::signed(1), + [address_2.clone()].to_vec() + ), Error::::AlreadyWhitelisted ); assert_ok!(Constraints::add_whitelist_address( - Origin::signed(1), + RuntimeOrigin::signed(1), [address_4.clone()].to_vec() )); assert_eq!(Constraints::address_whitelist(1), [address_2, address_3, address_4]); assert_noop!( - Constraints::add_whitelist_address(Origin::signed(1), [address_5].to_vec()), + Constraints::add_whitelist_address(RuntimeOrigin::signed(1), [address_5].to_vec()), Error::::MaxWhitelist ); assert_noop!( - Constraints::add_whitelist_address(Origin::signed(1), [[1, 12, 21].to_vec()].to_vec()), + Constraints::add_whitelist_address( + RuntimeOrigin::signed(1), + [[1, 12, 21].to_vec()].to_vec() + ), Error::::AddressTooLong ); }); diff --git a/pallets/constraints/src/weights.rs b/pallets/constraints/src/weights.rs index d6aab57c6..9e37de803 100644 --- a/pallets/constraints/src/weights.rs +++ b/pallets/constraints/src/weights.rs @@ -17,11 +17,11 @@ pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { // Storage: Constraints AddressWhitelist (r:1 w:1) fn add_whitelist_address(a: u32) -> Weight { - (24_045_000 as Weight) + Weight::from_ref_time(24_045_000_u64) // Standard Error: 0 - .saturating_add((278_000 as Weight).saturating_mul(a as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + + Weight::from_ref_time(278_000_u64.saturating_mul(a as u64)) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } } @@ -29,10 +29,10 @@ impl WeightInfo for SubstrateWeight { impl WeightInfo for () { // Storage: Constraints AddressWhitelist (r:1 w:1) fn add_whitelist_address(a: u32) -> Weight { - (24_045_000 as Weight) + Weight::from_ref_time(24_045_000_u64) // Standard Error: 0 - .saturating_add((278_000 as Weight).saturating_mul(a as Weight)) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + + Weight::from_ref_time(278_000_u64.saturating_mul(a as u64)) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) } } diff --git a/pallets/free-tx/Cargo.toml b/pallets/free-tx/Cargo.toml index b4bdda504..d80fd0e18 100644 --- a/pallets/free-tx/Cargo.toml +++ b/pallets/free-tx/Cargo.toml @@ -6,29 +6,29 @@ edition="2021" [dependencies] codec ={ package="parity-scale-codec", version="3.0.0", default-features=false } scale-info ={ version="2.1.1", default-features=false, features=["derive"] } -sp-runtime ={ git="https://github.com/paritytech/substrate", branch="master", default-features=false } -sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -frame-benchmarking={ git="https://github.com/paritytech/substrate", branch="master", optional=true, default-features=false } -frame-support ={ git="https://github.com/paritytech/substrate", branch="master", default-features=false } -frame-system ={ git="https://github.com/paritytech/substrate", branch="master", default-features=false } -pallet-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-std ={ git="https://github.com/paritytech/substrate", branch="master", default-features=false } +sp-runtime ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } +sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-benchmarking={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", optional=true, default-features=false } +frame-support ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } +frame-system ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } +pallet-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-std ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } log ={ version="0.4.0", default-features=false } [dev-dependencies] -sp-core ={ git="https://github.com/paritytech/substrate", branch="master" } -sp-io ={ git="https://github.com/paritytech/substrate", branch="master" } -sp-tracing ={ version="5.0.0", git="https://github.com/paritytech/substrate", branch="master" } -pallet-balances ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-timestamp ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-bags-list ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-staking-reward-curve ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +sp-core ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } +sp-io ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } +sp-tracing ={ version="5.0.0", git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } +pallet-balances ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-timestamp ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-bags-list ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-staking-reward-curve ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } pallet-staking-extension ={ version="3.0.0", default-features=false, path="../staking" } pallet-relayer ={ version="3.0.0", default-features=false, path="../relayer" } -pallet-authorship ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +pallet-authorship ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } [features] default=["std"] diff --git a/pallets/free-tx/src/benchmarking.rs b/pallets/free-tx/src/benchmarking.rs index 499ee8fc8..5ddde23fc 100644 --- a/pallets/free-tx/src/benchmarking.rs +++ b/pallets/free-tx/src/benchmarking.rs @@ -25,7 +25,7 @@ benchmarks! { }, ); - let call: ::Call = frame_system::Call::::remark { remark: b"entropy rocks".to_vec() }.into(); + let call: ::RuntimeCall = frame_system::Call::::remark { remark: b"entropy rocks".to_vec() }.into(); }: _(RawOrigin::Signed(caller.clone()), Box::new(call)) verify { assert!(>::get(caller).unwrap().used.count == 1); diff --git a/pallets/free-tx/src/lib.rs b/pallets/free-tx/src/lib.rs index b4eeaab0d..976826b0d 100644 --- a/pallets/free-tx/src/lib.rs +++ b/pallets/free-tx/src/lib.rs @@ -21,10 +21,9 @@ pub mod weights; #[frame_support::pallet] pub mod pallet { use frame_support::{ - dispatch::Dispatchable, + dispatch::{Dispatchable, GetDispatchInfo, PostDispatchInfo}, pallet_prelude::*, traits::IsSubType, - weights::{GetDispatchInfo, PostDispatchInfo}, }; use frame_system::{pallet_prelude::*, RawOrigin}; use scale_info::TypeInfo; @@ -40,16 +39,16 @@ pub mod pallet { #[pallet::config] pub trait Config: frame_system::Config + pallet_staking::Config { /// Pallet emits events - type Event: From> + IsType<::Event>; + type RuntimeEvent: From> + IsType<::RuntimeEvent>; /// Requirements for callable functions - type Call: Parameter - + Dispatchable + type RuntimeCall: Parameter + + Dispatchable + GetDispatchInfo + From>; // Counsil (or another) can update the number of free transactions per era - type UpdateOrigin: EnsureOrigin; + type UpdateOrigin: EnsureOrigin; // The weight information of this pallet. type WeightInfo: WeightInfo; @@ -129,25 +128,26 @@ pub mod pallet { /// regardless of the call's result. #[pallet::weight({ let dispatch_info = call.get_dispatch_info(); - let base_weight = ::WeightInfo::call_using_electricity(); - (base_weight.saturating_add(dispatch_info.weight), dispatch_info.class, Pays::No) + (::WeightInfo::call_using_electricity().saturating_add(dispatch_info.weight), dispatch_info.class, Pays::No) })] #[allow(clippy::boxed_local)] pub fn call_using_electricity( origin: OriginFor, - call: Box<::Call>, - ) -> DispatchResultWithPostInfo { + call: Box<::RuntimeCall>, + ) -> DispatchResult { let sender = ensure_signed(origin)?; Self::try_spend_cell(&sender)?; - let res = call.dispatch(RawOrigin::Signed(sender.clone()).into()); - Self::deposit_event(Event::ElectricitySpent( - sender, - res.map(|_| ()).map_err(|e| e.error), - )); + let res = call + .dispatch(RawOrigin::Signed(sender.clone()).into()) + .map(|_| ()) + .map_err(|e| e.error); + let event = Event::ElectricitySpent(sender, res); + + Self::deposit_event(event); - res + Ok(()) } /// Put a cap on the number of cells individual accounts can use per era. @@ -223,6 +223,8 @@ pub mod pallet { impl Pallet { // if OK(()), a electricity for the account was available + /// TODO JH: maybe remove 'try' from the name since the updated version of Substrate makes + /// all transactions `transactional` pub fn try_spend_cell(account_id: &::AccountId) -> Result<(), Error> { // gets max cells per era or return error if electricity is disabled let max_cells_per_era = Self::individual_electricity_era_limit(); @@ -366,10 +368,10 @@ pub mod pallet { #[derive(Encode, Decode, Clone, Eq, PartialEq, TypeInfo)] #[scale_info(skip_type_params(T))] pub struct ValidateElectricityPayment(sp_std::marker::PhantomData) - where ::Call: IsSubType>; + where ::RuntimeCall: IsSubType>; impl Debug for ValidateElectricityPayment - where ::Call: IsSubType> + where ::RuntimeCall: IsSubType> { #[cfg(feature = "std")] fn fmt(&self, f: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result { @@ -381,18 +383,18 @@ pub mod pallet { } impl ValidateElectricityPayment - where ::Call: IsSubType> + where ::RuntimeCall: IsSubType> { #[allow(clippy::new_without_default)] pub fn new() -> Self { Self(sp_std::marker::PhantomData) } } impl SignedExtension for ValidateElectricityPayment - where ::Call: IsSubType> + where ::RuntimeCall: IsSubType> { type AccountId = T::AccountId; type AdditionalSigned = (); - type Call = ::Call; + type Call = ::RuntimeCall; type Pre = (); const IDENTIFIER: &'static str = "ValidateElectricityPayment"; diff --git a/pallets/free-tx/src/mock.rs b/pallets/free-tx/src/mock.rs index f77204baa..1fac00305 100644 --- a/pallets/free-tx/src/mock.rs +++ b/pallets/free-tx/src/mock.rs @@ -62,9 +62,7 @@ impl system::Config for Test { type BlockLength = (); type BlockNumber = u64; type BlockWeights = (); - type Call = Call; type DbWeight = (); - type Event = Event; type Hash = H256; type Hashing = BlakeTwo256; type Header = Header; @@ -74,8 +72,10 @@ impl system::Config for Test { type OnKilledAccount = (); type OnNewAccount = (); type OnSetCode = (); - type Origin = Origin; type PalletInfo = PalletInfo; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; type SS58Prefix = SS58Prefix; type SystemWeightInfo = (); type Version = (); @@ -100,11 +100,11 @@ impl pallet_balances::Config for Test { type AccountStore = System; type Balance = Balance; type DustRemoval = (); - type Event = Event; type ExistentialDeposit = ExistentialDeposit; type MaxLocks = MaxLocks; type MaxReserves = (); type ReserveIdentifier = [u8; 8]; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -145,10 +145,11 @@ sp_runtime::impl_opaque_keys! { } pub struct OnChainSeqPhragmen; -impl onchain::ExecutionConfig for OnChainSeqPhragmen { +impl onchain::Config for OnChainSeqPhragmen { type DataProvider = FrameStaking; type Solver = SequentialPhragmen; type System = Test; + type WeightInfo = (); } pallet_staking_reward_curve::build! { @@ -170,10 +171,10 @@ parameter_types! { } impl frame_system::offchain::SendTransactionTypes for Test -where Call: From +where RuntimeCall: From { - type Extrinsic = TestXt; - type OverarchingCall = Call; + type Extrinsic = TestXt; + type OverarchingCall = RuntimeCall; } const THRESHOLDS: [sp_npos_elections::VoteWeight; 9] = @@ -185,7 +186,7 @@ parameter_types! { impl pallet_bags_list::Config for Test { type BagThresholds = BagThresholds; - type Event = Event; + type RuntimeEvent = RuntimeEvent; type Score = VoteWeight; type ScoreProvider = FrameStaking; type WeightInfo = (); @@ -212,32 +213,36 @@ impl pallet_staking::Config for Test { type BenchmarkingConfig = StakingBenchmarkingConfig; type BondingDuration = BondingDuration; type Currency = Balances; + type CurrencyBalance = Balance; type CurrencyToVote = frame_support::traits::SaturatingCurrencyToVote; type ElectionProvider = onchain::UnboundedExecution; type EraPayout = pallet_staking::ConvertCurve; - type Event = Event; type GenesisElectionProvider = Self::ElectionProvider; + type HistoryDepth = ConstU32<84>; type MaxNominations = MaxNominations; - type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; + type MaxNominatorRewardedPerValidator = ConstU32<64>; type MaxUnlockingChunks = ConstU32<32>; type NextNewSession = Session; type OffendingValidatorsThreshold = OffendingValidatorsThreshold; + type OnStakerSlash = (); type Reward = (); type RewardRemainder = (); + type RuntimeEvent = RuntimeEvent; type SessionInterface = Self; type SessionsPerEra = SessionsPerEra; type Slash = (); type SlashCancelOrigin = frame_system::EnsureRoot; type SlashDeferDuration = SlashDeferDuration; + type TargetList = pallet_staking::UseValidatorsMap; type UnixTime = pallet_timestamp::Pallet; type VoterList = BagsList; type WeightInfo = (); } impl pallet_session::Config for Test { - type Event = Event; type Keys = SessionKeys; type NextSessionRotation = pallet_session::PeriodicSessions; + type RuntimeEvent = RuntimeEvent; type SessionHandler = (OtherSessionHandler,); type SessionManager = pallet_session::historical::NoteHistoricalRoot; type ShouldEndSession = pallet_session::PeriodicSessions; @@ -256,8 +261,8 @@ parameter_types! { } impl pallet_staking_extension::Config for Test { type Currency = Balances; - type Event = Event; type MaxEndpointLength = MaxEndpointLength; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -266,8 +271,8 @@ ord_parameter_types! { } impl pallet_free_tx::Config for Test { - type Call = Call; - type Event = Event; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; type UpdateOrigin = EnsureSignedBy; type WeightInfo = (); } diff --git a/pallets/free-tx/src/tests.rs b/pallets/free-tx/src/tests.rs index fc86da583..cd0844b82 100644 --- a/pallets/free-tx/src/tests.rs +++ b/pallets/free-tx/src/tests.rs @@ -1,7 +1,7 @@ -use frame_support::{assert_err, assert_noop, assert_ok}; +use frame_support::{assert_noop, assert_ok}; use mock::{ - start_active_era, Call, Event as TestEvent, ExtBuilder, FreeTx, Origin, System, SystemCall, - Test, + start_active_era, ExtBuilder, FreeTx, RuntimeCall, RuntimeEvent as TestEvent, RuntimeOrigin, + System, SystemCall, Test, }; use sp_runtime::{DispatchError, ModuleError}; @@ -23,8 +23,9 @@ fn call_using_electricity_works() { ); // Dispatch a free call - let call = Box::new(Call::System(SystemCall::remark { remark: b"entropy rocks".to_vec() })); - assert_ok!(FreeTx::call_using_electricity(Origin::signed(1), call)); + let call = + Box::new(RuntimeCall::System(SystemCall::remark { remark: b"entropy rocks".to_vec() })); + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call)); // Make sure the free call succeeded and event was emitted without an error System::assert_has_event(TestEvent::FreeTx(Event::ElectricitySpent(1, Ok(())))); @@ -36,6 +37,7 @@ fn call_using_electricity_errors_when_child_call_errors() { ExtBuilder::default().build_and_execute(|| { // must be in an era for free calls to be enabled start_active_era(1); + // enable free calls (1 free call per era) ElectricalAccount::::insert( 1, @@ -46,13 +48,13 @@ fn call_using_electricity_errors_when_child_call_errors() { }, ); // this call will throw an error - let call = Box::new(Call::System(SystemCall::kill_storage { + let call = Box::new(RuntimeCall::System(SystemCall::kill_storage { keys: vec![b"this call will fail".to_vec()], })); let expected_error = DispatchError::BadOrigin; // Make sure call_using_electricity returns child call error to user - assert_err!(FreeTx::call_using_electricity(Origin::signed(1), call), expected_error); + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call)); // Make sure emitted event also contains the child error System::assert_has_event(TestEvent::FreeTx(Event::ElectricitySpent( @@ -77,14 +79,16 @@ fn call_using_electricity_errors_when_no_cells_available() { }, ); // user gets 1 free call by default, lets use it - let call = Box::new(Call::System(SystemCall::remark { remark: b"entropy rocks".to_vec() })); - assert_ok!(FreeTx::call_using_electricity(Origin::signed(1), call)); + let call = + Box::new(RuntimeCall::System(SystemCall::remark { remark: b"entropy rocks".to_vec() })); + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call)); // Make sure the child call worked System::assert_last_event(TestEvent::FreeTx(Event::ElectricitySpent(1, Ok(())))); // try to do another free call when user has no free calls left - let call = Box::new(Call::System(SystemCall::remark { remark: b"entropy rocks".to_vec() })); + let call = + Box::new(RuntimeCall::System(SystemCall::remark { remark: b"entropy rocks".to_vec() })); // make sure it fails bc no free calls left let expected_error = DispatchError::Module(ModuleError { @@ -92,7 +96,10 @@ fn call_using_electricity_errors_when_no_cells_available() { error: [1, 0, 0, 0], message: Some("NoCellsAvailable"), }); - assert_noop!(FreeTx::call_using_electricity(Origin::signed(1), call), expected_error); + assert_noop!( + FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call), + expected_error + ); }); } @@ -114,14 +121,20 @@ fn call_using_electricity_still_uses_electricity_on_child_fail() { assert_eq!(FreeTx::cells_usable_this_era(&1u64), 1 as Cells); // choose a child call that will fail - let call = Box::new(Call::System(SystemCall::kill_storage { + let call = Box::new(RuntimeCall::System(SystemCall::kill_storage { keys: vec![b"this call will fail".to_vec()], })); // Make sure call_using_electricity fails only bc child fails, not because user has no free // calls left let expected_child_error = DispatchError::BadOrigin; - assert_err!(FreeTx::call_using_electricity(Origin::signed(1), call), expected_child_error); + + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call)); + + System::assert_has_event(TestEvent::FreeTx(Event::ElectricitySpent( + 1, + Err(expected_child_error), + ))); // make sure free call was still consumed assert_eq!(FreeTx::cells_usable_this_era(&1u64), 0 as Cells); @@ -145,8 +158,9 @@ fn batteries_refresh_every_era() { assert_eq!(FreeTx::cells_usable_this_era(&1u64), 5 as Cells); // make a call that works, check call is used - let call = Box::new(Call::System(SystemCall::remark { remark: b"entropy rocks".to_vec() })); - assert_ok!(FreeTx::call_using_electricity(Origin::signed(1), call)); + let call = + Box::new(RuntimeCall::System(SystemCall::remark { remark: b"entropy rocks".to_vec() })); + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call)); assert_eq!(FreeTx::cells_usable_this_era(&1u64), 4 as Cells); // start a new era @@ -174,8 +188,9 @@ fn one_time_cells_are_consumed_and_not_recharged() { assert_eq!(FreeTx::cells_usable_this_era(&1u64), 5 as Cells); // make a call that works, check call is used - let call = Box::new(Call::System(SystemCall::remark { remark: b"entropy rocks".to_vec() })); - assert_ok!(FreeTx::call_using_electricity(Origin::signed(1), call)); + let call = + Box::new(RuntimeCall::System(SystemCall::remark { remark: b"entropy rocks".to_vec() })); + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call)); assert_eq!(FreeTx::cells_usable_this_era(&1u64), 4 as Cells); // start a new era @@ -195,14 +210,18 @@ fn user_has_no_free_cells_by_default() { assert_eq!(FreeTx::cells_usable_this_era(&1u64), 0 as Cells); // make sure it fails bc cells are disabled - let call = - Box::new(Call::System(SystemCall::remark { remark: b"entropy rocks2".to_vec() })); + let call = Box::new(RuntimeCall::System(SystemCall::remark { + remark: b"entropy rocks2".to_vec(), + })); let expected_error = DispatchError::Module(ModuleError { index: 8, error: [1, 0, 0, 0], message: Some("NoCellsAvailable"), }); - assert_noop!(FreeTx::call_using_electricity(Origin::signed(1), call), expected_error); + assert_noop!( + FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call), + expected_error + ); }); } @@ -224,13 +243,14 @@ fn set_individual_electricity_era_limit_works() { assert_eq!(FreeTx::cells_usable_this_era(&1u64), 3 as Cells); // disable electricity - FreeTx::set_individual_electricity_era_limit(Origin::signed(1), Some(0)).unwrap(); + FreeTx::set_individual_electricity_era_limit(RuntimeOrigin::signed(1), Some(0)).unwrap(); // make sure call fails bc electricity is disabled - let call = - Box::new(Call::System(SystemCall::remark { remark: b"entropy rocks2".to_vec() })); + let call = Box::new(RuntimeCall::System(SystemCall::remark { + remark: b"entropy rocks2".to_vec(), + })); assert_noop!( - FreeTx::call_using_electricity(Origin::signed(1), call.clone()), + FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call.clone()), DispatchError::Module(ModuleError { index: 8, error: [0, 0, 0, 0], @@ -239,14 +259,14 @@ fn set_individual_electricity_era_limit_works() { ); // enable electricity usage at 2 cells per user - FreeTx::set_individual_electricity_era_limit(Origin::signed(1), Some(2)).unwrap(); + FreeTx::set_individual_electricity_era_limit(RuntimeOrigin::signed(1), Some(2)).unwrap(); assert_eq!(FreeTx::cells_usable_this_era(&1u64), 2 as Cells); // have user use two cells, then make sure they get an error - assert_ok!(FreeTx::call_using_electricity(Origin::signed(1), call.clone())); - assert_ok!(FreeTx::call_using_electricity(Origin::signed(1), call.clone())); + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call.clone())); + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call.clone())); assert_noop!( - FreeTx::call_using_electricity(Origin::signed(1), call.clone()), + FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call), DispatchError::Module(ModuleError { index: 8, error: [2, 0, 0, 0], @@ -282,10 +302,11 @@ fn zaps_arent_used_until_all_batteries_are_used() { assert_eq!(FreeTx::cells_usable_this_era(&1u64), 7 as Cells); // use two cells - let call = - Box::new(Call::System(SystemCall::remark { remark: b"entropy rocks2".to_vec() })); - assert_ok!(FreeTx::call_using_electricity(Origin::signed(1), call.clone())); - assert_ok!(FreeTx::call_using_electricity(Origin::signed(1), call.clone())); + let call = Box::new(RuntimeCall::System(SystemCall::remark { + remark: b"entropy rocks2".to_vec(), + })); + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call.clone())); + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call.clone())); // make sure user hasn't used any zaps let mut expected_balance = ElectricalPanel { @@ -296,7 +317,7 @@ fn zaps_arent_used_until_all_batteries_are_used() { assert_eq!(ElectricalAccount::::get(1).unwrap(), expected_balance); // doing another call will though: - assert_ok!(FreeTx::call_using_electricity(Origin::signed(1), call.clone())); + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call)); expected_balance.zaps -= 1; expected_balance.used.count += 1; assert_eq!(ElectricalAccount::::get(1).unwrap(), expected_balance); @@ -307,8 +328,9 @@ fn zaps_arent_used_until_all_batteries_are_used() { #[test] fn users_with_no_cells_get_errors() { ExtBuilder::default().build_and_execute(|| { - let call = - Box::new(Call::System(SystemCall::remark { remark: b"entropy rocks2".to_vec() })); + let call = Box::new(RuntimeCall::System(SystemCall::remark { + remark: b"entropy rocks2".to_vec(), + })); let no_cells_available_error = DispatchError::Module(ModuleError { index: 8, error: [1, 0, 0, 0], @@ -318,18 +340,18 @@ fn users_with_no_cells_get_errors() { // users by default have no electricity assert_eq!(FreeTx::cells_usable_this_era(&1u64), 0 as Cells); assert_noop!( - FreeTx::call_using_electricity(Origin::signed(1), call.clone()), + FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call.clone()), no_cells_available_error ); // give user one zap - FreeTx::give_zaps(Origin::signed(1), 1, 1).unwrap(); + FreeTx::give_zaps(RuntimeOrigin::signed(1), 1, 1).unwrap(); // make sure after a user uses all their cells, they get an error assert_eq!(FreeTx::cells_usable_this_era(&1u64), 1 as Cells); - assert_ok!(FreeTx::call_using_electricity(Origin::signed(1), call.clone())); + assert_ok!(FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call.clone())); assert_noop!( - FreeTx::call_using_electricity(Origin::signed(1), call.clone()), + FreeTx::call_using_electricity(RuntimeOrigin::signed(1), call), no_cells_available_error ); }); diff --git a/pallets/free-tx/src/weights.rs b/pallets/free-tx/src/weights.rs index 4437b0265..51ace9b6b 100644 --- a/pallets/free-tx/src/weights.rs +++ b/pallets/free-tx/src/weights.rs @@ -43,27 +43,27 @@ pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { // Storage: FreeTx FreeCallsLeft (r:1 w:1) fn call_using_electricity() -> Weight { - (14_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(14_000_000_u64) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } fn set_individual_electricity_era_limit() -> Weight { - (14_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(14_000_000_u64) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } fn set_battery_count() -> Weight { - (14_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(14_000_000_u64) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } fn give_zaps() -> Weight { - (14_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(14_000_000_u64) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } } @@ -73,26 +73,26 @@ impl WeightInfo for SubstrateWeight { impl WeightInfo for () { // Storage: FreeTx FreeCallsLeft (r:1 w:1) fn call_using_electricity() -> Weight { - (14_000_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(14_000_000_u64) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) } fn set_individual_electricity_era_limit() -> Weight { - (14_000_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(14_000_000_u64) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) } fn set_battery_count() -> Weight { - (14_000_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(14_000_000_u64) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) } fn give_zaps() -> Weight { - (14_000_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(14_000_000_u64) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) } } \ No newline at end of file diff --git a/pallets/propagation/Cargo.toml b/pallets/propagation/Cargo.toml index 9f74f1082..0157592b4 100644 --- a/pallets/propagation/Cargo.toml +++ b/pallets/propagation/Cargo.toml @@ -22,51 +22,51 @@ version ='3.0.0' [dependencies.frame-benchmarking] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" optional =true version ='4.0.0-dev' [dependencies.frame-support] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='4.0.0-dev' [dependencies.frame-system] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='4.0.0-dev' [dependencies] -pallet-authorship ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +pallet-authorship ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } pallet-relayer ={ version="3.0.0", default-features=false, path="../relayer" } pallet-staking-extension={ version="3.0.0", default-features=false, path="../staking" } scale-info={ version="2.0.1", default-features=false, features=["derive"] } log ={ version="0.4.0", default-features=false } -sp-staking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-io ={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="master" } +sp-staking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-io ={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } lite-json ={ version="0.1", default-features=false } -sp-runtime={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="master" } -sp-core ={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="master" } +sp-runtime={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } +sp-core ={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } # non-substrate-common ={ path="../../crypto/non-substrate-common", default-features=false } substrate-common ={ path="../../crypto/substrate-common", default-features=false } -sp-application-crypto={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +sp-application-crypto={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } [dev-dependencies] -sp-keystore ={ version="0.12.0", git="https://github.com/paritytech/substrate", branch="master" } +sp-keystore ={ version="0.12.0", git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } parking_lot ="0.11.2" -pallet-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-timestamp ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-balances ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-staking-reward-curve ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-babe ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-bags-list ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +pallet-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-timestamp ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-balances ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-staking-reward-curve ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-babe ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-bags-list ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } [features] default=['std'] diff --git a/pallets/propagation/src/lib.rs b/pallets/propagation/src/lib.rs index 036e1284b..00ea043c7 100644 --- a/pallets/propagation/src/lib.rs +++ b/pallets/propagation/src/lib.rs @@ -31,7 +31,7 @@ pub mod pallet { pub trait Config: frame_system::Config + pallet_authorship::Config + pallet_relayer::Config { - type Event: From> + IsType<::Event>; + type RuntimeEvent: From> + IsType<::RuntimeEvent>; } pub type Message = substrate_common::Message; diff --git a/pallets/propagation/src/mock.rs b/pallets/propagation/src/mock.rs index 944e9cbbe..c832729f6 100644 --- a/pallets/propagation/src/mock.rs +++ b/pallets/propagation/src/mock.rs @@ -58,9 +58,7 @@ impl system::Config for Test { type BlockLength = (); type BlockNumber = u64; type BlockWeights = (); - type Call = Call; type DbWeight = (); - type Event = Event; type Hash = H256; type Hashing = BlakeTwo256; type Header = Header; @@ -70,8 +68,10 @@ impl system::Config for Test { type OnKilledAccount = (); type OnNewAccount = (); type OnSetCode = (); - type Origin = Origin; type PalletInfo = PalletInfo; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; type SS58Prefix = SS58Prefix; type SystemWeightInfo = (); type Version = (); @@ -96,11 +96,11 @@ impl pallet_balances::Config for Test { type AccountStore = System; type Balance = Balance; type DustRemoval = (); - type Event = Event; type ExistentialDeposit = ExistentialDeposit; type MaxLocks = MaxLocks; type MaxReserves = (); type ReserveIdentifier = [u8; 8]; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -141,10 +141,11 @@ sp_runtime::impl_opaque_keys! { } pub struct OnChainSeqPhragmen; -impl onchain::ExecutionConfig for OnChainSeqPhragmen { +impl onchain::Config for OnChainSeqPhragmen { type DataProvider = FrameStaking; type Solver = SequentialPhragmen; type System = Test; + type WeightInfo = (); } pallet_staking_reward_curve::build! { @@ -166,10 +167,10 @@ parameter_types! { } impl frame_system::offchain::SendTransactionTypes for Test -where Call: From +where RuntimeCall: From { - type Extrinsic = TestXt; - type OverarchingCall = Call; + type Extrinsic = TestXt; + type OverarchingCall = RuntimeCall; } const THRESHOLDS: [sp_npos_elections::VoteWeight; 9] = @@ -181,7 +182,7 @@ parameter_types! { impl pallet_bags_list::Config for Test { type BagThresholds = BagThresholds; - type Event = Event; + type RuntimeEvent = RuntimeEvent; type Score = VoteWeight; type ScoreProvider = FrameStaking; type WeightInfo = (); @@ -208,32 +209,36 @@ impl pallet_staking::Config for Test { type BenchmarkingConfig = StakingBenchmarkingConfig; type BondingDuration = BondingDuration; type Currency = Balances; + type CurrencyBalance = Balance; type CurrencyToVote = frame_support::traits::SaturatingCurrencyToVote; type ElectionProvider = onchain::UnboundedExecution; type EraPayout = pallet_staking::ConvertCurve; - type Event = Event; type GenesisElectionProvider = Self::ElectionProvider; + type HistoryDepth = ConstU32<84>; type MaxNominations = MaxNominations; type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; type MaxUnlockingChunks = ConstU32<32>; type NextNewSession = Session; type OffendingValidatorsThreshold = OffendingValidatorsThreshold; + type OnStakerSlash = (); type Reward = (); type RewardRemainder = (); + type RuntimeEvent = RuntimeEvent; type SessionInterface = Self; type SessionsPerEra = SessionsPerEra; type Slash = (); type SlashCancelOrigin = frame_system::EnsureRoot; type SlashDeferDuration = SlashDeferDuration; + type TargetList = pallet_staking::UseValidatorsMap; type UnixTime = pallet_timestamp::Pallet; type VoterList = BagsList; type WeightInfo = (); } impl pallet_session::Config for Test { - type Event = Event; type Keys = UintAuthorityId; type NextSessionRotation = pallet_session::PeriodicSessions; + type RuntimeEvent = RuntimeEvent; type SessionHandler = (OtherSessionHandler,); type SessionManager = pallet_session::historical::NoteHistoricalRoot; type ShouldEndSession = pallet_session::PeriodicSessions; @@ -252,8 +257,8 @@ parameter_types! { } impl pallet_staking_extension::Config for Test { type Currency = Balances; - type Event = Event; type MaxEndpointLength = MaxEndpointLength; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -283,14 +288,14 @@ parameter_types! { } impl pallet_relayer::Config for Test { - type Event = Event; type PruneBlock = PruneBlock; + type RuntimeEvent = RuntimeEvent; type SigningPartySize = SigningPartySize; type WeightInfo = (); } impl pallet_propagation::Config for Test { - type Event = Event; + type RuntimeEvent = RuntimeEvent; } // Build genesis storage according to the mock runtime. diff --git a/pallets/propagation/src/tests.rs b/pallets/propagation/src/tests.rs index bba84e2e8..090a77703 100644 --- a/pallets/propagation/src/tests.rs +++ b/pallets/propagation/src/tests.rs @@ -48,8 +48,8 @@ fn knows_how_to_mock_several_http_calls() { System::set_block_number(3); let sig_request = SigRequest { sig_hash: SIG_HASH.to_vec() }; - assert_ok!(Relayer::prep_transaction(Origin::signed(1), sig_request.clone())); - assert_ok!(Relayer::prep_transaction(Origin::signed(1), sig_request)); + assert_ok!(Relayer::prep_transaction(RuntimeOrigin::signed(1), sig_request.clone())); + assert_ok!(Relayer::prep_transaction(RuntimeOrigin::signed(1), sig_request)); // full send Propagation::post(4).unwrap(); }) diff --git a/pallets/relayer/Cargo.toml b/pallets/relayer/Cargo.toml index 760e5c17a..f492e7271 100644 --- a/pallets/relayer/Cargo.toml +++ b/pallets/relayer/Cargo.toml @@ -21,20 +21,20 @@ version ='3.0.0' [dependencies.frame-benchmarking] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" optional =true version ='4.0.0-dev' [dependencies.frame-support] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='4.0.0-dev' [dependencies.frame-system] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='4.0.0-dev' [dependencies.scale-info] @@ -45,24 +45,24 @@ version ='2.0.1' [dev-dependencies.sp-core] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='6.0.0' [dev-dependencies.sp-io] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='6.0.0' [dependencies.sp-runtime] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='6.0.0' [dependencies] -sp-std ={ package="sp-std", git="https://github.com/paritytech/substrate", branch="master", default-features=false } -pallet-authorship ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +sp-std ={ package="sp-std", git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } +pallet-authorship ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } log ={ version="0.4.0", default-features=false } pallet-slashing ={ version="3.0.0", default-features=false, path="../slashing" } pallet-staking-extension={ version="3.0.0", default-features=false, path="../staking" } @@ -71,15 +71,15 @@ substrate-common={ path="../../crypto/substrate-common", default-features=false helpers ={ path="../helpers", default-features=false } [dev-dependencies] -pallet-balances ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-timestamp ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-bags-list ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-staking-reward-curve ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +pallet-balances ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-timestamp ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-bags-list ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-staking-reward-curve ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } [features] default=['std'] diff --git a/pallets/relayer/src/benchmarking.rs b/pallets/relayer/src/benchmarking.rs index 730a78911..6d16e8509 100644 --- a/pallets/relayer/src/benchmarking.rs +++ b/pallets/relayer/src/benchmarking.rs @@ -11,9 +11,9 @@ use crate::Pallet as Relayer; const SIG_HASH: &[u8; 64] = b"d188f0d99145e7ddbd0f1e46e7fd406db927441584571c623aff1d1652e14b06"; -fn assert_last_event(generic_event: ::Event) { +fn assert_last_event(generic_event: ::RuntimeEvent) { let events = frame_system::Pallet::::events(); - let system_event: ::Event = generic_event.into(); + let system_event: ::RuntimeEvent = generic_event.into(); // compare to the last event record let EventRecord { event, .. } = &events[events.len() - 1]; assert_eq!(event, &system_event); @@ -40,7 +40,7 @@ benchmarks! { }: _(RawOrigin::Signed(caller.clone()), sig_request) verify { - assert_last_event::(Event::TransactionPropagated(caller).into()); + assert_last_event::(Event::::TransactionPropagated(caller).into()); } register { diff --git a/pallets/relayer/src/lib.rs b/pallets/relayer/src/lib.rs index 1e02419ff..9ac5b29ab 100644 --- a/pallets/relayer/src/lib.rs +++ b/pallets/relayer/src/lib.rs @@ -30,8 +30,10 @@ pub mod weights; #[frame_support::pallet] pub mod pallet { use frame_support::{ - dispatch::DispatchResult, inherent::Vec, pallet_prelude::*, traits::IsSubType, - weights::Pays, + dispatch::{DispatchResult, Pays}, + inherent::Vec, + pallet_prelude::*, + traits::IsSubType, }; use frame_system::pallet_prelude::*; use helpers::unwrap_or_return; @@ -50,7 +52,7 @@ pub mod pallet { frame_system::Config + pallet_authorship::Config + pallet_staking_extension::Config { /// Because this pallet emits events, it depends on the runtime's definition of an event. - type Event: From> + IsType<::Event>; + type RuntimeEvent: From> + IsType<::RuntimeEvent>; type PruneBlock: Get; type SigningPartySize: Get; /// The weight information of this pallet. @@ -80,9 +82,9 @@ pub mod pallet { ); Self::note_responsibility(block_number); if is_prune_failures { - ::WeightInfo::move_active_to_pending_failure(messages.len() as u32) + ::WeightInfo::move_active_to_pending_failure(messages.len() as u64) } else { - ::WeightInfo::move_active_to_pending_no_failure(messages.len() as u32) + ::WeightInfo::move_active_to_pending_no_failure(messages.len() as u64) } } } @@ -194,7 +196,7 @@ pub mod pallet { // TODO(Jake): This is an insecure way to do a free transaction. // secure it, please. :) - #[pallet::weight((10_000 + T::DbWeight::get().writes(1), Pays::No))] + #[pallet::weight((T::DbWeight::get().writes(1), Pays::No))] pub fn confirm_register( origin: OriginFor, registerer: T::AccountId, @@ -226,7 +228,7 @@ pub mod pallet { /// Allows a node to signal they have completed a signing batch /// `block_number`: block number for signing batch /// `failure`: index of any failures in all sig request arrays - #[pallet::weight((10_000 + T::DbWeight::get().writes(1), Pays::No))] + #[pallet::weight((T::DbWeight::get().writes(1), Pays::No))] pub fn confirm_done( origin: OriginFor, block_number: T::BlockNumber, @@ -312,10 +314,10 @@ pub mod pallet { #[derive(Encode, Decode, Clone, Eq, PartialEq, TypeInfo)] #[scale_info(skip_type_params(T))] pub struct PrevalidateRelayer(sp_std::marker::PhantomData) - where ::Call: IsSubType>; + where ::RuntimeCall: IsSubType>; impl Debug for PrevalidateRelayer - where ::Call: IsSubType> + where ::RuntimeCall: IsSubType> { #[cfg(feature = "std")] fn fmt(&self, f: &mut sp_std::fmt::Formatter) -> sp_std::fmt::Result { @@ -327,18 +329,18 @@ pub mod pallet { } impl PrevalidateRelayer - where ::Call: IsSubType> + where ::RuntimeCall: IsSubType> { /// Create new `SignedExtension` to check runtime version. pub fn new() -> Self { Self(sp_std::marker::PhantomData) } } impl SignedExtension for PrevalidateRelayer - where ::Call: IsSubType> + where ::RuntimeCall: IsSubType> { type AccountId = T::AccountId; type AdditionalSigned = (); - type Call = ::Call; + type Call = ::RuntimeCall; type Pre = (); const IDENTIFIER: &'static str = "PrevalidateRelayer"; diff --git a/pallets/relayer/src/mock.rs b/pallets/relayer/src/mock.rs index e2ed54562..eb93fc798 100644 --- a/pallets/relayer/src/mock.rs +++ b/pallets/relayer/src/mock.rs @@ -56,9 +56,7 @@ impl system::Config for Test { type BlockLength = (); type BlockNumber = u64; type BlockWeights = (); - type Call = Call; type DbWeight = (); - type Event = Event; type Hash = H256; type Hashing = BlakeTwo256; type Header = Header; @@ -68,8 +66,10 @@ impl system::Config for Test { type OnKilledAccount = (); type OnNewAccount = (); type OnSetCode = (); - type Origin = Origin; type PalletInfo = PalletInfo; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; type SS58Prefix = SS58Prefix; type SystemWeightInfo = (); type Version = (); @@ -94,11 +94,11 @@ impl pallet_balances::Config for Test { type AccountStore = System; type Balance = Balance; type DustRemoval = (); - type Event = Event; type ExistentialDeposit = ExistentialDeposit; type MaxLocks = MaxLocks; type MaxReserves = (); type ReserveIdentifier = [u8; 8]; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -139,10 +139,11 @@ sp_runtime::impl_opaque_keys! { } pub struct OnChainSeqPhragmen; -impl onchain::ExecutionConfig for OnChainSeqPhragmen { +impl onchain::Config for OnChainSeqPhragmen { type DataProvider = FrameStaking; type Solver = SequentialPhragmen; type System = Test; + type WeightInfo = (); } pallet_staking_reward_curve::build! { @@ -164,10 +165,10 @@ parameter_types! { } impl frame_system::offchain::SendTransactionTypes for Test -where Call: From +where RuntimeCall: From { - type Extrinsic = TestXt; - type OverarchingCall = Call; + type Extrinsic = TestXt; + type OverarchingCall = RuntimeCall; } const THRESHOLDS: [sp_npos_elections::VoteWeight; 9] = @@ -179,7 +180,7 @@ parameter_types! { impl pallet_bags_list::Config for Test { type BagThresholds = BagThresholds; - type Event = Event; + type RuntimeEvent = RuntimeEvent; type Score = VoteWeight; type ScoreProvider = FrameStaking; type WeightInfo = (); @@ -206,32 +207,36 @@ impl pallet_staking::Config for Test { type BenchmarkingConfig = StakingBenchmarkingConfig; type BondingDuration = BondingDuration; type Currency = Balances; + type CurrencyBalance = Balance; type CurrencyToVote = frame_support::traits::SaturatingCurrencyToVote; type ElectionProvider = onchain::UnboundedExecution; type EraPayout = pallet_staking::ConvertCurve; - type Event = Event; type GenesisElectionProvider = Self::ElectionProvider; + type HistoryDepth = ConstU32<84>; type MaxNominations = MaxNominations; type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; type MaxUnlockingChunks = ConstU32<32>; type NextNewSession = Session; type OffendingValidatorsThreshold = OffendingValidatorsThreshold; + type OnStakerSlash = (); type Reward = (); type RewardRemainder = (); + type RuntimeEvent = RuntimeEvent; type SessionInterface = Self; type SessionsPerEra = SessionsPerEra; type Slash = (); type SlashCancelOrigin = frame_system::EnsureRoot; type SlashDeferDuration = SlashDeferDuration; + type TargetList = pallet_staking::UseValidatorsMap; type UnixTime = pallet_timestamp::Pallet; type VoterList = BagsList; type WeightInfo = (); } impl pallet_session::Config for Test { - type Event = Event; type Keys = UintAuthorityId; type NextSessionRotation = pallet_session::PeriodicSessions; + type RuntimeEvent = RuntimeEvent; type SessionHandler = (OtherSessionHandler,); type SessionManager = pallet_session::historical::NoteHistoricalRoot; type ShouldEndSession = pallet_session::PeriodicSessions; @@ -250,8 +255,8 @@ parameter_types! { } impl pallet_staking_extension::Config for Test { type Currency = Balances; - type Event = Event; type MaxEndpointLength = MaxEndpointLength; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -281,8 +286,8 @@ parameter_types! { } impl pallet_relayer::Config for Test { - type Event = Event; type PruneBlock = PruneBlock; + type RuntimeEvent = RuntimeEvent; type SigningPartySize = SigningPartySize; type WeightInfo = (); } diff --git a/pallets/relayer/src/tests.rs b/pallets/relayer/src/tests.rs index 5b0ebd12c..090382948 100644 --- a/pallets/relayer/src/tests.rs +++ b/pallets/relayer/src/tests.rs @@ -1,7 +1,7 @@ use frame_support::{ assert_noop, assert_ok, + dispatch::{GetDispatchInfo, Pays}, traits::OnInitialize, - weights::{GetDispatchInfo, Pays}, }; use pallet_relayer::Call as RelayerCall; use sp_runtime::{ @@ -27,7 +27,7 @@ fn it_preps_transaction() { ip_addresses, }; - assert_ok!(Relayer::prep_transaction(Origin::signed(1), sig_request)); + assert_ok!(Relayer::prep_transaction(RuntimeOrigin::signed(1), sig_request)); assert_eq!(Relayer::messages(0), vec![message]); }); @@ -36,7 +36,7 @@ fn it_preps_transaction() { #[test] fn it_registers_a_user() { new_test_ext().execute_with(|| { - assert_ok!(Relayer::register(Origin::signed(1))); + assert_ok!(Relayer::register(RuntimeOrigin::signed(1))); assert!(Relayer::registering(1).unwrap().is_registering); }); @@ -46,28 +46,28 @@ fn it_registers_a_user() { fn it_confirms_registers_a_user() { new_test_ext().execute_with(|| { assert_noop!( - Relayer::confirm_register(Origin::signed(1), 1, 0), + Relayer::confirm_register(RuntimeOrigin::signed(1), 1, 0), Error::::NotRegistering ); - assert_ok!(Relayer::register(Origin::signed(1))); + assert_ok!(Relayer::register(RuntimeOrigin::signed(1))); assert_noop!( - Relayer::confirm_register(Origin::signed(1), 1, 3), + Relayer::confirm_register(RuntimeOrigin::signed(1), 1, 3), Error::::InvalidSubgroup ); assert_noop!( - Relayer::confirm_register(Origin::signed(2), 1, 0), + Relayer::confirm_register(RuntimeOrigin::signed(2), 1, 0), Error::::NotInSigningGroup ); assert_eq!(Relayer::registered(1), None); - assert_ok!(Relayer::confirm_register(Origin::signed(1), 1, 0)); + assert_ok!(Relayer::confirm_register(RuntimeOrigin::signed(1), 1, 0)); assert_noop!( - Relayer::confirm_register(Origin::signed(1), 1, 0), + Relayer::confirm_register(RuntimeOrigin::signed(1), 1, 0), Error::::AlreadyConfirmed ); @@ -75,7 +75,7 @@ fn it_confirms_registers_a_user() { assert_eq!(Relayer::registering(1), Some(registering_info)); - assert_ok!(Relayer::confirm_register(Origin::signed(2), 1, 1)); + assert_ok!(Relayer::confirm_register(RuntimeOrigin::signed(2), 1, 1)); assert_eq!(Relayer::registering(1), None); assert!(Relayer::registered(1).unwrap()); @@ -89,25 +89,25 @@ fn it_confirms_done() { let failures = vec![0u32, 3u32]; pallet_staking_extension::ThresholdAccounts::::insert(2, (1, NULL_ARR)); - assert_ok!(Relayer::confirm_done(Origin::signed(1), 5, failures.clone())); + assert_ok!(Relayer::confirm_done(RuntimeOrigin::signed(1), 5, failures.clone())); assert_eq!(Relayer::failures(5), Some(failures.clone())); assert_noop!( - Relayer::confirm_done(Origin::signed(1), 5, failures.clone()), + Relayer::confirm_done(RuntimeOrigin::signed(1), 5, failures.clone()), Error::::AlreadySubmitted ); assert_noop!( - Relayer::confirm_done(Origin::signed(1), 6, failures.clone()), + Relayer::confirm_done(RuntimeOrigin::signed(1), 6, failures.clone()), Error::::NoResponsibility ); Responsibility::::insert(6, 3); assert_noop!( - Relayer::confirm_done(Origin::signed(2), 6, failures.clone()), + Relayer::confirm_done(RuntimeOrigin::signed(2), 6, failures.clone()), Error::::NoThresholdKey ); pallet_staking_extension::ThresholdAccounts::::insert(2, (5, NULL_ARR)); assert_noop!( - Relayer::confirm_done(Origin::signed(2), 5, failures), + Relayer::confirm_done(RuntimeOrigin::signed(2), 5, failures), Error::::NotYourResponsibility ); }); @@ -133,7 +133,7 @@ fn moves_active_to_pending() { ip_addresses, }; - assert_ok!(Relayer::prep_transaction(Origin::signed(1), sig_request)); + assert_ok!(Relayer::prep_transaction(RuntimeOrigin::signed(1), sig_request)); assert_eq!(Relayer::messages(3), vec![message.clone()]); // prunes old failure remove messages put into pending @@ -165,14 +165,14 @@ fn notes_responsibility() { #[test] fn it_provides_free_txs_prep_tx() { new_test_ext().execute_with(|| { - assert_ok!(Relayer::register(Origin::signed(1))); - assert_ok!(Relayer::confirm_register(Origin::signed(1), 1, 0)); - assert_ok!(Relayer::confirm_register(Origin::signed(2), 1, 1)); + assert_ok!(Relayer::register(RuntimeOrigin::signed(1))); + assert_ok!(Relayer::confirm_register(RuntimeOrigin::signed(1), 1, 0)); + assert_ok!(Relayer::confirm_register(RuntimeOrigin::signed(2), 1, 1)); let p = PrevalidateRelayer::::new(); let sig_request = SigRequest { sig_hash: SIG_HASH.to_vec() }; + let c = RuntimeCall::Relayer(RelayerCall::prep_transaction { sig_request }); - let c = Call::Relayer(RelayerCall::prep_transaction { sig_request }); let di = c.get_dispatch_info(); assert_eq!(di.pays_fee, Pays::No); let r = p.validate(&1, &c, &di, 20); @@ -185,8 +185,8 @@ fn it_fails_a_free_tx_prep_tx() { new_test_ext().execute_with(|| { let p = PrevalidateRelayer::::new(); let sig_request = SigRequest { sig_hash: SIG_HASH.to_vec() }; + let c = RuntimeCall::Relayer(RelayerCall::prep_transaction { sig_request }); - let c = Call::Relayer(RelayerCall::prep_transaction { sig_request }); let di = c.get_dispatch_info(); let r = p.validate(&42, &c, &di, 20); assert!(r.is_err()); @@ -199,7 +199,8 @@ fn it_provides_free_txs_confirm_done() { Responsibility::::insert(5, 1); pallet_staking_extension::ThresholdAccounts::::insert(1, (2, NULL_ARR)); let p = PrevalidateRelayer::::new(); - let c = Call::Relayer(RelayerCall::confirm_done { block_number: 5, failures: vec![] }); + let c = + RuntimeCall::Relayer(RelayerCall::confirm_done { block_number: 5, failures: vec![] }); let di = c.get_dispatch_info(); assert_eq!(di.pays_fee, Pays::No); let r = p.validate(&2, &c, &di, 20); @@ -214,7 +215,7 @@ fn it_fails_a_free_tx_confirm_done_err_1() { let sig_request = SigRequest { sig_hash: SIG_HASH.to_vec() }; let p = PrevalidateRelayer::::new(); - let c = Call::Relayer(RelayerCall::prep_transaction { sig_request }); + let c = RuntimeCall::Relayer(RelayerCall::prep_transaction { sig_request }); let di = c.get_dispatch_info(); let r = p.validate(&1, &c, &di, 20); r.unwrap() @@ -226,7 +227,8 @@ fn it_fails_a_free_tx_confirm_done_err_1() { fn it_fails_a_free_tx_confirm_done_err_2() { new_test_ext().execute_with(|| { let p = PrevalidateRelayer::::new(); - let c = Call::Relayer(RelayerCall::confirm_done { block_number: 5, failures: vec![] }); + let c = + RuntimeCall::Relayer(RelayerCall::confirm_done { block_number: 5, failures: vec![] }); let di = c.get_dispatch_info(); let r = p.validate(&1, &c, &di, 20); r.unwrap() @@ -239,7 +241,8 @@ fn it_fails_a_free_tx_confirm_done_err_3() { new_test_ext().execute_with(|| { Responsibility::::insert(5, 1); let p = PrevalidateRelayer::::new(); - let c = Call::Relayer(RelayerCall::confirm_done { block_number: 5, failures: vec![] }); + let c = + RuntimeCall::Relayer(RelayerCall::confirm_done { block_number: 5, failures: vec![] }); let di = c.get_dispatch_info(); let r = p.validate(&42, &c, &di, 20); r.unwrap() @@ -254,7 +257,8 @@ fn it_fails_a_free_tx_confirm_done_err_4() { pallet_staking_extension::ThresholdAccounts::::insert(1, (2, NULL_ARR)); Failures::::insert(5, vec![1]); let p = PrevalidateRelayer::::new(); - let c = Call::Relayer(RelayerCall::confirm_done { block_number: 5, failures: vec![] }); + let c = + RuntimeCall::Relayer(RelayerCall::confirm_done { block_number: 5, failures: vec![] }); let di = c.get_dispatch_info(); let r = p.validate(&1, &c, &di, 20); r.unwrap() @@ -269,7 +273,8 @@ fn it_fails_a_free_tx_confirm_done_err_5() { pallet_staking_extension::ThresholdAccounts::::insert(1, (2, NULL_ARR)); Failures::::insert(5, vec![1]); let p = PrevalidateRelayer::::new(); - let c = Call::Relayer(RelayerCall::confirm_done { block_number: 5, failures: vec![] }); + let c = + RuntimeCall::Relayer(RelayerCall::confirm_done { block_number: 5, failures: vec![] }); let di = c.get_dispatch_info(); let r = p.validate(&2, &c, &di, 20); r.unwrap() diff --git a/pallets/relayer/src/weights.rs b/pallets/relayer/src/weights.rs index 4d6024ba1..f2432e5c0 100644 --- a/pallets/relayer/src/weights.rs +++ b/pallets/relayer/src/weights.rs @@ -11,65 +11,65 @@ use sp_std::marker::PhantomData; pub trait WeightInfo { fn prep_transaction() -> Weight; fn register() -> Weight; - fn move_active_to_pending_failure(m: u32) -> Weight; - fn move_active_to_pending_no_failure(m: u32) -> Weight; + fn move_active_to_pending_failure(m: u64) -> Weight; + fn move_active_to_pending_no_failure(m: u64) -> Weight; } /// Weights for pallet_realyer using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { fn prep_transaction() -> Weight { - (33_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(33_000_000_u64) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } fn register() -> Weight { - (23_000_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(23_000_000_u64).saturating_add(T::DbWeight::get().writes(1_u64)) } - fn move_active_to_pending_no_failure(m: u32) -> Weight { - (38_655_000 as Weight) + fn move_active_to_pending_no_failure(m: u64) -> Weight { + Weight::from_ref_time(38_655_000_u64) // Standard Error: 71_000 - .saturating_add((531_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(Weight::from_ref_time(531_000_u64).saturating_mul(m)) + .saturating_add(T::DbWeight::get().reads(6_u64)) + .saturating_add(T::DbWeight::get().writes(3_u64)) } - fn move_active_to_pending_failure(m: u32) -> Weight { - (31_350_000 as Weight) + fn move_active_to_pending_failure(m: u64) -> Weight { + Weight::from_ref_time(31_350_000_u64) // Standard Error: 55_000 - .saturating_add((1_143_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(Weight::from_ref_time(1_143_000_u64).saturating_mul(m)) + .saturating_add(T::DbWeight::get().reads(6_u64)) + .saturating_add(T::DbWeight::get().writes(3_u64)) } } // For backwards compatibility and tests impl WeightInfo for () { fn prep_transaction() -> Weight { - (33_000_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(33_000_000_u64) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) } fn register() -> Weight { - (23_000_000 as Weight).saturating_add(RocksDbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(23_000_000_u64).saturating_add(RocksDbWeight::get().writes(1_u64)) } - fn move_active_to_pending_no_failure(m: u32) -> Weight { - (38_655_000 as Weight) + fn move_active_to_pending_no_failure(m: u64) -> Weight { + Weight::from_ref_time(38_655_000_u64) // Standard Error: 71_000 - .saturating_add((531_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(RocksDbWeight::get().reads(6 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + .saturating_add(Weight::from_ref_time(531_000_u64).saturating_mul(m)) + .saturating_add(RocksDbWeight::get().reads(6_u64)) + .saturating_add(RocksDbWeight::get().writes(3_u64)) } - fn move_active_to_pending_failure(m: u32) -> Weight { - (31_350_000 as Weight) + fn move_active_to_pending_failure(m: u64) -> Weight { + Weight::from_ref_time(31_350_000_u64) // Standard Error: 55_000 - .saturating_add((1_143_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(RocksDbWeight::get().reads(6 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + .saturating_add(Weight::from_ref_time(1_143_000_u64).saturating_mul(m)) + .saturating_add(RocksDbWeight::get().reads(6_u64)) + .saturating_add(RocksDbWeight::get().writes(3_u64)) } } diff --git a/pallets/slashing/Cargo.toml b/pallets/slashing/Cargo.toml index eb3228b78..767361783 100644 --- a/pallets/slashing/Cargo.toml +++ b/pallets/slashing/Cargo.toml @@ -16,7 +16,7 @@ targets=['x86_64-unknown-linux-gnu'] [dev-dependencies.sp-core] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='6.0.0' [dependencies.codec] @@ -28,40 +28,40 @@ version ='3.0.0' [dependencies.frame-benchmarking] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" optional =true version ='4.0.0-dev' [dependencies.frame-support] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='4.0.0-dev' [dependencies.frame-system] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ='4.0.0-dev' [dependencies] scale-info ={ version="2.0.1", default-features=false, features=["derive"] } log ={ version="0.4.0", default-features=false } -sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-io ={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="master" } +sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-io ={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } lite-json ={ version="0.1", default-features=false } -sp-runtime ={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="master" } -sp-application-crypto={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="master" } +sp-runtime ={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } +sp-application-crypto={ version="6.0.0", default-features=false, git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } [dev-dependencies] -pallet-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-staking-reward-curve ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-timestamp ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-balances ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-bags-list ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +pallet-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-staking-reward-curve ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-timestamp ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-balances ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-bags-list ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } [features] default=['std'] diff --git a/pallets/slashing/src/lib.rs b/pallets/slashing/src/lib.rs index bd4d155df..784918334 100644 --- a/pallets/slashing/src/lib.rs +++ b/pallets/slashing/src/lib.rs @@ -36,7 +36,7 @@ pub mod pallet { #[pallet::config] pub trait Config: frame_system::Config { - type Event: From> + IsType<::Event>; + type RuntimeEvent: From> + IsType<::RuntimeEvent>; type AuthorityId: Member + Parameter + RuntimeAppPublic @@ -87,7 +87,7 @@ pub mod pallet { #[pallet::call] impl Pallet { /// An example dispatchable that may throw a custom error. - #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))] + #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1).ref_time())] pub fn demo_offence(origin: OriginFor, offenders: Vec) -> DispatchResult { // TODO remove this function, it is for demo purposes only let who = ensure_signed(origin)?; @@ -163,8 +163,6 @@ pub mod pallet { fn time_slot(&self) -> Self::TimeSlot { self.session_index } - fn slash_fraction(_offenders: u32, _validator_set_count: u32) -> Perbill { - Perbill::from_perthousand(0) - } + fn slash_fraction(&self, _offenders_count: u32) -> Perbill { Perbill::from_perthousand(0) } } } diff --git a/pallets/slashing/src/mock.rs b/pallets/slashing/src/mock.rs index 6d4b1032d..83ffc9e06 100644 --- a/pallets/slashing/src/mock.rs +++ b/pallets/slashing/src/mock.rs @@ -23,6 +23,7 @@ use crate as pallet_slashing; type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; type Block = frame_system::mocking::MockBlock; +type Balance = u64; // Configure a mock runtime to test the pallet. frame_support::construct_runtime!( @@ -49,16 +50,14 @@ parameter_types! { } impl system::Config for Test { - type AccountData = pallet_balances::AccountData; + type AccountData = pallet_balances::AccountData; type AccountId = AccountId; type BaseCallFilter = frame_support::traits::Everything; type BlockHashCount = BlockHashCount; type BlockLength = (); type BlockNumber = u64; type BlockWeights = (); - type Call = Call; type DbWeight = (); - type Event = Event; type Hash = H256; type Hashing = BlakeTwo256; type Header = Header; @@ -68,8 +67,10 @@ impl system::Config for Test { type OnKilledAccount = (); type OnNewAccount = (); type OnSetCode = (); - type Origin = Origin; type PalletInfo = PalletInfo; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; type SS58Prefix = SS58Prefix; type SystemWeightInfo = (); type Version = (); @@ -127,9 +128,9 @@ sp_runtime::impl_opaque_keys! { } impl pallet_session::Config for Test { - type Event = Event; type Keys = SessionKeys; type NextSessionRotation = pallet_session::PeriodicSessions; + type RuntimeEvent = RuntimeEvent; type SessionHandler = (TestSessionHandler,); type SessionManager = (); type ShouldEndSession = pallet_session::PeriodicSessions; @@ -139,10 +140,10 @@ impl pallet_session::Config for Test { } impl frame_system::offchain::SendTransactionTypes for Test -where Call: From +where RuntimeCall: From { - type Extrinsic = TestXt; - type OverarchingCall = Call; + type Extrinsic = TestXt; + type OverarchingCall = RuntimeCall; } pallet_staking_reward_curve::build! { @@ -174,17 +175,18 @@ parameter_types! { impl pallet_bags_list::Config for Test { type BagThresholds = BagThresholds; - type Event = Event; + type RuntimeEvent = RuntimeEvent; type Score = VoteWeight; type ScoreProvider = Staking; type WeightInfo = (); } pub struct OnChainSeqPhragmen; -impl onchain::ExecutionConfig for OnChainSeqPhragmen { +impl onchain::Config for OnChainSeqPhragmen { type DataProvider = Staking; type Solver = SequentialPhragmen; type System = Test; + type WeightInfo = (); } pub struct StakingBenchmarkingConfig; @@ -197,50 +199,54 @@ impl pallet_staking::Config for Test { type BenchmarkingConfig = StakingBenchmarkingConfig; type BondingDuration = BondingDuration; type Currency = Balances; + type CurrencyBalance = Balance; type CurrencyToVote = frame_support::traits::SaturatingCurrencyToVote; type ElectionProvider = onchain::UnboundedExecution; type EraPayout = pallet_staking::ConvertCurve; - type Event = Event; type GenesisElectionProvider = Self::ElectionProvider; + type HistoryDepth = ConstU32<84>; type MaxNominations = MaxNominations; type MaxNominatorRewardedPerValidator = ConstU32<64>; type MaxUnlockingChunks = ConstU32<32>; type NextNewSession = Session; type OffendingValidatorsThreshold = OffendingValidatorsThreshold; + type OnStakerSlash = (); type Reward = (); type RewardRemainder = (); + type RuntimeEvent = RuntimeEvent; type SessionInterface = Self; type SessionsPerEra = SessionsPerEra; type Slash = (); type SlashCancelOrigin = frame_system::EnsureRoot; type SlashDeferDuration = SlashDeferDuration; + type TargetList = pallet_staking::UseValidatorsMap; type UnixTime = pallet_timestamp::Pallet; type VoterList = BagsList; type WeightInfo = (); } parameter_types! { - pub const ExistentialDeposit: u128 = 1; + pub const ExistentialDeposit: Balance = 1; } impl pallet_balances::Config for Test { type AccountStore = System; - type Balance = u128; + type Balance = Balance; type DustRemoval = (); - type Event = Event; type ExistentialDeposit = ExistentialDeposit; type MaxLocks = (); type MaxReserves = (); type ReserveIdentifier = [u8; 8]; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } impl pallet_session::historical::Config for Test { - type FullIdentification = pallet_staking::Exposure; + type FullIdentification = pallet_staking::Exposure; type FullIdentificationOf = pallet_staking::ExposureOf; } -type IdentificationTuple = (u64, pallet_staking::Exposure); +type IdentificationTuple = (u64, pallet_staking::Exposure); type Offence = crate::TuxAngry; thread_local! { @@ -276,9 +282,9 @@ parameter_types! { impl pallet_slashing::Config for Test { type AuthorityId = UintAuthorityId; - type Event = Event; type MinValidators = MinValidators; type ReportBad = OffenceHandler; + type RuntimeEvent = RuntimeEvent; type ValidatorIdOf = ConvertInto; type ValidatorSet = Historical; } diff --git a/pallets/slashing/src/tests.rs b/pallets/slashing/src/tests.rs index 1c7eb4939..c24302c1c 100644 --- a/pallets/slashing/src/tests.rs +++ b/pallets/slashing/src/tests.rs @@ -8,21 +8,22 @@ use crate::mock::*; #[test] fn slash_fraction_works() { new_test_ext().execute_with(|| { - assert_eq!(TuxAngry::<()>::slash_fraction(1, 2), Perbill::from_perthousand(0)); + let offence = TuxAngry { session_index: 0, validator_set_count: 50, offenders: vec![()] }; + assert_eq!(offence.slash_fraction(1), Perbill::from_perthousand(0)); }); } #[test] fn offence_test() { new_test_ext().execute_with(|| { - assert_ok!(Staking::force_new_era_always(Origin::root())); + assert_ok!(Staking::force_new_era_always(RuntimeOrigin::root())); assert!(Session::validators().contains(&1)); // slash would cause min validators to drop below min validators no offence - assert_ok!(Slashing::demo_offence(Origin::signed(1), vec![1u64, 2u64])); + assert_ok!(Slashing::demo_offence(RuntimeOrigin::signed(1), vec![1u64, 2u64])); let mut offences = OFFENCES.with(|l| l.replace(vec![])); assert_eq!(offences.len(), 0); // causes offence - assert_ok!(Slashing::demo_offence(Origin::signed(1), vec![1u64])); + assert_ok!(Slashing::demo_offence(RuntimeOrigin::signed(1), vec![1u64])); offences = OFFENCES.with(|l| l.replace(vec![])); assert_eq!(offences.len(), 1); }); diff --git a/pallets/staking/Cargo.toml b/pallets/staking/Cargo.toml index 05cee94f4..8111675f5 100644 --- a/pallets/staking/Cargo.toml +++ b/pallets/staking/Cargo.toml @@ -22,17 +22,17 @@ version ='3.0.0' default-features=false git ='https://github.com/paritytech/substrate.git' optional =true -branch ="master" +branch ="polkadot-v0.9.30" [dependencies.frame-support] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" [dependencies.frame-system] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" [dependencies.scale-info] default-features=false @@ -42,30 +42,30 @@ version ='2.0.1' [dev-dependencies.sp-core] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ="6.0.0" [dev-dependencies.sp-io] default-features=false git ='https://github.com/paritytech/substrate.git' -branch ="master" +branch ="polkadot-v0.9.30" version ="6.0.0" [dependencies] -pallet-staking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-runtime ={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-std ={ package="sp-std", git="https://github.com/paritytech/substrate", branch="master", default-features=false } -sp-core ={ package="sp-core", git="https://github.com/paritytech/substrate", branch="master", default-features=false } +pallet-staking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-runtime ={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-std ={ package="sp-std", git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } +sp-core ={ package="sp-core", git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } [dev-dependencies] -pallet-balances ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-timestamp ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-staking-reward-curve ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-bags-list ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +pallet-balances ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-timestamp ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-staking-reward-curve ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-bags-list ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } [features] default=['std'] diff --git a/pallets/staking/src/benchmarking.rs b/pallets/staking/src/benchmarking.rs index 8aa420b97..b6e8bb0fe 100644 --- a/pallets/staking/src/benchmarking.rs +++ b/pallets/staking/src/benchmarking.rs @@ -11,9 +11,9 @@ use crate::Pallet as Staking; const NULL_ARR: [u8; 32] = [0; 32]; -fn assert_last_event(generic_event: ::Event) { +fn assert_last_event(generic_event: ::RuntimeEvent) { let events = frame_system::Pallet::::events(); - let system_event: ::Event = generic_event.into(); + let system_event: ::RuntimeEvent = generic_event.into(); // compare to the last event record let EventRecord { event, .. } = &events[events.len() - 1]; assert_eq!(event, &system_event); @@ -63,7 +63,7 @@ benchmarks! { }: _(RawOrigin::Signed(caller.clone()), vec![30]) verify { - assert_last_event::(Event::EndpointChanged(caller, vec![30]).into()); + assert_last_event::(Event::::EndpointChanged(caller, vec![30]).into()); } change_threshold_accounts { @@ -76,7 +76,7 @@ benchmarks! { }: _(RawOrigin::Signed(caller.clone()), bonder.clone(), NULL_ARR) verify { - assert_last_event::(Event::ThresholdAccountChanged(bonder.clone(), (bonder, NULL_ARR)).into()); + assert_last_event::(Event::::ThresholdAccountChanged(bonder.clone(), (bonder, NULL_ARR)).into()); } @@ -115,7 +115,7 @@ benchmarks! { }: _(RawOrigin::Signed(caller.clone()), validator_preferance, vec![20], threshold.clone(), NULL_ARR) verify { - assert_last_event::(Event::NodeInfoChanged(caller, vec![20], threshold).into()); + assert_last_event::(Event::::NodeInfoChanged(caller, vec![20], threshold).into()); } diff --git a/pallets/staking/src/lib.rs b/pallets/staking/src/lib.rs index 56bd8f904..445c9c31d 100644 --- a/pallets/staking/src/lib.rs +++ b/pallets/staking/src/lib.rs @@ -42,7 +42,7 @@ pub mod pallet { #[pallet::config] pub trait Config: frame_system::Config + pallet_staking::Config { - type Event: From> + IsType<::Event>; + type RuntimeEvent: From> + IsType<::RuntimeEvent>; type Currency: Currency; type MaxEndpointLength: Get; /// The weight information of this pallet. @@ -50,6 +50,18 @@ pub mod pallet { } // TODO: JA add build for initial endpoints + /// A unique identifier of a subgroup or partition of validators that have the same set of + /// threshold shares. + pub type SubgroupId = u8; + /// Unique type to differentiate the threshold server's account ID from the validator's + /// stash/controller accounts + pub type TssServerAccount = AccountId; + /// X25519 public key used by the client in non-interactive ECDH to authenticate/encrypt + /// interactions with the threshold server (eg distributing threshold shares). + pub type X25519PublicKey = [u8; 32]; + /// Endpoint where a threshold server can be reached at + pub type TssServerURL = Vec; + /// The balance type of this pallet. pub type BalanceOf = <::Currency as Currency< ::AccountId, @@ -60,28 +72,43 @@ pub mod pallet { #[pallet::without_storage_info] pub struct Pallet(_); + // TODO JH We could prob use more efficient data structures (less duplicate data or query time) + // for storing validator/server/endpoint/subgroup information + + /// Stores the relationship between a validator's stash account and the IP address/endpoint they + /// can be reached at. #[pallet::storage] #[pallet::getter(fn endpoint_register)] pub type EndpointRegister = - StorageMap<_, Blake2_128Concat, T::AccountId, Vec, OptionQuery>; + StorageMap<_, Blake2_128Concat, T::AccountId, TssServerURL, OptionQuery>; - /// Keytype is the stash AccountId /// Stores the relationship between - /// a threshold public key and a - /// Diffie-Hellman public key. - /// Clients query the chain for both values, - /// the DH public key is used to derive shared - /// secrets for ChaCha20Poly1305 encryption - /// of secret shares over http. + /// a validator's stash account and their threshold server's sr25519 and x25519 keys. + /// + /// Clients query this via state or `stakingExtension_getKeys` RPC and uses + /// the x25519 pub key in noninteractive ECDH for authenticating/encrypting distribute TSS + /// shares over HTTP. #[pallet::storage] #[pallet::getter(fn threshold_account)] - pub type ThresholdAccounts = - StorageMap<_, Blake2_128Concat, T::AccountId, (T::AccountId, [u8; 32]), OptionQuery>; + pub type ThresholdAccounts = StorageMap< + _, + Blake2_128Concat, + T::AccountId, + (TssServerAccount, X25519PublicKey), + OptionQuery, + >; + /// Stores the relationship between a signing group (u8) and its member's (validator's) + /// threshold server's account. #[pallet::storage] #[pallet::getter(fn signing_groups)] - pub type SigningGroups = - StorageMap<_, Blake2_128Concat, u8, Vec, OptionQuery>; + pub type SigningGroups = StorageMap< + _, + Blake2_128Concat, + SubgroupId, + Vec>, + OptionQuery, + >; #[pallet::genesis_config] pub struct GenesisConfig { @@ -111,16 +138,16 @@ pub mod pallet { .into_iter() .map(|x| assert!(x.1.len() as u32 <= T::MaxEndpointLength::get())); - for (account, endpoint) in &self.endpoints { - EndpointRegister::::insert(account, endpoint); + for (validator_stash, tss_endpoint_url) in &self.endpoints { + EndpointRegister::::insert(validator_stash, tss_endpoint_url); } - for (stash_account, threshold_account) in &self.threshold_accounts { - ThresholdAccounts::::insert(stash_account, threshold_account); + for (validator_stash, tss_server_keys) in &self.threshold_accounts { + ThresholdAccounts::::insert(validator_stash, tss_server_keys); } - for (group, accounts) in &self.signing_groups { - SigningGroups::::insert(group, accounts); + for (group_id, tss_server_account) in &self.signing_groups { + SigningGroups::::insert(group_id, tss_server_account); } } } @@ -167,13 +194,16 @@ pub mod pallet { #[pallet::weight(::WeightInfo::change_threshold_accounts())] pub fn change_threshold_accounts( origin: OriginFor, - new_account: T::AccountId, - dh_pk: [u8; 32], + threshold_account: TssServerAccount, + ecdh_pub_key: X25519PublicKey, ) -> DispatchResult { let who = ensure_signed(origin)?; let stash = Self::get_stash(&who)?; - ThresholdAccounts::::insert(&stash, (&new_account, dh_pk)); - Self::deposit_event(Event::ThresholdAccountChanged(stash, (new_account, dh_pk))); + ThresholdAccounts::::insert(&stash, (&threshold_account, ecdh_pub_key)); + Self::deposit_event(Event::ThresholdAccountChanged( + stash, + (threshold_account, ecdh_pub_key), + )); Ok(()) } @@ -203,8 +233,8 @@ pub mod pallet { origin: OriginFor, prefs: ValidatorPrefs, endpoint: Vec, - threshold_account: T::AccountId, - dh_pk: [u8; 32], + threshold_account: TssServerAccount, + ecdh_pub_key: X25519PublicKey, ) -> DispatchResult { let who = ensure_signed(origin.clone())?; ensure!( @@ -214,7 +244,7 @@ pub mod pallet { let stash = Self::get_stash(&who)?; pallet_staking::Pallet::::validate(origin, prefs)?; EndpointRegister::::insert(&who, &endpoint); - ThresholdAccounts::::insert(&stash, (&threshold_account, dh_pk)); + ThresholdAccounts::::insert(&stash, (&threshold_account, ecdh_pub_key)); Self::deposit_event(Event::NodeInfoChanged(who, endpoint, threshold_account)); Ok(()) } diff --git a/pallets/staking/src/mock.rs b/pallets/staking/src/mock.rs index e7af8041a..1a54ec24d 100644 --- a/pallets/staking/src/mock.rs +++ b/pallets/staking/src/mock.rs @@ -59,9 +59,7 @@ impl system::Config for Test { type BlockLength = (); type BlockNumber = u64; type BlockWeights = (); - type Call = Call; type DbWeight = (); - type Event = Event; type Hash = H256; type Hashing = BlakeTwo256; type Header = Header; @@ -71,8 +69,10 @@ impl system::Config for Test { type OnKilledAccount = (); type OnNewAccount = (); type OnSetCode = (); - type Origin = Origin; type PalletInfo = PalletInfo; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; type SS58Prefix = SS58Prefix; type SystemWeightInfo = (); type Version = (); @@ -97,11 +97,11 @@ impl pallet_balances::Config for Test { type AccountStore = System; type Balance = Balance; type DustRemoval = (); - type Event = Event; type ExistentialDeposit = ExistentialDeposit; type MaxLocks = MaxLocks; type MaxReserves = (); type ReserveIdentifier = [u8; 8]; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -142,10 +142,11 @@ sp_runtime::impl_opaque_keys! { } pub struct OnChainSeqPhragmen; -impl onchain::ExecutionConfig for OnChainSeqPhragmen { +impl onchain::Config for OnChainSeqPhragmen { type DataProvider = FrameStaking; type Solver = SequentialPhragmen; type System = Test; + type WeightInfo = (); } pallet_staking_reward_curve::build! { @@ -167,10 +168,10 @@ parameter_types! { } impl frame_system::offchain::SendTransactionTypes for Test -where Call: From +where RuntimeCall: From { - type Extrinsic = TestXt; - type OverarchingCall = Call; + type Extrinsic = TestXt; + type OverarchingCall = RuntimeCall; } const THRESHOLDS: [sp_npos_elections::VoteWeight; 9] = @@ -182,7 +183,7 @@ parameter_types! { impl pallet_bags_list::Config for Test { type BagThresholds = BagThresholds; - type Event = Event; + type RuntimeEvent = RuntimeEvent; type Score = VoteWeight; type ScoreProvider = FrameStaking; type WeightInfo = (); @@ -209,32 +210,36 @@ impl pallet_staking::Config for Test { type BenchmarkingConfig = StakingBenchmarkingConfig; type BondingDuration = BondingDuration; type Currency = Balances; + type CurrencyBalance = Balance; type CurrencyToVote = frame_support::traits::SaturatingCurrencyToVote; type ElectionProvider = onchain::UnboundedExecution; type EraPayout = pallet_staking::ConvertCurve; - type Event = Event; type GenesisElectionProvider = Self::ElectionProvider; + type HistoryDepth = ConstU32<84>; type MaxNominations = MaxNominations; type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; type MaxUnlockingChunks = ConstU32<32>; type NextNewSession = Session; type OffendingValidatorsThreshold = OffendingValidatorsThreshold; + type OnStakerSlash = (); type Reward = (); type RewardRemainder = (); + type RuntimeEvent = RuntimeEvent; type SessionInterface = Self; type SessionsPerEra = SessionsPerEra; type Slash = (); type SlashCancelOrigin = frame_system::EnsureRoot; type SlashDeferDuration = SlashDeferDuration; + type TargetList = pallet_staking::UseValidatorsMap; type UnixTime = pallet_timestamp::Pallet; type VoterList = BagsList; type WeightInfo = (); } impl pallet_session::Config for Test { - type Event = Event; type Keys = UintAuthorityId; type NextSessionRotation = pallet_session::PeriodicSessions; + type RuntimeEvent = RuntimeEvent; type SessionHandler = (OtherSessionHandler,); type SessionManager = pallet_session::historical::NoteHistoricalRoot; type ShouldEndSession = pallet_session::PeriodicSessions; @@ -253,8 +258,8 @@ parameter_types! { } impl pallet_staking_extension::Config for Test { type Currency = Balances; - type Event = Event; type MaxEndpointLength = MaxEndpointLength; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } diff --git a/pallets/staking/src/tests.rs b/pallets/staking/src/tests.rs index 695b73d22..4dbf165a4 100644 --- a/pallets/staking/src/tests.rs +++ b/pallets/staking/src/tests.rs @@ -20,13 +20,13 @@ fn basic_setup_works() { fn it_takes_in_an_endpoint() { new_test_ext().execute_with(|| { assert_ok!(FrameStaking::bond( - Origin::signed(2), + RuntimeOrigin::signed(2), 1, 100u64, pallet_staking::RewardDestination::Account(1), )); assert_ok!(Staking::validate( - Origin::signed(1), + RuntimeOrigin::signed(1), pallet_staking::ValidatorPrefs::default(), vec![20], 3, @@ -36,7 +36,7 @@ fn it_takes_in_an_endpoint() { assert_eq!(Staking::threshold_account(2).unwrap().0, 3); assert_noop!( Staking::validate( - Origin::signed(4), + RuntimeOrigin::signed(4), pallet_staking::ValidatorPrefs::default(), vec![20, 20, 20, 20], 3, @@ -46,7 +46,7 @@ fn it_takes_in_an_endpoint() { ); assert_noop!( Staking::validate( - Origin::signed(4), + RuntimeOrigin::signed(4), pallet_staking::ValidatorPrefs::default(), vec![20, 20], 3, @@ -61,23 +61,26 @@ fn it_takes_in_an_endpoint() { fn it_changes_endpoint() { new_test_ext().execute_with(|| { assert_ok!(FrameStaking::bond( - Origin::signed(2), + RuntimeOrigin::signed(2), 1, 100u64, pallet_staking::RewardDestination::Account(1), )); assert_ok!(Staking::validate( - Origin::signed(1), + RuntimeOrigin::signed(1), pallet_staking::ValidatorPrefs::default(), vec![20], 3, NULL_ARR )); - assert_ok!(Staking::change_endpoint(Origin::signed(1), vec![30])); + assert_ok!(Staking::change_endpoint(RuntimeOrigin::signed(1), vec![30])); assert_eq!(Staking::endpoint_register(1).unwrap(), vec![30]); - assert_noop!(Staking::change_endpoint(Origin::signed(3), vec![30]), Error::::NoBond); + assert_noop!( + Staking::change_endpoint(RuntimeOrigin::signed(3), vec![30]), + Error::::NoBond + ); }); } @@ -85,24 +88,24 @@ fn it_changes_endpoint() { fn it_changes_threshold_account() { new_test_ext().execute_with(|| { assert_ok!(FrameStaking::bond( - Origin::signed(2), + RuntimeOrigin::signed(2), 1, 100u64, pallet_staking::RewardDestination::Account(1), )); assert_ok!(Staking::validate( - Origin::signed(1), + RuntimeOrigin::signed(1), pallet_staking::ValidatorPrefs::default(), vec![20], 3, NULL_ARR )); - assert_ok!(Staking::change_threshold_accounts(Origin::signed(1), 4, NULL_ARR)); + assert_ok!(Staking::change_threshold_accounts(RuntimeOrigin::signed(1), 4, NULL_ARR)); assert_eq!(Staking::threshold_account(2).unwrap().0, 4); assert_noop!( - Staking::change_threshold_accounts(Origin::signed(4), 5, NULL_ARR), + Staking::change_threshold_accounts(RuntimeOrigin::signed(4), 5, NULL_ARR), Error::::NotController ); }); @@ -113,13 +116,13 @@ fn it_deletes_when_no_bond_left() { new_test_ext().execute_with(|| { start_active_era(1); assert_ok!(FrameStaking::bond( - Origin::signed(2), + RuntimeOrigin::signed(2), 1, 100u64, pallet_staking::RewardDestination::Account(1), )); assert_ok!(Staking::validate( - Origin::signed(1), + RuntimeOrigin::signed(1), pallet_staking::ValidatorPrefs::default(), vec![20], 3, @@ -133,14 +136,14 @@ fn it_deletes_when_no_bond_left() { assert_eq!(lock[0].amount, 100); assert_eq!(lock.len(), 1); - assert_ok!(FrameStaking::unbond(Origin::signed(1), 50u64,)); + assert_ok!(FrameStaking::unbond(RuntimeOrigin::signed(1), 50u64,)); lock = Balances::locks(2); assert_eq!(lock[0].amount, 100); assert_eq!(lock.len(), 1); println!(":{:?}", FrameStaking::ledger(1)); - assert_ok!(Staking::withdraw_unbonded(Origin::signed(1), 0,)); + assert_ok!(Staking::withdraw_unbonded(RuntimeOrigin::signed(1), 0,)); lock = Balances::locks(2); assert_eq!(lock[0].amount, 50); @@ -149,9 +152,9 @@ fn it_deletes_when_no_bond_left() { assert_eq!(Staking::endpoint_register(1).unwrap(), vec![20]); assert_eq!(Staking::threshold_account(2).unwrap().0, 3); - assert_ok!(FrameStaking::unbond(Origin::signed(1), 50u64,)); + assert_ok!(FrameStaking::unbond(RuntimeOrigin::signed(1), 50u64,)); - assert_ok!(Staking::withdraw_unbonded(Origin::signed(1), 0,)); + assert_ok!(Staking::withdraw_unbonded(RuntimeOrigin::signed(1), 0,)); lock = Balances::locks(2); assert_eq!(lock.len(), 0); assert_eq!(Staking::endpoint_register(1), None); diff --git a/pallets/staking/src/weights.rs b/pallets/staking/src/weights.rs index 269263e52..28ad4b319 100644 --- a/pallets/staking/src/weights.rs +++ b/pallets/staking/src/weights.rs @@ -19,17 +19,17 @@ pub trait WeightInfo { pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { fn change_endpoint() -> Weight { - (34_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(34_000_000_u64) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } // Storage: Staking Ledger (r:1 w:0) // Storage: StakingExtension ThresholdAccounts (r:0 w:1) fn change_threshold_accounts() -> Weight { - (34_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(34_000_000_u64) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } // Storage: Staking Ledger (r:1 w:1) @@ -37,9 +37,9 @@ impl WeightInfo for SubstrateWeight { // Storage: Balances Locks (r:1 w:1) // Storage: System Account (r:1 w:1) fn withdraw_unbonded() -> Weight { - (41_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + Weight::from_ref_time(41_000_000_u64) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(3_u64)) } // Storage: Staking Ledger (r:1 w:0) @@ -56,26 +56,26 @@ impl WeightInfo for SubstrateWeight { // Storage: StakingExtension ThresholdAccounts (r:0 w:1) // Storage: StakingExtension EndpointRegister (r:0 w:1) fn validate() -> Weight { - (95_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(11 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) + Weight::from_ref_time(95_000_000_u64) + .saturating_add(T::DbWeight::get().reads(11_u64)) + .saturating_add(T::DbWeight::get().writes(7_u64)) } } // For backwards compatibility and tests impl WeightInfo for () { fn change_endpoint() -> Weight { - (34_000_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(34_000_000_u64) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) } // Storage: Staking Ledger (r:1 w:0) // Storage: StakingExtension ThresholdAccounts (r:0 w:1) fn change_threshold_accounts() -> Weight { - (34_000_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(1 as Weight)) - .saturating_add(RocksDbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(34_000_000_u64) + .saturating_add(RocksDbWeight::get().reads(1_u64)) + .saturating_add(RocksDbWeight::get().writes(1_u64)) } // Storage: Staking Ledger (r:1 w:1) @@ -83,9 +83,9 @@ impl WeightInfo for () { // Storage: Balances Locks (r:1 w:1) // Storage: System Account (r:1 w:1) fn withdraw_unbonded() -> Weight { - (41_000_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(4 as Weight)) - .saturating_add(RocksDbWeight::get().writes(3 as Weight)) + Weight::from_ref_time(41_000_000_u64) + .saturating_add(RocksDbWeight::get().reads(4_u64)) + .saturating_add(RocksDbWeight::get().writes(3_u64)) } // Storage: Staking Ledger (r:1 w:0) @@ -102,8 +102,8 @@ impl WeightInfo for () { // Storage: StakingExtension ThresholdAccounts (r:0 w:1) // Storage: StakingExtension EndpointRegister (r:0 w:1) fn validate() -> Weight { - (95_000_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(11 as Weight)) - .saturating_add(RocksDbWeight::get().writes(7 as Weight)) + Weight::from_ref_time(95_000_000_u64) + .saturating_add(RocksDbWeight::get().reads(11_u64)) + .saturating_add(RocksDbWeight::get().writes(7_u64)) } } diff --git a/pallets/transaction-pause/Cargo.toml b/pallets/transaction-pause/Cargo.toml index 052a96794..d5061ca42 100644 --- a/pallets/transaction-pause/Cargo.toml +++ b/pallets/transaction-pause/Cargo.toml @@ -6,16 +6,16 @@ edition="2021" [dependencies] codec ={ package="parity-scale-codec", version="3.0.0", default-features=false } scale-info ={ version="2.1", default-features=false, features=["derive"] } -sp-runtime ={ git="https://github.com/paritytech/substrate", branch="master", default-features=false } -frame-benchmarking={ git="https://github.com/paritytech/substrate", branch="master", optional=true, default-features=false } -frame-support ={ git="https://github.com/paritytech/substrate", branch="master", default-features=false } -frame-system ={ git="https://github.com/paritytech/substrate", branch="master", default-features=false } -sp-std ={ git="https://github.com/paritytech/substrate", branch="master", default-features=false } +sp-runtime ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } +frame-benchmarking={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", optional=true, default-features=false } +frame-support ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } +frame-system ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } +sp-std ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30", default-features=false } [dev-dependencies] -sp-core ={ git="https://github.com/paritytech/substrate", branch="master" } -sp-io ={ git="https://github.com/paritytech/substrate", branch="master" } -pallet-balances ={ git="https://github.com/paritytech/substrate", branch="master" } +sp-core ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } +sp-io ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } +pallet-balances ={ git="https://github.com/paritytech/substrate", branch="polkadot-v0.9.30" } smallvec ="1.4.1" pallet-constraints={ version="3.0.0-monthly-2021-10", default-features=false, path="../constraints" } diff --git a/pallets/transaction-pause/src/benchmarking.rs b/pallets/transaction-pause/src/benchmarking.rs index 402f22c4b..023952cbf 100644 --- a/pallets/transaction-pause/src/benchmarking.rs +++ b/pallets/transaction-pause/src/benchmarking.rs @@ -6,9 +6,9 @@ use super::*; #[allow(unused)] use crate::Pallet as TransactionPause; -fn assert_last_event(generic_event: ::Event) { +fn assert_last_event(generic_event: ::RuntimeEvent) { let events = frame_system::Pallet::::events(); - let system_event: ::Event = generic_event.into(); + let system_event: ::RuntimeEvent = generic_event.into(); // compare to the last event record let EventRecord { event, .. } = &events[events.len() - 1]; assert_eq!(event, &system_event); diff --git a/pallets/transaction-pause/src/lib.rs b/pallets/transaction-pause/src/lib.rs index e6dd49004..66e682be3 100644 --- a/pallets/transaction-pause/src/lib.rs +++ b/pallets/transaction-pause/src/lib.rs @@ -32,10 +32,10 @@ pub mod module { #[pallet::config] pub trait Config: frame_system::Config { - type Event: From> + IsType<::Event>; + type RuntimeEvent: From> + IsType<::RuntimeEvent>; /// The origin which may set filter. - type UpdateOrigin: EnsureOrigin; + type UpdateOrigin: EnsureOrigin; /// Weight information for the extrinsics in this module. type WeightInfo: WeightInfo; @@ -127,10 +127,10 @@ pub mod module { } pub struct PausedTransactionFilter(sp_std::marker::PhantomData); -impl Contains for PausedTransactionFilter -where ::Call: GetCallMetadata +impl Contains for PausedTransactionFilter +where ::RuntimeCall: GetCallMetadata { - fn contains(call: &T::Call) -> bool { + fn contains(call: &T::RuntimeCall) -> bool { let CallMetadata { function_name, pallet_name } = call.get_call_metadata(); PausedTransactions::::contains_key((pallet_name.as_bytes(), function_name.as_bytes())) } diff --git a/pallets/transaction-pause/src/mock.rs b/pallets/transaction-pause/src/mock.rs index f42ef9a87..2940df250 100644 --- a/pallets/transaction-pause/src/mock.rs +++ b/pallets/transaction-pause/src/mock.rs @@ -46,9 +46,7 @@ impl frame_system::Config for Runtime { type BlockLength = (); type BlockNumber = u64; type BlockWeights = (); - type Call = Call; type DbWeight = (); - type Event = Event; type Hash = H256; type Hashing = ::sp_runtime::traits::BlakeTwo256; type Header = Header; @@ -58,8 +56,10 @@ impl frame_system::Config for Runtime { type OnKilledAccount = (); type OnNewAccount = (); type OnSetCode = (); - type Origin = Origin; type PalletInfo = PalletInfo; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; type SS58Prefix = (); type SystemWeightInfo = (); type Version = (); @@ -69,11 +69,11 @@ impl pallet_balances::Config for Runtime { type AccountStore = System; type Balance = Balance; type DustRemoval = (); - type Event = Event; type ExistentialDeposit = ConstU128<10>; type MaxLocks = (); type MaxReserves = ConstU32<50>; type ReserveIdentifier = (); + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -83,9 +83,9 @@ parameter_types! { } impl pallet_constraints::Config for Runtime { - type Event = Event; type MaxAddressLength = MaxAddressLength; type MaxWhitelist = MaxWhitelist; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -94,7 +94,7 @@ ord_parameter_types! { } impl Config for Runtime { - type Event = Event; + type RuntimeEvent = RuntimeEvent; type UpdateOrigin = EnsureSignedBy; type WeightInfo = (); } diff --git a/pallets/transaction-pause/src/tests.rs b/pallets/transaction-pause/src/tests.rs index da7ef9c74..ebb9587b5 100644 --- a/pallets/transaction-pause/src/tests.rs +++ b/pallets/transaction-pause/src/tests.rs @@ -21,13 +21,13 @@ #![cfg(test)] use frame_support::{assert_noop, assert_ok}; -use mock::{Event, *}; +use mock::{RuntimeEvent, *}; use sp_runtime::traits::BadOrigin; use super::*; -const BALANCE_TRANSFER: &::Call = - &mock::Call::Balances(pallet_balances::Call::transfer { dest: ALICE, value: 10 }); +const BALANCE_TRANSFER: &::RuntimeCall = + &mock::RuntimeCall::Balances(pallet_balances::Call::transfer { dest: ALICE, value: 10 }); #[test] fn pause_transaction_work() { @@ -36,7 +36,7 @@ fn pause_transaction_work() { assert_noop!( TransactionPause::pause_transaction( - Origin::signed(5), + RuntimeOrigin::signed(5), b"Balances".to_vec(), b"transfer".to_vec() ), @@ -48,14 +48,16 @@ fn pause_transaction_work() { None ); assert_ok!(TransactionPause::pause_transaction( - Origin::signed(1), + RuntimeOrigin::signed(1), b"Balances".to_vec(), b"transfer".to_vec() )); - System::assert_last_event(Event::TransactionPause(crate::Event::TransactionPaused { - pallet_name_bytes: b"Balances".to_vec(), - function_name_bytes: b"transfer".to_vec(), - })); + System::assert_last_event(RuntimeEvent::TransactionPause( + crate::Event::TransactionPaused { + pallet_name_bytes: b"Balances".to_vec(), + function_name_bytes: b"transfer".to_vec(), + }, + )); assert_eq!( TransactionPause::paused_transactions((b"Balances".to_vec(), b"transfer".to_vec())), Some(()) @@ -63,7 +65,7 @@ fn pause_transaction_work() { assert_noop!( TransactionPause::pause_transaction( - Origin::signed(1), + RuntimeOrigin::signed(1), b"TransactionPause".to_vec(), b"pause_transaction".to_vec() ), @@ -71,14 +73,14 @@ fn pause_transaction_work() { ); assert_noop!( TransactionPause::pause_transaction( - Origin::signed(1), + RuntimeOrigin::signed(1), b"TransactionPause".to_vec(), b"some_other_call".to_vec() ), Error::::CannotPause ); assert_ok!(TransactionPause::pause_transaction( - Origin::signed(1), + RuntimeOrigin::signed(1), b"OtherPallet".to_vec(), b"pause_transaction".to_vec() )); @@ -91,7 +93,7 @@ fn unpause_transaction_work() { System::set_block_number(1); assert_ok!(TransactionPause::pause_transaction( - Origin::signed(1), + RuntimeOrigin::signed(1), b"Balances".to_vec(), b"transfer".to_vec() )); @@ -102,7 +104,7 @@ fn unpause_transaction_work() { assert_noop!( TransactionPause::unpause_transaction( - Origin::signed(5), + RuntimeOrigin::signed(5), b"Balances".to_vec(), b"transfer".to_vec() ), @@ -110,14 +112,16 @@ fn unpause_transaction_work() { ); assert_ok!(TransactionPause::unpause_transaction( - Origin::signed(1), + RuntimeOrigin::signed(1), b"Balances".to_vec(), b"transfer".to_vec() )); - System::assert_last_event(Event::TransactionPause(crate::Event::TransactionUnpaused { - pallet_name_bytes: b"Balances".to_vec(), - function_name_bytes: b"transfer".to_vec(), - })); + System::assert_last_event(RuntimeEvent::TransactionPause( + crate::Event::TransactionUnpaused { + pallet_name_bytes: b"Balances".to_vec(), + function_name_bytes: b"transfer".to_vec(), + }, + )); assert_eq!( TransactionPause::paused_transactions((b"Balances".to_vec(), b"transfer".to_vec())), None @@ -129,18 +133,18 @@ fn unpause_transaction_work() { fn paused_transaction_filter_work() { ExtBuilder::default().build().execute_with(|| { let whitelist_address_call = - &mock::Call::Constraints(pallet_constraints::Call::add_whitelist_address { + &mock::RuntimeCall::Constraints(pallet_constraints::Call::add_whitelist_address { whitelist_addresses: vec![b"1".to_vec()], }); assert!(!PausedTransactionFilter::::contains(BALANCE_TRANSFER)); assert!(!PausedTransactionFilter::::contains(whitelist_address_call)); assert_ok!(TransactionPause::pause_transaction( - Origin::signed(1), + RuntimeOrigin::signed(1), b"Balances".to_vec(), b"transfer".to_vec() )); assert_ok!(TransactionPause::pause_transaction( - Origin::signed(1), + RuntimeOrigin::signed(1), b"Constraints".to_vec(), b"add_whitelist_address".to_vec() )); @@ -148,12 +152,12 @@ fn paused_transaction_filter_work() { assert!(PausedTransactionFilter::::contains(BALANCE_TRANSFER)); assert!(PausedTransactionFilter::::contains(whitelist_address_call)); assert_ok!(TransactionPause::unpause_transaction( - Origin::signed(1), + RuntimeOrigin::signed(1), b"Balances".to_vec(), b"transfer".to_vec() )); assert_ok!(TransactionPause::unpause_transaction( - Origin::signed(1), + RuntimeOrigin::signed(1), b"Constraints".to_vec(), b"add_whitelist_address".to_vec() )); diff --git a/pallets/transaction-pause/src/weights.rs b/pallets/transaction-pause/src/weights.rs index d68a70ed5..0019abb07 100644 --- a/pallets/transaction-pause/src/weights.rs +++ b/pallets/transaction-pause/src/weights.rs @@ -17,33 +17,33 @@ pub trait WeightInfo { pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { fn pause_transaction() -> Weight { - (30_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + Weight::from_ref_time(30_000_000_u64) + .saturating_add(T::DbWeight::get().reads(2_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) } // Storage: unknown [0x3a7472616e73616374696f6e5f6c6576656c3a] (r:1 w:1) // Storage: TransactionPause PausedTransactions (r:1 w:1) fn unpause_transaction() -> Weight { - (30_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + Weight::from_ref_time(30_000_000_u64) + .saturating_add(T::DbWeight::get().reads(2_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) } } // For backwards compatibility and tests impl WeightInfo for () { fn pause_transaction() -> Weight { - (30_000_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(2 as Weight)) - .saturating_add(RocksDbWeight::get().writes(2 as Weight)) + Weight::from_ref_time(30_000_000_u64) + .saturating_add(RocksDbWeight::get().reads(2_u64)) + .saturating_add(RocksDbWeight::get().writes(2_u64)) } // Storage: unknown [0x3a7472616e73616374696f6e5f6c6576656c3a] (r:1 w:1) // Storage: TransactionPause PausedTransactions (r:1 w:1) fn unpause_transaction() -> Weight { - (30_000_000 as Weight) - .saturating_add(RocksDbWeight::get().reads(2 as Weight)) - .saturating_add(RocksDbWeight::get().writes(2 as Weight)) + Weight::from_ref_time(30_000_000_u64) + .saturating_add(RocksDbWeight::get().reads(2_u64)) + .saturating_add(RocksDbWeight::get().writes(2_u64)) } } diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 108c0888b..5c318a827 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -24,79 +24,82 @@ hex-literal={ version="0.3.4", optional=true } log={ version="0.4.14", default-features=false } # primitives -sp-authority-discovery={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-consensus-babe ={ version="0.10.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-block-builder ={ git='https://github.com/paritytech/substrate.git', branch="master", default-features=false, version="4.0.0-dev" } -sp-inherents ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -node-primitives ={ version="2.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-offchain ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-core ={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-std ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-api ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-runtime ={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-keyring ={ version="6.0.0", optional=true, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-transaction-pool ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-version ={ version="5.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -sp-io ={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +sp-authority-discovery={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-consensus-babe ={ version="0.10.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-block-builder ={ git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30", default-features=false, version="4.0.0-dev" } +sp-inherents ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +node-primitives ={ version="2.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-offchain ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-core ={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-std ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-api ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-runtime ={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-staking ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-keyring ={ version="6.0.0", optional=true, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-session ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-transaction-pool ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-version ={ version="5.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-npos-elections ={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +sp-io ={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } # frame dependencies -frame-executive={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -frame-benchmarking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master", optional=true } -frame-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -frame-system={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -frame-system-benchmarking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master", optional=true } -frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -frame-system-rpc-runtime-api={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -frame-try-runtime={ version="0.10.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master", optional=true } -pallet-assets={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-authority-discovery={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-authorship={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-babe={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-bags-list={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-balances={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-bounties={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-collective={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-contracts={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-contracts-primitives={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-contracts-rpc-runtime-api={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-conviction-voting={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-democracy={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-election-provider-multi-phase={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-elections-phragmen={ version="5.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-grandpa={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-im-online={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-indices={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-identity={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-lottery={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-membership={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-multisig={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-offences={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-offences-benchmarking={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master", default-features=false, optional=true } -pallet-preimage={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-proxy={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-randomness-collective-flip={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-referenda={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-recovery={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +frame-executive={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-benchmarking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30", optional=true } +frame-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-system={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-system-benchmarking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30", optional=true } +frame-election-provider-support={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-system-rpc-runtime-api={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +frame-try-runtime={ version="0.10.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30", optional=true } +pallet-assets={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-authority-discovery={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-authorship={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-babe={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-bags-list={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-balances={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-bounties={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-collective={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-contracts={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-contracts-primitives={ version="6.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-conviction-voting={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-democracy={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-election-provider-multi-phase={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-election-provider-support-benchmarking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30", optional=true } +pallet-elections-phragmen={ version="5.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-grandpa={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-im-online={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-indices={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-identity={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-lottery={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-membership={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-multisig={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-offences={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-offences-benchmarking={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30", default-features=false, optional=true } +pallet-preimage={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-proxy={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-randomness-collective-flip={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-referenda={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-recovery={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } pallet-session={ version="4.0.0-dev", features=[ "historical", -], git='https://github.com/paritytech/substrate.git', branch="master", default-features=false } -pallet-session-benchmarking={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master", default-features=false, optional=true } -pallet-staking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-staking-reward-curve={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-scheduler={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-society={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-sudo={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-timestamp={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-tips={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-treasury={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-utility={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-transaction-payment={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-transaction-payment-rpc-runtime-api={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-transaction-storage={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } -pallet-vesting={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="master" } +], git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30", default-features=false } +pallet-session-benchmarking={ version="4.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30", default-features=false, optional=true } +pallet-staking={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-staking-reward-curve={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-scheduler={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-society={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-sudo={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-timestamp={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-tips={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-treasury={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-utility={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-transaction-payment={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-transaction-payment-rpc-runtime-api={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-transaction-storage={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-nomination-pools={ version="1.0.0", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-nomination-pools-benchmarking={ version="1.0.0", default-features=false, optional=true, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-nomination-pools-runtime-api={ version="1.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } +pallet-vesting={ version="4.0.0-dev", default-features=false, git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } pallet-propagation ={ version='3.0.0-monthly-2021-10', default-features=false, path='../pallets/propagation' } pallet-relayer ={ version='3.0.0-monthly-2021-10', default-features=false, path='../pallets/relayer' } @@ -107,7 +110,7 @@ pallet-transaction-pause={ version='3.0.0-monthly-2021-10', default-features=fal pallet-free-tx ={ version='3.0.0-monthly-2021-10', default-features=false, path='../pallets/free-tx' } substrate-common ={ path="../crypto/substrate-common", default-features=false } [build-dependencies] -substrate-wasm-builder={ version="5.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="master" } +substrate-wasm-builder={ version="5.0.0-dev", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } [features] default=["std"] @@ -129,7 +132,6 @@ std=[ "pallet-contracts/std", "pallet-constraints/std", "pallet-contracts-primitives/std", - "pallet-contracts-rpc-runtime-api/std", "pallet-conviction-voting/std", "pallet-democracy/std", "pallet-elections-phragmen/std", @@ -154,6 +156,9 @@ std=[ "pallet-proxy/std", "sp-core/std", "pallet-randomness-collective-flip/std", + "pallet-nomination-pools/std", + "pallet-nomination-pools-runtime-api/std", + "pallet-nomination-pools-benchmarking?/std", "sp-std/std", "pallet-session/std", "sp-api/std", @@ -193,6 +198,7 @@ runtime-benchmarks=[ "frame-support/runtime-benchmarks", "frame-system/runtime-benchmarks", "pallet-election-provider-multi-phase/runtime-benchmarks", + "pallet-election-provider-support-benchmarking/runtime-benchmarks", "sp-runtime/runtime-benchmarks", "pallet-assets/runtime-benchmarks", "pallet-babe/runtime-benchmarks", @@ -201,6 +207,7 @@ runtime-benchmarks=[ "pallet-bounties/runtime-benchmarks", "pallet-collective/runtime-benchmarks", "pallet-constraints/runtime-benchmarks", + "pallet-nomination-pools-benchmarking/runtime-benchmarks", "pallet-conviction-voting/runtime-benchmarks", "pallet-democracy/runtime-benchmarks", "pallet-elections-phragmen/runtime-benchmarks", @@ -227,9 +234,9 @@ runtime-benchmarks=[ "pallet-treasury/runtime-benchmarks", "pallet-utility/runtime-benchmarks", "pallet-vesting/runtime-benchmarks", - "pallet-offences-benchmarking", - "pallet-session-benchmarking", - "frame-system-benchmarking", + "pallet-offences-benchmarking/runtime-benchmarks", + "pallet-session-benchmarking/runtime-benchmarks", + "frame-system-benchmarking/runtime-benchmarks", "hex-literal", ] try-runtime=[ @@ -240,6 +247,7 @@ try-runtime=[ "pallet-authority-discovery/try-runtime", "pallet-authorship/try-runtime", "pallet-babe/try-runtime", + "pallet-nomination-pools/try-runtime", "pallet-balances/try-runtime", "pallet-bounties/try-runtime", "pallet-collective/try-runtime", diff --git a/runtime/src/impls.rs b/runtime/src/impls.rs index afad6ee4b..c3ddc314f 100644 --- a/runtime/src/impls.rs +++ b/runtime/src/impls.rs @@ -18,6 +18,7 @@ //! Some configurable implementations as associated type for the substrate runtime. use frame_support::traits::{Currency, OnUnbalanced}; +use sp_std::prelude::*; use crate::{Authorship, Balances, NegativeImbalance}; @@ -32,7 +33,10 @@ impl OnUnbalanced for Author { #[cfg(test)] mod multiplier_tests { - use frame_support::weights::{DispatchClass, Weight, WeightToFeePolynomial}; + use frame_support::{ + dispatch::DispatchClass, + weights::{Weight, WeightToFee, WeightToFeePolynomial}, + }; use pallet_transaction_payment::{Multiplier, TargetedFeeAdjustment}; use sp_runtime::{ assert_eq_error_rate, @@ -67,7 +71,6 @@ mod multiplier_tests { >::convert(fm) } - // update based on reference impl. fn truth_value_update(block_weight: Weight, previous: Multiplier) -> Multiplier { let accuracy = Multiplier::accuracy() as f64; let previous_float = previous.into_inner() as f64 / accuracy; @@ -75,13 +78,13 @@ mod multiplier_tests { let previous_float = previous_float.max(min_multiplier().into_inner() as f64 / accuracy); // maximum tx weight - let m = max_normal() as f64; + let m = max_normal().ref_time() as f64; // block weight always truncated to max weight - let block_weight = (block_weight as f64).min(m); + let block_weight = (block_weight.ref_time() as f64).min(m); let v: f64 = AdjustmentVariable::get().to_float(); // Ideal saturation in terms of weight - let ss = target() as f64; + let ss = target().ref_time() as f64; // Current saturation in terms of weight let s = block_weight; @@ -105,9 +108,9 @@ mod multiplier_tests { fn truth_value_update_poc_works() { let fm = Multiplier::saturating_from_rational(1, 2); let test_set = vec![ - (0, fm), - (100, fm), - (1000, fm), + (Weight::zero(), fm), + (Weight::from_ref_time(100), fm), + (Weight::from_ref_time(1000), fm), (target(), fm), (max_normal() / 2, fm), (max_normal(), fm), @@ -135,9 +138,10 @@ mod multiplier_tests { } #[test] + fn multiplier_cannot_go_below_limit() { // will not go any further below even if block is empty. - run_with_system_weight(0, || { + run_with_system_weight(Weight::zero(), || { let next = runtime_multiplier_update(min_multiplier()); assert_eq!(next, min_multiplier()); }) @@ -155,7 +159,7 @@ mod multiplier_tests { // 1 < 0.00001 * k * 0.1875 // 10^9 / 1875 < k // k > 533_333 ~ 18,5 days. - run_with_system_weight(0, || { + run_with_system_weight(Weight::zero(), || { // start from 1, the default. let mut fm = Multiplier::one(); let mut iterations: u64 = 0; @@ -191,7 +195,8 @@ mod multiplier_tests { // `cargo test congested_chain_simulation -- --nocapture` to get some insight. // almost full. The entire quota of normal transactions is taken. - let block_weight = BlockWeights::get().get(DispatchClass::Normal).max_total.unwrap() - 100; + let block_weight = BlockWeights::get().get(DispatchClass::Normal).max_total.unwrap() + - Weight::from_ref_time(100); // Default substrate weight. let tx_weight = frame_support::weights::constants::ExtrinsicBaseWeight::get(); @@ -211,7 +216,9 @@ mod multiplier_tests { fm = next; iterations += 1; let fee = - ::WeightToFee::calc(&tx_weight); + ::WeightToFee::weight_to_fee( + &tx_weight, + ); let adjusted_fee = fm.saturating_mul_acc_int(fee); println!( "iteration {}, new fm = {:?}. Fee at this point is: {} units / {} millicents, \ @@ -226,7 +233,6 @@ mod multiplier_tests { } }); } - #[test] fn stateless_weight_mul() { let fm = Multiplier::saturating_from_rational(1, 2); @@ -313,27 +319,27 @@ mod multiplier_tests { #[test] fn weight_to_fee_should_not_overflow_on_large_weights() { - let kb = 1024 as Weight; - let mb = kb * kb; + let kb = Weight::from_ref_time(1024); + let mb = 1024u64 * kb; let max_fm = Multiplier::saturating_from_integer(i128::MAX); // check that for all values it can compute, correctly. vec![ - 0, - 1, - 10, - 1000, + Weight::zero(), + Weight::from_ref_time(1), + Weight::from_ref_time(10), + Weight::from_ref_time(1000), kb, - 10 * kb, - 100 * kb, + 10u64 * kb, + 100u64 * kb, mb, - 10 * mb, - 2147483647, - 4294967295, + 10u64 * mb, + Weight::from_ref_time(2147483647), + Weight::from_ref_time(4294967295), BlockWeights::get().max_block / 2, BlockWeights::get().max_block, - Weight::max_value() / 2, - Weight::max_value(), + Weight::MAX / 2, + Weight::MAX, ] .into_iter() .for_each(|i| { @@ -346,7 +352,7 @@ mod multiplier_tests { // Some values that are all above the target and will cause an increase. let t = target(); - vec![t + 100, t * 2, t * 4].into_iter().for_each(|i| { + vec![t + Weight::from_ref_time(100), t * 2, t * 4].into_iter().for_each(|i| { run_with_system_weight(i, || { let fm = runtime_multiplier_update(max_fm); // won't grow. The convert saturates everything. diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index c6af0f026..756709ad7 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -24,16 +24,21 @@ #![allow(unused_imports)] use codec::{Decode, Encode, MaxEncodedLen}; -use frame_election_provider_support::{onchain, ExtendedBalance, SequentialPhragmen, VoteWeight}; +use frame_election_provider_support::{ + onchain, BalancingConfig, ElectionDataProvider, ExtendedBalance, SequentialPhragmen, VoteWeight, +}; use frame_support::{ - construct_runtime, parameter_types, + construct_runtime, + dispatch::DispatchClass, + pallet_prelude::Get, + parameter_types, traits::{ - ConstU16, ConstU32, Contains, Currency, EnsureOneOf, EqualPrivilegeOnly, Imbalance, + ConstU16, ConstU32, Contains, Currency, EitherOfDiverse, EqualPrivilegeOnly, Imbalance, InstanceFilter, KeyOwnerProofSystem, LockIdentifier, OnUnbalanced, U128CurrencyToVote, }, weights::{ constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight, WEIGHT_PER_SECOND}, - DispatchClass, IdentityFee, Weight, + IdentityFee, Weight, }, PalletId, RuntimeDebug, }; @@ -47,6 +52,7 @@ pub use node_primitives::{AccountId, Signature}; use node_primitives::{AccountIndex, Balance, BlockNumber, Hash, Index, Moment}; #[cfg(any(feature = "std", test))] pub use pallet_balances::Call as BalancesCall; +use pallet_election_provider_multi_phase::SolutionAccuracyOf; use pallet_grandpa::{ fg_primitives, AuthorityId as GrandpaId, AuthorityList as GrandpaAuthorityList, }; @@ -71,7 +77,7 @@ use sp_runtime::{ SaturatedConversion, StaticLookup, }, transaction_validity::{TransactionPriority, TransactionSource, TransactionValidity}, - ApplyExtrinsicResult, FixedPointNumber, Perbill, Percent, Permill, Perquintill, + ApplyExtrinsicResult, FixedPointNumber, FixedU128, Perbill, Percent, Permill, Perquintill, }; use sp_std::prelude::*; #[cfg(any(feature = "std", test))] @@ -159,7 +165,9 @@ const AVERAGE_ON_INITIALIZE_RATIO: Perbill = Perbill::from_percent(10); /// by Operational extrinsics. const NORMAL_DISPATCH_RATIO: Perbill = Perbill::from_percent(75); /// We allow for 2 seconds of compute with a 6 second average block time. -const MAXIMUM_BLOCK_WEIGHT: Weight = 2 * WEIGHT_PER_SECOND; +const MAXIMUM_BLOCK_WEIGHT: Weight = WEIGHT_PER_SECOND.saturating_mul(2_u64); + +pub const EXISTENTIAL_DEPOSIT: Balance = DOLLARS; parameter_types! { pub const BlockHashCount: BlockNumber = 2400; @@ -190,9 +198,9 @@ parameter_types! { const_assert!(NORMAL_DISPATCH_RATIO.deconstruct() >= AVERAGE_ON_INITIALIZE_RATIO.deconstruct()); pub struct BaseCallFilter; -impl Contains for BaseCallFilter { - fn contains(call: &Call) -> bool { - let is_core_call = matches!(call, Call::System(_) | Call::Timestamp(_)); +impl Contains for BaseCallFilter { + fn contains(call: &RuntimeCall) -> bool { + let is_core_call = matches!(call, RuntimeCall::System(_) | RuntimeCall::Timestamp(_)); if is_core_call { // always allow core call return true; @@ -202,8 +210,8 @@ impl Contains for BaseCallFilter { pallet_transaction_pause::PausedTransactionFilter::::contains(call); let system_reject = matches!( call, - Call::Staking(pallet_staking::Call::withdraw_unbonded { .. }) - | Call::Staking(pallet_staking::Call::validate { .. }) + RuntimeCall::Staking(pallet_staking::Call::withdraw_unbonded { .. }) + | RuntimeCall::Staking(pallet_staking::Call::validate { .. }) ); if is_paused || system_reject { // no paused call @@ -221,9 +229,7 @@ impl frame_system::Config for Runtime { type BlockLength = RuntimeBlockLength; type BlockNumber = BlockNumber; type BlockWeights = RuntimeBlockWeights; - type Call = Call; type DbWeight = RocksDbWeight; - type Event = Event; type Hash = Hash; type Hashing = BlakeTwo256; type Header = generic::Header; @@ -233,8 +239,10 @@ impl frame_system::Config for Runtime { type OnKilledAccount = (); type OnNewAccount = (); type OnSetCode = (); - type Origin = Origin; type PalletInfo = PalletInfo; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; type SS58Prefix = SS58Prefix; type SystemWeightInfo = frame_system::weights::SubstrateWeight; type Version = Version; @@ -243,9 +251,9 @@ impl frame_system::Config for Runtime { impl pallet_randomness_collective_flip::Config for Runtime {} impl pallet_utility::Config for Runtime { - type Call = Call; - type Event = Event; type PalletsOrigin = OriginCaller; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_utility::weights::SubstrateWeight; } @@ -258,12 +266,12 @@ parameter_types! { } impl pallet_multisig::Config for Runtime { - type Call = Call; type Currency = Balances; type DepositBase = DepositBase; type DepositFactor = DepositFactor; - type Event = Event; type MaxSignatories = MaxSignatories; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_multisig::weights::SubstrateWeight; } @@ -301,26 +309,26 @@ pub enum ProxyType { impl Default for ProxyType { fn default() -> Self { Self::Any } } -impl InstanceFilter for ProxyType { - fn filter(&self, c: &Call) -> bool { +impl InstanceFilter for ProxyType { + fn filter(&self, c: &RuntimeCall) -> bool { match self { ProxyType::Any => true, ProxyType::NonTransfer => !matches!( c, - Call::Balances(..) - | Call::Vesting(pallet_vesting::Call::vested_transfer { .. }) - | Call::Indices(pallet_indices::Call::transfer { .. }) + RuntimeCall::Balances(..) + | RuntimeCall::Vesting(pallet_vesting::Call::vested_transfer { .. }) + | RuntimeCall::Indices(pallet_indices::Call::transfer { .. }) ), ProxyType::Governance => matches!( c, - Call::Democracy(..) - | Call::Council(..) - | Call::Society(..) - | Call::TechnicalCommittee(..) - | Call::Elections(..) - | Call::Treasury(..) + RuntimeCall::Democracy(..) + | RuntimeCall::Council(..) + | RuntimeCall::Society(..) + | RuntimeCall::TechnicalCommittee(..) + | RuntimeCall::Elections(..) + | RuntimeCall::Treasury(..) ), - ProxyType::Staking => matches!(c, Call::Staking(..)), + ProxyType::Staking => matches!(c, RuntimeCall::Staking(..)), } } @@ -338,15 +346,15 @@ impl InstanceFilter for ProxyType { impl pallet_proxy::Config for Runtime { type AnnouncementDepositBase = AnnouncementDepositBase; type AnnouncementDepositFactor = AnnouncementDepositFactor; - type Call = Call; type CallHasher = BlakeTwo256; type Currency = Balances; - type Event = Event; type MaxPending = MaxPending; type MaxProxies = MaxProxies; type ProxyDepositBase = ProxyDepositBase; type ProxyDepositFactor = ProxyDepositFactor; type ProxyType = ProxyType; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_proxy::weights::SubstrateWeight; } @@ -387,12 +395,12 @@ impl pallet_indices::Config for Runtime { type AccountIndex = AccountIndex; type Currency = Balances; type Deposit = IndexDeposit; - type Event = Event; + type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_indices::weights::SubstrateWeight; } parameter_types! { - pub const ExistentialDeposit: Balance = DOLLARS; + pub const ExistentialDeposit: Balance = EXISTENTIAL_DEPOSIT; // For weight estimation, we assume that the most locks on an individual account will be 50. // This number may need to be adjusted in the future if this assumption no longer holds true. pub const MaxLocks: u32 = 50; @@ -403,11 +411,11 @@ impl pallet_balances::Config for Runtime { type AccountStore = frame_system::Pallet; type Balance = Balance; type DustRemoval = (); - type Event = Event; type ExistentialDeposit = ExistentialDeposit; type MaxLocks = MaxLocks; type MaxReserves = MaxReserves; type ReserveIdentifier = [u8; 8]; + type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_balances::weights::SubstrateWeight; } @@ -422,9 +430,10 @@ parameter_types! { impl pallet_transaction_payment::Config for Runtime { type FeeMultiplierUpdate = TargetedFeeAdjustment; + type LengthToFee = IdentityFee; type OnChargeTransaction = CurrencyAdapter; type OperationalFeeMultiplier = OperationalFeeMultiplier; - type TransactionByteFee = TransactionByteFee; + type RuntimeEvent = RuntimeEvent; type WeightToFee = IdentityFee; } @@ -460,9 +469,9 @@ impl_opaque_keys! { } impl pallet_session::Config for Runtime { - type Event = Event; type Keys = SessionKeys; type NextSessionRotation = Babe; + type RuntimeEvent = RuntimeEvent; type SessionHandler = ::KeyTypeIdProviders; type SessionManager = pallet_session::historical::NoteHistoricalRoot; type ShouldEndSession = Babe; @@ -495,23 +504,44 @@ parameter_types! { pub const MaxNominatorRewardedPerValidator: u32 = 256; pub const OffendingValidatorsThreshold: Perbill = Perbill::from_percent(17); pub OffchainRepeat: BlockNumber = 5; + pub HistoryDepth: u32 = 84; } pub struct OnChainSeqPhragmen; -impl onchain::ExecutionConfig for OnChainSeqPhragmen { +impl onchain::Config for OnChainSeqPhragmen { type DataProvider = ::DataProvider; type Solver = SequentialPhragmen< AccountId, pallet_election_provider_multi_phase::SolutionAccuracyOf, >; type System = Runtime; + type WeightInfo = frame_election_provider_support::weights::SubstrateWeight; } -impl onchain::BoundedExecutionConfig for OnChainSeqPhragmen { +impl onchain::BoundedConfig for OnChainSeqPhragmen { type TargetsBound = ConstU32<2_000>; type VotersBound = ConstU32<20_000>; } +impl pallet_election_provider_multi_phase::MinerConfig for Runtime { + type AccountId = AccountId; + type MaxLength = MinerMaxLength; + type MaxVotesPerVoter = + <::DataProvider as ElectionDataProvider>::MaxVotesPerVoter; + type MaxWeight = MinerMaxWeight; + type Solution = NposSolution16; + + // The unsigned submissions have to respect the weight of the submit_unsigned call, thus their + // weight estimate function is wired to this call's weight. + fn solution_weight(v: u32, t: u32, a: u32, d: u32) -> Weight { + < + ::WeightInfo + as + pallet_election_provider_multi_phase::WeightInfo + >::submit_unsigned(v, t, a, d) + } +} + pub struct StakingBenchmarkingConfig; impl pallet_staking::BenchmarkingConfig for StakingBenchmarkingConfig { type MaxNominators = ConstU32<1000>; @@ -522,29 +552,33 @@ impl pallet_staking::Config for Runtime { type BenchmarkingConfig = StakingBenchmarkingConfig; type BondingDuration = BondingDuration; type Currency = Balances; + type CurrencyBalance = Balance; type CurrencyToVote = U128CurrencyToVote; type ElectionProvider = ElectionProviderMultiPhase; type EraPayout = pallet_staking::ConvertCurve; - type Event = Event; type GenesisElectionProvider = onchain::UnboundedExecution; + type HistoryDepth = HistoryDepth; type MaxNominations = MaxNominations; type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; type MaxUnlockingChunks = ConstU32<32>; type NextNewSession = Session; type OffendingValidatorsThreshold = OffendingValidatorsThreshold; + type OnStakerSlash = (); // send the slashed funds to the treasury. type Reward = (); type RewardRemainder = Treasury; + type RuntimeEvent = RuntimeEvent; type SessionInterface = Self; // rewards are minted from the void type SessionsPerEra = SessionsPerEra; type Slash = Treasury; /// A super-majority of the council can cancel the slash. - type SlashCancelOrigin = EnsureOneOf< + type SlashCancelOrigin = EitherOfDiverse< EnsureRoot, pallet_collective::EnsureProportionAtLeast, >; type SlashDeferDuration = SlashDeferDuration; + type TargetList = pallet_staking::UseValidatorsMap; type UnixTime = Timestamp; type VoterList = BagsList; type WeightInfo = pallet_staking::weights::SubstrateWeight; @@ -555,37 +589,34 @@ parameter_types! { } impl pallet_staking_extension::Config for Runtime { type Currency = Balances; - type Event = Event; type MaxEndpointLength = MaxEndpointLength; + type RuntimeEvent = RuntimeEvent; type WeightInfo = weights::pallet_staking_extension::WeightInfo; } parameter_types! { - // phase durations. 1/4 of the last session for each. - pub const SignedPhase: u32 = EPOCH_DURATION_IN_BLOCKS / 4; - pub const UnsignedPhase: u32 = EPOCH_DURATION_IN_BLOCKS / 4; - - // signed config - pub const SignedMaxSubmissions: u32 = 10; - pub const SignedRewardBase: Balance = DOLLARS; - pub const SignedDepositBase: Balance = DOLLARS; - pub const SignedDepositByte: Balance = CENTS; - - pub SolutionImprovementThreshold: Perbill = Perbill::from_rational(1u32, 10_000); - - // miner configs - pub const MultiPhaseUnsignedPriority: TransactionPriority = StakingUnsignedPriority::get() - 1u64; - pub MinerMaxWeight: Weight = RuntimeBlockWeights::get() - .get(DispatchClass::Normal) - .max_extrinsic.expect("Normal extrinsics have a weight limit configured; qed") - .saturating_sub(BlockExecutionWeight::get()); - // Solution can occupy 90% of normal block size - pub MinerMaxLength: u32 = Perbill::from_rational(9u32, 10) * - *RuntimeBlockLength::get() - .max - .get(DispatchClass::Normal); - - pub const VoterSnapshotPerBlock: u32 = 10_000; + // phase durations. 1/4 of the last session for each. + pub const SignedPhase: u32 = EPOCH_DURATION_IN_BLOCKS / 4; + pub const UnsignedPhase: u32 = EPOCH_DURATION_IN_BLOCKS / 4; + + // signed config + pub const SignedRewardBase: Balance = DOLLARS; + pub const SignedDepositBase: Balance = DOLLARS; + pub const SignedDepositByte: Balance = CENTS; + + pub BetterUnsignedThreshold: Perbill = Perbill::from_rational(1u32, 10_000); + + // miner configs + pub const MultiPhaseUnsignedPriority: TransactionPriority = StakingUnsignedPriority::get() - 1u64; + pub MinerMaxWeight: Weight = RuntimeBlockWeights::get() + .get(DispatchClass::Normal) + .max_extrinsic.expect("Normal extrinsics have a weight limit configured; qed") + .saturating_sub(BlockExecutionWeight::get()); + // Solution can occupy 90% of normal block size + pub MinerMaxLength: u32 = Perbill::from_rational(9u32, 10) * + *RuntimeBlockLength::get() + .max + .get(DispatchClass::Normal); } frame_election_provider_support::generate_solution_type!( @@ -621,12 +652,10 @@ pub const MINER_MAX_ITERATIONS: u32 = 10; /// A source of random balance for NposSolver, which is meant to be run by the OCW election miner. pub struct OffchainRandomBalancing; -impl frame_support::pallet_prelude::Get> - for OffchainRandomBalancing -{ - fn get() -> Option<(usize, sp_npos_elections::ExtendedBalance)> { +impl Get> for OffchainRandomBalancing { + fn get() -> Option { use sp_runtime::traits::TrailingZeroInput; - let iters = match MINER_MAX_ITERATIONS { + let iterations = match MINER_MAX_ITERATIONS { 0 => 0, max => { let seed = sp_io::offchain::random_seed(); @@ -637,43 +666,40 @@ impl frame_support::pallet_prelude::Get; type ForceOrigin = EnsureRootOrHalfCouncil; type GovernanceFallback = onchain::BoundedExecution; type MaxElectableTargets = ConstU16<{ u16::MAX }>; type MaxElectingVoters = MaxElectingVoters; - type MinerMaxLength = MinerMaxLength; - type MinerMaxWeight = MinerMaxWeight; + type MinerConfig = Self; type MinerTxPriority = MultiPhaseUnsignedPriority; type OffchainRepeat = OffchainRepeat; // burn slashes type RewardHandler = (); + type RuntimeEvent = RuntimeEvent; type SignedDepositBase = SignedDepositBase; type SignedDepositByte = SignedDepositByte; type SignedDepositWeight = (); - type SignedMaxSubmissions = SignedMaxSubmissions; + type SignedMaxRefunds = ConstU32<3>; + type SignedMaxSubmissions = ConstU32<10>; type SignedMaxWeight = MinerMaxWeight; type SignedPhase = SignedPhase; type SignedRewardBase = SignedRewardBase; type SlashHandler = (); - type Solution = NposSolution16; - type SolutionImprovementThreshold = SolutionImprovementThreshold; - type Solver = frame_election_provider_support::SequentialPhragmen< - AccountId, - pallet_election_provider_multi_phase::SolutionAccuracyOf, - OffchainRandomBalancing, - >; + type Solver = SequentialPhragmen, OffchainRandomBalancing>; type UnsignedPhase = UnsignedPhase; type WeightInfo = pallet_election_provider_multi_phase::weights::SubstrateWeight; } @@ -694,7 +720,7 @@ impl pallet_democracy::Config for Runtime { type BlacklistOrigin = EnsureRoot; // To cancel a proposal before it has been passed, the technical committee must be unanimous or // Root must agree. - type CancelProposalOrigin = EnsureOneOf< + type CancelProposalOrigin = EitherOfDiverse< EnsureRoot, pallet_collective::EnsureProportionAtLeast, >; @@ -704,7 +730,6 @@ impl pallet_democracy::Config for Runtime { type CooloffPeriod = CooloffPeriod; type Currency = Balances; type EnactmentPeriod = EnactmentPeriod; - type Event = Event; /// A unanimous council can have the next scheduled referendum be a straight default-carries /// (NTB) vote. type ExternalDefaultOrigin = @@ -731,7 +756,8 @@ impl pallet_democracy::Config for Runtime { type OperationalPreimageOrigin = pallet_collective::EnsureMember; type PalletsOrigin = OriginCaller; type PreimageByteDeposit = PreimageByteDeposit; - type Proposal = Call; + type Proposal = RuntimeCall; + type RuntimeEvent = RuntimeEvent; type Scheduler = Scheduler; type Slash = Treasury; // Any single technical committee member may veto a coming council proposal, however they can @@ -751,12 +777,12 @@ parameter_types! { type CouncilCollective = pallet_collective::Instance1; impl pallet_collective::Config for Runtime { type DefaultVote = pallet_collective::PrimeDefaultVote; - type Event = Event; type MaxMembers = CouncilMaxMembers; type MaxProposals = CouncilMaxProposals; type MotionDuration = CouncilMotionDuration; - type Origin = Origin; - type Proposal = Call; + type Proposal = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; type WeightInfo = pallet_collective::weights::SubstrateWeight; } @@ -770,6 +796,8 @@ parameter_types! { pub const DesiredMembers: u32 = 13; pub const DesiredRunnersUp: u32 = 7; pub const ElectionsPhragmenPalletId: LockIdentifier = *b"phrelect"; + pub const MaxCandidates: u32 = 1000; + pub const MaxVoters: u32 = 10 * 1000; } // Make sure that there are no more than `MaxMembers` members elected via elections-phragmen. @@ -782,13 +810,15 @@ impl pallet_elections_phragmen::Config for Runtime { type CurrencyToVote = U128CurrencyToVote; type DesiredMembers = DesiredMembers; type DesiredRunnersUp = DesiredRunnersUp; - type Event = Event; // NOTE: this implies that council's genesis members cannot be set directly and must come from // this module. type InitializeMembers = Council; type KickedMember = (); type LoserCandidate = (); + type MaxCandidates = MaxCandidates; + type MaxVoters = MaxVoters; type PalletId = ElectionsPhragmenPalletId; + type RuntimeEvent = RuntimeEvent; type TermDuration = TermDuration; type VotingBondBase = VotingBondBase; type VotingBondFactor = VotingBondFactor; @@ -804,28 +834,28 @@ parameter_types! { type TechnicalCollective = pallet_collective::Instance2; impl pallet_collective::Config for Runtime { type DefaultVote = pallet_collective::PrimeDefaultVote; - type Event = Event; type MaxMembers = TechnicalMaxMembers; type MaxProposals = TechnicalMaxProposals; type MotionDuration = TechnicalMotionDuration; - type Origin = Origin; - type Proposal = Call; + type Proposal = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; type WeightInfo = pallet_collective::weights::SubstrateWeight; } -type EnsureRootOrHalfCouncil = EnsureOneOf< +type EnsureRootOrHalfCouncil = EitherOfDiverse< EnsureRoot, pallet_collective::EnsureProportionMoreThan, >; impl pallet_membership::Config for Runtime { type AddOrigin = EnsureRootOrHalfCouncil; - type Event = Event; type MaxMembers = TechnicalMaxMembers; type MembershipChanged = TechnicalCommittee; type MembershipInitialized = TechnicalCommittee; type PrimeOrigin = EnsureRootOrHalfCouncil; type RemoveOrigin = EnsureRootOrHalfCouncil; type ResetOrigin = EnsureRootOrHalfCouncil; + type RuntimeEvent = RuntimeEvent; type SwapOrigin = EnsureRootOrHalfCouncil; type WeightInfo = pallet_membership::weights::SubstrateWeight; } @@ -853,25 +883,26 @@ parameter_types! { } impl pallet_treasury::Config for Runtime { - type ApproveOrigin = EnsureOneOf< + type ApproveOrigin = EitherOfDiverse< EnsureRoot, pallet_collective::EnsureProportionAtLeast, >; type Burn = Burn; type BurnDestination = (); type Currency = Balances; - type Event = Event; type MaxApprovals = MaxApprovals; type OnSlash = (); type PalletId = TreasuryPalletId; type ProposalBond = ProposalBond; type ProposalBondMaximum = (); type ProposalBondMinimum = ProposalBondMinimum; - type RejectOrigin = EnsureOneOf< + type RejectOrigin = EitherOfDiverse< EnsureRoot, pallet_collective::EnsureProportionMoreThan, >; + type RuntimeEvent = RuntimeEvent; type SpendFunds = Bounties; + type SpendOrigin = frame_support::traits::NeverEnsureOrigin; type SpendPeriod = SpendPeriod; type WeightInfo = pallet_treasury::weights::SubstrateWeight; } @@ -886,15 +917,15 @@ impl pallet_bounties::Config for Runtime { type CuratorDepositMin = CuratorDepositMin; type CuratorDepositMultiplier = CuratorDepositMultiplier; type DataDepositPerByte = DataDepositPerByte; - type Event = Event; type MaximumReasonLength = MaximumReasonLength; + type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_bounties::weights::SubstrateWeight; } impl pallet_tips::Config for Runtime { type DataDepositPerByte = DataDepositPerByte; - type Event = Event; type MaximumReasonLength = MaximumReasonLength; + type RuntimeEvent = RuntimeEvent; type TipCountdown = TipCountdown; type TipFindersFee = TipFindersFee; type TipReportDepositBase = TipReportDepositBase; @@ -910,15 +941,15 @@ parameter_types! { } impl pallet_scheduler::Config for Runtime { - type Call = Call; - type Event = Event; type MaxScheduledPerBlock = ConstU32<50>; type MaximumWeight = MaximumSchedulerWeight; type NoPreimagePostponement = NoPreimagePostponement; - type Origin = Origin; type OriginPrivilegeCmp = EqualPrivilegeOnly; type PalletsOrigin = OriginCaller; type PreimageProvider = Preimage; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type RuntimeOrigin = RuntimeOrigin; type ScheduleOrigin = EnsureRoot; type WeightInfo = pallet_scheduler::weights::SubstrateWeight; } @@ -934,15 +965,15 @@ impl pallet_preimage::Config for Runtime { type BaseDeposit = PreimageBaseDeposit; type ByteDeposit = PreimageByteDeposit; type Currency = Balances; - type Event = Event; type ManagerOrigin = EnsureRoot; type MaxSize = PreimageMaxSize; + type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_preimage::weights::SubstrateWeight; } impl pallet_sudo::Config for Runtime { - type Call = Call; - type Event = Event; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; } parameter_types! { @@ -956,14 +987,14 @@ parameter_types! { } impl frame_system::offchain::CreateSignedTransaction for Runtime -where Call: From +where RuntimeCall: From { fn create_transaction>( - call: Call, + call: RuntimeCall, public: ::Signer, account: AccountId, nonce: Index, - ) -> Option<(Call, ::SignaturePayload)> { + ) -> Option<(RuntimeCall, ::SignaturePayload)> { let tip = 0; // take the biggest period possible. let period = @@ -1002,29 +1033,29 @@ impl frame_system::offchain::SigningTypes for Runtime { } impl frame_system::offchain::SendTransactionTypes for Runtime -where Call: From +where RuntimeCall: From { type Extrinsic = UncheckedExtrinsic; - type OverarchingCall = Call; + type OverarchingCall = RuntimeCall; } impl pallet_im_online::Config for Runtime { type AuthorityId = ImOnlineId; - type Event = Event; type MaxKeys = MaxKeys; type MaxPeerDataEncodingSize = MaxPeerDataEncodingSize; type MaxPeerInHeartbeats = MaxPeerInHeartbeats; type NextSessionRotation = Babe; type ReportUnresponsiveness = Offences; + type RuntimeEvent = RuntimeEvent; type UnsignedPriority = ImOnlineUnsignedPriority; type ValidatorSet = Historical; type WeightInfo = pallet_im_online::weights::SubstrateWeight; } impl pallet_offences::Config for Runtime { - type Event = Event; type IdentificationTuple = pallet_session::historical::IdentificationTuple; type OnOffenceHandler = Staking; + type RuntimeEvent = RuntimeEvent; } impl pallet_authority_discovery::Config for Runtime { @@ -1032,8 +1063,6 @@ impl pallet_authority_discovery::Config for Runtime { } impl pallet_grandpa::Config for Runtime { - type Call = Call; - type Event = Event; type HandleEquivocation = pallet_grandpa::EquivocationHandler< Self::KeyOwnerIdentification, Offences, @@ -1047,6 +1076,7 @@ impl pallet_grandpa::Config for Runtime { >::Proof; type KeyOwnerProofSystem = Historical; type MaxAuthorities = MaxAuthorities; + type RuntimeEvent = RuntimeEvent; type WeightInfo = (); } @@ -1062,13 +1092,13 @@ parameter_types! { impl pallet_identity::Config for Runtime { type BasicDeposit = BasicDeposit; type Currency = Balances; - type Event = Event; type FieldDeposit = FieldDeposit; type ForceOrigin = EnsureRootOrHalfCouncil; type MaxAdditionalFields = MaxAdditionalFields; type MaxRegistrars = MaxRegistrars; type MaxSubAccounts = MaxSubAccounts; type RegistrarOrigin = EnsureRootOrHalfCouncil; + type RuntimeEvent = RuntimeEvent; type Slashed = Treasury; type SubAccountDeposit = SubAccountDeposit; type WeightInfo = pallet_identity::weights::SubstrateWeight; @@ -1082,13 +1112,14 @@ parameter_types! { } impl pallet_recovery::Config for Runtime { - type Call = Call; type ConfigDepositBase = ConfigDepositBase; type Currency = Balances; - type Event = Event; type FriendDepositFactor = FriendDepositFactor; type MaxFriends = MaxFriends; type RecoveryDeposit = RecoveryDeposit; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type WeightInfo = pallet_recovery::weights::SubstrateWeight; } parameter_types! { @@ -1107,7 +1138,6 @@ impl pallet_society::Config for Runtime { type CandidateDeposit = CandidateDeposit; type ChallengePeriod = ChallengePeriod; type Currency = Balances; - type Event = Event; type FounderSetOrigin = pallet_collective::EnsureProportionMoreThan; type MaxCandidateIntake = MaxCandidateIntake; @@ -1118,6 +1148,7 @@ impl pallet_society::Config for Runtime { type PeriodSpend = PeriodSpend; type Randomness = RandomnessCollectiveFlip; type RotationPeriod = RotationPeriod; + type RuntimeEvent = RuntimeEvent; type SuspensionJudgementOrigin = pallet_society::EnsureFounder; type WrongSideDeduction = WrongSideDeduction; } @@ -1129,8 +1160,8 @@ parameter_types! { impl pallet_vesting::Config for Runtime { type BlockNumberToBalance = ConvertInto; type Currency = Balances; - type Event = Event; type MinVestedTransfer = MinVestedTransfer; + type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_vesting::weights::SubstrateWeight; // `VestingInfo` encode length is 36bytes. 28 schedules gets encoded as 1009 bytes, which is the @@ -1139,15 +1170,65 @@ impl pallet_vesting::Config for Runtime { } impl pallet_transaction_storage::Config for Runtime { - type Call = Call; type Currency = Balances; - type Event = Event; type FeeDestination = (); + type MaxBlockTransactions = + ConstU32<{ pallet_transaction_storage::DEFAULT_MAX_BLOCK_TRANSACTIONS }>; + type MaxTransactionSize = + ConstU32<{ pallet_transaction_storage::DEFAULT_MAX_TRANSACTION_SIZE }>; + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_transaction_storage::weights::SubstrateWeight; } +parameter_types! { + pub const BagThresholds: &'static [u64] = &voter_bags::THRESHOLDS; +} +type VoterBagsListInstance = pallet_bags_list::Instance1; +impl pallet_bags_list::Config for Runtime { + type BagThresholds = BagThresholds; + type RuntimeEvent = RuntimeEvent; + type Score = VoteWeight; + /// The voter bags-list is loosely kept up to date, and the real source of truth for the score + /// of each node is the staking pallet. + type ScoreProvider = Staking; + type WeightInfo = pallet_bags_list::weights::SubstrateWeight; +} + +parameter_types! { + pub const PostUnbondPoolsWindow: u32 = 4; + pub const NominationPoolsPalletId: PalletId = PalletId(*b"py/nopls"); + pub const MaxPointsToBalance: u8 = 10; +} + +use sp_runtime::traits::Convert; +pub struct BalanceToU256; +impl Convert for BalanceToU256 { + fn convert(balance: Balance) -> sp_core::U256 { sp_core::U256::from(balance) } +} +pub struct U256ToBalance; +impl Convert for U256ToBalance { + fn convert(n: sp_core::U256) -> Balance { n.try_into().unwrap_or(Balance::max_value()) } +} + +impl pallet_nomination_pools::Config for Runtime { + type BalanceToU256 = BalanceToU256; + type Currency = Balances; + type CurrencyBalance = Balance; + type MaxMetadataLen = ConstU32<256>; + type MaxPointsToBalance = MaxPointsToBalance; + type MaxUnbonding = ConstU32<8>; + type PalletId = NominationPoolsPalletId; + type PostUnbondingPoolsWindow = PostUnbondPoolsWindow; + type RewardCounter = FixedU128; + type RuntimeEvent = RuntimeEvent; + type StakingInterface = pallet_staking::Pallet; + type U256ToBalance = U256ToBalance; + type WeightInfo = (); +} + impl pallet_propagation::Config for Runtime { - type Event = Event; + type RuntimeEvent = RuntimeEvent; } parameter_types! { @@ -1156,9 +1237,9 @@ parameter_types! { impl pallet_slashing::Config for Runtime { type AuthorityId = pallet_babe::AuthorityId; - type Event = Event; type MinValidators = MinValidators; type ReportBad = Offences; + type RuntimeEvent = RuntimeEvent; type ValidatorIdOf = pallet_staking::StashOf; type ValidatorSet = Historical; } @@ -1169,8 +1250,8 @@ parameter_types! { } impl pallet_relayer::Config for Runtime { - type Event = Event; type PruneBlock = PruneBlock; + type RuntimeEvent = RuntimeEvent; type SigningPartySize = SigningPartySize; type WeightInfo = weights::pallet_relayer::WeightInfo; } @@ -1183,37 +1264,25 @@ parameter_types! { } impl pallet_constraints::Config for Runtime { - type Event = Event; type MaxAddressLength = MaxAddressLengthNum; type MaxWhitelist = MaxWhitelistNum; + type RuntimeEvent = RuntimeEvent; type WeightInfo = weights::pallet_constraints::WeightInfo; } impl pallet_transaction_pause::Config for Runtime { - type Event = Event; - type UpdateOrigin = EnsureOneOf< + type RuntimeEvent = RuntimeEvent; + type UpdateOrigin = EitherOfDiverse< EnsureRoot, pallet_collective::EnsureProportionAtLeast, >; type WeightInfo = weights::pallet_transaction_pause::WeightInfo; } -parameter_types! { - pub const BagThresholds: &'static [u64] = &voter_bags::THRESHOLDS; -} - -impl pallet_bags_list::Config for Runtime { - type BagThresholds = BagThresholds; - type Event = Event; - type Score = VoteWeight; - type ScoreProvider = Staking; - type WeightInfo = pallet_bags_list::weights::SubstrateWeight; -} - impl pallet_free_tx::Config for Runtime { - type Call = Call; - type Event = Event; - type UpdateOrigin = EnsureOneOf< + type RuntimeCall = RuntimeCall; + type RuntimeEvent = RuntimeEvent; + type UpdateOrigin = EitherOfDiverse< EnsureRoot, pallet_collective::EnsureProportionAtLeast, >; @@ -1267,15 +1336,18 @@ construct_runtime!( Bounties: pallet_bounties = 46, Tips: pallet_tips = 47, TransactionStorage: pallet_transaction_storage = 48, - BagsList: pallet_bags_list = 49, + BagsList: pallet_bags_list:: = 49, + NominationPools: pallet_nomination_pools = 50, // custom pallets - Propagation: pallet_propagation = 50, - Relayer: pallet_relayer = 51, - Slashing: pallet_slashing = 52, - Constraints: pallet_constraints = 53, - TransactionPause: pallet_transaction_pause = 54, - FreeTx: pallet_free_tx = 55 + Propagation: pallet_propagation = 51, + Relayer: pallet_relayer = 52, + Slashing: pallet_slashing = 53, + Constraints: pallet_constraints = 54, + TransactionPause: pallet_transaction_pause = 55, + FreeTx: pallet_free_tx = 56, + + } ); @@ -1305,11 +1377,12 @@ pub type SignedExtra = ( pallet_free_tx::ValidateElectricityPayment, ); /// Unchecked extrinsic type as expected by this runtime. -pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; +pub type UncheckedExtrinsic = + generic::UncheckedExtrinsic; /// The payload being signed in transactions. -pub type SignedPayload = generic::SignedPayload; +pub type SignedPayload = generic::SignedPayload; /// Extrinsic type that has already been checked. -pub type CheckedExtrinsic = generic::CheckedExtrinsic; +pub type CheckedExtrinsic = generic::CheckedExtrinsic; /// Executive: handles dispatch to the various modules. pub type Executive = frame_executive::Executive< Runtime, @@ -1317,9 +1390,12 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPalletsWithSystem, - pallet_bags_list::migrations::CheckCounterPrefix, + // TODO JH fix this + Migrations, >; +type Migrations = (pallet_nomination_pools::migration::v2::MigrateToV2,); + #[cfg(feature = "runtime-benchmarks")] #[macro_use] extern crate frame_benchmarking; @@ -1336,6 +1412,7 @@ mod benches { [pallet_constraints, Constraints] [pallet_democracy, Democracy] [pallet_election_provider_multi_phase, ElectionProviderMultiPhase] + [pallet_election_provider_support_benchmarking, EPSBench::] [pallet_elections_phragmen, Elections] [pallet_free_tx, FreeTx] [pallet_staking_extension, StakingExtension] @@ -1343,6 +1420,7 @@ mod benches { [pallet_im_online, ImOnline] [pallet_indices, Indices] [pallet_membership, TechnicalMembership] + [pallet_nomination_pools, NominationPoolsBench::] [pallet_multisig, Multisig] [pallet_offences, OffencesBench::] [pallet_preimage, Preimage] @@ -1412,11 +1490,11 @@ impl_runtime_apis! { } } - impl sp_offchain::OffchainWorkerApi for Runtime { - fn offchain_worker(header: &::Header) { - Executive::offchain_worker(header) + impl sp_offchain::OffchainWorkerApi for Runtime { + fn offchain_worker(header: &::Header) { + Executive::offchain_worker(header) + } } - } impl fg_primitives::GrandpaApi for Runtime { fn grandpa_authorities() -> GrandpaAuthorityList { @@ -1455,21 +1533,17 @@ impl_runtime_apis! { } impl sp_consensus_babe::BabeApi for Runtime { - fn configuration() -> sp_consensus_babe::BabeGenesisConfiguration { - // The choice of `c` parameter (where `1 - c` represents the - // probability of a slot being empty), is done in accordance to the - // slot duration and expected target block time, for safely - // resisting network delays of maximum two seconds. - // - sp_consensus_babe::BabeGenesisConfiguration { - slot_duration: Babe::slot_duration(), - epoch_length: EpochDuration::get(), - c: BABE_GENESIS_EPOCH_CONFIG.c, - genesis_authorities: Babe::authorities().to_vec(), - randomness: Babe::randomness(), - allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, - } - } + fn configuration() -> sp_consensus_babe::BabeConfiguration { + let epoch_config = Babe::epoch_config().unwrap_or(BABE_GENESIS_EPOCH_CONFIG); + sp_consensus_babe::BabeConfiguration { + slot_duration: Babe::slot_duration(), + epoch_length: EpochDuration::get(), + c: epoch_config.c, + authorities: Babe::authorities().to_vec(), + randomness: Babe::randomness(), + allowed_slots: epoch_config.allowed_slots, + } + } fn current_epoch_start() -> sp_consensus_babe::Slot { Babe::current_epoch_start() @@ -1556,70 +1630,67 @@ impl_runtime_apis! { #[cfg(feature = "runtime-benchmarks")] impl frame_benchmarking::Benchmark for Runtime { fn benchmark_metadata(extra: bool) -> ( - Vec, - Vec, - ) { - use frame_benchmarking::{baseline, Benchmarking, BenchmarkList}; - use frame_support::traits::StorageInfoTrait; - - // Trying to add benchmarks directly to the Session Pallet caused cyclic dependency - // issues. To get around that, we separated the Session benchmarks into its own crate, - // which is why we need these two lines below. - use pallet_session_benchmarking::Pallet as SessionBench; - use pallet_offences_benchmarking::Pallet as OffencesBench; - use frame_system_benchmarking::Pallet as SystemBench; - use baseline::Pallet as BaselineBench; - - let mut list = Vec::::new(); - list_benchmarks!(list, extra); - - let storage_info = AllPalletsWithSystem::storage_info(); - - return (list, storage_info) - } + Vec, + Vec, + ) { + use frame_benchmarking::{baseline, Benchmarking, BenchmarkList}; + use frame_support::traits::StorageInfoTrait; + + // Trying to add benchmarks directly to the Session Pallet caused cyclic dependency + // issues. To get around that, we separated the Session benchmarks into its own crate, + // which is why we need these two lines below. + use pallet_session_benchmarking::Pallet as SessionBench; + use pallet_offences_benchmarking::Pallet as OffencesBench; + use pallet_election_provider_support_benchmarking::Pallet as EPSBench; + use frame_system_benchmarking::Pallet as SystemBench; + use baseline::Pallet as BaselineBench; + use pallet_nomination_pools_benchmarking::Pallet as NominationPoolsBench; + + let mut list = Vec::::new(); + list_benchmarks!(list, extra); + + let storage_info = AllPalletsWithSystem::storage_info(); + + (list, storage_info) + } - fn dispatch_benchmark( - config: frame_benchmarking::BenchmarkConfig - ) -> Result, sp_runtime::RuntimeString> { - use frame_benchmarking::{baseline, Benchmarking, BenchmarkBatch, TrackedStorageKey}; - - // Trying to add benchmarks directly to the Session Pallet caused cyclic dependency - // issues. To get around that, we separated the Session benchmarks into its own crate, - // which is why we need these two lines below. - use pallet_session_benchmarking::Pallet as SessionBench; - use pallet_offences_benchmarking::Pallet as OffencesBench; - use frame_system_benchmarking::Pallet as SystemBench; - use baseline::Pallet as BaselineBench; - - impl pallet_session_benchmarking::Config for Runtime {} - impl pallet_offences_benchmarking::Config for Runtime {} - impl frame_system_benchmarking::Config for Runtime {} - impl baseline::Config for Runtime {} - - let whitelist: Vec = vec![ - // Block Number - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(), - // Total Issuance - hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(), - // Execution Phase - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(), - // Event Count - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(), - // System Events - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(), - // System BlockWeight - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef734abf5cb34d6244378cddbf18e849d96").to_vec().into(), - // Treasury Account - hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da95ecffd7b6c0f78751baa9d281e0bfa3a6d6f646c70792f74727372790000000000000000000000000000000000000000").to_vec().into(), - ]; - - let mut batches = Vec::::new(); - let params = (&config, &whitelist); - add_benchmarks!(params, batches); - - Ok(batches) - } - } + fn dispatch_benchmark( + config: frame_benchmarking::BenchmarkConfig + ) -> Result, sp_runtime::RuntimeString> { + use frame_benchmarking::{baseline, Benchmarking, BenchmarkBatch, TrackedStorageKey}; + + // Trying to add benchmarks directly to the Session Pallet caused cyclic dependency + // issues. To get around that, we separated the Session benchmarks into its own crate, + // which is why we need these two lines below. + use pallet_session_benchmarking::Pallet as SessionBench; + use pallet_offences_benchmarking::Pallet as OffencesBench; + use pallet_election_provider_support_benchmarking::Pallet as EPSBench; + use frame_system_benchmarking::Pallet as SystemBench; + use baseline::Pallet as BaselineBench; + use pallet_nomination_pools_benchmarking::Pallet as NominationPoolsBench; + + impl pallet_session_benchmarking::Config for Runtime {} + impl pallet_offences_benchmarking::Config for Runtime {} + impl pallet_election_provider_support_benchmarking::Config for Runtime {} + impl frame_system_benchmarking::Config for Runtime {} + impl baseline::Config for Runtime {} + impl pallet_nomination_pools_benchmarking::Config for Runtime {} + + use frame_support::traits::WhitelistedStorageKeys; + let mut whitelist: Vec = AllPalletsWithSystem::whitelisted_storage_keys(); + + // Treasury Account + // TODO: this is manual for now, someday we might be able to use a + // macro for this particular key + let treasury_key = frame_system::Account::::hashed_key_for(Treasury::account_id()); + whitelist.push(treasury_key.to_vec().into()); + + let mut batches = Vec::::new(); + let params = (&config, &whitelist); + add_benchmarks!(params, batches); + Ok(batches) + } + } } #[cfg(test)] @@ -1633,7 +1704,7 @@ mod tests { #[test] fn validate_transaction_submitter_bounds() { fn is_submit_signed_transaction() - where T: CreateSignedTransaction { + where T: CreateSignedTransaction { } is_submit_signed_transaction::(); @@ -1642,7 +1713,7 @@ mod tests { #[test] fn perbill_as_onchain_accuracy() { type OnChainAccuracy = - <::Solution as NposSolution>::Accuracy; + <::Solution as NposSolution>::Accuracy; let maximum_chain_accuracy: Vec> = (0..MaxNominations::get()) .map(|_| >::from(OnChainAccuracy::one().deconstruct())) .collect(); @@ -1653,7 +1724,7 @@ mod tests { #[test] fn call_size() { assert!( - core::mem::size_of::() <= 200, + core::mem::size_of::() <= 200, "size of Call is more than 200 bytes: some calls have too big arguments, use Box to \ reduce the size of Call. diff --git a/runtime/src/weights/pallet_constraints.rs b/runtime/src/weights/pallet_constraints.rs index 622b7bf82..ce31ebcfe 100644 --- a/runtime/src/weights/pallet_constraints.rs +++ b/runtime/src/weights/pallet_constraints.rs @@ -29,10 +29,10 @@ pub struct WeightInfo(PhantomData); impl pallet_constraints::WeightInfo for WeightInfo { // Storage: Constraints AddressWhitelist (r:1 w:1) fn add_whitelist_address(a: u32, ) -> Weight { - (24_526_000 as Weight) + Weight::from_ref_time(24_526_000_u64) // Standard Error: 0 - .saturating_add((265_000 as Weight).saturating_mul(a as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + + Weight::from_ref_time(265_000_u64.saturating_mul(a as u64)) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } } diff --git a/runtime/src/weights/pallet_free_tx.rs b/runtime/src/weights/pallet_free_tx.rs index 25a4c3df5..78bc8b003 100644 --- a/runtime/src/weights/pallet_free_tx.rs +++ b/runtime/src/weights/pallet_free_tx.rs @@ -31,25 +31,23 @@ impl pallet_free_tx::WeightInfo for WeightInfo { // Storage: FreeTx FreeCallsRemaining (r:1 w:1) // Storage: Staking CurrentEra (r:1 w:0) fn call_using_electricity() -> Weight { - (18_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(18_000_000_u64) + .saturating_add(T::DbWeight::get().reads(3_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } // Storage: unknown [0x3a7472616e73616374696f6e5f6c6576656c3a] (r:1 w:1) // Storage: FreeTx FreeCallsPerEra (r:0 w:1) fn set_individual_electricity_era_limit() -> Weight { - (4_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + Weight::from_ref_time(4_000_000_u64) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) } // TODO fn give_zaps() -> Weight { - (0 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + T::DbWeight::get().writes(1_u64) } // TODO fn set_battery_count() -> Weight { - (0 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + T::DbWeight::get().writes(1_u64) } } diff --git a/runtime/src/weights/pallet_relayer.rs b/runtime/src/weights/pallet_relayer.rs index 7f214d9dc..bb1c4fd18 100644 --- a/runtime/src/weights/pallet_relayer.rs +++ b/runtime/src/weights/pallet_relayer.rs @@ -29,14 +29,14 @@ pub struct WeightInfo(PhantomData); impl pallet_relayer::WeightInfo for WeightInfo { // Storage: Relayer Messages (r:1 w:1) fn prep_transaction() -> Weight { - (34_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(34_000_000_u64) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } // Storage: Relayer Registered (r:0 w:1) fn register() -> Weight { - (22_000_000 as Weight) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(22_000_000_u64) + .saturating_add(T::DbWeight::get().writes(1_u64)) } // Storage: Relayer Messages (r:1 w:0) // Storage: Relayer Failures (r:1 w:0) @@ -45,12 +45,12 @@ impl pallet_relayer::WeightInfo for WeightInfo { // Storage: Authorship Author (r:1 w:0) // Storage: System Digest (r:1 w:0) // Storage: Relayer Pending (r:0 w:1) - fn move_active_to_pending_no_failure(m: u32, ) -> Weight { - (32_945_000 as Weight) + fn move_active_to_pending_no_failure(m: u64, ) -> Weight { + Weight::from_ref_time(32_945_000_u64) // Standard Error: 24_000 - .saturating_add((449_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + + Weight::from_ref_time(449_000_u64.saturating_mul(m)) + .saturating_add(T::DbWeight::get().reads(6_u64)) + .saturating_add(T::DbWeight::get().writes(3_u64)) } // Storage: Relayer Messages (r:1 w:0) // Storage: Relayer Failures (r:1 w:0) @@ -59,11 +59,11 @@ impl pallet_relayer::WeightInfo for WeightInfo { // Storage: Authorship Author (r:1 w:0) // Storage: System Digest (r:1 w:0) // Storage: Relayer Pending (r:0 w:1) - fn move_active_to_pending_failure(m: u32, ) -> Weight { - (31_050_000 as Weight) + fn move_active_to_pending_failure(m: u64, ) -> Weight { + Weight::from_ref_time(31_050_000_u64) // Standard Error: 43_000 - .saturating_add((734_000 as Weight).saturating_mul(m as Weight)) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + + Weight::from_ref_time(734_000_u64.saturating_mul(m)) + .saturating_add(T::DbWeight::get().reads(6_u64)) + .saturating_add(T::DbWeight::get().writes(3_u64)) } } diff --git a/runtime/src/weights/pallet_staking_extension.rs b/runtime/src/weights/pallet_staking_extension.rs index b78e2e990..327f6281f 100644 --- a/runtime/src/weights/pallet_staking_extension.rs +++ b/runtime/src/weights/pallet_staking_extension.rs @@ -30,25 +30,25 @@ impl pallet_staking_extension::WeightInfo for WeightInf // Storage: Staking Ledger (r:1 w:0) // Storage: StakingExtension EndpointRegister (r:0 w:1) fn change_endpoint() -> Weight { - (34_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(34_000_000_u64) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } // Storage: Staking Ledger (r:1 w:0) // Storage: StakingExtension ThresholdAccounts (r:0 w:1) fn change_threshold_accounts() -> Weight { - (34_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) - .saturating_add(T::DbWeight::get().writes(1 as Weight)) + Weight::from_ref_time(34_000_000_u64) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(1_u64)) } // Storage: Staking Ledger (r:1 w:1) // Storage: Staking CurrentEra (r:1 w:0) // Storage: Balances Locks (r:1 w:1) // Storage: System Account (r:1 w:1) fn withdraw_unbonded() -> Weight { - (41_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + Weight::from_ref_time(41_000_000_u64) + .saturating_add(T::DbWeight::get().reads(4_u64)) + .saturating_add(T::DbWeight::get().writes(3_u64)) } // Storage: Staking Ledger (r:1 w:0) // Storage: Staking MinValidatorBond (r:1 w:0) @@ -64,8 +64,8 @@ impl pallet_staking_extension::WeightInfo for WeightInf // Storage: StakingExtension ThresholdAccounts (r:0 w:1) // Storage: StakingExtension EndpointRegister (r:0 w:1) fn validate() -> Weight { - (95_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(11 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) + Weight::from_ref_time(95_000_000_u64) + .saturating_add(T::DbWeight::get().reads(11_u64)) + .saturating_add(T::DbWeight::get().writes(7_u64)) } } diff --git a/runtime/src/weights/pallet_transaction_pause.rs b/runtime/src/weights/pallet_transaction_pause.rs index 5707d1108..665c062ee 100644 --- a/runtime/src/weights/pallet_transaction_pause.rs +++ b/runtime/src/weights/pallet_transaction_pause.rs @@ -30,15 +30,15 @@ impl pallet_transaction_pause::WeightInfo for WeightInf // Storage: unknown [0x3a7472616e73616374696f6e5f6c6576656c3a] (r:1 w:1) // Storage: TransactionPause PausedTransactions (r:1 w:1) fn pause_transaction() -> Weight { - (30_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + Weight::from_ref_time(30_000_000_u64) + .saturating_add(T::DbWeight::get().reads(2_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) } // Storage: unknown [0x3a7472616e73616374696f6e5f6c6576656c3a] (r:1 w:1) // Storage: TransactionPause PausedTransactions (r:1 w:1) fn unpause_transaction() -> Weight { - (30_000_000 as Weight) - .saturating_add(T::DbWeight::get().reads(2 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + Weight::from_ref_time(30_000_000_u64) + .saturating_add(T::DbWeight::get().reads(2_u64)) + .saturating_add(T::DbWeight::get().writes(2_u64)) } } diff --git a/subxttest/Cargo.toml b/subxttest/Cargo.toml index 049479140..418b623a5 100644 --- a/subxttest/Cargo.toml +++ b/subxttest/Cargo.toml @@ -6,8 +6,8 @@ edition="2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -subxt={ git="https://github.com/paritytech/subxt.git" } -sp-keyring="6.0.0" +subxt={ git="https://github.com/entropyxyz/subxt.git", branch="substrate-master" } +sp-keyring={ version="6.0.0", git='https://github.com/paritytech/substrate.git', branch="polkadot-v0.9.30" } async-std={ version="1.9.0", features=["attributes", "tokio1"] } codec={ package="parity-scale-codec", version="3.0.0", default-features=false, features=[ "derive", diff --git a/subxttest/src/entropy_metadata.scale b/subxttest/src/entropy_metadata.scale index 2afb399cbf0dcc56e73faf79f87056e600d660b0..3ce31d5a1817ee39cd5bcb3ace0bf52f31120b4e 100644 GIT binary patch delta 70737 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 z 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%0DEVC${0l$qo+_NJP%;jBzE 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 UdmEN>FueWm1nnFOZ$A?Lf5WvK@&Et; delta 102099 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 L#pn+1+!6eL$X?m) diff --git a/subxttest/src/main.rs b/subxttest/src/main.rs index 176881c6c..d22d06ab8 100644 --- a/subxttest/src/main.rs +++ b/subxttest/src/main.rs @@ -1,5 +1,6 @@ use sp_keyring::AccountKeyring; -use subxt::{ClientBuilder, DefaultConfig, DefaultExtra, PairSigner}; +use subxt::{OnlineClient, PolkadotConfig as EntropyConfig, DefaultExtra, tx::PairSigner}; +use chain_api::EntropyConfig; #[subxt::subxt(runtime_metadata_path = "src/entropy_metadata.scale")] pub mod entropy {} @@ -10,17 +11,13 @@ async fn main() -> Result<(), Box> { let dest = AccountKeyring::Bob.to_account_id().into(); //TODO replace accept weak inclusion - let api = ClientBuilder::new() - .set_url("ws://localhost:9944") - .build() - .await? - .to_runtime_api::>>(); + let api = OnlineClient::::new().await?; - let result = api + let balance_transfer_tx = entropy::tx().balances().transfer(dest, 10_000); + + let balance_transfer = api .tx() - .balances() - .transfer(dest, 10_000) - .sign_and_submit_then_watch(&signer) + .sign_and_submit_then_watch_default(&balance_transfer_tx, &signer) .await? .wait_for_finalized_success() .await?;