From a833cd1e30621f1fb155f4e73660908fbaf4df14 Mon Sep 17 00:00:00 2001 From: Dnyaneshwari Ambadas Shinde Date: Tue, 11 Jun 2024 10:23:08 +0530 Subject: [PATCH 1/4] update --- Cargo.lock | 2551 ++++++++++++++++++++++-------- Cargo.toml | 3 + bin/runtime/Cargo.toml | 4 + bin/runtime/src/lib.rs | 126 ++ pallets/pink-scorpion/Cargo.toml | 56 + pallets/pink-scorpion/src/lib.rs | 117 ++ 6 files changed, 2159 insertions(+), 698 deletions(-) create mode 100644 pallets/pink-scorpion/Cargo.toml create mode 100644 pallets/pink-scorpion/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 272f75b0..5779e082 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -277,7 +277,7 @@ dependencies = [ "aleph-runtime-interfaces", "fake-runtime-api", "finality-aleph", - "frame-benchmarking", + "frame-benchmarking 4.0.0-dev", "frame-benchmarking-cli", "futures", "jsonrpsee", @@ -304,15 +304,15 @@ dependencies = [ "sc-transaction-pool-api", "serde", "serde_json", - "sp-api", - "sp-arithmetic", + "sp-api 4.0.0-dev", + "sp-arithmetic 16.0.0", "sp-block-builder", "sp-blockchain", "sp-consensus", "sp-consensus-aura", - "sp-core", - "sp-io", - "sp-runtime", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", "sp-timestamp", "sp-transaction-pool", "static_assertions", @@ -327,10 +327,10 @@ name = "aleph-runtime" version = "14.0.0+dev" dependencies = [ "baby-liminal-extension", - "frame-benchmarking", + "frame-benchmarking 4.0.0-dev", "frame-executive", - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "frame-system-rpc-runtime-api", "frame-try-runtime", "pallet-aleph", @@ -363,25 +363,26 @@ dependencies = [ "pallet-utility", "pallet-vesting", "pallet-vk-storage", + "pallet_pink_scorpion", "parity-scale-codec", "primitives", "scale-info", "smallvec", - "sp-api", - "sp-application-crypto", + "sp-api 4.0.0-dev", + "sp-application-crypto 23.0.0", "sp-block-builder", "sp-consensus-aura", - "sp-core", - "sp-genesis-builder", - "sp-inherents", - "sp-io", + "sp-core 21.0.0", + "sp-genesis-builder 0.1.0", + "sp-inherents 4.0.0-dev", + "sp-io 23.0.0", "sp-offchain", - "sp-runtime", + "sp-runtime 24.0.0", "sp-session", - "sp-staking", - "sp-std", + "sp-staking 4.0.0-dev", + "sp-std 8.0.0", "sp-transaction-pool", - "sp-version", + "sp-version 22.0.0", "substrate-wasm-builder", ] @@ -393,7 +394,7 @@ dependencies = [ "log", "parity-scale-codec", "rand", - "sp-runtime-interface", + "sp-runtime-interface 17.0.0", ] [[package]] @@ -458,9 +459,9 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] @@ -504,6 +505,20 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "aquamarine" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "ark-bls12-377" version = "0.4.0" @@ -515,6 +530,18 @@ dependencies = [ "ark-std", ] +[[package]] +name = "ark-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-models-ext", + "ark-std", +] + [[package]] name = "ark-bls12-381" version = "0.4.0" @@ -527,6 +554,45 @@ dependencies = [ "ark-std", ] +[[package]] +name = "ark-bls12-381-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff", + "ark-models-ext", + "ark-serialize", + "ark-std", +] + +[[package]] +name = "ark-bw6-761" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-bw6-761-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2" +dependencies = [ + "ark-bw6-761", + "ark-ec", + "ark-ff", + "ark-models-ext", + "ark-std", +] + [[package]] name = "ark-ec" version = "0.4.2" @@ -541,9 +607,60 @@ dependencies = [ "hashbrown 0.13.2", "itertools 0.10.5", "num-traits", + "rayon", "zeroize", ] +[[package]] +name = "ark-ed-on-bls12-377" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6" +dependencies = [ + "ark-bls12-377", + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-ed-on-bls12-377-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ff", + "ark-models-ext", + "ark-std", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346" +dependencies = [ + "ark-ec", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff", + "ark-models-ext", + "ark-std", +] + [[package]] name = "ark-ff" version = "0.4.2" @@ -587,6 +704,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-models-ext" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", +] + [[package]] name = "ark-poly" version = "0.4.2" @@ -600,6 +730,35 @@ dependencies = [ "hashbrown 0.13.2", ] +[[package]] +name = "ark-scale" +version = "0.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-serialize", + "ark-std", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "ark-secret-scalar" +version = "0.0.2" +source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-serialize", + "ark-std", + "ark-transcript", + "digest 0.10.7", + "getrandom_or_panic", + "zeroize", +] + [[package]] name = "ark-serialize" version = "0.4.2" @@ -631,6 +790,20 @@ checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", "rand", + "rayon", +] + +[[package]] +name = "ark-transcript" +version = "0.0.2" +source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "digest 0.10.7", + "rand_core 0.6.4", + "sha3 0.10.8", ] [[package]] @@ -788,9 +961,9 @@ version = "0.1.0" dependencies = [ "aleph-runtime", "aleph-runtime-interfaces", - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "getrandom 0.2.15", "halo2_proofs", "ink", @@ -800,8 +973,8 @@ dependencies = [ "pallet-vk-storage", "parity-scale-codec", "paste", - "sp-core", - "sp-std", + "sp-core 21.0.0", + "sp-std 8.0.0", ] [[package]] @@ -819,6 +992,29 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "bandersnatch_vrfs" +version = "0.0.4" +source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff", + "ark-serialize", + "ark-std", + "dleq_vrf", + "fflonk", + "merlin", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "ring 0.1.0", + "sha2 0.10.8", + "sp-ark-bls12-381", + "sp-ark-ed-on-bls12-381-bandersnatch", + "zeroize", +] + [[package]] name = "base-x" version = "0.2.11" @@ -894,7 +1090,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" dependencies = [ - "bitcoin_hashes", + "bitcoin_hashes 0.11.0", "rand", "rand_core 0.6.4", "serde", @@ -907,12 +1103,28 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bitcoin-internals" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" + [[package]] name = "bitcoin_hashes" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +[[package]] +name = "bitcoin_hashes" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" +dependencies = [ + "bitcoin-internals", + "hex-conservative", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -1030,6 +1242,18 @@ dependencies = [ "serde", ] +[[package]] +name = "bounded-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32385ecb91a31bddaf908e8dcf4a15aef1bcd3913cc03ebfad02ff6d568abc1" +dependencies = [ + "log", + "parity-scale-codec", + "scale-info", + "serde", +] + [[package]] name = "bs58" version = "0.4.0" @@ -1155,9 +1379,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" +checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" dependencies = [ "jobserver", "libc", @@ -1244,9 +1468,9 @@ dependencies = [ "sc-service", "serde", "serde_json", - "sp-application-crypto", - "sp-core", - "sp-runtime", + "sp-application-crypto 23.0.0", + "sp-core 21.0.0", + "sp-runtime 24.0.0", ] [[package]] @@ -1309,9 +1533,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "a9689a29b593160de5bc4aacab7b5d54fb52231de70122626c178e6a368994c7" dependencies = [ "clap_builder", "clap_derive", @@ -1319,9 +1543,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "2e5387378c84f6faa26890ebf9f0a92989f8873d4d380467bcd0d8d8620424df" dependencies = [ "anstream", "anstyle", @@ -1332,9 +1556,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -1344,9 +1568,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" [[package]] name = "codespan-reporting" @@ -1371,10 +1595,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" dependencies = [ "strum 0.26.2", - "strum_macros 0.26.3", + "strum_macros 0.26.4", "unicode-width", ] +[[package]] +name = "common" +version = "0.1.0" +source = "git+https://github.com/w3f/ring-proof#b273d33f9981e2bb3375ab45faeb537f7ee35224" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "fflonk", + "getrandom_or_panic", + "merlin", + "rand_chacha 0.3.1", +] + [[package]] name = "common-path" version = "1.0.0" @@ -1753,9 +1993,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.122" +version = "1.0.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb497fad022245b29c2a0351df572e2d67c1046bcef2260ebc022aec81efea82" +checksum = "8194f089b6da4751d6c1da1ef37c17255df51f9346cdb160f8b096562ae4a85c" dependencies = [ "cc", "cxxbridge-flags", @@ -1765,9 +2005,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.122" +version = "1.0.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9327c7f9fbd6329a200a5d4aa6f674c60ab256525ff0084b52a889d4e4c60cee" +checksum = "1e8df9a089caae66634d754672d5f909395f30f38af6ff19366980d8a8b57501" dependencies = [ "cc", "codespan-reporting", @@ -1780,15 +2020,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.122" +version = "1.0.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688c799a4a846f1c0acb9f36bb9c6272d9b3d9457f3633c7753c6057270df13c" +checksum = "25290be4751803672a70b98c68b51c1e7d0a640ab5a4377f240f9d2e70054cd1" [[package]] name = "cxxbridge-macro" -version = "1.0.122" +version = "1.0.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928bc249a7e3cd554fd2e8e08a426e9670c50bbfc9a621653cfa9accc9641783" +checksum = "b8cb317cb13604b4752416783bb25070381c36e844743e4146b7f8e55de7d140" dependencies = [ "proc-macro2", "quote", @@ -2024,6 +2264,22 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "dleq_vrf" +version = "0.0.2" +source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-scale", + "ark-secret-scalar", + "ark-serialize", + "ark-std", + "ark-transcript", + "arrayvec", + "zeroize", +] + [[package]] name = "docify" version = "0.2.8" @@ -2047,7 +2303,7 @@ dependencies = [ "regex", "syn 2.0.66", "termcolor", - "toml 0.8.13", + "toml 0.8.14", "walkdir", ] @@ -2106,6 +2362,7 @@ dependencies = [ "digest 0.10.7", "elliptic-curve", "rfc6979", + "serdect", "signature", "spki", ] @@ -2170,6 +2427,7 @@ dependencies = [ "pkcs8", "rand_core 0.6.4", "sec1", + "serdect", "subtle 2.5.0", "zeroize", ] @@ -2194,18 +2452,18 @@ dependencies = [ [[package]] name = "enumflags2" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" dependencies = [ "enumflags2_derive", ] [[package]] name = "enumflags2_derive" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", @@ -2301,23 +2559,23 @@ dependencies = [ name = "fake-runtime-api" version = "0.1.0" dependencies = [ - "frame-support", + "frame-support 4.0.0-dev", "frame-system-rpc-runtime-api", "pallet-aleph-runtime-api", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "primitives", - "sp-api", + "sp-api 4.0.0-dev", "sp-block-builder", "sp-consensus-aura", - "sp-core", - "sp-inherents", + "sp-core 21.0.0", + "sp-inherents 4.0.0-dev", "sp-offchain", - "sp-runtime", + "sp-runtime 24.0.0", "sp-session", - "sp-std", + "sp-std 8.0.0", "sp-transaction-pool", - "sp-version", + "sp-version 22.0.0", ] [[package]] @@ -2353,6 +2611,19 @@ dependencies = [ "subtle 2.5.0", ] +[[package]] +name = "fflonk" +version = "0.1.0" +source = "git+https://github.com/w3f/fflonk#1e854f35e9a65d08b11a86291405cdc95baa0a35" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "merlin", +] + [[package]] name = "fiat-crypto" version = "0.2.9" @@ -2398,7 +2669,7 @@ dependencies = [ "derive_more", "env_logger", "fake-runtime-api", - "frame-support", + "frame-support 4.0.0-dev", "futures", "futures-timer", "hash-db", @@ -2432,19 +2703,19 @@ dependencies = [ "sc-utils", "scale-info", "serde", - "sp-api", - "sp-application-crypto", + "sp-api 4.0.0-dev", + "sp-application-crypto 23.0.0", "sp-blockchain", "sp-consensus", "sp-consensus-aura", "sp-consensus-slots", - "sp-core", - "sp-io", - "sp-keystore", - "sp-runtime", - "sp-state-machine", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-keystore 0.27.0", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", "sp-timestamp", - "sp-trie", + "sp-trie 22.0.0", "static_assertions", "substrate-prometheus-endpoint", "substrate-test-client", @@ -2542,23 +2813,48 @@ name = "frame-benchmarking" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support", - "frame-support-procedural", - "frame-system", + "frame-support 4.0.0-dev", + "frame-support-procedural 4.0.0-dev", + "frame-system 4.0.0-dev", + "linregress", + "log", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "sp-api 4.0.0-dev", + "sp-application-crypto 23.0.0", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-runtime-interface 17.0.0", + "sp-std 8.0.0", + "sp-storage 13.0.0", + "static_assertions", +] + +[[package]] +name = "frame-benchmarking" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "frame-support 28.0.0", + "frame-support-procedural 23.0.0", + "frame-system 28.0.0", "linregress", "log", "parity-scale-codec", "paste", "scale-info", "serde", - "sp-api", - "sp-application-crypto", - "sp-core", - "sp-io", - "sp-runtime", - "sp-runtime-interface", - "sp-std", - "sp-storage", + "sp-api 26.0.0", + "sp-application-crypto 30.0.0", + "sp-core 28.0.0", + "sp-io 30.0.0", + "sp-runtime 31.0.1", + "sp-runtime-interface 24.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "static_assertions", ] @@ -2572,9 +2868,9 @@ dependencies = [ "chrono", "clap", "comfy-table", - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "gethostname", "handlebars", "itertools 0.10.5", @@ -2593,19 +2889,19 @@ dependencies = [ "sc-sysinfo", "serde", "serde_json", - "sp-api", + "sp-api 4.0.0-dev", "sp-blockchain", - "sp-core", + "sp-core 21.0.0", "sp-database", - "sp-externalities", - "sp-inherents", - "sp-io", - "sp-keystore", - "sp-runtime", - "sp-state-machine", - "sp-storage", - "sp-trie", - "sp-wasm-interface", + "sp-externalities 0.19.0", + "sp-inherents 4.0.0-dev", + "sp-io 23.0.0", + "sp-keystore 0.27.0", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", + "sp-storage 13.0.0", + "sp-trie 22.0.0", + "sp-wasm-interface 14.0.0", "thiserror", "thousands", ] @@ -2627,15 +2923,15 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "frame-election-provider-solution-type", - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "parity-scale-codec", "scale-info", - "sp-arithmetic", - "sp-core", + "sp-arithmetic 16.0.0", + "sp-core 21.0.0", "sp-npos-elections", - "sp-runtime", - "sp-std", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -2643,17 +2939,17 @@ name = "frame-executive" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "frame-try-runtime", "log", "parity-scale-codec", "scale-info", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", - "sp-tracing", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", + "sp-tracing 10.0.0", ] [[package]] @@ -2679,10 +2975,10 @@ dependencies = [ "log", "parity-scale-codec", "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-state-machine", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", "spinners", "substrate-rpc-client", "tokio", @@ -2694,13 +2990,13 @@ name = "frame-support" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "aquamarine", + "aquamarine 0.4.0", "array-bytes 6.2.3", "bitflags 1.3.2", "docify", "environmental", "frame-metadata", - "frame-support-procedural", + "frame-support-procedural 4.0.0-dev", "impl-trait-for-tuples", "k256", "log", @@ -2711,21 +3007,62 @@ dependencies = [ "serde", "serde_json", "smallvec", - "sp-api", - "sp-arithmetic", - "sp-core", + "sp-api 4.0.0-dev", + "sp-arithmetic 16.0.0", + "sp-core 21.0.0", "sp-core-hashing-proc-macro", - "sp-debug-derive", - "sp-genesis-builder", - "sp-inherents", - "sp-io", - "sp-metadata-ir", - "sp-runtime", - "sp-staking", - "sp-state-machine", - "sp-std", - "sp-tracing", - "sp-weights", + "sp-debug-derive 8.0.0", + "sp-genesis-builder 0.1.0", + "sp-inherents 4.0.0-dev", + "sp-io 23.0.0", + "sp-metadata-ir 0.1.0", + "sp-runtime 24.0.0", + "sp-staking 4.0.0-dev", + "sp-state-machine 0.28.0", + "sp-std 8.0.0", + "sp-tracing 10.0.0", + "sp-weights 20.0.0", + "static_assertions", + "tt-call", +] + +[[package]] +name = "frame-support" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "aquamarine 0.5.0", + "array-bytes 6.2.3", + "bitflags 1.3.2", + "docify", + "environmental", + "frame-metadata", + "frame-support-procedural 23.0.0", + "impl-trait-for-tuples", + "k256", + "log", + "macro_magic", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "serde_json", + "smallvec", + "sp-api 26.0.0", + "sp-arithmetic 23.0.0", + "sp-core 28.0.0", + "sp-crypto-hashing-proc-macro", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-genesis-builder 0.7.0", + "sp-inherents 26.0.0", + "sp-io 30.0.0", + "sp-metadata-ir 0.6.0", + "sp-runtime 31.0.1", + "sp-staking 26.0.0", + "sp-state-machine 0.35.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-tracing 16.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-weights 27.0.0", "static_assertions", "tt-call", ] @@ -2739,7 +3076,7 @@ dependencies = [ "cfg-expr", "derive-syn-parse 0.1.5", "expander", - "frame-support-procedural-tools", + "frame-support-procedural-tools 4.0.0-dev", "itertools 0.10.5", "macro_magic", "proc-macro-warning", @@ -2750,14 +3087,45 @@ dependencies = [ ] [[package]] -name = "frame-support-procedural-tools" -version = "4.0.0-dev" -source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" +name = "frame-support-procedural" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" dependencies = [ - "frame-support-procedural-tools-derive", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", + "Inflector", + "cfg-expr", + "derive-syn-parse 0.1.5", + "expander", + "frame-support-procedural-tools 10.0.0", + "itertools 0.10.5", + "macro_magic", + "proc-macro-warning", + "proc-macro2", + "quote", + "sp-crypto-hashing", + "syn 2.0.66", +] + +[[package]] +name = "frame-support-procedural-tools" +version = "4.0.0-dev" +source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" +dependencies = [ + "frame-support-procedural-tools-derive 3.0.0", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "frame-support-procedural-tools" +version = "10.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "frame-support-procedural-tools-derive 11.0.0", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", "syn 2.0.66", ] @@ -2771,6 +3139,16 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "frame-support-procedural-tools-derive" +version = "11.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "frame-system" version = "4.0.0-dev" @@ -2778,17 +3156,37 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "cfg-if", "docify", - "frame-support", + "frame-support 4.0.0-dev", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", + "sp-version 22.0.0", + "sp-weights 20.0.0", +] + +[[package]] +name = "frame-system" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "cfg-if", + "docify", + "frame-support 28.0.0", "log", "parity-scale-codec", "scale-info", "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", - "sp-version", - "sp-weights", + "sp-core 28.0.0", + "sp-io 30.0.0", + "sp-runtime 31.0.1", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-version 29.0.0", + "sp-weights 27.0.0", ] [[package]] @@ -2797,7 +3195,7 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "parity-scale-codec", - "sp-api", + "sp-api 4.0.0-dev", ] [[package]] @@ -2805,11 +3203,11 @@ name = "frame-try-runtime" version = "0.10.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support", + "frame-support 4.0.0-dev", "parity-scale-codec", - "sp-api", - "sp-runtime", - "sp-std", + "sp-api 4.0.0-dev", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -3230,6 +3628,12 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hex-conservative" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" + [[package]] name = "hkdf" version = "0.12.4" @@ -3347,9 +3751,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" dependencies = [ "bytes", "futures-channel", @@ -4028,6 +4432,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", + "serdect", "sha2 0.10.8", ] @@ -4619,18 +5024,18 @@ dependencies = [ [[package]] name = "linkme" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833222afbfe72868ac8f9770c91a33673f0d5fefc37c9dbe94aa3548b571623f" +checksum = "ccb76662d78edc9f9bf56360d6919bdacc8b7761227727e5082f128eeb90bbf5" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39f0dea92dbea3271557cc2e1848723967bba81f722f95026860974ec9283f08" +checksum = "f8dccda732e04fa3baf2e17cf835bfe2601c7c2edafd64417c627dabae3a8cda" dependencies = [ "proc-macro2", "quote", @@ -4802,6 +5207,15 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "matches" version = "0.1.10" @@ -5201,6 +5615,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint" version = "0.4.5" @@ -5341,12 +5765,18 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "pallet-aleph" version = "0.6.0" dependencies = [ - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "pallet-balances", "pallet-session", @@ -5354,10 +5784,10 @@ dependencies = [ "parity-scale-codec", "primitives", "scale-info", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5365,9 +5795,9 @@ name = "pallet-aleph-runtime-api" version = "0.1.0" dependencies = [ "primitives", - "sp-api", + "sp-api 4.0.0-dev", "sp-consensus-aura", - "sp-std", + "sp-std 8.0.0", ] [[package]] @@ -5375,16 +5805,16 @@ name = "pallet-aura" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-application-crypto", + "sp-application-crypto 23.0.0", "sp-consensus-aura", - "sp-runtime", - "sp-std", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5392,13 +5822,13 @@ name = "pallet-authorship" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime", - "sp-std", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5406,23 +5836,23 @@ name = "pallet-babe" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "pallet-authorship", "pallet-session", "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-application-crypto", + "sp-application-crypto 23.0.0", "sp-consensus-babe", - "sp-core", - "sp-io", - "sp-runtime", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", "sp-session", - "sp-staking", - "sp-std", + "sp-staking 4.0.0-dev", + "sp-std 8.0.0", ] [[package]] @@ -5430,22 +5860,22 @@ name = "pallet-balances" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "parity-scale-codec", "scale-info", - "sp-runtime", - "sp-std", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] name = "pallet-committee-management" version = "0.2.0" dependencies = [ - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "pallet-authorship", "pallet-session", @@ -5456,10 +5886,10 @@ dependencies = [ "rand", "rand_pcg", "scale-info", - "sp-io", - "sp-runtime", - "sp-staking", - "sp-std", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-staking 4.0.0-dev", + "sp-std 8.0.0", ] [[package]] @@ -5469,9 +5899,9 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "bitflags 1.3.2", "environmental", - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "impl-trait-for-tuples", "log", "pallet-balances", @@ -5483,11 +5913,11 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-api", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "sp-api 4.0.0-dev", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", "staging-xcm", "staging-xcm-builder", "wasm-instrument 0.4.0", @@ -5532,8 +5962,8 @@ name = "pallet-elections" version = "0.6.0" dependencies = [ "frame-election-provider-support", - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "pallet-authorship", "pallet-balances", "pallet-staking", @@ -5543,27 +5973,27 @@ dependencies = [ "rand", "rand_pcg", "scale-info", - "sp-core", - "sp-io", - "sp-runtime", - "sp-staking", - "sp-std", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-staking 4.0.0-dev", + "sp-std 8.0.0", ] [[package]] name = "pallet-feature-control" version = "0.1.0" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "parity-scale-codec", "scale-info", "serde", - "sp-core", - "sp-io", - "sp-std", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5572,15 +6002,15 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "enumflags2", - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "parity-scale-codec", "scale-info", - "sp-io", - "sp-runtime", - "sp-std", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5588,13 +6018,13 @@ name = "pallet-insecure-randomness-collective-flip" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "parity-scale-codec", "safe-mix", "scale-info", - "sp-runtime", - "sp-std", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5602,15 +6032,15 @@ name = "pallet-multisig" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "parity-scale-codec", "scale-info", - "sp-io", - "sp-runtime", - "sp-std", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5618,18 +6048,18 @@ name = "pallet-nomination-pools" version = "1.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "pallet-balances", "parity-scale-codec", "scale-info", - "sp-core", - "sp-io", - "sp-runtime", - "sp-staking", - "sp-std", - "sp-tracing", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-staking 4.0.0-dev", + "sp-std 8.0.0", + "sp-tracing 10.0.0", ] [[package]] @@ -5639,8 +6069,8 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "pallet-nomination-pools", "parity-scale-codec", - "sp-api", - "sp-std", + "sp-api 4.0.0-dev", + "sp-std 8.0.0", ] [[package]] @@ -5648,8 +6078,8 @@ name = "pallet-operations" version = "0.1.0" dependencies = [ "frame-election-provider-support", - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "pallet-balances", "pallet-session", @@ -5657,10 +6087,10 @@ dependencies = [ "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-core", - "sp-io", - "sp-runtime", - "sp-staking", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-staking 4.0.0-dev", ] [[package]] @@ -5668,14 +6098,14 @@ name = "pallet-proxy" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "parity-scale-codec", "scale-info", - "sp-io", - "sp-runtime", - "sp-std", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5684,17 +6114,17 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "pallet-balances", "pallet-proxy", "pallet-utility", "parity-scale-codec", "scale-info", - "sp-arithmetic", - "sp-runtime", - "sp-std", + "sp-arithmetic 16.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5703,16 +6133,16 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "parity-scale-codec", "scale-info", - "sp-io", - "sp-runtime", - "sp-std", - "sp-weights", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", + "sp-weights 20.0.0", ] [[package]] @@ -5720,21 +6150,21 @@ name = "pallet-session" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "impl-trait-for-tuples", "log", "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-core", - "sp-io", - "sp-runtime", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", "sp-session", - "sp-staking", - "sp-state-machine", - "sp-std", - "sp-trie", + "sp-staking 4.0.0-dev", + "sp-state-machine 0.28.0", + "sp-std 8.0.0", + "sp-trie 22.0.0", ] [[package]] @@ -5742,10 +6172,10 @@ name = "pallet-staking" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking", + "frame-benchmarking 4.0.0-dev", "frame-election-provider-support", - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "pallet-authorship", "pallet-session", @@ -5753,11 +6183,11 @@ dependencies = [ "rand_chacha 0.2.2", "scale-info", "serde", - "sp-application-crypto", - "sp-io", - "sp-runtime", - "sp-staking", - "sp-std", + "sp-application-crypto 23.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-staking 4.0.0-dev", + "sp-std 8.0.0", ] [[package]] @@ -5766,8 +6196,8 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "parity-scale-codec", - "sp-api", - "sp-staking", + "sp-api 4.0.0-dev", + "sp-staking 4.0.0-dev", ] [[package]] @@ -5776,14 +6206,14 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "parity-scale-codec", "scale-info", - "sp-io", - "sp-runtime", - "sp-std", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5792,17 +6222,17 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "parity-scale-codec", "scale-info", - "sp-inherents", - "sp-io", - "sp-runtime", - "sp-std", - "sp-storage", + "sp-inherents 4.0.0-dev", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", + "sp-storage 13.0.0", "sp-timestamp", ] @@ -5811,15 +6241,15 @@ name = "pallet-transaction-payment" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "parity-scale-codec", "scale-info", "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5830,12 +6260,12 @@ dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", "parity-scale-codec", - "sp-api", + "sp-api 4.0.0-dev", "sp-blockchain", - "sp-core", + "sp-core 21.0.0", "sp-rpc", - "sp-runtime", - "sp-weights", + "sp-runtime 24.0.0", + "sp-weights 20.0.0", ] [[package]] @@ -5845,9 +6275,9 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "pallet-transaction-payment", "parity-scale-codec", - "sp-api", - "sp-runtime", - "sp-weights", + "sp-api 4.0.0-dev", + "sp-runtime 24.0.0", + "sp-weights 20.0.0", ] [[package]] @@ -5856,17 +6286,17 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "impl-trait-for-tuples", "pallet-balances", "parity-scale-codec", "scale-info", "serde", - "sp-core", - "sp-runtime", - "sp-std", + "sp-core 21.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5875,16 +6305,16 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "pallet-balances", "pallet-proxy", "pallet-utility", "parity-scale-codec", "scale-info", - "sp-runtime", - "sp-std", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5892,15 +6322,15 @@ name = "pallet-utility" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "parity-scale-codec", "scale-info", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -5908,39 +6338,66 @@ name = "pallet-vesting" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "parity-scale-codec", "scale-info", - "sp-runtime", - "sp-std", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] name = "pallet-vk-storage" version = "0.1.0" dependencies = [ - "frame-benchmarking", - "frame-support", - "frame-system", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "log", "pallet-balances", "parity-scale-codec", "scale-info", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", +] + +[[package]] +name = "pallet_pink_scorpion" +version = "0.0.0" +dependencies = [ + "frame-benchmarking 28.0.0", + "frame-support 28.0.0", + "frame-system 28.0.0", + "parity-scale-codec", + "scale-info", + "sp-core 28.0.0", + "sp-io 30.0.0", + "sp-runtime 31.0.1", ] [[package]] name = "pallets-support" version = "0.1.4" dependencies = [ - "frame-support", - "sp-std", + "frame-support 4.0.0-dev", + "sp-std 8.0.0", +] + +[[package]] +name = "parity-bip39" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" +dependencies = [ + "bitcoin_hashes 0.13.0", + "rand", + "rand_core 0.6.4", + "serde", + "unicode-normalization", ] [[package]] @@ -6063,6 +6520,17 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7924d1d0ad836f665c9065e26d016c673ece3993f30d340068b16f282afc1156" +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle 2.5.0", +] + [[package]] name = "pasta_curves" version = "0.5.1" @@ -6102,6 +6570,16 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "password-hash", +] + [[package]] name = "peeking_take_while" version = "0.1.2" @@ -6245,9 +6723,9 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "parity-scale-codec", "scale-info", - "sp-core", - "sp-runtime", - "sp-std", + "sp-core 21.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -6255,16 +6733,16 @@ name = "polkadot-parachain-primitives" version = "1.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "bounded-collections", + "bounded-collections 0.1.9", "derive_more", "parity-scale-codec", "polkadot-core-primitives", "scale-info", "serde", - "sp-core", - "sp-runtime", - "sp-std", - "sp-weights", + "sp-core 21.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", + "sp-weights 20.0.0", ] [[package]] @@ -6279,6 +6757,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88b4e215c80fe876147f3d58158d5dfeae7dabdd6047e175af77095b78d0035c" +[[package]] +name = "polkavm-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" + [[package]] name = "polkavm-derive" version = "0.4.0" @@ -6299,6 +6783,15 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "polkavm-derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" +dependencies = [ + "polkavm-derive-impl-macro", +] + [[package]] name = "polkavm-derive-impl" version = "0.4.0" @@ -6323,6 +6816,28 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "polkavm-derive-impl" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" +dependencies = [ + "polkavm-common 0.9.0", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "polkavm-derive-impl-macro" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" +dependencies = [ + "polkavm-derive-impl 0.9.0", + "syn 2.0.66", +] + [[package]] name = "polling" version = "3.7.1" @@ -6456,26 +6971,26 @@ dependencies = [ name = "primitives" version = "0.14.0+dev" dependencies = [ - "frame-support", + "frame-support 4.0.0-dev", "frame-system-rpc-runtime-api", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "parity-scale-codec", "scale-info", "serde", - "sp-api", - "sp-application-crypto", + "sp-api 4.0.0-dev", + "sp-application-crypto 23.0.0", "sp-block-builder", "sp-consensus-aura", - "sp-core", - "sp-inherents", + "sp-core 21.0.0", + "sp-inherents 4.0.0-dev", "sp-offchain", - "sp-runtime", + "sp-runtime 24.0.0", "sp-session", - "sp-staking", - "sp-std", + "sp-staking 4.0.0-dev", + "sp-std 8.0.0", "sp-transaction-pool", - "sp-version", + "sp-version 22.0.0", ] [[package]] @@ -6962,6 +7477,22 @@ dependencies = [ "subtle 2.5.0", ] +[[package]] +name = "ring" +version = "0.1.0" +source = "git+https://github.com/w3f/ring-proof#b273d33f9981e2bb3375ab45faeb537f7ee35224" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "blake2 0.10.6", + "common", + "fflonk", + "merlin", +] + [[package]] name = "ring" version = "0.16.20" @@ -7227,8 +7758,8 @@ version = "4.1.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "log", - "sp-core", - "sp-wasm-interface", + "sp-core 21.0.0", + "sp-wasm-interface 14.0.0", "thiserror", ] @@ -7245,12 +7776,12 @@ dependencies = [ "sc-proposer-metrics", "sc-telemetry", "sc-transaction-pool-api", - "sp-api", + "sp-api 4.0.0-dev", "sp-blockchain", "sp-consensus", - "sp-core", - "sp-inherents", - "sp-runtime", + "sp-core 21.0.0", + "sp-inherents 4.0.0-dev", + "sp-runtime 24.0.0", "substrate-prometheus-endpoint", ] @@ -7260,13 +7791,13 @@ version = "0.10.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "parity-scale-codec", - "sp-api", + "sp-api 4.0.0-dev", "sp-block-builder", "sp-blockchain", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-trie", + "sp-core 21.0.0", + "sp-inherents 4.0.0-dev", + "sp-runtime 24.0.0", + "sp-trie 22.0.0", ] [[package]] @@ -7287,11 +7818,11 @@ dependencies = [ "serde", "serde_json", "sp-blockchain", - "sp-core", - "sp-genesis-builder", - "sp-io", - "sp-runtime", - "sp-state-machine", + "sp-core 21.0.0", + "sp-genesis-builder 0.1.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", ] [[package]] @@ -7336,12 +7867,12 @@ dependencies = [ "serde", "serde_json", "sp-blockchain", - "sp-core", + "sp-core 21.0.0", "sp-keyring", - "sp-keystore", - "sp-panic-handler", - "sp-runtime", - "sp-version", + "sp-keystore 0.27.0", + "sp-panic-handler 8.0.0", + "sp-runtime 24.0.0", + "sp-version 22.0.0", "thiserror", "tokio", ] @@ -7359,17 +7890,17 @@ dependencies = [ "sc-executor", "sc-transaction-pool-api", "sc-utils", - "sp-api", + "sp-api 4.0.0-dev", "sp-blockchain", "sp-consensus", - "sp-core", + "sp-core 21.0.0", "sp-database", - "sp-externalities", - "sp-runtime", - "sp-state-machine", + "sp-externalities 0.19.0", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", "sp-statement-store", - "sp-storage", - "sp-trie", + "sp-storage 13.0.0", + "sp-trie 22.0.0", "substrate-prometheus-endpoint", ] @@ -7390,13 +7921,13 @@ dependencies = [ "sc-client-api", "sc-state-db", "schnellru", - "sp-arithmetic", + "sp-arithmetic 16.0.0", "sp-blockchain", - "sp-core", + "sp-core 21.0.0", "sp-database", - "sp-runtime", - "sp-state-machine", - "sp-trie", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", + "sp-trie 22.0.0", ] [[package]] @@ -7414,12 +7945,12 @@ dependencies = [ "sc-client-api", "sc-utils", "serde", - "sp-api", + "sp-api 4.0.0-dev", "sp-blockchain", "sp-consensus", - "sp-core", - "sp-runtime", - "sp-state-machine", + "sp-core 21.0.0", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", "substrate-prometheus-endpoint", "thiserror", ] @@ -7438,17 +7969,17 @@ dependencies = [ "sc-consensus", "sc-consensus-slots", "sc-telemetry", - "sp-api", - "sp-application-crypto", + "sp-api 4.0.0-dev", + "sp-application-crypto 23.0.0", "sp-block-builder", "sp-blockchain", "sp-consensus", "sp-consensus-aura", "sp-consensus-slots", - "sp-core", - "sp-inherents", - "sp-keystore", - "sp-runtime", + "sp-core 21.0.0", + "sp-inherents 4.0.0-dev", + "sp-keystore 0.27.0", + "sp-runtime 24.0.0", "substrate-prometheus-endpoint", "thiserror", ] @@ -7466,14 +7997,14 @@ dependencies = [ "sc-client-api", "sc-consensus", "sc-telemetry", - "sp-arithmetic", + "sp-arithmetic 16.0.0", "sp-blockchain", "sp-consensus", "sp-consensus-slots", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-state-machine", + "sp-core 21.0.0", + "sp-inherents 4.0.0-dev", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", ] [[package]] @@ -7486,15 +8017,15 @@ dependencies = [ "sc-executor-common", "sc-executor-wasmtime", "schnellru", - "sp-api", - "sp-core", - "sp-externalities", - "sp-io", - "sp-panic-handler", - "sp-runtime-interface", - "sp-trie", - "sp-version", - "sp-wasm-interface", + "sp-api 4.0.0-dev", + "sp-core 21.0.0", + "sp-externalities 0.19.0", + "sp-io 23.0.0", + "sp-panic-handler 8.0.0", + "sp-runtime-interface 17.0.0", + "sp-trie 22.0.0", + "sp-version 22.0.0", + "sp-wasm-interface 14.0.0", "tracing", ] @@ -7505,7 +8036,7 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", - "sp-wasm-interface", + "sp-wasm-interface 14.0.0", "thiserror", "wasm-instrument 0.3.0", ] @@ -7523,8 +8054,8 @@ dependencies = [ "rustix 0.36.17", "sc-allocator", "sc-executor-common", - "sp-runtime-interface", - "sp-wasm-interface", + "sp-runtime-interface 17.0.0", + "sp-wasm-interface 14.0.0", "wasmtime", ] @@ -7542,7 +8073,7 @@ dependencies = [ "sc-network-common", "sc-network-sync", "sp-blockchain", - "sp-runtime", + "sp-runtime 24.0.0", ] [[package]] @@ -7553,9 +8084,9 @@ dependencies = [ "array-bytes 6.2.3", "parking_lot 0.12.3", "serde_json", - "sp-application-crypto", - "sp-core", - "sp-keystore", + "sp-application-crypto 23.0.0", + "sp-core 21.0.0", + "sp-keystore 0.27.0", "thiserror", ] @@ -7579,12 +8110,12 @@ dependencies = [ "sc-client-api", "sc-network", "sc-transaction-pool-api", - "sp-api", + "sp-api 4.0.0-dev", "sp-consensus", - "sp-core", - "sp-keystore", + "sp-core 21.0.0", + "sp-keystore 0.27.0", "sp-mixnet", - "sp-runtime", + "sp-runtime 24.0.0", "thiserror", ] @@ -7618,10 +8149,10 @@ dependencies = [ "serde", "serde_json", "smallvec", - "sp-arithmetic", + "sp-arithmetic 16.0.0", "sp-blockchain", - "sp-core", - "sp-runtime", + "sp-core 21.0.0", + "sp-runtime 24.0.0", "substrate-prometheus-endpoint", "thiserror", "tokio", @@ -7646,7 +8177,7 @@ dependencies = [ "sc-client-api", "sc-network", "sp-blockchain", - "sp-runtime", + "sp-runtime 24.0.0", "thiserror", "unsigned-varint", ] @@ -7665,7 +8196,7 @@ dependencies = [ "sc-consensus", "sp-consensus", "sp-consensus-grandpa", - "sp-runtime", + "sp-runtime 24.0.0", ] [[package]] @@ -7684,8 +8215,8 @@ dependencies = [ "sc-client-api", "sc-network", "sp-blockchain", - "sp-core", - "sp-runtime", + "sp-core 21.0.0", + "sp-runtime 24.0.0", "thiserror", ] @@ -7713,12 +8244,12 @@ dependencies = [ "sc-utils", "schnellru", "smallvec", - "sp-arithmetic", + "sp-arithmetic 16.0.0", "sp-blockchain", "sp-consensus", "sp-consensus-grandpa", - "sp-core", - "sp-runtime", + "sp-core 21.0.0", + "sp-runtime 24.0.0", "substrate-prometheus-endpoint", "thiserror", "tokio", @@ -7740,7 +8271,7 @@ dependencies = [ "sc-network-sync", "sc-utils", "sp-consensus", - "sp-runtime", + "sp-runtime 24.0.0", "substrate-prometheus-endpoint", ] @@ -7768,12 +8299,12 @@ dependencies = [ "sc-network-common", "sc-transaction-pool-api", "sc-utils", - "sp-api", - "sp-core", - "sp-externalities", - "sp-keystore", + "sp-api 4.0.0-dev", + "sp-core 21.0.0", + "sp-externalities 0.19.0", + "sp-keystore 0.27.0", "sp-offchain", - "sp-runtime", + "sp-runtime 24.0.0", "threadpool", "tracing", ] @@ -7806,16 +8337,16 @@ dependencies = [ "sc-transaction-pool-api", "sc-utils", "serde_json", - "sp-api", + "sp-api 4.0.0-dev", "sp-blockchain", - "sp-core", - "sp-keystore", + "sp-core 21.0.0", + "sp-keystore 0.27.0", "sp-offchain", "sp-rpc", - "sp-runtime", + "sp-runtime 24.0.0", "sp-session", "sp-statement-store", - "sp-version", + "sp-version 22.0.0", "tokio", ] @@ -7832,10 +8363,10 @@ dependencies = [ "scale-info", "serde", "serde_json", - "sp-core", + "sp-core 21.0.0", "sp-rpc", - "sp-runtime", - "sp-version", + "sp-runtime 24.0.0", + "sp-version 22.0.0", "thiserror", ] @@ -7872,12 +8403,12 @@ dependencies = [ "sc-transaction-pool-api", "sc-utils", "serde", - "sp-api", + "sp-api 4.0.0-dev", "sp-blockchain", - "sp-core", + "sp-core 21.0.0", "sp-rpc", - "sp-runtime", - "sp-version", + "sp-runtime 24.0.0", + "sp-version 22.0.0", "thiserror", "tokio", "tokio-stream", @@ -7923,20 +8454,20 @@ dependencies = [ "sc-utils", "serde", "serde_json", - "sp-api", + "sp-api 4.0.0-dev", "sp-blockchain", "sp-consensus", - "sp-core", - "sp-externalities", - "sp-keystore", - "sp-runtime", + "sp-core 21.0.0", + "sp-externalities 0.19.0", + "sp-keystore 0.27.0", + "sp-runtime 24.0.0", "sp-session", - "sp-state-machine", - "sp-storage", + "sp-state-machine 0.28.0", + "sp-storage 13.0.0", "sp-transaction-pool", "sp-transaction-storage-proof", - "sp-trie", - "sp-version", + "sp-trie 22.0.0", + "sp-version 22.0.0", "static_init", "substrate-prometheus-endpoint", "tempfile", @@ -7954,7 +8485,7 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot 0.12.3", - "sp-core", + "sp-core 21.0.0", ] [[package]] @@ -7972,9 +8503,9 @@ dependencies = [ "sc-telemetry", "serde", "serde_json", - "sp-core", - "sp-io", - "sp-std", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-std 8.0.0", ] [[package]] @@ -8014,16 +8545,16 @@ dependencies = [ "sc-client-api", "sc-tracing-proc-macro", "serde", - "sp-api", + "sp-api 4.0.0-dev", "sp-blockchain", - "sp-core", + "sp-core 21.0.0", "sp-rpc", - "sp-runtime", - "sp-tracing", + "sp-runtime 24.0.0", + "sp-tracing 10.0.0", "thiserror", "tracing", - "tracing-log", - "tracing-subscriber", + "tracing-log 0.1.4", + "tracing-subscriber 0.2.25", ] [[package]] @@ -8053,11 +8584,11 @@ dependencies = [ "sc-transaction-pool-api", "sc-utils", "serde", - "sp-api", + "sp-api 4.0.0-dev", "sp-blockchain", - "sp-core", - "sp-runtime", - "sp-tracing", + "sp-core 21.0.0", + "sp-runtime 24.0.0", + "sp-tracing 10.0.0", "sp-transaction-pool", "substrate-prometheus-endpoint", "thiserror", @@ -8074,8 +8605,8 @@ dependencies = [ "parity-scale-codec", "serde", "sp-blockchain", - "sp-core", - "sp-runtime", + "sp-core 21.0.0", + "sp-runtime 24.0.0", "thiserror", ] @@ -8091,7 +8622,7 @@ dependencies = [ "log", "parking_lot 0.12.3", "prometheus", - "sp-arithmetic", + "sp-arithmetic 16.0.0", ] [[package]] @@ -8279,6 +8810,7 @@ dependencies = [ "der", "generic-array 0.14.7", "pkcs8", + "serdect", "subtle 2.5.0", "zeroize", ] @@ -8426,6 +8958,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha-1" version = "0.9.8" @@ -8537,6 +9079,12 @@ name = "simple-mermaid" version = "0.1.0" source = "git+https://github.com/kianenigma/simple-mermaid.git?rev=e48b187bcfd5cc75111acd9d241f1bd36604344b#e48b187bcfd5cc75111acd9d241f1bd36604344b" +[[package]] +name = "simple-mermaid" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" + [[package]] name = "siphasher" version = "0.3.11" @@ -8633,15 +9181,37 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-api-proc-macro", - "sp-core", - "sp-externalities", - "sp-metadata-ir", - "sp-runtime", - "sp-state-machine", - "sp-std", - "sp-trie", - "sp-version", + "sp-api-proc-macro 4.0.0-dev", + "sp-core 21.0.0", + "sp-externalities 0.19.0", + "sp-metadata-ir 0.1.0", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", + "sp-std 8.0.0", + "sp-trie 22.0.0", + "sp-version 22.0.0", + "thiserror", +] + +[[package]] +name = "sp-api" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", + "scale-info", + "sp-api-proc-macro 15.0.0", + "sp-core 28.0.0", + "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-metadata-ir 0.6.0", + "sp-runtime 31.0.1", + "sp-runtime-interface 24.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-state-machine 0.35.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-trie 29.0.0", + "sp-version 29.0.0", "thiserror", ] @@ -8659,6 +9229,20 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "sp-api-proc-macro" +version = "15.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "Inflector", + "blake2 0.10.6", + "expander", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "sp-application-crypto" version = "23.0.0" @@ -8667,9 +9251,22 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core", - "sp-io", - "sp-std", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-std 8.0.0", +] + +[[package]] +name = "sp-application-crypto" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 28.0.0", + "sp-io 30.0.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", ] [[package]] @@ -8682,19 +9279,51 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-std", + "sp-std 8.0.0", "static_assertions", ] +[[package]] +name = "sp-arithmetic" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "static_assertions", +] + +[[package]] +name = "sp-ark-bls12-381" +version = "0.4.2" +source = "git+https://github.com/paritytech/arkworks-substrate#caa2eed74beb885dd07c7db5f916f2281dad818f" +dependencies = [ + "ark-bls12-381-ext", + "sp-crypto-ec-utils", +] + +[[package]] +name = "sp-ark-ed-on-bls12-381-bandersnatch" +version = "0.4.2" +source = "git+https://github.com/paritytech/arkworks-substrate#caa2eed74beb885dd07c7db5f916f2281dad818f" +dependencies = [ + "ark-ed-on-bls12-381-bandersnatch-ext", + "sp-crypto-ec-utils", +] + [[package]] name = "sp-block-builder" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "sp-api", - "sp-inherents", - "sp-runtime", - "sp-std", + "sp-api 4.0.0-dev", + "sp-inherents 4.0.0-dev", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -8707,11 +9336,11 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", "schnellru", - "sp-api", + "sp-api 4.0.0-dev", "sp-consensus", "sp-database", - "sp-runtime", - "sp-state-machine", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", "thiserror", ] @@ -8723,10 +9352,10 @@ dependencies = [ "async-trait", "futures", "log", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-state-machine", + "sp-core 21.0.0", + "sp-inherents 4.0.0-dev", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", "thiserror", ] @@ -8738,12 +9367,12 @@ dependencies = [ "async-trait", "parity-scale-codec", "scale-info", - "sp-api", - "sp-application-crypto", + "sp-api 4.0.0-dev", + "sp-application-crypto 23.0.0", "sp-consensus-slots", - "sp-inherents", - "sp-runtime", - "sp-std", + "sp-inherents 4.0.0-dev", + "sp-runtime 24.0.0", + "sp-std 8.0.0", "sp-timestamp", ] @@ -8756,13 +9385,13 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-api", - "sp-application-crypto", + "sp-api 4.0.0-dev", + "sp-application-crypto 23.0.0", "sp-consensus-slots", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-std", + "sp-core 21.0.0", + "sp-inherents 4.0.0-dev", + "sp-runtime 24.0.0", + "sp-std 8.0.0", "sp-timestamp", ] @@ -8776,12 +9405,12 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-api", - "sp-application-crypto", - "sp-core", - "sp-keystore", - "sp-runtime", - "sp-std", + "sp-api 4.0.0-dev", + "sp-application-crypto 23.0.0", + "sp-core 21.0.0", + "sp-keystore 0.27.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -8792,7 +9421,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-std", + "sp-std 8.0.0", "sp-timestamp", ] @@ -8805,7 +9434,7 @@ dependencies = [ "bip39", "bitflags 1.3.2", "blake2 0.10.6", - "bounded-collections", + "bounded-collections 0.1.9", "bs58 0.5.1", "dyn-clonable", "ed25519-zebra", @@ -8828,13 +9457,60 @@ dependencies = [ "secrecy", "serde", "sp-core-hashing", - "sp-debug-derive", - "sp-externalities", - "sp-runtime-interface", - "sp-std", - "sp-storage", + "sp-debug-derive 8.0.0", + "sp-externalities 0.19.0", + "sp-runtime-interface 17.0.0", + "sp-std 8.0.0", + "sp-storage 13.0.0", + "ss58-registry", + "substrate-bip39 0.4.6", + "thiserror", + "tracing", + "w3f-bls", + "zeroize", +] + +[[package]] +name = "sp-core" +version = "28.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "array-bytes 6.2.3", + "bandersnatch_vrfs", + "bitflags 1.3.2", + "blake2 0.10.6", + "bounded-collections 0.2.0", + "bs58 0.5.1", + "dyn-clonable", + "ed25519-zebra", + "futures", + "hash-db", + "hash256-std-hasher", + "impl-serde", + "itertools 0.10.5", + "k256", + "libsecp256k1", + "log", + "merlin", + "parity-bip39", + "parity-scale-codec", + "parking_lot 0.12.3", + "paste", + "primitive-types", + "rand", + "scale-info", + "schnorrkel", + "secp256k1", + "secrecy", + "serde", + "sp-crypto-hashing", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-runtime-interface 24.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "ss58-registry", - "substrate-bip39", + "substrate-bip39 0.4.7", "thiserror", "tracing", "w3f-bls", @@ -8865,13 +9541,56 @@ dependencies = [ ] [[package]] -name = "sp-database" -version = "4.0.0-dev" -source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" +name = "sp-crypto-ec-utils" +version = "0.10.0" +source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" dependencies = [ - "kvdb", - "parking_lot 0.12.3", -] + "ark-bls12-377", + "ark-bls12-377-ext", + "ark-bls12-381", + "ark-bls12-381-ext", + "ark-bw6-761", + "ark-bw6-761-ext", + "ark-ec", + "ark-ed-on-bls12-377", + "ark-ed-on-bls12-377-ext", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ed-on-bls12-381-bandersnatch-ext", + "ark-scale", + "sp-runtime-interface 24.0.0 (git+https://github.com/paritytech/polkadot-sdk)", +] + +[[package]] +name = "sp-crypto-hashing" +version = "0.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.8", + "sha3 0.10.8", + "twox-hash", +] + +[[package]] +name = "sp-crypto-hashing-proc-macro" +version = "0.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "quote", + "sp-crypto-hashing", + "syn 2.0.66", +] + +[[package]] +name = "sp-database" +version = "4.0.0-dev" +source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" +dependencies = [ + "kvdb", + "parking_lot 0.12.3", +] [[package]] name = "sp-debug-derive" @@ -8883,6 +9602,26 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "sp-debug-derive" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "sp-debug-derive" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "sp-externalities" version = "0.19.0" @@ -8890,8 +9629,29 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "environmental", "parity-scale-codec", - "sp-std", - "sp-storage", + "sp-std 8.0.0", + "sp-storage 13.0.0", +] + +[[package]] +name = "sp-externalities" +version = "0.25.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", +] + +[[package]] +name = "sp-externalities" +version = "0.25.0" +source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk)", ] [[package]] @@ -8900,9 +9660,20 @@ version = "0.1.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "serde_json", - "sp-api", - "sp-runtime", - "sp-std", + "sp-api 4.0.0-dev", + "sp-runtime 24.0.0", + "sp-std 8.0.0", +] + +[[package]] +name = "sp-genesis-builder" +version = "0.7.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "serde_json", + "sp-api 26.0.0", + "sp-runtime 31.0.1", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", ] [[package]] @@ -8914,8 +9685,22 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime", - "sp-std", + "sp-runtime 24.0.0", + "sp-std 8.0.0", + "thiserror", +] + +[[package]] +name = "sp-inherents" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "async-trait", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime 31.0.1", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "thiserror", ] @@ -8931,14 +9716,40 @@ dependencies = [ "parity-scale-codec", "rustversion", "secp256k1", - "sp-core", - "sp-externalities", - "sp-keystore", - "sp-runtime-interface", - "sp-state-machine", - "sp-std", - "sp-tracing", - "sp-trie", + "sp-core 21.0.0", + "sp-externalities 0.19.0", + "sp-keystore 0.27.0", + "sp-runtime-interface 17.0.0", + "sp-state-machine 0.28.0", + "sp-std 8.0.0", + "sp-tracing 10.0.0", + "sp-trie 22.0.0", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-io" +version = "30.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "bytes", + "ed25519-dalek", + "libsecp256k1", + "log", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "rustversion", + "secp256k1", + "sp-core 28.0.0", + "sp-crypto-hashing", + "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-keystore 0.34.0", + "sp-runtime-interface 24.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-state-machine 0.35.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-tracing 16.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-trie 29.0.0", "tracing", "tracing-core", ] @@ -8948,8 +9759,8 @@ name = "sp-keyring" version = "24.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "sp-core", - "sp-runtime", + "sp-core 21.0.0", + "sp-runtime 24.0.0", "strum 0.24.1", ] @@ -8960,11 +9771,22 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", - "sp-core", - "sp-externalities", + "sp-core 21.0.0", + "sp-externalities 0.19.0", "thiserror", ] +[[package]] +name = "sp-keystore" +version = "0.34.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "parity-scale-codec", + "parking_lot 0.12.3", + "sp-core 28.0.0", + "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", +] + [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" @@ -8982,7 +9804,18 @@ dependencies = [ "frame-metadata", "parity-scale-codec", "scale-info", - "sp-std", + "sp-std 8.0.0", +] + +[[package]] +name = "sp-metadata-ir" +version = "0.6.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "frame-metadata", + "parity-scale-codec", + "scale-info", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", ] [[package]] @@ -8992,9 +9825,9 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "parity-scale-codec", "scale-info", - "sp-api", - "sp-application-crypto", - "sp-std", + "sp-api 4.0.0-dev", + "sp-application-crypto 23.0.0", + "sp-std 8.0.0", ] [[package]] @@ -9005,10 +9838,10 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic", - "sp-core", - "sp-runtime", - "sp-std", + "sp-arithmetic 16.0.0", + "sp-core 21.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", ] [[package]] @@ -9016,9 +9849,9 @@ name = "sp-offchain" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "sp-api", - "sp-core", - "sp-runtime", + "sp-api 4.0.0-dev", + "sp-core 21.0.0", + "sp-runtime 24.0.0", ] [[package]] @@ -9031,6 +9864,16 @@ dependencies = [ "regex", ] +[[package]] +name = "sp-panic-handler" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "backtrace", + "lazy_static", + "regex", +] + [[package]] name = "sp-rpc" version = "6.0.0" @@ -9038,7 +9881,7 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "rustc-hash", "serde", - "sp-core", + "sp-core 21.0.0", ] [[package]] @@ -9056,13 +9899,37 @@ dependencies = [ "rand", "scale-info", "serde", - "simple-mermaid", - "sp-application-crypto", - "sp-arithmetic", - "sp-core", - "sp-io", - "sp-std", - "sp-weights", + "simple-mermaid 0.1.0", + "sp-application-crypto 23.0.0", + "sp-arithmetic 16.0.0", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-std 8.0.0", + "sp-weights 20.0.0", +] + +[[package]] +name = "sp-runtime" +version = "31.0.1" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "docify", + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "paste", + "rand", + "scale-info", + "serde", + "simple-mermaid 0.1.1", + "sp-application-crypto 30.0.0", + "sp-arithmetic 23.0.0", + "sp-core 28.0.0", + "sp-io 30.0.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-weights 27.0.0", ] [[package]] @@ -9074,12 +9941,50 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "primitive-types", - "sp-externalities", - "sp-runtime-interface-proc-macro", - "sp-std", - "sp-storage", - "sp-tracing", - "sp-wasm-interface", + "sp-externalities 0.19.0", + "sp-runtime-interface-proc-macro 11.0.0", + "sp-std 8.0.0", + "sp-storage 13.0.0", + "sp-tracing 10.0.0", + "sp-wasm-interface 14.0.0", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "primitive-types", + "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-runtime-interface-proc-macro 17.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-tracing 16.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-wasm-interface 20.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "polkavm-derive 0.9.1", + "primitive-types", + "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk)", + "sp-runtime-interface-proc-macro 17.0.0 (git+https://github.com/paritytech/polkadot-sdk)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk)", + "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk)", + "sp-tracing 16.0.0 (git+https://github.com/paritytech/polkadot-sdk)", + "sp-wasm-interface 20.0.0 (git+https://github.com/paritytech/polkadot-sdk)", "static_assertions", ] @@ -9096,6 +10001,32 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "Inflector", + "expander", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.66", +] + +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" +dependencies = [ + "Inflector", + "expander", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "sp-session" version = "4.0.0-dev" @@ -9103,12 +10034,12 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "parity-scale-codec", "scale-info", - "sp-api", - "sp-core", - "sp-keystore", - "sp-runtime", - "sp-staking", - "sp-std", + "sp-api 4.0.0-dev", + "sp-core 21.0.0", + "sp-keystore 0.27.0", + "sp-runtime 24.0.0", + "sp-staking 4.0.0-dev", + "sp-std 8.0.0", ] [[package]] @@ -9120,9 +10051,23 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core", - "sp-runtime", - "sp-std", + "sp-core 21.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", +] + +[[package]] +name = "sp-staking" +version = "26.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 28.0.0", + "sp-runtime 31.0.1", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", ] [[package]] @@ -9136,11 +10081,32 @@ dependencies = [ "parking_lot 0.12.3", "rand", "smallvec", - "sp-core", - "sp-externalities", - "sp-panic-handler", - "sp-std", - "sp-trie", + "sp-core 21.0.0", + "sp-externalities 0.19.0", + "sp-panic-handler 8.0.0", + "sp-std 8.0.0", + "sp-trie 22.0.0", + "thiserror", + "tracing", + "trie-db", +] + +[[package]] +name = "sp-state-machine" +version = "0.35.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "hash-db", + "log", + "parity-scale-codec", + "parking_lot 0.12.3", + "rand", + "smallvec", + "sp-core 28.0.0", + "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-panic-handler 13.0.0", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-trie 29.0.0", "thiserror", "tracing", "trie-db", @@ -9159,13 +10125,13 @@ dependencies = [ "rand", "scale-info", "sha2 0.10.8", - "sp-api", - "sp-application-crypto", - "sp-core", - "sp-externalities", - "sp-runtime", - "sp-runtime-interface", - "sp-std", + "sp-api 4.0.0-dev", + "sp-application-crypto 23.0.0", + "sp-core 21.0.0", + "sp-externalities 0.19.0", + "sp-runtime 24.0.0", + "sp-runtime-interface 17.0.0", + "sp-std 8.0.0", "thiserror", "x25519-dalek 2.0.1", ] @@ -9175,6 +10141,16 @@ name = "sp-std" version = "8.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" +[[package]] +name = "sp-std" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" + +[[package]] +name = "sp-std" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" + [[package]] name = "sp-storage" version = "13.0.0" @@ -9184,8 +10160,33 @@ dependencies = [ "parity-scale-codec", "ref-cast", "serde", - "sp-debug-derive", - "sp-std", + "sp-debug-derive 8.0.0", + "sp-std 8.0.0", +] + +[[package]] +name = "sp-storage" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", +] + +[[package]] +name = "sp-storage" +version = "19.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk)", ] [[package]] @@ -9195,9 +10196,9 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "async-trait", "parity-scale-codec", - "sp-inherents", - "sp-runtime", - "sp-std", + "sp-inherents 4.0.0-dev", + "sp-runtime 24.0.0", + "sp-std 8.0.0", "thiserror", ] @@ -9207,10 +10208,33 @@ version = "10.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "parity-scale-codec", - "sp-std", + "sp-std 8.0.0", + "tracing", + "tracing-core", + "tracing-subscriber 0.2.25", +] + +[[package]] +name = "sp-tracing" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "parity-scale-codec", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "tracing", + "tracing-core", + "tracing-subscriber 0.2.25", +] + +[[package]] +name = "sp-tracing" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" +dependencies = [ + "parity-scale-codec", "tracing", "tracing-core", - "tracing-subscriber", + "tracing-subscriber 0.3.18", ] [[package]] @@ -9218,8 +10242,8 @@ name = "sp-transaction-pool" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "sp-api", - "sp-runtime", + "sp-api 4.0.0-dev", + "sp-runtime 24.0.0", ] [[package]] @@ -9230,11 +10254,11 @@ dependencies = [ "async-trait", "parity-scale-codec", "scale-info", - "sp-core", - "sp-inherents", - "sp-runtime", - "sp-std", - "sp-trie", + "sp-core 21.0.0", + "sp-inherents 4.0.0-dev", + "sp-runtime 24.0.0", + "sp-std 8.0.0", + "sp-trie 22.0.0", ] [[package]] @@ -9252,9 +10276,33 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core", - "sp-externalities", - "sp-std", + "sp-core 21.0.0", + "sp-externalities 0.19.0", + "sp-std 8.0.0", + "thiserror", + "tracing", + "trie-db", + "trie-root", +] + +[[package]] +name = "sp-trie" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "ahash 0.8.11", + "hash-db", + "lazy_static", + "memory-db", + "nohash-hasher", + "parity-scale-codec", + "parking_lot 0.12.3", + "rand", + "scale-info", + "schnellru", + "sp-core 28.0.0", + "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "thiserror", "tracing", "trie-db", @@ -9272,9 +10320,26 @@ dependencies = [ "scale-info", "serde", "sp-core-hashing-proc-macro", - "sp-runtime", - "sp-std", - "sp-version-proc-macro", + "sp-runtime 24.0.0", + "sp-std 8.0.0", + "sp-version-proc-macro 8.0.0", + "thiserror", +] + +[[package]] +name = "sp-version" +version = "29.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "parity-wasm", + "scale-info", + "serde", + "sp-crypto-hashing-proc-macro", + "sp-runtime 31.0.1", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-version-proc-macro 13.0.0", "thiserror", ] @@ -9289,6 +10354,17 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "sp-version-proc-macro" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "parity-scale-codec", + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "sp-wasm-interface" version = "14.0.0" @@ -9298,23 +10374,61 @@ dependencies = [ "impl-trait-for-tuples", "log", "parity-scale-codec", - "sp-std", + "sp-std 8.0.0", "wasmtime", ] +[[package]] +name = "sp-wasm-interface" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "wasmtime", +] + +[[package]] +name = "sp-wasm-interface" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" +dependencies = [ + "impl-trait-for-tuples", + "log", + "parity-scale-codec", +] + [[package]] name = "sp-weights" version = "20.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "bounded-collections", + "bounded-collections 0.1.9", "parity-scale-codec", "scale-info", "serde", "smallvec", - "sp-arithmetic", - "sp-debug-derive", - "sp-std", + "sp-arithmetic 16.0.0", + "sp-debug-derive 8.0.0", + "sp-std 8.0.0", +] + +[[package]] +name = "sp-weights" +version = "27.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "bounded-collections 0.2.0", + "parity-scale-codec", + "scale-info", + "serde", + "smallvec", + "sp-arithmetic 23.0.0", + "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", ] [[package]] @@ -9377,7 +10491,7 @@ version = "1.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "array-bytes 6.2.3", - "bounded-collections", + "bounded-collections 0.1.9", "derivative", "environmental", "impl-trait-for-tuples", @@ -9385,7 +10499,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-weights", + "sp-weights 20.0.0", "xcm-procedural", ] @@ -9394,19 +10508,19 @@ name = "staging-xcm-builder" version = "1.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "impl-trait-for-tuples", "log", "pallet-transaction-payment", "parity-scale-codec", "polkadot-parachain-primitives", "scale-info", - "sp-arithmetic", - "sp-io", - "sp-runtime", - "sp-std", - "sp-weights", + "sp-arithmetic 16.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", + "sp-weights 20.0.0", "staging-xcm", "staging-xcm-executor", ] @@ -9417,18 +10531,18 @@ version = "1.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "environmental", - "frame-benchmarking", - "frame-support", + "frame-benchmarking 4.0.0-dev", + "frame-support 4.0.0-dev", "impl-trait-for-tuples", "log", "parity-scale-codec", "scale-info", - "sp-arithmetic", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", - "sp-weights", + "sp-arithmetic 16.0.0", + "sp-core 21.0.0", + "sp-io 23.0.0", + "sp-runtime 24.0.0", + "sp-std 8.0.0", + "sp-weights 20.0.0", "staging-xcm", ] @@ -9508,9 +10622,9 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.26.3" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7993a8e3a9e88a00351486baae9522c91b123a088f76469e5bd5cc17198ea87" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -9532,6 +10646,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "substrate-bip39" +version = "0.4.7" +source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +dependencies = [ + "hmac 0.12.1", + "pbkdf2 0.12.2", + "schnorrkel", + "sha2 0.10.8", + "zeroize", +] + [[package]] name = "substrate-build-script-utils" version = "3.0.0" @@ -9549,11 +10675,11 @@ dependencies = [ "parity-scale-codec", "sc-rpc-api", "sc-transaction-pool-api", - "sp-api", + "sp-api 4.0.0-dev", "sp-block-builder", "sp-blockchain", - "sp-core", - "sp-runtime", + "sp-core 21.0.0", + "sp-runtime 24.0.0", ] [[package]] @@ -9578,7 +10704,7 @@ dependencies = [ "log", "sc-rpc-api", "serde", - "sp-runtime", + "sp-runtime 24.0.0", ] [[package]] @@ -9600,11 +10726,11 @@ dependencies = [ "serde_json", "sp-blockchain", "sp-consensus", - "sp-core", + "sp-core 21.0.0", "sp-keyring", - "sp-keystore", - "sp-runtime", - "sp-state-machine", + "sp-keystore 0.27.0", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", ] [[package]] @@ -9614,8 +10740,8 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "array-bytes 6.2.3", "frame-executive", - "frame-support", - "frame-system", + "frame-support 4.0.0-dev", + "frame-system 4.0.0-dev", "frame-system-rpc-runtime-api", "log", "pallet-babe", @@ -9624,26 +10750,26 @@ dependencies = [ "parity-scale-codec", "sc-service", "scale-info", - "sp-api", - "sp-application-crypto", + "sp-api 4.0.0-dev", + "sp-application-crypto 23.0.0", "sp-block-builder", "sp-consensus-aura", "sp-consensus-babe", "sp-consensus-grandpa", - "sp-core", - "sp-externalities", - "sp-genesis-builder", - "sp-inherents", - "sp-io", + "sp-core 21.0.0", + "sp-externalities 0.19.0", + "sp-genesis-builder 0.1.0", + "sp-inherents 4.0.0-dev", + "sp-io 23.0.0", "sp-keyring", "sp-offchain", - "sp-runtime", + "sp-runtime 24.0.0", "sp-session", - "sp-state-machine", - "sp-std", + "sp-state-machine 0.28.0", + "sp-std 8.0.0", "sp-transaction-pool", - "sp-trie", - "sp-version", + "sp-trie 22.0.0", + "sp-version 22.0.0", "substrate-wasm-builder", "trie-db", ] @@ -9657,11 +10783,11 @@ dependencies = [ "sc-block-builder", "sc-client-api", "sc-consensus", - "sp-api", + "sp-api 4.0.0-dev", "sp-blockchain", "sp-consensus", - "sp-core", - "sp-runtime", + "sp-core 21.0.0", + "sp-runtime 24.0.0", "substrate-test-client", "substrate-test-runtime", ] @@ -9679,7 +10805,7 @@ dependencies = [ "sp-maybe-compressed-blob", "strum 0.24.1", "tempfile", - "toml 0.8.13", + "toml 0.8.14", "walkdir", "wasm-opt", ] @@ -10028,14 +11154,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.13" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.13", + "toml_edit 0.22.14", ] [[package]] @@ -10060,15 +11186,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.13" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.9", + "winnow 0.6.13", ] [[package]] @@ -10166,6 +11292,17 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-serde" version = "0.1.3" @@ -10185,7 +11322,7 @@ dependencies = [ "ansi_term", "chrono", "lazy_static", - "matchers", + "matchers 0.0.1", "parking_lot 0.11.2", "regex", "serde", @@ -10195,10 +11332,28 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.4", "tracing-serde", ] +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers 0.1.0", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log 0.2.0", +] + [[package]] name = "trie-db" version = "0.28.0" @@ -10289,22 +11444,22 @@ dependencies = [ "sc-executor", "serde", "serde_json", - "sp-api", + "sp-api 4.0.0-dev", "sp-consensus-aura", "sp-consensus-babe", - "sp-core", - "sp-debug-derive", - "sp-externalities", - "sp-inherents", - "sp-io", - "sp-keystore", + "sp-core 21.0.0", + "sp-debug-derive 8.0.0", + "sp-externalities 0.19.0", + "sp-inherents 4.0.0-dev", + "sp-io 23.0.0", + "sp-keystore 0.27.0", "sp-rpc", - "sp-runtime", - "sp-state-machine", + "sp-runtime 24.0.0", + "sp-state-machine 0.28.0", "sp-timestamp", "sp-transaction-storage-proof", - "sp-version", - "sp-weights", + "sp-version 22.0.0", + "sp-weights 20.0.0", "substrate-rpc-client", "zstd 0.12.4", ] @@ -10374,9 +11529,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" @@ -10431,9 +11586,9 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" @@ -10947,9 +12102,9 @@ dependencies = [ [[package]] name = "wide" -version = "0.7.21" +version = "0.7.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8dc749a1b03f3c255a3064a4f5c0ee5ed09b7c6bc6d4525d31f779cd74d7fc" +checksum = "1134eff459f1063780b94cc78b704e2212cac12abd554e4268f5b8f9dfcc1883" dependencies = [ "bytemuck", "safe_arch", @@ -11236,9 +12391,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.9" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c949fede1d13936a99f14fafd3e76fd642b556dd2ce96287fbe2e0151bfac6" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index 0cb2da25..1b812c54 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,7 @@ members = [ "pallets/operations", "pallets/support", "pallets/vk-storage", + "pallets/pink-scorpion", "primitives", "rate-limiter", "runtime-interfaces", @@ -84,6 +85,7 @@ tiny-bip39 = { version = "1.0" } tokio = { version = "1.38" } rand_pcg = { version = "0.3.1", default-features = false } + frame-benchmarking = { git = "https://github.com/Cardinal-Cryptography/polkadot-sdk.git", branch = "aleph-v1.6.0", default-features = false } frame-benchmarking-cli = { git = "https://github.com/Cardinal-Cryptography/polkadot-sdk.git", branch = "aleph-v1.6.0", default-features = false } frame-election-provider-support = { git = "https://github.com/Cardinal-Cryptography/polkadot-sdk.git", branch = "aleph-v1.6.0", default-features = false } @@ -197,3 +199,4 @@ pallet-operations = { path = "pallets/operations", default-features = false } pallets-support = { path = "pallets/support", default-features = false } pallet-vk-storage = { path = "pallets/vk-storage", default-features = false } primitives = { path = "primitives", default-features = false } +pallet_pink_scorpion = { path = "pallets/pink-scorpion", default-features = false } \ No newline at end of file diff --git a/bin/runtime/Cargo.toml b/bin/runtime/Cargo.toml index af57d7fe..b0a41f35 100644 --- a/bin/runtime/Cargo.toml +++ b/bin/runtime/Cargo.toml @@ -71,6 +71,7 @@ pallet-operations = { workspace = true } primitives = { workspace = true } pallet-proxy = { workspace = true } pallet-vk-storage = { workspace = true } +pallet_pink_scorpion = { workspace = true } baby-liminal-extension = { workspace = true, features = ["runtime"] } @@ -110,6 +111,7 @@ std = [ "pallet-proxy/std", "pallet-utility/std", "pallet-vk-storage/std", + "pallet_pink_scorpion/std", "sp-api/std", "sp-block-builder/std", "sp-consensus-aura/std", @@ -167,6 +169,7 @@ try-runtime = [ "pallet-proxy/try-runtime", "pallet-feature-control/try-runtime", "pallet-vk-storage/try-runtime", + "pallet_pink_scorpion/try-runtime", "pallet-safe-mode/try-runtime", "pallet-tx-pause/try-runtime", ] @@ -191,6 +194,7 @@ runtime-benchmarks = [ "pallet-utility/runtime-benchmarks", "pallet-vesting/runtime-benchmarks", "pallet-vk-storage/runtime-benchmarks", + "pallet_pink_scorpion/runtime-benchmarks", "pallet-safe-mode/runtime-benchmarks", "pallet-tx-pause/runtime-benchmarks", ] diff --git a/bin/runtime/src/lib.rs b/bin/runtime/src/lib.rs index 27e6c52c..5ae4419c 100644 --- a/bin/runtime/src/lib.rs +++ b/bin/runtime/src/lib.rs @@ -1005,6 +1005,8 @@ construct_runtime!( SafeMode: pallet_safe_mode = 25, TxPause: pallet_tx_pause = 26, Operations: pallet_operations = 255, + // Include your custom pallet + PinkScorpion: pallet_pink_scorpion::{Module, Call, Event}, } ); @@ -1607,3 +1609,127 @@ mod tests { assert!(lhs < rhs); } } + + + +#[cfg_attr(not(feature = "std"), no_std)] + +#[frame_support::pallet] +pub mod pallet_pink_scorpion { + use super::*; + use frame_support::pallet_prelude::*; + use frame_system::pallet_prelude::*; + use scale_info::prelude::vec::Vec; + use core::convert::TryInto; + + #[pallet::pallet] + #[pallet::without_storage_info] + pub struct Pallet(_); + + #[pallet::config] + pub trait Config: frame_system::Config { + type RuntimeEvent: From> + IsType<::RuntimeEvent>; + } + + #[derive(Encode, Decode, MaxEncodedLen, TypeInfo, Debug, Clone, PartialEq, Eq)] + pub struct FSEvent { + pub creationtime: [u8; 64], + pub filepath: [u8; 256], + pub eventkey: [u8; 128], + } + + #[pallet::storage] + #[pallet::getter(fn info)] + pub(super) type DisAssembly = StorageMap<_, Blake2_128Concat, T::AccountId, Vec<(u64, FSEvent)>, OptionQuery>; + + #[pallet::event] + #[pallet::generate_deposit(pub(super) fn deposit_event)] + pub enum Event { + /// An event indicating a file has been disassembled. + FileDisassembled { who: T::AccountId, event: FSEvent }, + /// An event indicating a file has been reassembled. + FileReassembled { who: T::AccountId, creation_time: Vec, file_path: Vec, event_key: Vec }, + } + + #[pallet::error] + pub enum Error { + /// Error indicating the creation time is too long. + CreationTimeTooLong, + /// Error indicating the file path is too long. + FilePathTooLong, + /// Error indicating the event key is too long. + EventKeyTooLong, + } + + #[pallet::call] + impl Pallet { + #[pallet::call_index(0)] + #[pallet::weight(T::DbWeight::get().writes(1) + 10_000)] + pub fn file_disassembled( + origin: OriginFor, + creation_time: Vec, + file_path: Vec, + event_key: Vec, + ) -> DispatchResult { + let sender = ensure_signed(origin)?; + + // Validate input lengths + ensure!(creation_time.len() <= 64, Error::::CreationTimeTooLong); + ensure!(file_path.len() <= 256, Error::::FilePathTooLong); + ensure!(event_key.len() <= 128, Error::::EventKeyTooLong); + + // Create FSEvent instance + let event = FSEvent { + creationtime: Self::vec_to_array::<64>(creation_time)?, + filepath: Self::vec_to_array::<256>(file_path)?, + eventkey: Self::vec_to_array::<128>(event_key)?, + }; + + // Get the current events for the sender + let mut events_vec = DisAssembly::::get(&sender).unwrap_or_default(); + + // Generate a new key for the event using the block number converted to u64 + let key: u64 = frame_system::Pallet::::block_number().try_into().map_err(|_| Error::::FilePathTooLong)?; + + // Insert the new event into the Vec + events_vec.push((key, event.clone())); + + // Store the updated events in storage + DisAssembly::::insert(&sender, events_vec); + + // Emit event for file disassembly + Self::deposit_event(Event::::FileDisassembled { + who: sender, + event, + }); + + Ok(()) + } + + #[pallet::call_index(1)] + #[pallet::weight(T::DbWeight::get().writes(1) + 10_000.into())] + pub fn file_reassembled( + origin: OriginFor, + creation_time: Vec, + file_path: Vec, + event_key: Vec, + ) -> DispatchResult { + let sender = ensure_signed(origin)?; + + // Emit event for file reassembly + Self::deposit_event(Event::FileReassembled { who: sender, creation_time, file_path, event_key }); + Ok(()) + } + } + + impl Pallet { + fn vec_to_array(vec: Vec) -> Result<[u8; N], Error> { + let mut array = [0u8; N]; + if vec.len() > N { + return Err(Error::::CreationTimeTooLong); + } + array[..vec.len()].copy_from_slice(&vec); + Ok(array) + } + } +} diff --git a/pallets/pink-scorpion/Cargo.toml b/pallets/pink-scorpion/Cargo.toml new file mode 100644 index 00000000..cb0e7902 --- /dev/null +++ b/pallets/pink-scorpion/Cargo.toml @@ -0,0 +1,56 @@ +[package] +name = "pallet_pink_scorpion" +description = "FRAME pallet template for defining custom runtime logic." +version = "0.0.0" +license = "MIT-0" +authors.workspace = true +homepage.workspace = true +repository.workspace = true +edition.workspace = true +publish = false + + +[package.metadata.docs.rs] +targets = ["x86_64-unknown-linux-gnu"] + +[dependencies] +codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = [ + "derive", +] } +scale-info = { version = "2.10.0", default-features = false, features = [ + "derive", +] } + +# frame deps +frame-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0", default-features = false, optional = true } +frame-support = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0", default-features = false } +frame-system = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0", default-features = false } + +[dev-dependencies] +sp-core = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0" } +sp-io = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0" } +sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0" } + +[features] +default = ["std"] +std = [ + "codec/std", + "frame-benchmarking?/std", + "frame-support/std", + "frame-system/std", + "scale-info/std", + "sp-core/std", + "sp-io/std", + "sp-runtime/std", +] +runtime-benchmarks = [ + "frame-benchmarking/runtime-benchmarks", + "frame-support/runtime-benchmarks", + "frame-system/runtime-benchmarks", + "sp-runtime/runtime-benchmarks", +] +try-runtime = [ + "frame-support/try-runtime", + "frame-system/try-runtime", + "sp-runtime/try-runtime", +] \ No newline at end of file diff --git a/pallets/pink-scorpion/src/lib.rs b/pallets/pink-scorpion/src/lib.rs new file mode 100644 index 00000000..f23914f2 --- /dev/null +++ b/pallets/pink-scorpion/src/lib.rs @@ -0,0 +1,117 @@ +#![cfg_attr(not(feature = "std"), no_std)] + +#[frame_support::pallet] +pub mod pallet_pink_scorpion { + use super::*; + use frame_support::pallet_prelude::*; + use frame_system::pallet_prelude::*; + use scale_info::prelude::vec::Vec; + use core::convert::TryInto; + + #[pallet::pallet] + #[pallet::without_storage_info] + pub struct Pallet(_); + + #[pallet::config] + pub trait Config: frame_system::Config { + type RuntimeEvent: From> + IsType<::RuntimeEvent>; + } + + #[derive(Encode, Decode, MaxEncodedLen, TypeInfo, Debug, Clone, PartialEq, Eq)] + pub struct FSEvent { + pub creationtime: [u8; 64], + pub filepath: [u8; 256], + pub eventkey: [u8; 128], + } + + #[pallet::storage] + #[pallet::getter(fn info)] + pub(super) type DisAssembly = StorageMap<_, Blake2_128Concat, T::AccountId, Vec<(u64, FSEvent)>, OptionQuery>; + + #[pallet::event] + #[pallet::generate_deposit(pub(super) fn deposit_event)] + pub enum Event { + /// An event indicating a file has been disassembled. + FileDisassembled { who: T::AccountId, event: FSEvent }, + /// An event indicating a file has been reassembled. + FileReassembled { who: T::AccountId, creation_time: Vec, file_path: Vec, event_key: Vec }, + } + + #[pallet::error] + pub enum Error { + /// Error indicating the creation time is too long. + CreationTimeTooLong, + /// Error indicating the file path is too long. + FilePathTooLong, + /// Error indicating the event key is too long. + EventKeyTooLong, + } + + #[pallet::call] + impl Pallet { + pub fn file_disassembled( + origin: OriginFor, + creation_time: Vec, + file_path: Vec, + event_key: Vec, + ) -> DispatchResult { + let sender = ensure_signed(origin)?; + + // Validate input lengths + ensure!(creation_time.len() <= 64, Error::::CreationTimeTooLong); + ensure!(file_path.len() <= 256, Error::::FilePathTooLong); + ensure!(event_key.len() <= 128, Error::::EventKeyTooLong); + + // Create FSEvent instance + let event = FSEvent { + creationtime: Self::vec_to_array::<64>(creation_time)?, + filepath: Self::vec_to_array::<256>(file_path)?, + eventkey: Self::vec_to_array::<128>(event_key)?, + }; + + // Get the current events for the sender + let mut events_vec = DisAssembly::::get(&sender).unwrap_or_default(); + + // Generate a new key for the event using the block number converted to u64 + let key: u64 = frame_system::Pallet::::block_number().try_into().map_err(|_| Error::::FilePathTooLong)?; + + // Insert the new event into the Vec + events_vec.push((key, event.clone())); + + // Store the updated events in storage + DisAssembly::::insert(&sender, events_vec); + + // Emit event for file disassembly + Self::deposit_event(Event::::FileDisassembled { + who: sender, + event, + }); + + Ok(()) + } + + pub fn file_reassembled( + origin: OriginFor, + creation_time: Vec, + file_path: Vec, + event_key: Vec, + ) -> DispatchResult { + let sender = ensure_signed(origin)?; + + // Emit event for file reassembly + Self::deposit_event(Event::FileReassembled { who: sender, creation_time, file_path, event_key }); + Ok(()) + } + } + + impl Pallet { + fn vec_to_array(vec: Vec) -> Result<[u8; N], Error> { + let mut array = [0u8; N]; + if vec.len() > N { + return Err(Error::::CreationTimeTooLong); + } + array[..vec.len()].copy_from_slice(&vec); + Ok(array) + } + } +} From 3863ab27fcaaa13d52144cd808299d35f20c718f Mon Sep 17 00:00:00 2001 From: Arif Ahmad Date: Thu, 13 Jun 2024 09:41:48 +0530 Subject: [PATCH 2/4] 13-jun-update-aleph-zero --- Cargo.lock | 2549 +++++------------ Cargo.toml | 3 - bin/node/src/service.rs | 13 +- bin/runtime/Cargo.toml | 4 - bin/runtime/src/lib.rs | 116 +- .../src/block/substrate/chain_status.rs | 13 + finality-aleph/src/block/substrate/mod.rs | 19 +- finality-aleph/src/data_io/data_provider.rs | 12 +- finality-aleph/src/finalization.rs | 7 +- finality-aleph/src/import.rs | 69 +- finality-aleph/src/lib.rs | 2 - finality-aleph/src/metrics/all_block.rs | 53 - finality-aleph/src/metrics/best_block.rs | 99 + finality-aleph/src/metrics/chain_state.rs | 682 ----- finality-aleph/src/metrics/finality_rate.rs | 53 +- finality-aleph/src/metrics/mod.rs | 12 +- finality-aleph/src/metrics/slo.rs | 122 + finality-aleph/src/metrics/timing.rs | 40 +- .../src/metrics/transaction_pool.rs | 436 ++- finality-aleph/src/network/session/mod.rs | 2 +- finality-aleph/src/nodes.rs | 40 +- .../src/party/manager/aggregator.rs | 11 +- finality-aleph/src/party/manager/mod.rs | 6 +- finality-aleph/src/sync/service.rs | 24 +- pallets/pink-scorpion/Cargo.toml | 56 - pallets/pink-scorpion/src/lib.rs | 117 - primitives/src/lib.rs | 3 + .../aleph_chain_version.py | 28 + .../{common.py => chain_operations.py} | 126 +- scripts/accounts-invariants/contracts.py | 44 + scripts/accounts-invariants/logger.py | 19 + .../pallet-balances-maintenance.py | 764 +---- scripts/accounts-invariants/total_issuance.py | 130 + scripts/accounts-invariants/utils.py | 18 + 34 files changed, 1814 insertions(+), 3878 deletions(-) delete mode 100644 finality-aleph/src/metrics/all_block.rs create mode 100644 finality-aleph/src/metrics/best_block.rs delete mode 100644 finality-aleph/src/metrics/chain_state.rs create mode 100644 finality-aleph/src/metrics/slo.rs delete mode 100644 pallets/pink-scorpion/Cargo.toml delete mode 100644 pallets/pink-scorpion/src/lib.rs create mode 100644 scripts/accounts-invariants/aleph_chain_version.py rename scripts/accounts-invariants/{common.py => chain_operations.py} (51%) create mode 100644 scripts/accounts-invariants/contracts.py create mode 100644 scripts/accounts-invariants/logger.py create mode 100644 scripts/accounts-invariants/total_issuance.py create mode 100644 scripts/accounts-invariants/utils.py diff --git a/Cargo.lock b/Cargo.lock index 5779e082..272f75b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -277,7 +277,7 @@ dependencies = [ "aleph-runtime-interfaces", "fake-runtime-api", "finality-aleph", - "frame-benchmarking 4.0.0-dev", + "frame-benchmarking", "frame-benchmarking-cli", "futures", "jsonrpsee", @@ -304,15 +304,15 @@ dependencies = [ "sc-transaction-pool-api", "serde", "serde_json", - "sp-api 4.0.0-dev", - "sp-arithmetic 16.0.0", + "sp-api", + "sp-arithmetic", "sp-block-builder", "sp-blockchain", "sp-consensus", "sp-consensus-aura", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-io", + "sp-runtime", "sp-timestamp", "sp-transaction-pool", "static_assertions", @@ -327,10 +327,10 @@ name = "aleph-runtime" version = "14.0.0+dev" dependencies = [ "baby-liminal-extension", - "frame-benchmarking 4.0.0-dev", + "frame-benchmarking", "frame-executive", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "frame-system-rpc-runtime-api", "frame-try-runtime", "pallet-aleph", @@ -363,26 +363,25 @@ dependencies = [ "pallet-utility", "pallet-vesting", "pallet-vk-storage", - "pallet_pink_scorpion", "parity-scale-codec", "primitives", "scale-info", "smallvec", - "sp-api 4.0.0-dev", - "sp-application-crypto 23.0.0", + "sp-api", + "sp-application-crypto", "sp-block-builder", "sp-consensus-aura", - "sp-core 21.0.0", - "sp-genesis-builder 0.1.0", - "sp-inherents 4.0.0-dev", - "sp-io 23.0.0", + "sp-core", + "sp-genesis-builder", + "sp-inherents", + "sp-io", "sp-offchain", - "sp-runtime 24.0.0", + "sp-runtime", "sp-session", - "sp-staking 4.0.0-dev", - "sp-std 8.0.0", + "sp-staking", + "sp-std", "sp-transaction-pool", - "sp-version 22.0.0", + "sp-version", "substrate-wasm-builder", ] @@ -394,7 +393,7 @@ dependencies = [ "log", "parity-scale-codec", "rand", - "sp-runtime-interface 17.0.0", + "sp-runtime-interface", ] [[package]] @@ -459,9 +458,9 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" dependencies = [ "windows-sys 0.52.0", ] @@ -505,20 +504,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "aquamarine" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" -dependencies = [ - "include_dir", - "itertools 0.10.5", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "ark-bls12-377" version = "0.4.0" @@ -530,18 +515,6 @@ dependencies = [ "ark-std", ] -[[package]] -name = "ark-bls12-377-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-models-ext", - "ark-std", -] - [[package]] name = "ark-bls12-381" version = "0.4.0" @@ -554,45 +527,6 @@ dependencies = [ "ark-std", ] -[[package]] -name = "ark-bls12-381-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c" -dependencies = [ - "ark-bls12-381", - "ark-ec", - "ark-ff", - "ark-models-ext", - "ark-serialize", - "ark-std", -] - -[[package]] -name = "ark-bw6-761" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-ff", - "ark-std", -] - -[[package]] -name = "ark-bw6-761-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2" -dependencies = [ - "ark-bw6-761", - "ark-ec", - "ark-ff", - "ark-models-ext", - "ark-std", -] - [[package]] name = "ark-ec" version = "0.4.2" @@ -607,60 +541,9 @@ dependencies = [ "hashbrown 0.13.2", "itertools 0.10.5", "num-traits", - "rayon", "zeroize", ] -[[package]] -name = "ark-ed-on-bls12-377" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6" -dependencies = [ - "ark-bls12-377", - "ark-ec", - "ark-ff", - "ark-std", -] - -[[package]] -name = "ark-ed-on-bls12-377-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d" -dependencies = [ - "ark-ec", - "ark-ed-on-bls12-377", - "ark-ff", - "ark-models-ext", - "ark-std", -] - -[[package]] -name = "ark-ed-on-bls12-381-bandersnatch" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" -dependencies = [ - "ark-bls12-381", - "ark-ec", - "ark-ff", - "ark-std", -] - -[[package]] -name = "ark-ed-on-bls12-381-bandersnatch-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346" -dependencies = [ - "ark-ec", - "ark-ed-on-bls12-381-bandersnatch", - "ark-ff", - "ark-models-ext", - "ark-std", -] - [[package]] name = "ark-ff" version = "0.4.2" @@ -704,19 +587,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ark-models-ext" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2" -dependencies = [ - "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", - "derivative", -] - [[package]] name = "ark-poly" version = "0.4.2" @@ -730,35 +600,6 @@ dependencies = [ "hashbrown 0.13.2", ] -[[package]] -name = "ark-scale" -version = "0.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" -dependencies = [ - "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", - "parity-scale-codec", - "scale-info", -] - -[[package]] -name = "ark-secret-scalar" -version = "0.0.2" -source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e" -dependencies = [ - "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", - "ark-transcript", - "digest 0.10.7", - "getrandom_or_panic", - "zeroize", -] - [[package]] name = "ark-serialize" version = "0.4.2" @@ -790,20 +631,6 @@ checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", "rand", - "rayon", -] - -[[package]] -name = "ark-transcript" -version = "0.0.2" -source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e" -dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", - "digest 0.10.7", - "rand_core 0.6.4", - "sha3 0.10.8", ] [[package]] @@ -961,9 +788,9 @@ version = "0.1.0" dependencies = [ "aleph-runtime", "aleph-runtime-interfaces", - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "getrandom 0.2.15", "halo2_proofs", "ink", @@ -973,8 +800,8 @@ dependencies = [ "pallet-vk-storage", "parity-scale-codec", "paste", - "sp-core 21.0.0", - "sp-std 8.0.0", + "sp-core", + "sp-std", ] [[package]] @@ -992,29 +819,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "bandersnatch_vrfs" -version = "0.0.4" -source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e" -dependencies = [ - "ark-bls12-381", - "ark-ec", - "ark-ed-on-bls12-381-bandersnatch", - "ark-ff", - "ark-serialize", - "ark-std", - "dleq_vrf", - "fflonk", - "merlin", - "rand_chacha 0.3.1", - "rand_core 0.6.4", - "ring 0.1.0", - "sha2 0.10.8", - "sp-ark-bls12-381", - "sp-ark-ed-on-bls12-381-bandersnatch", - "zeroize", -] - [[package]] name = "base-x" version = "0.2.11" @@ -1090,7 +894,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" dependencies = [ - "bitcoin_hashes 0.11.0", + "bitcoin_hashes", "rand", "rand_core 0.6.4", "serde", @@ -1103,28 +907,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" -[[package]] -name = "bitcoin-internals" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" - [[package]] name = "bitcoin_hashes" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" -[[package]] -name = "bitcoin_hashes" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" -dependencies = [ - "bitcoin-internals", - "hex-conservative", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -1242,18 +1030,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bounded-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32385ecb91a31bddaf908e8dcf4a15aef1bcd3913cc03ebfad02ff6d568abc1" -dependencies = [ - "log", - "parity-scale-codec", - "scale-info", - "serde", -] - [[package]] name = "bs58" version = "0.4.0" @@ -1379,9 +1155,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.99" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" dependencies = [ "jobserver", "libc", @@ -1468,9 +1244,9 @@ dependencies = [ "sc-service", "serde", "serde_json", - "sp-application-crypto 23.0.0", - "sp-core 21.0.0", - "sp-runtime 24.0.0", + "sp-application-crypto", + "sp-core", + "sp-runtime", ] [[package]] @@ -1533,9 +1309,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.6" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9689a29b593160de5bc4aacab7b5d54fb52231de70122626c178e6a368994c7" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -1543,9 +1319,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.6" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5387378c84f6faa26890ebf9f0a92989f8873d4d380467bcd0d8d8620424df" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", @@ -1556,9 +1332,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.5" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -1568,9 +1344,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "codespan-reporting" @@ -1595,26 +1371,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" dependencies = [ "strum 0.26.2", - "strum_macros 0.26.4", + "strum_macros 0.26.3", "unicode-width", ] -[[package]] -name = "common" -version = "0.1.0" -source = "git+https://github.com/w3f/ring-proof#b273d33f9981e2bb3375ab45faeb537f7ee35224" -dependencies = [ - "ark-ec", - "ark-ff", - "ark-poly", - "ark-serialize", - "ark-std", - "fflonk", - "getrandom_or_panic", - "merlin", - "rand_chacha 0.3.1", -] - [[package]] name = "common-path" version = "1.0.0" @@ -1993,9 +1753,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.123" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8194f089b6da4751d6c1da1ef37c17255df51f9346cdb160f8b096562ae4a85c" +checksum = "bb497fad022245b29c2a0351df572e2d67c1046bcef2260ebc022aec81efea82" dependencies = [ "cc", "cxxbridge-flags", @@ -2005,9 +1765,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.123" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8df9a089caae66634d754672d5f909395f30f38af6ff19366980d8a8b57501" +checksum = "9327c7f9fbd6329a200a5d4aa6f674c60ab256525ff0084b52a889d4e4c60cee" dependencies = [ "cc", "codespan-reporting", @@ -2020,15 +1780,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.123" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25290be4751803672a70b98c68b51c1e7d0a640ab5a4377f240f9d2e70054cd1" +checksum = "688c799a4a846f1c0acb9f36bb9c6272d9b3d9457f3633c7753c6057270df13c" [[package]] name = "cxxbridge-macro" -version = "1.0.123" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8cb317cb13604b4752416783bb25070381c36e844743e4146b7f8e55de7d140" +checksum = "928bc249a7e3cd554fd2e8e08a426e9670c50bbfc9a621653cfa9accc9641783" dependencies = [ "proc-macro2", "quote", @@ -2264,22 +2024,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "dleq_vrf" -version = "0.0.2" -source = "git+https://github.com/w3f/ring-vrf?rev=e9782f9#e9782f938629c90f3adb3fff2358bc8d1386af3e" -dependencies = [ - "ark-ec", - "ark-ff", - "ark-scale", - "ark-secret-scalar", - "ark-serialize", - "ark-std", - "ark-transcript", - "arrayvec", - "zeroize", -] - [[package]] name = "docify" version = "0.2.8" @@ -2303,7 +2047,7 @@ dependencies = [ "regex", "syn 2.0.66", "termcolor", - "toml 0.8.14", + "toml 0.8.13", "walkdir", ] @@ -2362,7 +2106,6 @@ dependencies = [ "digest 0.10.7", "elliptic-curve", "rfc6979", - "serdect", "signature", "spki", ] @@ -2427,7 +2170,6 @@ dependencies = [ "pkcs8", "rand_core 0.6.4", "sec1", - "serdect", "subtle 2.5.0", "zeroize", ] @@ -2452,18 +2194,18 @@ dependencies = [ [[package]] name = "enumflags2" -version = "0.7.10" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" dependencies = [ "enumflags2_derive", ] [[package]] name = "enumflags2_derive" -version = "0.7.10" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" dependencies = [ "proc-macro2", "quote", @@ -2559,23 +2301,23 @@ dependencies = [ name = "fake-runtime-api" version = "0.1.0" dependencies = [ - "frame-support 4.0.0-dev", + "frame-support", "frame-system-rpc-runtime-api", "pallet-aleph-runtime-api", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "primitives", - "sp-api 4.0.0-dev", + "sp-api", "sp-block-builder", "sp-consensus-aura", - "sp-core 21.0.0", - "sp-inherents 4.0.0-dev", + "sp-core", + "sp-inherents", "sp-offchain", - "sp-runtime 24.0.0", + "sp-runtime", "sp-session", - "sp-std 8.0.0", + "sp-std", "sp-transaction-pool", - "sp-version 22.0.0", + "sp-version", ] [[package]] @@ -2611,19 +2353,6 @@ dependencies = [ "subtle 2.5.0", ] -[[package]] -name = "fflonk" -version = "0.1.0" -source = "git+https://github.com/w3f/fflonk#1e854f35e9a65d08b11a86291405cdc95baa0a35" -dependencies = [ - "ark-ec", - "ark-ff", - "ark-poly", - "ark-serialize", - "ark-std", - "merlin", -] - [[package]] name = "fiat-crypto" version = "0.2.9" @@ -2669,7 +2398,7 @@ dependencies = [ "derive_more", "env_logger", "fake-runtime-api", - "frame-support 4.0.0-dev", + "frame-support", "futures", "futures-timer", "hash-db", @@ -2703,19 +2432,19 @@ dependencies = [ "sc-utils", "scale-info", "serde", - "sp-api 4.0.0-dev", - "sp-application-crypto 23.0.0", + "sp-api", + "sp-application-crypto", "sp-blockchain", "sp-consensus", "sp-consensus-aura", "sp-consensus-slots", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-keystore 0.27.0", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", + "sp-core", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-state-machine", "sp-timestamp", - "sp-trie 22.0.0", + "sp-trie", "static_assertions", "substrate-prometheus-endpoint", "substrate-test-client", @@ -2813,48 +2542,23 @@ name = "frame-benchmarking" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support 4.0.0-dev", - "frame-support-procedural 4.0.0-dev", - "frame-system 4.0.0-dev", - "linregress", - "log", - "parity-scale-codec", - "paste", - "scale-info", - "serde", - "sp-api 4.0.0-dev", - "sp-application-crypto 23.0.0", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-runtime-interface 17.0.0", - "sp-std 8.0.0", - "sp-storage 13.0.0", - "static_assertions", -] - -[[package]] -name = "frame-benchmarking" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "frame-support 28.0.0", - "frame-support-procedural 23.0.0", - "frame-system 28.0.0", + "frame-support", + "frame-support-procedural", + "frame-system", "linregress", "log", "parity-scale-codec", "paste", "scale-info", "serde", - "sp-api 26.0.0", - "sp-application-crypto 30.0.0", - "sp-core 28.0.0", - "sp-io 30.0.0", - "sp-runtime 31.0.1", - "sp-runtime-interface 24.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-io", + "sp-runtime", + "sp-runtime-interface", + "sp-std", + "sp-storage", "static_assertions", ] @@ -2868,9 +2572,9 @@ dependencies = [ "chrono", "clap", "comfy-table", - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "gethostname", "handlebars", "itertools 0.10.5", @@ -2889,19 +2593,19 @@ dependencies = [ "sc-sysinfo", "serde", "serde_json", - "sp-api 4.0.0-dev", + "sp-api", "sp-blockchain", - "sp-core 21.0.0", + "sp-core", "sp-database", - "sp-externalities 0.19.0", - "sp-inherents 4.0.0-dev", - "sp-io 23.0.0", - "sp-keystore 0.27.0", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", - "sp-storage 13.0.0", - "sp-trie 22.0.0", - "sp-wasm-interface 14.0.0", + "sp-externalities", + "sp-inherents", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-state-machine", + "sp-storage", + "sp-trie", + "sp-wasm-interface", "thiserror", "thousands", ] @@ -2923,15 +2627,15 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "frame-election-provider-solution-type", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-arithmetic 16.0.0", - "sp-core 21.0.0", + "sp-arithmetic", + "sp-core", "sp-npos-elections", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-runtime", + "sp-std", ] [[package]] @@ -2939,17 +2643,17 @@ name = "frame-executive" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "frame-try-runtime", "log", "parity-scale-codec", "scale-info", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", - "sp-tracing 10.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-tracing", ] [[package]] @@ -2975,10 +2679,10 @@ dependencies = [ "log", "parity-scale-codec", "serde", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-state-machine", "spinners", "substrate-rpc-client", "tokio", @@ -2990,13 +2694,13 @@ name = "frame-support" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "aquamarine 0.4.0", + "aquamarine", "array-bytes 6.2.3", "bitflags 1.3.2", "docify", "environmental", "frame-metadata", - "frame-support-procedural 4.0.0-dev", + "frame-support-procedural", "impl-trait-for-tuples", "k256", "log", @@ -3007,62 +2711,21 @@ dependencies = [ "serde", "serde_json", "smallvec", - "sp-api 4.0.0-dev", - "sp-arithmetic 16.0.0", - "sp-core 21.0.0", + "sp-api", + "sp-arithmetic", + "sp-core", "sp-core-hashing-proc-macro", - "sp-debug-derive 8.0.0", - "sp-genesis-builder 0.1.0", - "sp-inherents 4.0.0-dev", - "sp-io 23.0.0", - "sp-metadata-ir 0.1.0", - "sp-runtime 24.0.0", - "sp-staking 4.0.0-dev", - "sp-state-machine 0.28.0", - "sp-std 8.0.0", - "sp-tracing 10.0.0", - "sp-weights 20.0.0", - "static_assertions", - "tt-call", -] - -[[package]] -name = "frame-support" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "aquamarine 0.5.0", - "array-bytes 6.2.3", - "bitflags 1.3.2", - "docify", - "environmental", - "frame-metadata", - "frame-support-procedural 23.0.0", - "impl-trait-for-tuples", - "k256", - "log", - "macro_magic", - "parity-scale-codec", - "paste", - "scale-info", - "serde", - "serde_json", - "smallvec", - "sp-api 26.0.0", - "sp-arithmetic 23.0.0", - "sp-core 28.0.0", - "sp-crypto-hashing-proc-macro", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-genesis-builder 0.7.0", - "sp-inherents 26.0.0", - "sp-io 30.0.0", - "sp-metadata-ir 0.6.0", - "sp-runtime 31.0.1", - "sp-staking 26.0.0", - "sp-state-machine 0.35.0", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-tracing 16.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-weights 27.0.0", + "sp-debug-derive", + "sp-genesis-builder", + "sp-inherents", + "sp-io", + "sp-metadata-ir", + "sp-runtime", + "sp-staking", + "sp-state-machine", + "sp-std", + "sp-tracing", + "sp-weights", "static_assertions", "tt-call", ] @@ -3076,7 +2739,7 @@ dependencies = [ "cfg-expr", "derive-syn-parse 0.1.5", "expander", - "frame-support-procedural-tools 4.0.0-dev", + "frame-support-procedural-tools", "itertools 0.10.5", "macro_magic", "proc-macro-warning", @@ -3087,42 +2750,11 @@ dependencies = [ ] [[package]] -name = "frame-support-procedural" -version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" +name = "frame-support-procedural-tools" +version = "4.0.0-dev" +source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "Inflector", - "cfg-expr", - "derive-syn-parse 0.1.5", - "expander", - "frame-support-procedural-tools 10.0.0", - "itertools 0.10.5", - "macro_magic", - "proc-macro-warning", - "proc-macro2", - "quote", - "sp-crypto-hashing", - "syn 2.0.66", -] - -[[package]] -name = "frame-support-procedural-tools" -version = "4.0.0-dev" -source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" -dependencies = [ - "frame-support-procedural-tools-derive 3.0.0", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "frame-support-procedural-tools" -version = "10.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "frame-support-procedural-tools-derive 11.0.0", + "frame-support-procedural-tools-derive", "proc-macro-crate 3.1.0", "proc-macro2", "quote", @@ -3139,16 +2771,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "frame-support-procedural-tools-derive" -version = "11.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "frame-system" version = "4.0.0-dev" @@ -3156,37 +2778,17 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "cfg-if", "docify", - "frame-support 4.0.0-dev", - "log", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", - "sp-version 22.0.0", - "sp-weights 20.0.0", -] - -[[package]] -name = "frame-system" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "cfg-if", - "docify", - "frame-support 28.0.0", + "frame-support", "log", "parity-scale-codec", "scale-info", "serde", - "sp-core 28.0.0", - "sp-io 30.0.0", - "sp-runtime 31.0.1", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-version 29.0.0", - "sp-weights 27.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-version", + "sp-weights", ] [[package]] @@ -3195,7 +2797,7 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "parity-scale-codec", - "sp-api 4.0.0-dev", + "sp-api", ] [[package]] @@ -3203,11 +2805,11 @@ name = "frame-try-runtime" version = "0.10.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support 4.0.0-dev", + "frame-support", "parity-scale-codec", - "sp-api 4.0.0-dev", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-api", + "sp-runtime", + "sp-std", ] [[package]] @@ -3628,12 +3230,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hex-conservative" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" - [[package]] name = "hkdf" version = "0.12.4" @@ -3751,9 +3347,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -4432,7 +4028,6 @@ dependencies = [ "ecdsa", "elliptic-curve", "once_cell", - "serdect", "sha2 0.10.8", ] @@ -5024,18 +4619,18 @@ dependencies = [ [[package]] name = "linkme" -version = "0.3.27" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb76662d78edc9f9bf56360d6919bdacc8b7761227727e5082f128eeb90bbf5" +checksum = "833222afbfe72868ac8f9770c91a33673f0d5fefc37c9dbe94aa3548b571623f" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.27" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dccda732e04fa3baf2e17cf835bfe2601c7c2edafd64417c627dabae3a8cda" +checksum = "39f0dea92dbea3271557cc2e1848723967bba81f722f95026860974ec9283f08" dependencies = [ "proc-macro2", "quote", @@ -5207,15 +4802,6 @@ dependencies = [ "regex-automata 0.1.10", ] -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - [[package]] name = "matches" version = "0.1.10" @@ -5615,16 +5201,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - [[package]] name = "num-bigint" version = "0.4.5" @@ -5765,18 +5341,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "pallet-aleph" version = "0.6.0" dependencies = [ - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "log", "pallet-balances", "pallet-session", @@ -5784,10 +5354,10 @@ dependencies = [ "parity-scale-codec", "primitives", "scale-info", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] @@ -5795,9 +5365,9 @@ name = "pallet-aleph-runtime-api" version = "0.1.0" dependencies = [ "primitives", - "sp-api 4.0.0-dev", + "sp-api", "sp-consensus-aura", - "sp-std 8.0.0", + "sp-std", ] [[package]] @@ -5805,16 +5375,16 @@ name = "pallet-aura" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "log", "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-application-crypto 23.0.0", + "sp-application-crypto", "sp-consensus-aura", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-runtime", + "sp-std", ] [[package]] @@ -5822,13 +5392,13 @@ name = "pallet-authorship" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-runtime", + "sp-std", ] [[package]] @@ -5836,23 +5406,23 @@ name = "pallet-babe" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "pallet-authorship", "pallet-session", "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-application-crypto 23.0.0", + "sp-application-crypto", "sp-consensus-babe", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-io", + "sp-runtime", "sp-session", - "sp-staking 4.0.0-dev", - "sp-std 8.0.0", + "sp-staking", + "sp-std", ] [[package]] @@ -5860,22 +5430,22 @@ name = "pallet-balances" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-committee-management" version = "0.2.0" dependencies = [ - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "log", "pallet-authorship", "pallet-session", @@ -5886,10 +5456,10 @@ dependencies = [ "rand", "rand_pcg", "scale-info", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-staking 4.0.0-dev", - "sp-std 8.0.0", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] @@ -5899,9 +5469,9 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "bitflags 1.3.2", "environmental", - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "impl-trait-for-tuples", "log", "pallet-balances", @@ -5913,11 +5483,11 @@ dependencies = [ "scale-info", "serde", "smallvec", - "sp-api 4.0.0-dev", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-api", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", "staging-xcm", "staging-xcm-builder", "wasm-instrument 0.4.0", @@ -5962,8 +5532,8 @@ name = "pallet-elections" version = "0.6.0" dependencies = [ "frame-election-provider-support", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "pallet-authorship", "pallet-balances", "pallet-staking", @@ -5973,27 +5543,27 @@ dependencies = [ "rand", "rand_pcg", "scale-info", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-staking 4.0.0-dev", - "sp-std 8.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] name = "pallet-feature-control" version = "0.1.0" dependencies = [ - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", "serde", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-std 8.0.0", + "sp-core", + "sp-io", + "sp-std", ] [[package]] @@ -6002,15 +5572,15 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "enumflags2", - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] @@ -6018,13 +5588,13 @@ name = "pallet-insecure-randomness-collective-flip" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "parity-scale-codec", "safe-mix", "scale-info", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-runtime", + "sp-std", ] [[package]] @@ -6032,15 +5602,15 @@ name = "pallet-multisig" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] @@ -6048,18 +5618,18 @@ name = "pallet-nomination-pools" version = "1.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "log", "pallet-balances", "parity-scale-codec", "scale-info", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-staking 4.0.0-dev", - "sp-std 8.0.0", - "sp-tracing 10.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", + "sp-tracing", ] [[package]] @@ -6069,8 +5639,8 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "pallet-nomination-pools", "parity-scale-codec", - "sp-api 4.0.0-dev", - "sp-std 8.0.0", + "sp-api", + "sp-std", ] [[package]] @@ -6078,8 +5648,8 @@ name = "pallet-operations" version = "0.1.0" dependencies = [ "frame-election-provider-support", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "log", "pallet-balances", "pallet-session", @@ -6087,10 +5657,10 @@ dependencies = [ "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-staking 4.0.0-dev", + "sp-core", + "sp-io", + "sp-runtime", + "sp-staking", ] [[package]] @@ -6098,14 +5668,14 @@ name = "pallet-proxy" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] @@ -6114,17 +5684,17 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "pallet-balances", "pallet-proxy", "pallet-utility", "parity-scale-codec", "scale-info", - "sp-arithmetic 16.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-arithmetic", + "sp-runtime", + "sp-std", ] [[package]] @@ -6133,16 +5703,16 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", - "sp-weights 20.0.0", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", ] [[package]] @@ -6150,21 +5720,21 @@ name = "pallet-session" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "impl-trait-for-tuples", "log", "pallet-timestamp", "parity-scale-codec", "scale-info", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-io", + "sp-runtime", "sp-session", - "sp-staking 4.0.0-dev", - "sp-state-machine 0.28.0", - "sp-std 8.0.0", - "sp-trie 22.0.0", + "sp-staking", + "sp-state-machine", + "sp-std", + "sp-trie", ] [[package]] @@ -6172,10 +5742,10 @@ name = "pallet-staking" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking 4.0.0-dev", + "frame-benchmarking", "frame-election-provider-support", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "log", "pallet-authorship", "pallet-session", @@ -6183,11 +5753,11 @@ dependencies = [ "rand_chacha 0.2.2", "scale-info", "serde", - "sp-application-crypto 23.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-staking 4.0.0-dev", - "sp-std 8.0.0", + "sp-application-crypto", + "sp-io", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] @@ -6196,8 +5766,8 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "parity-scale-codec", - "sp-api 4.0.0-dev", - "sp-staking 4.0.0-dev", + "sp-api", + "sp-staking", ] [[package]] @@ -6206,14 +5776,14 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] @@ -6222,17 +5792,17 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-inherents 4.0.0-dev", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", - "sp-storage 13.0.0", + "sp-inherents", + "sp-io", + "sp-runtime", + "sp-std", + "sp-storage", "sp-timestamp", ] @@ -6241,15 +5811,15 @@ name = "pallet-transaction-payment" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", "serde", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] @@ -6260,12 +5830,12 @@ dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", "parity-scale-codec", - "sp-api 4.0.0-dev", + "sp-api", "sp-blockchain", - "sp-core 21.0.0", + "sp-core", "sp-rpc", - "sp-runtime 24.0.0", - "sp-weights 20.0.0", + "sp-runtime", + "sp-weights", ] [[package]] @@ -6275,9 +5845,9 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "pallet-transaction-payment", "parity-scale-codec", - "sp-api 4.0.0-dev", - "sp-runtime 24.0.0", - "sp-weights 20.0.0", + "sp-api", + "sp-runtime", + "sp-weights", ] [[package]] @@ -6286,17 +5856,17 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "impl-trait-for-tuples", "pallet-balances", "parity-scale-codec", "scale-info", "serde", - "sp-core 21.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] @@ -6305,16 +5875,16 @@ version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "docify", - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "pallet-balances", "pallet-proxy", "pallet-utility", "parity-scale-codec", "scale-info", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-runtime", + "sp-std", ] [[package]] @@ -6322,15 +5892,15 @@ name = "pallet-utility" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "parity-scale-codec", "scale-info", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] @@ -6338,66 +5908,39 @@ name = "pallet-vesting" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "parity-scale-codec", "scale-info", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-runtime", + "sp-std", ] [[package]] name = "pallet-vk-storage" version = "0.1.0" dependencies = [ - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-benchmarking", + "frame-support", + "frame-system", "log", "pallet-balances", "parity-scale-codec", "scale-info", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", -] - -[[package]] -name = "pallet_pink_scorpion" -version = "0.0.0" -dependencies = [ - "frame-benchmarking 28.0.0", - "frame-support 28.0.0", - "frame-system 28.0.0", - "parity-scale-codec", - "scale-info", - "sp-core 28.0.0", - "sp-io 30.0.0", - "sp-runtime 31.0.1", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", ] [[package]] name = "pallets-support" version = "0.1.4" dependencies = [ - "frame-support 4.0.0-dev", - "sp-std 8.0.0", -] - -[[package]] -name = "parity-bip39" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e69bf016dc406eff7d53a7d3f7cf1c2e72c82b9088aac1118591e36dd2cd3e9" -dependencies = [ - "bitcoin_hashes 0.13.0", - "rand", - "rand_core 0.6.4", - "serde", - "unicode-normalization", + "frame-support", + "sp-std", ] [[package]] @@ -6520,17 +6063,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7924d1d0ad836f665c9065e26d016c673ece3993f30d340068b16f282afc1156" -[[package]] -name = "password-hash" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" -dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle 2.5.0", -] - [[package]] name = "pasta_curves" version = "0.5.1" @@ -6570,16 +6102,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "password-hash", -] - [[package]] name = "peeking_take_while" version = "0.1.2" @@ -6723,9 +6245,9 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "parity-scale-codec", "scale-info", - "sp-core 21.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] @@ -6733,16 +6255,16 @@ name = "polkadot-parachain-primitives" version = "1.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "bounded-collections 0.1.9", + "bounded-collections", "derive_more", "parity-scale-codec", "polkadot-core-primitives", "scale-info", "serde", - "sp-core 21.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", - "sp-weights 20.0.0", + "sp-core", + "sp-runtime", + "sp-std", + "sp-weights", ] [[package]] @@ -6757,12 +6279,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88b4e215c80fe876147f3d58158d5dfeae7dabdd6047e175af77095b78d0035c" -[[package]] -name = "polkavm-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d9428a5cfcc85c5d7b9fc4b6a18c4b802d0173d768182a51cc7751640f08b92" - [[package]] name = "polkavm-derive" version = "0.4.0" @@ -6783,15 +6299,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "polkavm-derive" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8c4bea6f3e11cd89bb18bcdddac10bd9a24015399bd1c485ad68a985a19606" -dependencies = [ - "polkavm-derive-impl-macro", -] - [[package]] name = "polkavm-derive-impl" version = "0.4.0" @@ -6816,28 +6323,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "polkavm-derive-impl" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4fdfc49717fb9a196e74a5d28e0bc764eb394a2c803eb11133a31ac996c60c" -dependencies = [ - "polkavm-common 0.9.0", - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "polkavm-derive-impl-macro" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" -dependencies = [ - "polkavm-derive-impl 0.9.0", - "syn 2.0.66", -] - [[package]] name = "polling" version = "3.7.1" @@ -6971,26 +6456,26 @@ dependencies = [ name = "primitives" version = "0.14.0+dev" dependencies = [ - "frame-support 4.0.0-dev", + "frame-support", "frame-system-rpc-runtime-api", "pallet-transaction-payment", "pallet-transaction-payment-rpc-runtime-api", "parity-scale-codec", "scale-info", "serde", - "sp-api 4.0.0-dev", - "sp-application-crypto 23.0.0", + "sp-api", + "sp-application-crypto", "sp-block-builder", "sp-consensus-aura", - "sp-core 21.0.0", - "sp-inherents 4.0.0-dev", + "sp-core", + "sp-inherents", "sp-offchain", - "sp-runtime 24.0.0", + "sp-runtime", "sp-session", - "sp-staking 4.0.0-dev", - "sp-std 8.0.0", + "sp-staking", + "sp-std", "sp-transaction-pool", - "sp-version 22.0.0", + "sp-version", ] [[package]] @@ -7477,22 +6962,6 @@ dependencies = [ "subtle 2.5.0", ] -[[package]] -name = "ring" -version = "0.1.0" -source = "git+https://github.com/w3f/ring-proof#b273d33f9981e2bb3375ab45faeb537f7ee35224" -dependencies = [ - "ark-ec", - "ark-ff", - "ark-poly", - "ark-serialize", - "ark-std", - "blake2 0.10.6", - "common", - "fflonk", - "merlin", -] - [[package]] name = "ring" version = "0.16.20" @@ -7758,8 +7227,8 @@ version = "4.1.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "log", - "sp-core 21.0.0", - "sp-wasm-interface 14.0.0", + "sp-core", + "sp-wasm-interface", "thiserror", ] @@ -7776,12 +7245,12 @@ dependencies = [ "sc-proposer-metrics", "sc-telemetry", "sc-transaction-pool-api", - "sp-api 4.0.0-dev", + "sp-api", "sp-blockchain", "sp-consensus", - "sp-core 21.0.0", - "sp-inherents 4.0.0-dev", - "sp-runtime 24.0.0", + "sp-core", + "sp-inherents", + "sp-runtime", "substrate-prometheus-endpoint", ] @@ -7791,13 +7260,13 @@ version = "0.10.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "parity-scale-codec", - "sp-api 4.0.0-dev", + "sp-api", "sp-block-builder", "sp-blockchain", - "sp-core 21.0.0", - "sp-inherents 4.0.0-dev", - "sp-runtime 24.0.0", - "sp-trie 22.0.0", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-trie", ] [[package]] @@ -7818,11 +7287,11 @@ dependencies = [ "serde", "serde_json", "sp-blockchain", - "sp-core 21.0.0", - "sp-genesis-builder 0.1.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", + "sp-core", + "sp-genesis-builder", + "sp-io", + "sp-runtime", + "sp-state-machine", ] [[package]] @@ -7867,12 +7336,12 @@ dependencies = [ "serde", "serde_json", "sp-blockchain", - "sp-core 21.0.0", + "sp-core", "sp-keyring", - "sp-keystore 0.27.0", - "sp-panic-handler 8.0.0", - "sp-runtime 24.0.0", - "sp-version 22.0.0", + "sp-keystore", + "sp-panic-handler", + "sp-runtime", + "sp-version", "thiserror", "tokio", ] @@ -7890,17 +7359,17 @@ dependencies = [ "sc-executor", "sc-transaction-pool-api", "sc-utils", - "sp-api 4.0.0-dev", + "sp-api", "sp-blockchain", "sp-consensus", - "sp-core 21.0.0", + "sp-core", "sp-database", - "sp-externalities 0.19.0", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", + "sp-externalities", + "sp-runtime", + "sp-state-machine", "sp-statement-store", - "sp-storage 13.0.0", - "sp-trie 22.0.0", + "sp-storage", + "sp-trie", "substrate-prometheus-endpoint", ] @@ -7921,13 +7390,13 @@ dependencies = [ "sc-client-api", "sc-state-db", "schnellru", - "sp-arithmetic 16.0.0", + "sp-arithmetic", "sp-blockchain", - "sp-core 21.0.0", + "sp-core", "sp-database", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", - "sp-trie 22.0.0", + "sp-runtime", + "sp-state-machine", + "sp-trie", ] [[package]] @@ -7945,12 +7414,12 @@ dependencies = [ "sc-client-api", "sc-utils", "serde", - "sp-api 4.0.0-dev", + "sp-api", "sp-blockchain", "sp-consensus", - "sp-core 21.0.0", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", + "sp-core", + "sp-runtime", + "sp-state-machine", "substrate-prometheus-endpoint", "thiserror", ] @@ -7969,17 +7438,17 @@ dependencies = [ "sc-consensus", "sc-consensus-slots", "sc-telemetry", - "sp-api 4.0.0-dev", - "sp-application-crypto 23.0.0", + "sp-api", + "sp-application-crypto", "sp-block-builder", "sp-blockchain", "sp-consensus", "sp-consensus-aura", "sp-consensus-slots", - "sp-core 21.0.0", - "sp-inherents 4.0.0-dev", - "sp-keystore 0.27.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-inherents", + "sp-keystore", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", ] @@ -7997,14 +7466,14 @@ dependencies = [ "sc-client-api", "sc-consensus", "sc-telemetry", - "sp-arithmetic 16.0.0", + "sp-arithmetic", "sp-blockchain", "sp-consensus", "sp-consensus-slots", - "sp-core 21.0.0", - "sp-inherents 4.0.0-dev", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-state-machine", ] [[package]] @@ -8017,15 +7486,15 @@ dependencies = [ "sc-executor-common", "sc-executor-wasmtime", "schnellru", - "sp-api 4.0.0-dev", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "sp-io 23.0.0", - "sp-panic-handler 8.0.0", - "sp-runtime-interface 17.0.0", - "sp-trie 22.0.0", - "sp-version 22.0.0", - "sp-wasm-interface 14.0.0", + "sp-api", + "sp-core", + "sp-externalities", + "sp-io", + "sp-panic-handler", + "sp-runtime-interface", + "sp-trie", + "sp-version", + "sp-wasm-interface", "tracing", ] @@ -8036,7 +7505,7 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", - "sp-wasm-interface 14.0.0", + "sp-wasm-interface", "thiserror", "wasm-instrument 0.3.0", ] @@ -8054,8 +7523,8 @@ dependencies = [ "rustix 0.36.17", "sc-allocator", "sc-executor-common", - "sp-runtime-interface 17.0.0", - "sp-wasm-interface 14.0.0", + "sp-runtime-interface", + "sp-wasm-interface", "wasmtime", ] @@ -8073,7 +7542,7 @@ dependencies = [ "sc-network-common", "sc-network-sync", "sp-blockchain", - "sp-runtime 24.0.0", + "sp-runtime", ] [[package]] @@ -8084,9 +7553,9 @@ dependencies = [ "array-bytes 6.2.3", "parking_lot 0.12.3", "serde_json", - "sp-application-crypto 23.0.0", - "sp-core 21.0.0", - "sp-keystore 0.27.0", + "sp-application-crypto", + "sp-core", + "sp-keystore", "thiserror", ] @@ -8110,12 +7579,12 @@ dependencies = [ "sc-client-api", "sc-network", "sc-transaction-pool-api", - "sp-api 4.0.0-dev", + "sp-api", "sp-consensus", - "sp-core 21.0.0", - "sp-keystore 0.27.0", + "sp-core", + "sp-keystore", "sp-mixnet", - "sp-runtime 24.0.0", + "sp-runtime", "thiserror", ] @@ -8149,10 +7618,10 @@ dependencies = [ "serde", "serde_json", "smallvec", - "sp-arithmetic 16.0.0", + "sp-arithmetic", "sp-blockchain", - "sp-core 21.0.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", "tokio", @@ -8177,7 +7646,7 @@ dependencies = [ "sc-client-api", "sc-network", "sp-blockchain", - "sp-runtime 24.0.0", + "sp-runtime", "thiserror", "unsigned-varint", ] @@ -8196,7 +7665,7 @@ dependencies = [ "sc-consensus", "sp-consensus", "sp-consensus-grandpa", - "sp-runtime 24.0.0", + "sp-runtime", ] [[package]] @@ -8215,8 +7684,8 @@ dependencies = [ "sc-client-api", "sc-network", "sp-blockchain", - "sp-core 21.0.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-runtime", "thiserror", ] @@ -8244,12 +7713,12 @@ dependencies = [ "sc-utils", "schnellru", "smallvec", - "sp-arithmetic 16.0.0", + "sp-arithmetic", "sp-blockchain", "sp-consensus", "sp-consensus-grandpa", - "sp-core 21.0.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-runtime", "substrate-prometheus-endpoint", "thiserror", "tokio", @@ -8271,7 +7740,7 @@ dependencies = [ "sc-network-sync", "sc-utils", "sp-consensus", - "sp-runtime 24.0.0", + "sp-runtime", "substrate-prometheus-endpoint", ] @@ -8299,12 +7768,12 @@ dependencies = [ "sc-network-common", "sc-transaction-pool-api", "sc-utils", - "sp-api 4.0.0-dev", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "sp-keystore 0.27.0", + "sp-api", + "sp-core", + "sp-externalities", + "sp-keystore", "sp-offchain", - "sp-runtime 24.0.0", + "sp-runtime", "threadpool", "tracing", ] @@ -8337,16 +7806,16 @@ dependencies = [ "sc-transaction-pool-api", "sc-utils", "serde_json", - "sp-api 4.0.0-dev", + "sp-api", "sp-blockchain", - "sp-core 21.0.0", - "sp-keystore 0.27.0", + "sp-core", + "sp-keystore", "sp-offchain", "sp-rpc", - "sp-runtime 24.0.0", + "sp-runtime", "sp-session", "sp-statement-store", - "sp-version 22.0.0", + "sp-version", "tokio", ] @@ -8363,10 +7832,10 @@ dependencies = [ "scale-info", "serde", "serde_json", - "sp-core 21.0.0", + "sp-core", "sp-rpc", - "sp-runtime 24.0.0", - "sp-version 22.0.0", + "sp-runtime", + "sp-version", "thiserror", ] @@ -8403,12 +7872,12 @@ dependencies = [ "sc-transaction-pool-api", "sc-utils", "serde", - "sp-api 4.0.0-dev", + "sp-api", "sp-blockchain", - "sp-core 21.0.0", + "sp-core", "sp-rpc", - "sp-runtime 24.0.0", - "sp-version 22.0.0", + "sp-runtime", + "sp-version", "thiserror", "tokio", "tokio-stream", @@ -8454,20 +7923,20 @@ dependencies = [ "sc-utils", "serde", "serde_json", - "sp-api 4.0.0-dev", + "sp-api", "sp-blockchain", "sp-consensus", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "sp-keystore 0.27.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-externalities", + "sp-keystore", + "sp-runtime", "sp-session", - "sp-state-machine 0.28.0", - "sp-storage 13.0.0", + "sp-state-machine", + "sp-storage", "sp-transaction-pool", "sp-transaction-storage-proof", - "sp-trie 22.0.0", - "sp-version 22.0.0", + "sp-trie", + "sp-version", "static_init", "substrate-prometheus-endpoint", "tempfile", @@ -8485,7 +7954,7 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot 0.12.3", - "sp-core 21.0.0", + "sp-core", ] [[package]] @@ -8503,9 +7972,9 @@ dependencies = [ "sc-telemetry", "serde", "serde_json", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-std 8.0.0", + "sp-core", + "sp-io", + "sp-std", ] [[package]] @@ -8545,16 +8014,16 @@ dependencies = [ "sc-client-api", "sc-tracing-proc-macro", "serde", - "sp-api 4.0.0-dev", + "sp-api", "sp-blockchain", - "sp-core 21.0.0", + "sp-core", "sp-rpc", - "sp-runtime 24.0.0", - "sp-tracing 10.0.0", + "sp-runtime", + "sp-tracing", "thiserror", "tracing", - "tracing-log 0.1.4", - "tracing-subscriber 0.2.25", + "tracing-log", + "tracing-subscriber", ] [[package]] @@ -8584,11 +8053,11 @@ dependencies = [ "sc-transaction-pool-api", "sc-utils", "serde", - "sp-api 4.0.0-dev", + "sp-api", "sp-blockchain", - "sp-core 21.0.0", - "sp-runtime 24.0.0", - "sp-tracing 10.0.0", + "sp-core", + "sp-runtime", + "sp-tracing", "sp-transaction-pool", "substrate-prometheus-endpoint", "thiserror", @@ -8605,8 +8074,8 @@ dependencies = [ "parity-scale-codec", "serde", "sp-blockchain", - "sp-core 21.0.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-runtime", "thiserror", ] @@ -8622,7 +8091,7 @@ dependencies = [ "log", "parking_lot 0.12.3", "prometheus", - "sp-arithmetic 16.0.0", + "sp-arithmetic", ] [[package]] @@ -8810,7 +8279,6 @@ dependencies = [ "der", "generic-array 0.14.7", "pkcs8", - "serdect", "subtle 2.5.0", "zeroize", ] @@ -8958,16 +8426,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serdect" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" -dependencies = [ - "base16ct", - "serde", -] - [[package]] name = "sha-1" version = "0.9.8" @@ -9079,12 +8537,6 @@ name = "simple-mermaid" version = "0.1.0" source = "git+https://github.com/kianenigma/simple-mermaid.git?rev=e48b187bcfd5cc75111acd9d241f1bd36604344b#e48b187bcfd5cc75111acd9d241f1bd36604344b" -[[package]] -name = "simple-mermaid" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "620a1d43d70e142b1d46a929af51d44f383db9c7a2ec122de2cd992ccfcf3c18" - [[package]] name = "siphasher" version = "0.3.11" @@ -9181,37 +8633,15 @@ dependencies = [ "log", "parity-scale-codec", "scale-info", - "sp-api-proc-macro 4.0.0-dev", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "sp-metadata-ir 0.1.0", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", - "sp-std 8.0.0", - "sp-trie 22.0.0", - "sp-version 22.0.0", - "thiserror", -] - -[[package]] -name = "sp-api" -version = "26.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "scale-info", - "sp-api-proc-macro 15.0.0", - "sp-core 28.0.0", - "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-metadata-ir 0.6.0", - "sp-runtime 31.0.1", - "sp-runtime-interface 24.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-state-machine 0.35.0", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-trie 29.0.0", - "sp-version 29.0.0", + "sp-api-proc-macro", + "sp-core", + "sp-externalities", + "sp-metadata-ir", + "sp-runtime", + "sp-state-machine", + "sp-std", + "sp-trie", + "sp-version", "thiserror", ] @@ -9229,20 +8659,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "sp-api-proc-macro" -version = "15.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "Inflector", - "blake2 0.10.6", - "expander", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "sp-application-crypto" version = "23.0.0" @@ -9251,22 +8667,9 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-std 8.0.0", -] - -[[package]] -name = "sp-application-crypto" -version = "30.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 28.0.0", - "sp-io 30.0.0", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-core", + "sp-io", + "sp-std", ] [[package]] @@ -9279,51 +8682,19 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-std 8.0.0", - "static_assertions", -] - -[[package]] -name = "sp-arithmetic" -version = "23.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "integer-sqrt", - "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-std", "static_assertions", ] -[[package]] -name = "sp-ark-bls12-381" -version = "0.4.2" -source = "git+https://github.com/paritytech/arkworks-substrate#caa2eed74beb885dd07c7db5f916f2281dad818f" -dependencies = [ - "ark-bls12-381-ext", - "sp-crypto-ec-utils", -] - -[[package]] -name = "sp-ark-ed-on-bls12-381-bandersnatch" -version = "0.4.2" -source = "git+https://github.com/paritytech/arkworks-substrate#caa2eed74beb885dd07c7db5f916f2281dad818f" -dependencies = [ - "ark-ed-on-bls12-381-bandersnatch-ext", - "sp-crypto-ec-utils", -] - [[package]] name = "sp-block-builder" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "sp-api 4.0.0-dev", - "sp-inherents 4.0.0-dev", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-api", + "sp-inherents", + "sp-runtime", + "sp-std", ] [[package]] @@ -9336,11 +8707,11 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", "schnellru", - "sp-api 4.0.0-dev", + "sp-api", "sp-consensus", "sp-database", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", + "sp-runtime", + "sp-state-machine", "thiserror", ] @@ -9352,10 +8723,10 @@ dependencies = [ "async-trait", "futures", "log", - "sp-core 21.0.0", - "sp-inherents 4.0.0-dev", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-state-machine", "thiserror", ] @@ -9367,12 +8738,12 @@ dependencies = [ "async-trait", "parity-scale-codec", "scale-info", - "sp-api 4.0.0-dev", - "sp-application-crypto 23.0.0", + "sp-api", + "sp-application-crypto", "sp-consensus-slots", - "sp-inherents 4.0.0-dev", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-inherents", + "sp-runtime", + "sp-std", "sp-timestamp", ] @@ -9385,13 +8756,13 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-api 4.0.0-dev", - "sp-application-crypto 23.0.0", + "sp-api", + "sp-application-crypto", "sp-consensus-slots", - "sp-core 21.0.0", - "sp-inherents 4.0.0-dev", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-std", "sp-timestamp", ] @@ -9405,12 +8776,12 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-api 4.0.0-dev", - "sp-application-crypto 23.0.0", - "sp-core 21.0.0", - "sp-keystore 0.27.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-keystore", + "sp-runtime", + "sp-std", ] [[package]] @@ -9421,7 +8792,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-std 8.0.0", + "sp-std", "sp-timestamp", ] @@ -9434,7 +8805,7 @@ dependencies = [ "bip39", "bitflags 1.3.2", "blake2 0.10.6", - "bounded-collections 0.1.9", + "bounded-collections", "bs58 0.5.1", "dyn-clonable", "ed25519-zebra", @@ -9457,60 +8828,13 @@ dependencies = [ "secrecy", "serde", "sp-core-hashing", - "sp-debug-derive 8.0.0", - "sp-externalities 0.19.0", - "sp-runtime-interface 17.0.0", - "sp-std 8.0.0", - "sp-storage 13.0.0", - "ss58-registry", - "substrate-bip39 0.4.6", - "thiserror", - "tracing", - "w3f-bls", - "zeroize", -] - -[[package]] -name = "sp-core" -version = "28.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "array-bytes 6.2.3", - "bandersnatch_vrfs", - "bitflags 1.3.2", - "blake2 0.10.6", - "bounded-collections 0.2.0", - "bs58 0.5.1", - "dyn-clonable", - "ed25519-zebra", - "futures", - "hash-db", - "hash256-std-hasher", - "impl-serde", - "itertools 0.10.5", - "k256", - "libsecp256k1", - "log", - "merlin", - "parity-bip39", - "parity-scale-codec", - "parking_lot 0.12.3", - "paste", - "primitive-types", - "rand", - "scale-info", - "schnorrkel", - "secp256k1", - "secrecy", - "serde", - "sp-crypto-hashing", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-runtime-interface 24.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-debug-derive", + "sp-externalities", + "sp-runtime-interface", + "sp-std", + "sp-storage", "ss58-registry", - "substrate-bip39 0.4.7", + "substrate-bip39", "thiserror", "tracing", "w3f-bls", @@ -9541,81 +8865,18 @@ dependencies = [ ] [[package]] -name = "sp-crypto-ec-utils" -version = "0.10.0" -source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" +name = "sp-database" +version = "4.0.0-dev" +source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "ark-bls12-377", - "ark-bls12-377-ext", - "ark-bls12-381", - "ark-bls12-381-ext", - "ark-bw6-761", - "ark-bw6-761-ext", - "ark-ec", - "ark-ed-on-bls12-377", - "ark-ed-on-bls12-377-ext", - "ark-ed-on-bls12-381-bandersnatch", - "ark-ed-on-bls12-381-bandersnatch-ext", - "ark-scale", - "sp-runtime-interface 24.0.0 (git+https://github.com/paritytech/polkadot-sdk)", + "kvdb", + "parking_lot 0.12.3", ] [[package]] -name = "sp-crypto-hashing" -version = "0.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "blake2b_simd", - "byteorder", - "digest 0.10.7", - "sha2 0.10.8", - "sha3 0.10.8", - "twox-hash", -] - -[[package]] -name = "sp-crypto-hashing-proc-macro" -version = "0.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "quote", - "sp-crypto-hashing", - "syn 2.0.66", -] - -[[package]] -name = "sp-database" -version = "4.0.0-dev" -source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" -dependencies = [ - "kvdb", - "parking_lot 0.12.3", -] - -[[package]] -name = "sp-debug-derive" -version = "8.0.0" -source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "sp-debug-derive" -version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "sp-debug-derive" -version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" +name = "sp-debug-derive" +version = "8.0.0" +source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "proc-macro2", "quote", @@ -9629,29 +8890,8 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "environmental", "parity-scale-codec", - "sp-std 8.0.0", - "sp-storage 13.0.0", -] - -[[package]] -name = "sp-externalities" -version = "0.25.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", -] - -[[package]] -name = "sp-externalities" -version = "0.25.0" -source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk)", + "sp-std", + "sp-storage", ] [[package]] @@ -9660,20 +8900,9 @@ version = "0.1.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "serde_json", - "sp-api 4.0.0-dev", - "sp-runtime 24.0.0", - "sp-std 8.0.0", -] - -[[package]] -name = "sp-genesis-builder" -version = "0.7.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "serde_json", - "sp-api 26.0.0", - "sp-runtime 31.0.1", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-api", + "sp-runtime", + "sp-std", ] [[package]] @@ -9685,22 +8914,8 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "scale-info", - "sp-runtime 24.0.0", - "sp-std 8.0.0", - "thiserror", -] - -[[package]] -name = "sp-inherents" -version = "26.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "async-trait", - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "sp-runtime 31.0.1", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-runtime", + "sp-std", "thiserror", ] @@ -9716,40 +8931,14 @@ dependencies = [ "parity-scale-codec", "rustversion", "secp256k1", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "sp-keystore 0.27.0", - "sp-runtime-interface 17.0.0", - "sp-state-machine 0.28.0", - "sp-std 8.0.0", - "sp-tracing 10.0.0", - "sp-trie 22.0.0", - "tracing", - "tracing-core", -] - -[[package]] -name = "sp-io" -version = "30.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "bytes", - "ed25519-dalek", - "libsecp256k1", - "log", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "rustversion", - "secp256k1", - "sp-core 28.0.0", - "sp-crypto-hashing", - "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-keystore 0.34.0", - "sp-runtime-interface 24.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-state-machine 0.35.0", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-tracing 16.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-trie 29.0.0", + "sp-core", + "sp-externalities", + "sp-keystore", + "sp-runtime-interface", + "sp-state-machine", + "sp-std", + "sp-tracing", + "sp-trie", "tracing", "tracing-core", ] @@ -9759,8 +8948,8 @@ name = "sp-keyring" version = "24.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "sp-core 21.0.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-runtime", "strum 0.24.1", ] @@ -9771,22 +8960,11 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", - "sp-core 21.0.0", - "sp-externalities 0.19.0", + "sp-core", + "sp-externalities", "thiserror", ] -[[package]] -name = "sp-keystore" -version = "0.34.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "parity-scale-codec", - "parking_lot 0.12.3", - "sp-core 28.0.0", - "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", -] - [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" @@ -9804,18 +8982,7 @@ dependencies = [ "frame-metadata", "parity-scale-codec", "scale-info", - "sp-std 8.0.0", -] - -[[package]] -name = "sp-metadata-ir" -version = "0.6.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "frame-metadata", - "parity-scale-codec", - "scale-info", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-std", ] [[package]] @@ -9825,9 +8992,9 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "parity-scale-codec", "scale-info", - "sp-api 4.0.0-dev", - "sp-application-crypto 23.0.0", - "sp-std 8.0.0", + "sp-api", + "sp-application-crypto", + "sp-std", ] [[package]] @@ -9838,10 +9005,10 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic 16.0.0", - "sp-core 21.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-arithmetic", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] @@ -9849,9 +9016,9 @@ name = "sp-offchain" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "sp-api 4.0.0-dev", - "sp-core 21.0.0", - "sp-runtime 24.0.0", + "sp-api", + "sp-core", + "sp-runtime", ] [[package]] @@ -9864,16 +9031,6 @@ dependencies = [ "regex", ] -[[package]] -name = "sp-panic-handler" -version = "13.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "backtrace", - "lazy_static", - "regex", -] - [[package]] name = "sp-rpc" version = "6.0.0" @@ -9881,7 +9038,7 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "rustc-hash", "serde", - "sp-core 21.0.0", + "sp-core", ] [[package]] @@ -9899,37 +9056,13 @@ dependencies = [ "rand", "scale-info", "serde", - "simple-mermaid 0.1.0", - "sp-application-crypto 23.0.0", - "sp-arithmetic 16.0.0", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-std 8.0.0", - "sp-weights 20.0.0", -] - -[[package]] -name = "sp-runtime" -version = "31.0.1" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "docify", - "either", - "hash256-std-hasher", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "paste", - "rand", - "scale-info", - "serde", - "simple-mermaid 0.1.1", - "sp-application-crypto 30.0.0", - "sp-arithmetic 23.0.0", - "sp-core 28.0.0", - "sp-io 30.0.0", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-weights 27.0.0", + "simple-mermaid", + "sp-application-crypto", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-std", + "sp-weights", ] [[package]] @@ -9941,50 +9074,12 @@ dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", "primitive-types", - "sp-externalities 0.19.0", - "sp-runtime-interface-proc-macro 11.0.0", - "sp-std 8.0.0", - "sp-storage 13.0.0", - "sp-tracing 10.0.0", - "sp-wasm-interface 14.0.0", - "static_assertions", -] - -[[package]] -name = "sp-runtime-interface" -version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "primitive-types", - "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-runtime-interface-proc-macro 17.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-tracing 16.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-wasm-interface 20.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "static_assertions", -] - -[[package]] -name = "sp-runtime-interface" -version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "polkavm-derive 0.9.1", - "primitive-types", - "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk)", - "sp-runtime-interface-proc-macro 17.0.0 (git+https://github.com/paritytech/polkadot-sdk)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk)", - "sp-storage 19.0.0 (git+https://github.com/paritytech/polkadot-sdk)", - "sp-tracing 16.0.0 (git+https://github.com/paritytech/polkadot-sdk)", - "sp-wasm-interface 20.0.0 (git+https://github.com/paritytech/polkadot-sdk)", + "sp-externalities", + "sp-runtime-interface-proc-macro", + "sp-std", + "sp-storage", + "sp-tracing", + "sp-wasm-interface", "static_assertions", ] @@ -10001,32 +9096,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "sp-runtime-interface-proc-macro" -version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "Inflector", - "expander", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.66", -] - -[[package]] -name = "sp-runtime-interface-proc-macro" -version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" -dependencies = [ - "Inflector", - "expander", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "sp-session" version = "4.0.0-dev" @@ -10034,12 +9103,12 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "parity-scale-codec", "scale-info", - "sp-api 4.0.0-dev", - "sp-core 21.0.0", - "sp-keystore 0.27.0", - "sp-runtime 24.0.0", - "sp-staking 4.0.0-dev", - "sp-std 8.0.0", + "sp-api", + "sp-core", + "sp-keystore", + "sp-runtime", + "sp-staking", + "sp-std", ] [[package]] @@ -10051,23 +9120,9 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-core 21.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", -] - -[[package]] -name = "sp-staking" -version = "26.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "impl-trait-for-tuples", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core 28.0.0", - "sp-runtime 31.0.1", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-core", + "sp-runtime", + "sp-std", ] [[package]] @@ -10081,32 +9136,11 @@ dependencies = [ "parking_lot 0.12.3", "rand", "smallvec", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "sp-panic-handler 8.0.0", - "sp-std 8.0.0", - "sp-trie 22.0.0", - "thiserror", - "tracing", - "trie-db", -] - -[[package]] -name = "sp-state-machine" -version = "0.35.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "hash-db", - "log", - "parity-scale-codec", - "parking_lot 0.12.3", - "rand", - "smallvec", - "sp-core 28.0.0", - "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-panic-handler 13.0.0", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-trie 29.0.0", + "sp-core", + "sp-externalities", + "sp-panic-handler", + "sp-std", + "sp-trie", "thiserror", "tracing", "trie-db", @@ -10125,13 +9159,13 @@ dependencies = [ "rand", "scale-info", "sha2 0.10.8", - "sp-api 4.0.0-dev", - "sp-application-crypto 23.0.0", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "sp-runtime 24.0.0", - "sp-runtime-interface 17.0.0", - "sp-std 8.0.0", + "sp-api", + "sp-application-crypto", + "sp-core", + "sp-externalities", + "sp-runtime", + "sp-runtime-interface", + "sp-std", "thiserror", "x25519-dalek 2.0.1", ] @@ -10141,16 +9175,6 @@ name = "sp-std" version = "8.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" -[[package]] -name = "sp-std" -version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" - -[[package]] -name = "sp-std" -version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" - [[package]] name = "sp-storage" version = "13.0.0" @@ -10160,33 +9184,8 @@ dependencies = [ "parity-scale-codec", "ref-cast", "serde", - "sp-debug-derive 8.0.0", - "sp-std 8.0.0", -] - -[[package]] -name = "sp-storage" -version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", -] - -[[package]] -name = "sp-storage" -version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk)", + "sp-debug-derive", + "sp-std", ] [[package]] @@ -10196,9 +9195,9 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "async-trait", "parity-scale-codec", - "sp-inherents 4.0.0-dev", - "sp-runtime 24.0.0", - "sp-std 8.0.0", + "sp-inherents", + "sp-runtime", + "sp-std", "thiserror", ] @@ -10208,33 +9207,10 @@ version = "10.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "parity-scale-codec", - "sp-std 8.0.0", - "tracing", - "tracing-core", - "tracing-subscriber 0.2.25", -] - -[[package]] -name = "sp-tracing" -version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "parity-scale-codec", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-std", "tracing", "tracing-core", - "tracing-subscriber 0.2.25", -] - -[[package]] -name = "sp-tracing" -version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" -dependencies = [ - "parity-scale-codec", - "tracing", - "tracing-core", - "tracing-subscriber 0.3.18", + "tracing-subscriber", ] [[package]] @@ -10242,8 +9218,8 @@ name = "sp-transaction-pool" version = "4.0.0-dev" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "sp-api 4.0.0-dev", - "sp-runtime 24.0.0", + "sp-api", + "sp-runtime", ] [[package]] @@ -10254,11 +9230,11 @@ dependencies = [ "async-trait", "parity-scale-codec", "scale-info", - "sp-core 21.0.0", - "sp-inherents 4.0.0-dev", - "sp-runtime 24.0.0", - "sp-std 8.0.0", - "sp-trie 22.0.0", + "sp-core", + "sp-inherents", + "sp-runtime", + "sp-std", + "sp-trie", ] [[package]] @@ -10276,33 +9252,9 @@ dependencies = [ "rand", "scale-info", "schnellru", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "sp-std 8.0.0", - "thiserror", - "tracing", - "trie-db", - "trie-root", -] - -[[package]] -name = "sp-trie" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "ahash 0.8.11", - "hash-db", - "lazy_static", - "memory-db", - "nohash-hasher", - "parity-scale-codec", - "parking_lot 0.12.3", - "rand", - "scale-info", - "schnellru", - "sp-core 28.0.0", - "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-core", + "sp-externalities", + "sp-std", "thiserror", "tracing", "trie-db", @@ -10320,26 +9272,9 @@ dependencies = [ "scale-info", "serde", "sp-core-hashing-proc-macro", - "sp-runtime 24.0.0", - "sp-std 8.0.0", - "sp-version-proc-macro 8.0.0", - "thiserror", -] - -[[package]] -name = "sp-version" -version = "29.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "parity-wasm", - "scale-info", - "serde", - "sp-crypto-hashing-proc-macro", - "sp-runtime 31.0.1", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-version-proc-macro 13.0.0", + "sp-runtime", + "sp-std", + "sp-version-proc-macro", "thiserror", ] @@ -10354,17 +9289,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "sp-version-proc-macro" -version = "13.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "parity-scale-codec", - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "sp-wasm-interface" version = "14.0.0" @@ -10374,61 +9298,23 @@ dependencies = [ "impl-trait-for-tuples", "log", "parity-scale-codec", - "sp-std 8.0.0", + "sp-std", "wasmtime", ] -[[package]] -name = "sp-wasm-interface" -version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "anyhow", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "wasmtime", -] - -[[package]] -name = "sp-wasm-interface" -version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#07cfcf0b3c9df971c673162b9d16cb5c17fbe97d" -dependencies = [ - "impl-trait-for-tuples", - "log", - "parity-scale-codec", -] - [[package]] name = "sp-weights" version = "20.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "bounded-collections 0.1.9", + "bounded-collections", "parity-scale-codec", "scale-info", "serde", "smallvec", - "sp-arithmetic 16.0.0", - "sp-debug-derive 8.0.0", - "sp-std 8.0.0", -] - -[[package]] -name = "sp-weights" -version = "27.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "bounded-collections 0.2.0", - "parity-scale-codec", - "scale-info", - "serde", - "smallvec", - "sp-arithmetic 23.0.0", - "sp-debug-derive 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-std 14.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", + "sp-arithmetic", + "sp-debug-derive", + "sp-std", ] [[package]] @@ -10491,7 +9377,7 @@ version = "1.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "array-bytes 6.2.3", - "bounded-collections 0.1.9", + "bounded-collections", "derivative", "environmental", "impl-trait-for-tuples", @@ -10499,7 +9385,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-weights 20.0.0", + "sp-weights", "xcm-procedural", ] @@ -10508,19 +9394,19 @@ name = "staging-xcm-builder" version = "1.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "impl-trait-for-tuples", "log", "pallet-transaction-payment", "parity-scale-codec", "polkadot-parachain-primitives", "scale-info", - "sp-arithmetic 16.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", - "sp-weights 20.0.0", + "sp-arithmetic", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", "staging-xcm", "staging-xcm-executor", ] @@ -10531,18 +9417,18 @@ version = "1.0.0" source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=aleph-v1.6.0#3217a725428d820186502a947d1b2e1317166d44" dependencies = [ "environmental", - "frame-benchmarking 4.0.0-dev", - "frame-support 4.0.0-dev", + "frame-benchmarking", + "frame-support", "impl-trait-for-tuples", "log", "parity-scale-codec", "scale-info", - "sp-arithmetic 16.0.0", - "sp-core 21.0.0", - "sp-io 23.0.0", - "sp-runtime 24.0.0", - "sp-std 8.0.0", - "sp-weights 20.0.0", + "sp-arithmetic", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-weights", "staging-xcm", ] @@ -10622,9 +9508,9 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.26.4" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +checksum = "f7993a8e3a9e88a00351486baae9522c91b123a088f76469e5bd5cc17198ea87" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -10646,18 +9532,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "substrate-bip39" -version = "0.4.7" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "hmac 0.12.1", - "pbkdf2 0.12.2", - "schnorrkel", - "sha2 0.10.8", - "zeroize", -] - [[package]] name = "substrate-build-script-utils" version = "3.0.0" @@ -10675,11 +9549,11 @@ dependencies = [ "parity-scale-codec", "sc-rpc-api", "sc-transaction-pool-api", - "sp-api 4.0.0-dev", + "sp-api", "sp-block-builder", "sp-blockchain", - "sp-core 21.0.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-runtime", ] [[package]] @@ -10704,7 +9578,7 @@ dependencies = [ "log", "sc-rpc-api", "serde", - "sp-runtime 24.0.0", + "sp-runtime", ] [[package]] @@ -10726,11 +9600,11 @@ dependencies = [ "serde_json", "sp-blockchain", "sp-consensus", - "sp-core 21.0.0", + "sp-core", "sp-keyring", - "sp-keystore 0.27.0", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", + "sp-keystore", + "sp-runtime", + "sp-state-machine", ] [[package]] @@ -10740,8 +9614,8 @@ source = "git+https://github.com/Cardinal-Cryptography/polkadot-sdk.git?branch=a dependencies = [ "array-bytes 6.2.3", "frame-executive", - "frame-support 4.0.0-dev", - "frame-system 4.0.0-dev", + "frame-support", + "frame-system", "frame-system-rpc-runtime-api", "log", "pallet-babe", @@ -10750,26 +9624,26 @@ dependencies = [ "parity-scale-codec", "sc-service", "scale-info", - "sp-api 4.0.0-dev", - "sp-application-crypto 23.0.0", + "sp-api", + "sp-application-crypto", "sp-block-builder", "sp-consensus-aura", "sp-consensus-babe", "sp-consensus-grandpa", - "sp-core 21.0.0", - "sp-externalities 0.19.0", - "sp-genesis-builder 0.1.0", - "sp-inherents 4.0.0-dev", - "sp-io 23.0.0", + "sp-core", + "sp-externalities", + "sp-genesis-builder", + "sp-inherents", + "sp-io", "sp-keyring", "sp-offchain", - "sp-runtime 24.0.0", + "sp-runtime", "sp-session", - "sp-state-machine 0.28.0", - "sp-std 8.0.0", + "sp-state-machine", + "sp-std", "sp-transaction-pool", - "sp-trie 22.0.0", - "sp-version 22.0.0", + "sp-trie", + "sp-version", "substrate-wasm-builder", "trie-db", ] @@ -10783,11 +9657,11 @@ dependencies = [ "sc-block-builder", "sc-client-api", "sc-consensus", - "sp-api 4.0.0-dev", + "sp-api", "sp-blockchain", "sp-consensus", - "sp-core 21.0.0", - "sp-runtime 24.0.0", + "sp-core", + "sp-runtime", "substrate-test-client", "substrate-test-runtime", ] @@ -10805,7 +9679,7 @@ dependencies = [ "sp-maybe-compressed-blob", "strum 0.24.1", "tempfile", - "toml 0.8.14", + "toml 0.8.13", "walkdir", "wasm-opt", ] @@ -11154,14 +10028,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.13", ] [[package]] @@ -11186,15 +10060,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.9", ] [[package]] @@ -11292,17 +10166,6 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-serde" version = "0.1.3" @@ -11322,7 +10185,7 @@ dependencies = [ "ansi_term", "chrono", "lazy_static", - "matchers 0.0.1", + "matchers", "parking_lot 0.11.2", "regex", "serde", @@ -11332,28 +10195,10 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log 0.1.4", + "tracing-log", "tracing-serde", ] -[[package]] -name = "tracing-subscriber" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" -dependencies = [ - "matchers 0.1.0", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log 0.2.0", -] - [[package]] name = "trie-db" version = "0.28.0" @@ -11444,22 +10289,22 @@ dependencies = [ "sc-executor", "serde", "serde_json", - "sp-api 4.0.0-dev", + "sp-api", "sp-consensus-aura", "sp-consensus-babe", - "sp-core 21.0.0", - "sp-debug-derive 8.0.0", - "sp-externalities 0.19.0", - "sp-inherents 4.0.0-dev", - "sp-io 23.0.0", - "sp-keystore 0.27.0", + "sp-core", + "sp-debug-derive", + "sp-externalities", + "sp-inherents", + "sp-io", + "sp-keystore", "sp-rpc", - "sp-runtime 24.0.0", - "sp-state-machine 0.28.0", + "sp-runtime", + "sp-state-machine", "sp-timestamp", "sp-transaction-storage-proof", - "sp-version 22.0.0", - "sp-weights 20.0.0", + "sp-version", + "sp-weights", "substrate-rpc-client", "zstd 0.12.4", ] @@ -11529,9 +10374,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" [[package]] name = "unicode-xid" @@ -11586,9 +10431,9 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "valuable" @@ -12102,9 +10947,9 @@ dependencies = [ [[package]] name = "wide" -version = "0.7.23" +version = "0.7.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1134eff459f1063780b94cc78b704e2212cac12abd554e4268f5b8f9dfcc1883" +checksum = "cd8dc749a1b03f3c255a3064a4f5c0ee5ed09b7c6bc6d4525d31f779cd74d7fc" dependencies = [ "bytemuck", "safe_arch", @@ -12391,9 +11236,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "86c949fede1d13936a99f14fafd3e76fd642b556dd2ce96287fbe2e0151bfac6" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index 1b812c54..0cb2da25 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,6 @@ members = [ "pallets/operations", "pallets/support", "pallets/vk-storage", - "pallets/pink-scorpion", "primitives", "rate-limiter", "runtime-interfaces", @@ -85,7 +84,6 @@ tiny-bip39 = { version = "1.0" } tokio = { version = "1.38" } rand_pcg = { version = "0.3.1", default-features = false } - frame-benchmarking = { git = "https://github.com/Cardinal-Cryptography/polkadot-sdk.git", branch = "aleph-v1.6.0", default-features = false } frame-benchmarking-cli = { git = "https://github.com/Cardinal-Cryptography/polkadot-sdk.git", branch = "aleph-v1.6.0", default-features = false } frame-election-provider-support = { git = "https://github.com/Cardinal-Cryptography/polkadot-sdk.git", branch = "aleph-v1.6.0", default-features = false } @@ -199,4 +197,3 @@ pallet-operations = { path = "pallets/operations", default-features = false } pallets-support = { path = "pallets/support", default-features = false } pallet-vk-storage = { path = "pallets/vk-storage", default-features = false } primitives = { path = "primitives", default-features = false } -pallet_pink_scorpion = { path = "pallets/pink-scorpion", default-features = false } \ No newline at end of file diff --git a/bin/node/src/service.rs b/bin/node/src/service.rs index b18f76ab..e78ae0e1 100644 --- a/bin/node/src/service.rs +++ b/bin/node/src/service.rs @@ -7,10 +7,10 @@ use std::{ use fake_runtime_api::fake_runtime::RuntimeApi; use finality_aleph::{ - build_network, get_aleph_block_import, run_validator_node, AlephConfig, AllBlockMetrics, - BlockImporter, BuildNetworkOutput, ChannelProvider, FavouriteSelectChainProvider, - Justification, JustificationTranslator, MillisecsPerBlock, RateLimiterConfig, - RedirectingBlockImport, SessionPeriod, SubstrateChainStatus, SyncOracle, ValidatorAddressCache, + build_network, get_aleph_block_import, run_validator_node, AlephConfig, BlockImporter, + BuildNetworkOutput, ChannelProvider, FavouriteSelectChainProvider, Justification, + JustificationTranslator, MillisecsPerBlock, RateLimiterConfig, RedirectingBlockImport, + SessionPeriod, SubstrateChainStatus, SyncOracle, ValidatorAddressCache, }; use log::warn; use pallet_aleph_runtime_api::AlephSessionApi; @@ -51,7 +51,6 @@ pub struct ServiceComponents { pub keystore_container: KeystoreContainer, pub justification_channel_provider: ChannelProvider, pub telemetry: Option, - pub metrics: AllBlockMetrics, } struct LimitNonfinalized(u32); @@ -133,14 +132,12 @@ pub fn new_partial(config: &Configuration) -> Result Result; } +impl pallet_template::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + //type WeightInfo = pallet_template::weights::SubstrateWeight; +} + // Create the runtime by composing the FRAME pallets that were previously configured. construct_runtime!( pub struct Runtime { @@ -1005,8 +1010,7 @@ construct_runtime!( SafeMode: pallet_safe_mode = 25, TxPause: pallet_tx_pause = 26, Operations: pallet_operations = 255, - // Include your custom pallet - PinkScorpion: pallet_pink_scorpion::{Module, Call, Event}, + TemplateModule: crate::pallet_template::{Pallet, Call, Storage, Event} = 50 } ); @@ -1048,6 +1052,7 @@ mod benches { [pallet_feature_control, FeatureControl] [pallet_vk_storage, VkStorage] [baby_liminal_extension, baby_liminal_extension::ChainExtensionBenchmarking] + [pallet_template, TemplateModule] ); } @@ -1611,19 +1616,18 @@ mod tests { } - -#[cfg_attr(not(feature = "std"), no_std)] +//#![cfg_attr(not(feature = "std"), no_std)] #[frame_support::pallet] -pub mod pallet_pink_scorpion { - use super::*; - use frame_support::pallet_prelude::*; +pub mod pallet_template { + use frame_support::{pallet_prelude::*, traits::StorageVersion}; //, sp_runtime::RuntimeAppPublic}; use frame_system::pallet_prelude::*; use scale_info::prelude::vec::Vec; - use core::convert::TryInto; + + const STORAGE_VERSION: StorageVersion = StorageVersion::new(1); #[pallet::pallet] - #[pallet::without_storage_info] + #[pallet::storage_version(STORAGE_VERSION)] pub struct Pallet(_); #[pallet::config] @@ -1640,32 +1644,27 @@ pub mod pallet_pink_scorpion { #[pallet::storage] #[pallet::getter(fn info)] - pub(super) type DisAssembly = StorageMap<_, Blake2_128Concat, T::AccountId, Vec<(u64, FSEvent)>, OptionQuery>; + pub(super) type DisReAssembly = StorageMap<_, Blake2_128Concat, T::AccountId, FSEvent, OptionQuery>; #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] pub enum Event { - /// An event indicating a file has been disassembled. FileDisassembled { who: T::AccountId, event: FSEvent }, - /// An event indicating a file has been reassembled. - FileReassembled { who: T::AccountId, creation_time: Vec, file_path: Vec, event_key: Vec }, + FileReassembled { who: T::AccountId, event: FSEvent }, } #[pallet::error] pub enum Error { - /// Error indicating the creation time is too long. CreationTimeTooLong, - /// Error indicating the file path is too long. FilePathTooLong, - /// Error indicating the event key is too long. EventKeyTooLong, } #[pallet::call] impl Pallet { #[pallet::call_index(0)] - #[pallet::weight(T::DbWeight::get().writes(1) + 10_000)] - pub fn file_disassembled( + #[pallet::weight((Weight::from_parts(10_000, 0) + T::DbWeight::get().writes(1), DispatchClass::Operational))] + pub fn disassembled( origin: OriginFor, creation_time: Vec, file_path: Vec, @@ -1673,42 +1672,38 @@ pub mod pallet_pink_scorpion { ) -> DispatchResult { let sender = ensure_signed(origin)?; - // Validate input lengths ensure!(creation_time.len() <= 64, Error::::CreationTimeTooLong); ensure!(file_path.len() <= 256, Error::::FilePathTooLong); ensure!(event_key.len() <= 128, Error::::EventKeyTooLong); - // Create FSEvent instance let event = FSEvent { - creationtime: Self::vec_to_array::<64>(creation_time)?, - filepath: Self::vec_to_array::<256>(file_path)?, - eventkey: Self::vec_to_array::<128>(event_key)?, + creationtime: { + let mut arr = [0u8; 64]; + arr[..creation_time.len()].copy_from_slice(&creation_time); + arr + }, + filepath: { + let mut arr = [0u8; 256]; + arr[..file_path.len()].copy_from_slice(&file_path); + arr + }, + eventkey: { + let mut arr = [0u8; 128]; + arr[..event_key.len()].copy_from_slice(&event_key); + arr + }, }; - // Get the current events for the sender - let mut events_vec = DisAssembly::::get(&sender).unwrap_or_default(); - - // Generate a new key for the event using the block number converted to u64 - let key: u64 = frame_system::Pallet::::block_number().try_into().map_err(|_| Error::::FilePathTooLong)?; + >::insert(&sender, &event); - // Insert the new event into the Vec - events_vec.push((key, event.clone())); - - // Store the updated events in storage - DisAssembly::::insert(&sender, events_vec); - - // Emit event for file disassembly - Self::deposit_event(Event::::FileDisassembled { - who: sender, - event, - }); + Self::deposit_event(Event::::FileDisassembled { who: sender.clone(), event: event.clone() }); Ok(()) } #[pallet::call_index(1)] - #[pallet::weight(T::DbWeight::get().writes(1) + 10_000.into())] - pub fn file_reassembled( + #[pallet::weight((Weight::from_parts(10_000, 0) + T::DbWeight::get().writes(1), DispatchClass::Operational))] + pub fn reassembled( origin: OriginFor, creation_time: Vec, file_path: Vec, @@ -1716,20 +1711,33 @@ pub mod pallet_pink_scorpion { ) -> DispatchResult { let sender = ensure_signed(origin)?; - // Emit event for file reassembly - Self::deposit_event(Event::FileReassembled { who: sender, creation_time, file_path, event_key }); - Ok(()) - } - } + ensure!(creation_time.len() <= 64, Error::::CreationTimeTooLong); + ensure!(file_path.len() <= 256, Error::::FilePathTooLong); + ensure!(event_key.len() <= 128, Error::::EventKeyTooLong); - impl Pallet { - fn vec_to_array(vec: Vec) -> Result<[u8; N], Error> { - let mut array = [0u8; N]; - if vec.len() > N { - return Err(Error::::CreationTimeTooLong); - } - array[..vec.len()].copy_from_slice(&vec); - Ok(array) + let event = FSEvent { + creationtime: { + let mut arr = [0u8; 64]; + arr[..creation_time.len()].copy_from_slice(&creation_time); + arr + }, + filepath: { + let mut arr = [0u8; 256]; + arr[..file_path.len()].copy_from_slice(&file_path); + arr + }, + eventkey: { + let mut arr = [0u8; 128]; + arr[..event_key.len()].copy_from_slice(&event_key); + arr + }, + }; + + >::insert(&sender, &event); + + Self::deposit_event(Event::::FileReassembled { who: sender.clone(), event: event.clone() }); + + Ok(()) } } } diff --git a/finality-aleph/src/block/substrate/chain_status.rs b/finality-aleph/src/block/substrate/chain_status.rs index 812136b9..45c3a7a9 100644 --- a/finality-aleph/src/block/substrate/chain_status.rs +++ b/finality-aleph/src/block/substrate/chain_status.rs @@ -64,6 +64,8 @@ impl Display for Error { } } +impl std::error::Error for Error {} + impl From for Error { fn from(value: BackendError) -> Self { Error::Backend(value) @@ -159,6 +161,17 @@ impl SubstrateChainStatus { fn finalized_hash(&self) -> AlephHash { self.info().finalized_hash } + + /// Computes lowest common ancestor between two blocks. Warning: complexity + /// O(distance between blocks). + pub fn lowest_common_ancestor(&self, from: &BlockId, to: &BlockId) -> Result { + let result = sp_blockchain::lowest_common_ancestor( + self.backend.blockchain(), + from.hash(), + to.hash(), + )?; + Ok((result.hash, result.number).into()) + } } impl ChainStatus for SubstrateChainStatus { diff --git a/finality-aleph/src/block/substrate/mod.rs b/finality-aleph/src/block/substrate/mod.rs index d69651d9..aab2729a 100644 --- a/finality-aleph/src/block/substrate/mod.rs +++ b/finality-aleph/src/block/substrate/mod.rs @@ -5,7 +5,7 @@ use sp_runtime::traits::{CheckedSub, Header as _, One}; use crate::{ aleph_primitives::{Block, Header}, block::{Block as BlockT, BlockId, BlockImport, Header as HeaderT, UnverifiedHeader}, - metrics::{AllBlockMetrics, Checkpoint}, + metrics::TimingBlockMetrics, }; mod chain_status; @@ -19,9 +19,12 @@ pub use justification::{ InnerJustification, Justification, JustificationTranslator, TranslateError, }; pub use status_notifier::SubstrateChainStatusNotifier; -pub use verification::{SessionVerifier, SubstrateFinalizationInfo, VerifierCache}; +pub use verification::{SubstrateFinalizationInfo, VerifierCache}; -use crate::block::{BestBlockSelector, BlockchainEvents}; +use crate::{ + block::{BestBlockSelector, BlockchainEvents}, + metrics::Checkpoint, +}; const LOG_TARGET: &str = "aleph-substrate"; @@ -60,18 +63,18 @@ impl HeaderT for Header { /// Wrapper around the trait object that we get from Substrate. pub struct BlockImporter { importer: Box>, - metrics: AllBlockMetrics, + metrics: TimingBlockMetrics, } impl BlockImporter { pub fn new(importer: Box>) -> Self { Self { importer, - metrics: AllBlockMetrics::new(None), + metrics: TimingBlockMetrics::noop(), } } - pub fn attach_metrics(&mut self, metrics: AllBlockMetrics) { + pub fn attach_metrics(&mut self, metrics: TimingBlockMetrics) { self.metrics = metrics; } } @@ -85,7 +88,6 @@ impl BlockImport for BlockImporter { false => BlockOrigin::NetworkBroadcast, }; let hash = block.header.hash(); - let number = *block.header.number(); let incoming_block = IncomingBlock:: { hash, header: Some(block.header), @@ -98,8 +100,7 @@ impl BlockImport for BlockImporter { import_existing: false, state: None, }; - self.metrics - .report_block(BlockId::new(hash, number), Checkpoint::Importing, Some(own)); + self.metrics.report_block(hash, Checkpoint::Importing); self.importer.import_blocks(origin, vec![incoming_block]); } } diff --git a/finality-aleph/src/data_io/data_provider.rs b/finality-aleph/src/data_io/data_provider.rs index ddcf086b..7a8a0be3 100644 --- a/finality-aleph/src/data_io/data_provider.rs +++ b/finality-aleph/src/data_io/data_provider.rs @@ -9,7 +9,7 @@ use crate::{ aleph_primitives::BlockNumber, block::{BestBlockSelector, Header, HeaderBackend, UnverifiedHeader}, data_io::{proposal::UnvalidatedAlephProposal, AlephData, MAX_DATA_BRANCH_LEN}, - metrics::{AllBlockMetrics, Checkpoint}, + metrics::{Checkpoint, TimingBlockMetrics}, party::manager::Runnable, BlockId, SessionBoundaries, }; @@ -161,7 +161,7 @@ where client: C, session_boundaries: SessionBoundaries, config: ChainTrackerConfig, - metrics: AllBlockMetrics, + metrics: TimingBlockMetrics, ) -> (Self, DataProvider) { let data_to_propose = Arc::new(Mutex::new(None)); ( @@ -317,7 +317,7 @@ where #[derive(Clone)] pub struct DataProvider { data_to_propose: Arc>>>, - metrics: AllBlockMetrics, + metrics: TimingBlockMetrics, } // Honest nodes propose data in session `k` as follows: @@ -335,7 +335,7 @@ impl DataProvider { if let Some(data) = &data_to_propose { let top_block = data.head_proposal.top_block(); self.metrics - .report_block(top_block, Checkpoint::Proposed, None); + .report_block(top_block.hash(), Checkpoint::Proposed); debug!(target: LOG_TARGET, "Outputting {:?} in get_data", data); }; @@ -355,7 +355,7 @@ mod tests { data_provider::{ChainTracker, ChainTrackerConfig}, AlephData, DataProvider, MAX_DATA_BRANCH_LEN, }, - metrics::AllBlockMetrics, + metrics::TimingBlockMetrics, party::manager::Runnable, testing::{ client_chain_builder::ClientChainBuilder, @@ -394,7 +394,7 @@ mod tests { client, session_boundaries, config, - AllBlockMetrics::new(None), + TimingBlockMetrics::noop(), ); let (exit_chain_tracker_tx, exit_chain_tracker_rx) = oneshot::channel(); diff --git a/finality-aleph/src/finalization.rs b/finality-aleph/src/finalization.rs index 5244a1ae..8f9d2877 100644 --- a/finality-aleph/src/finalization.rs +++ b/finality-aleph/src/finalization.rs @@ -11,7 +11,6 @@ use sp_runtime::{ use crate::{ aleph_primitives::{BlockHash, BlockNumber}, - metrics::{AllBlockMetrics, Checkpoint}, BlockId, }; @@ -26,7 +25,6 @@ where C: HeaderBackend + LockImportRun + Finalizer, { client: Arc, - metrics: AllBlockMetrics, phantom: PhantomData<(B, BE)>, } @@ -36,10 +34,9 @@ where BE: Backend, C: HeaderBackend + LockImportRun + Finalizer, { - pub(crate) fn new(client: Arc, metrics: AllBlockMetrics) -> Self { + pub(crate) fn new(client: Arc) -> Self { AlephFinalizer { client, - metrics, phantom: PhantomData, } } @@ -74,8 +71,6 @@ where match &update_res { Ok(_) => { debug!(target: "aleph-finality", "Successfully finalized block with hash {:?} and number {:?}. Current best: #{:?}.", hash, number, status.best_number); - self.metrics - .report_block(block, Checkpoint::Finalized, None); } Err(_) => { debug!(target: "aleph-finality", "Failed to finalize block with hash {:?} and number {:?}. Current best: #{:?}.", hash, number, status.best_number) diff --git a/finality-aleph/src/import.rs b/finality-aleph/src/import.rs index 0d24ed43..e9c6394c 100644 --- a/finality-aleph/src/import.rs +++ b/finality-aleph/src/import.rs @@ -9,14 +9,13 @@ use sc_consensus::{ BlockCheckParams, BlockImport, BlockImportParams, ForkChoiceStrategy, ImportResult, JustificationImport, }; -use sp_consensus::{BlockOrigin, Error as ConsensusError, SelectChain}; +use sp_consensus::{Error as ConsensusError, SelectChain}; use sp_runtime::{traits::Header as HeaderT, Justification as SubstrateJustification}; use crate::{ aleph_primitives::{Block, BlockHash, BlockNumber, ALEPH_ENGINE_ID}, block::substrate::{Justification, JustificationTranslator, TranslateError}, justification::{backwards_compatible_decode, DecodeError}, - metrics::{AllBlockMetrics, Checkpoint}, BlockId, }; @@ -26,14 +25,12 @@ pub fn get_aleph_block_import( justification_tx: UnboundedSender, translator: JustificationTranslator, select_chain: SC, - metrics: AllBlockMetrics, ) -> impl BlockImport + JustificationImport + Clone where I: BlockImport + Send + Sync + Clone, SC: SelectChain + Send + Sync, { - let tracing_import = TracingBlockImport::new(inner, metrics); - let favourite_marker_import = FavouriteMarkerBlockImport::new(tracing_import, select_chain); + let favourite_marker_import = FavouriteMarkerBlockImport::new(inner, select_chain); AlephBlockImport::new(favourite_marker_import, justification_tx, translator) } @@ -92,68 +89,6 @@ where } } -/// A wrapper around a block import that also marks the start and end of the import of every block -/// in the metrics, if provided. -#[derive(Clone)] -struct TracingBlockImport -where - I: BlockImport + Send + Sync, -{ - inner: I, - metrics: AllBlockMetrics, -} - -impl TracingBlockImport -where - I: BlockImport + Send + Sync, -{ - pub fn new(inner: I, metrics: AllBlockMetrics) -> Self { - TracingBlockImport { inner, metrics } - } -} - -#[async_trait::async_trait] -impl BlockImport for TracingBlockImport -where - I: BlockImport + Send + Sync, -{ - type Error = I::Error; - - async fn check_block( - &mut self, - block: BlockCheckParams, - ) -> Result { - self.inner.check_block(block).await - } - - async fn import_block( - &mut self, - block: BlockImportParams, - ) -> Result { - let post_hash = block.post_hash(); - let number = *block.post_header().number(); - let is_own = block.origin == BlockOrigin::Own; - // Self-created blocks are imported without using the import queue, - // so we need to report them here. - self.metrics.report_block( - BlockId::new(post_hash, number), - Checkpoint::Importing, - Some(is_own), - ); - - let result = self.inner.import_block(block).await; - - if let Ok(ImportResult::Imported(_)) = &result { - self.metrics.report_block( - BlockId::new(post_hash, number), - Checkpoint::Imported, - Some(is_own), - ); - } - result - } -} - /// A wrapper around a block import that also extracts any present justifications and sends them to /// our components which will process them further and possibly finalize the block. #[derive(Clone)] diff --git a/finality-aleph/src/lib.rs b/finality-aleph/src/lib.rs index 8a6ce39a..73d0fdd7 100644 --- a/finality-aleph/src/lib.rs +++ b/finality-aleph/src/lib.rs @@ -70,7 +70,6 @@ pub use crate::{ }, import::{get_aleph_block_import, AlephBlockImport, RedirectingBlockImport}, justification::AlephJustification, - metrics::{AllBlockMetrics, DefaultClock, FinalityRateMetrics, TimingBlockMetrics}, network::{ address_cache::{ValidatorAddressCache, ValidatorAddressingInfo}, build_network, BuildNetworkOutput, ProtocolNetwork, SubstratePeerId, @@ -271,7 +270,6 @@ pub struct AlephConfig { pub keystore: Arc, pub justification_channel_provider: ChannelProvider, pub block_rx: mpsc::UnboundedReceiver, - pub metrics: AllBlockMetrics, pub registry: Option, pub session_period: SessionPeriod, pub millisecs_per_block: MillisecsPerBlock, diff --git a/finality-aleph/src/metrics/all_block.rs b/finality-aleph/src/metrics/all_block.rs deleted file mode 100644 index ac663840..00000000 --- a/finality-aleph/src/metrics/all_block.rs +++ /dev/null @@ -1,53 +0,0 @@ -use log::warn; -use substrate_prometheus_endpoint::Registry; - -use super::{finality_rate::FinalityRateMetrics, timing::DefaultClock, Checkpoint}; -use crate::{metrics::LOG_TARGET, BlockId, TimingBlockMetrics}; - -/// Wrapper around various block-related metrics. -#[derive(Clone)] -pub struct AllBlockMetrics { - timing_metrics: TimingBlockMetrics, - finality_rate_metrics: FinalityRateMetrics, -} - -impl AllBlockMetrics { - pub fn new(registry: Option<&Registry>) -> Self { - let timing_metrics = match TimingBlockMetrics::new(registry, DefaultClock) { - Ok(timing_metrics) => timing_metrics, - Err(e) => { - warn!( - target: LOG_TARGET, - "Failed to register Prometheus block timing metrics: {:?}.", e - ); - TimingBlockMetrics::Noop - } - }; - let finality_rate_metrics = match FinalityRateMetrics::new(registry) { - Ok(finality_rate_metrics) => finality_rate_metrics, - Err(e) => { - warn!( - target: LOG_TARGET, - "Failed to register Prometheus finality rate metrics: {:?}.", e - ); - FinalityRateMetrics::Noop - } - }; - AllBlockMetrics { - timing_metrics, - finality_rate_metrics, - } - } - - /// Triggers all contained block metrics. - pub fn report_block(&self, block_id: BlockId, checkpoint: Checkpoint, own: Option) { - self.timing_metrics - .report_block(block_id.hash(), checkpoint); - self.finality_rate_metrics.report_block( - block_id.hash(), - block_id.number(), - checkpoint, - own, - ); - } -} diff --git a/finality-aleph/src/metrics/best_block.rs b/finality-aleph/src/metrics/best_block.rs new file mode 100644 index 00000000..a05a69cc --- /dev/null +++ b/finality-aleph/src/metrics/best_block.rs @@ -0,0 +1,99 @@ +use std::error::Error; + +use substrate_prometheus_endpoint::{ + register, Gauge, Histogram, HistogramOpts, PrometheusError, Registry, U64, +}; + +use crate::{BlockId, BlockNumber, SubstrateChainStatus}; + +#[derive(Clone)] +pub enum BestBlockMetrics { + Prometheus { + top_finalized_block: Gauge, + best_block: Gauge, + reorgs: Histogram, + best_block_id: BlockId, + chain_status: SubstrateChainStatus, + }, + Noop, +} + +impl BestBlockMetrics { + pub fn new( + registry: Option, + chain_status: SubstrateChainStatus, + ) -> Result { + let registry = match registry { + Some(registry) => registry, + None => return Ok(Self::Noop), + }; + + Ok(Self::Prometheus { + top_finalized_block: register( + Gauge::new("aleph_top_finalized_block", "Top finalized block number")?, + ®istry, + )?, + best_block: register( + Gauge::new( + "aleph_best_block", + "Best (or more precisely, favourite) block number", + )?, + ®istry, + )?, + reorgs: register( + Histogram::with_opts( + HistogramOpts::new("aleph_reorgs", "Number of reorgs by length") + .buckets(vec![1., 2., 4., 9.]), + )?, + ®istry, + )?, + best_block_id: (Default::default(), 0u32).into(), + chain_status, + }) + } + + pub fn report_best_block_imported(&mut self, block_id: BlockId) { + if let Self::Prometheus { + best_block, + ref mut best_block_id, + reorgs, + chain_status, + .. + } = self + { + let reorg_len = retracted_path_length(chain_status, best_block_id, &block_id); + best_block.set(block_id.number() as u64); + *best_block_id = block_id; + match reorg_len { + Ok(0) => {} + Ok(reorg_len) => { + reorgs.observe(reorg_len as f64); + } + Err(e) => { + log::warn!("Failed to calculate reorg length: {:?}", e); + } + } + } + } + + pub fn report_block_finalized(&self, block_id: BlockId) { + if let Self::Prometheus { + top_finalized_block, + .. + } = self + { + top_finalized_block.set(block_id.number() as u64); + } + } +} + +fn retracted_path_length( + chain_status: &SubstrateChainStatus, + from: &BlockId, + to: &BlockId, +) -> Result> { + let lca = chain_status + .lowest_common_ancestor(from, to) + .map_err(Box::new)?; + Ok(from.number().saturating_sub(lca.number())) +} diff --git a/finality-aleph/src/metrics/chain_state.rs b/finality-aleph/src/metrics/chain_state.rs deleted file mode 100644 index e8b69b92..00000000 --- a/finality-aleph/src/metrics/chain_state.rs +++ /dev/null @@ -1,682 +0,0 @@ -use std::{ - fmt::Display, - num::NonZeroUsize, - time::{Duration, Instant}, -}; - -use futures::{stream::FusedStream, StreamExt}; -use lru::LruCache; -use sc_client_api::{ - BlockBackend, BlockImportNotification, FinalityNotification, FinalityNotifications, - ImportNotifications, -}; -use sp_blockchain::{lowest_common_ancestor, HeaderMetadata}; -use sp_runtime::{ - traits::{Block as BlockT, Extrinsic, Header as HeaderT, Zero}, - Saturating, -}; -use substrate_prometheus_endpoint::{ - register, Counter, Gauge, Histogram, HistogramOpts, PrometheusError, Registry, U64, -}; - -use crate::{ - metrics::{exponential_buckets_two_sided, TransactionPoolInfoProvider}, - BlockNumber, -}; - -// Size of transaction cache: 32B (Hash) + 16B (Instant) * `100_000` is approximately 4.8MB -const TRANSACTION_CACHE_SIZE: usize = 100_000; - -const BUCKETS_FACTOR: f64 = 1.4; - -#[derive(Debug)] -pub enum Error { - NoRegistry, - UnableToCreateMetrics(PrometheusError), - BlockImportStreamClosed, - FinalizedBlocksStreamClosed, - TransactionStreamClosed, -} - -impl Display for Error { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Error::NoRegistry => write!(f, "Registry can not be empty."), - Error::UnableToCreateMetrics(e) => { - write!(f, "Failed to create metrics: {e}.") - } - Error::BlockImportStreamClosed => { - write!(f, "Block import notification stream ended unexpectedly.") - } - Error::FinalizedBlocksStreamClosed => { - write!(f, "Finality notification stream ended unexpectedly.") - } - Error::TransactionStreamClosed => { - write!(f, "Transaction stream ended unexpectedly.") - } - } - } -} - -enum ChainStateMetrics { - Prometheus { - top_finalized_block: Gauge, - best_block: Gauge, - reorgs: Histogram, - time_till_block_inclusion: Histogram, - transactions_not_seen_in_the_pool: Counter, - }, - Noop, -} - -impl ChainStateMetrics { - fn new(registry: Option) -> Result { - let registry = match registry { - Some(registry) => registry, - None => return Ok(ChainStateMetrics::Noop), - }; - - Ok(ChainStateMetrics::Prometheus { - top_finalized_block: register( - Gauge::new("aleph_top_finalized_block", "no help")?, - ®istry, - )?, - best_block: register(Gauge::new("aleph_best_block", "no help")?, ®istry)?, - reorgs: register( - Histogram::with_opts( - HistogramOpts::new("aleph_reorgs", "Number of reorgs by length") - .buckets(vec![1., 2., 4., 9.]), - )?, - ®istry, - )?, - time_till_block_inclusion: register( - Histogram::with_opts( - HistogramOpts::new( - "aleph_transaction_to_block_time", - "Time from becoming ready in the pool to inclusion in some valid block.", - ) - .buckets(exponential_buckets_two_sided( - 2000.0, - BUCKETS_FACTOR, - 2, - 8, - )?), - )?, - ®istry, - )?, - transactions_not_seen_in_the_pool: register( - Counter::new("aleph_transactions_not_seen_in_the_pool", "no help")?, - ®istry, - )?, - }) - } - - fn update_best_block(&self, number: BlockNumber) { - if let ChainStateMetrics::Prometheus { best_block, .. } = self { - best_block.set(number as u64) - } - } - - fn update_top_finalized_block(&self, number: BlockNumber) { - if let ChainStateMetrics::Prometheus { - top_finalized_block, - .. - } = self - { - top_finalized_block.set(number as u64); - } - } - - fn report_reorg(&self, length: BlockNumber) { - if let ChainStateMetrics::Prometheus { reorgs, .. } = self { - reorgs.observe(length as f64); - } - } - - fn report_transaction_in_block(&self, elapsed: Duration) { - if let ChainStateMetrics::Prometheus { - time_till_block_inclusion, - .. - } = self - { - time_till_block_inclusion.observe(elapsed.as_secs_f64() * 1000.); - } - } - - fn report_transaction_not_seen_in_the_pool(&self) { - if let ChainStateMetrics::Prometheus { - transactions_not_seen_in_the_pool, - .. - } = self - { - transactions_not_seen_in_the_pool.inc(); - } - } -} - -pub async fn run_chain_state_metrics< - X, - HE: HeaderT, - B: BlockT
, - BE: HeaderMetadata + BlockBackend, - TP: TransactionPoolInfoProvider, ->( - backend: &BE, - mut import_notifications: ImportNotifications, - mut finality_notifications: FinalityNotifications, - registry: Option, - mut transaction_pool_info_provider: TP, -) -> Result<(), Error> { - if registry.is_none() { - return Err(Error::NoRegistry); - } - if import_notifications.is_terminated() { - return Err(Error::BlockImportStreamClosed); - } - if finality_notifications.is_terminated() { - return Err(Error::FinalizedBlocksStreamClosed); - } - - let metrics = ChainStateMetrics::new(registry).map_err(Error::UnableToCreateMetrics)?; - let mut cache: LruCache = LruCache::new( - NonZeroUsize::new(TRANSACTION_CACHE_SIZE).expect("the cache size is a non-zero constant"), - ); - - let mut previous_best: Option = None; - - loop { - tokio::select! { - maybe_block = import_notifications.next() => { - let block = maybe_block.ok_or(Error::BlockImportStreamClosed)?; - handle_block_imported( - block, - backend, - &metrics, - &mut transaction_pool_info_provider, - &mut cache, - &mut previous_best, - ); - }, - maybe_block = finality_notifications.next() => { - let block = maybe_block.ok_or(Error::FinalizedBlocksStreamClosed)?; - handle_block_finalized(block, &metrics); - }, - maybe_transaction = transaction_pool_info_provider.next_transaction() => { - let hash = maybe_transaction.ok_or(Error::TransactionStreamClosed)?; - handle_transaction_in_pool(hash, &mut cache); - } - } - } -} - -fn handle_block_imported< - X, - HE: HeaderT, - B: BlockT
, - BE: HeaderMetadata + BlockBackend, - TP: TransactionPoolInfoProvider, ->( - block: BlockImportNotification, - backend: &BE, - metrics: &ChainStateMetrics, - transaction_pool_info_provider: &mut TP, - cache: &mut LruCache, - previous_best: &mut Option, -) { - if block.is_new_best { - metrics.update_best_block(*block.header.number()); - if let Some(reorg_len) = detect_reorgs(backend, previous_best.clone(), block.header.clone()) - { - metrics.report_reorg(reorg_len); - } - *previous_best = Some(block.header); - } - if let Ok(Some(body)) = backend.block_body(block.hash) { - report_transactions_included_in_block( - transaction_pool_info_provider, - &body, - metrics, - cache, - ); - } -} - -fn handle_block_finalized, B: BlockT
>( - block: FinalityNotification, - metrics: &ChainStateMetrics, -) { - // Sometimes finalization can also cause best block update. However, - // RPC best block subscription won't notify about that immediately, so - // we also don't update there. Also in that case, substrate sets best_block to - // the newly finalized block (see test), so the best block will be updated - // after importing anything on the newly finalized branch. - metrics.update_top_finalized_block(*block.header.number()); -} - -fn handle_transaction_in_pool( - hash: TxHash, - cache: &mut LruCache, -) { - // Putting new transaction can evict the oldest one. However, even if the - // removed transaction was actually still in the pool, we don't have - // any guarantees that it would be eventually included in the block. - // Therefore, we ignore such transaction. - cache.put(hash, Instant::now()); -} - -fn detect_reorgs, B: BlockT
, BE: HeaderMetadata>( - backend: &BE, - prev_best: Option, - best: HE, -) -> Option { - let prev_best = prev_best?; - if best.hash() == prev_best.hash() || *best.parent_hash() == prev_best.hash() { - // Quit early when no change or the best is a child of the previous best. - return None; - } - let lca = lowest_common_ancestor(backend, best.hash(), prev_best.hash()).ok()?; - let len = prev_best.number().saturating_sub(lca.number); - if len == HE::Number::zero() { - return None; - } - Some(len) -} - -fn report_transactions_included_in_block< - 'a, - TP: TransactionPoolInfoProvider, - I: IntoIterator, ->( - pool: &'a TP, - body: I, - metrics: &ChainStateMetrics, - cache: &mut LruCache, -) where - ::TxHash: std::hash::Hash + PartialEq + Eq, -{ - for xt in body { - let hash = pool.hash_of(xt); - if let Some(insert_time) = cache.pop(&hash) { - let elapsed = insert_time.elapsed(); - metrics.report_transaction_in_block(elapsed); - } else if let Some(true) = xt.is_signed() { - // Either it was never in the pool (eg. submitted locally), or we've got BlockImport - // notification faster than transaction in pool one. The latter is more likely, - // so we report it as zero. - metrics.report_transaction_in_block(Duration::ZERO); - metrics.report_transaction_not_seen_in_the_pool(); - } - } -} - -#[cfg(test)] -mod test { - use std::{collections::HashMap, sync::Arc}; - - use futures::{FutureExt, Stream}; - use parity_scale_codec::Encode; - use sc_block_builder::BlockBuilderBuilder; - use sc_client_api::{BlockchainEvents, HeaderBackend}; - use substrate_test_runtime_client::AccountKeyring; - - use super::*; - use crate::{ - metrics::transaction_pool::test::TestTransactionPoolSetup, - testing::{ - client_chain_builder::ClientChainBuilder, - mocks::{TBlock, THash, TestClientBuilder, TestClientBuilderExt}, - }, - }; - - #[tokio::test] - async fn when_finalizing_with_reorg_best_block_is_set_to_that_finalized_block() { - let client = Arc::new(TestClientBuilder::new().build()); - let client_builder = Arc::new(TestClientBuilder::new().build()); - let mut chain_builder = ClientChainBuilder::new(client.clone(), client_builder); - - let chain_a = chain_builder - .build_and_import_branch_above(&chain_builder.genesis_hash(), 5) - .await; - - // (G) - A1 - A2 - A3 - A4 - A5; - - assert_eq!( - client.chain_info().finalized_hash, - chain_builder.genesis_hash() - ); - assert_eq!(client.chain_info().best_number, 5); - - let chain_b = chain_builder - .build_and_import_branch_above(&chain_a[0].header.hash(), 3) - .await; - chain_builder.finalize_block(&chain_b[0].header.hash()); - - // (G) - (A1) - A2 - A3 - A4 - A5 - // \ - // (B2) - B3 - B4 - - assert_eq!(client.chain_info().best_number, 2); - assert_eq!(client.chain_info().finalized_hash, chain_b[0].header.hash()); - } - - #[tokio::test] - async fn test_reorg_detection() { - let client = Arc::new(TestClientBuilder::new().build()); - let client_builder = Arc::new(TestClientBuilder::new().build()); - let mut chain_builder = ClientChainBuilder::new(client.clone(), client_builder); - - let a = chain_builder - .build_and_import_branch_above(&chain_builder.genesis_hash(), 5) - .await; - let b = chain_builder - .build_and_import_branch_above(&a[0].header.hash(), 3) - .await; - let c = chain_builder - .build_and_import_branch_above(&a[2].header.hash(), 2) - .await; - - // - C0 - C1 - // / - // G - A0 - A1 - A2 - A3 - A4 - // \ - // - B0 - B1 - B2 - - for (prev, new_best, expected) in [ - (&a[1], &a[2], None), - (&a[1], &a[4], None), - (&a[1], &a[1], None), - (&a[2], &b[0], Some(2)), - (&b[0], &a[2], Some(1)), - (&c[1], &b[2], Some(4)), - ] { - assert_eq!( - detect_reorgs( - client.as_ref(), - Some(prev.header().clone()), - new_best.header().clone() - ), - expected, - ); - } - } - - // Transaction pool metrics tests - struct TestSetup { - pub pool: TestTransactionPoolSetup, - pub metrics: ChainStateMetrics, - pub cache: LruCache, - pub block_import_notifications: - Box> + Unpin>, - pub finality_notifications: Box> + Unpin>, - } - - #[derive(PartialEq, Eq, Hash, Debug)] - enum NotificationType { - BlockImport, - Finality, - Transaction, - } - - impl TestSetup { - fn new() -> Self { - let client = Arc::new(TestClientBuilder::new().build()); - - let block_import_notifications = - Box::new(client.every_import_notification_stream().fuse()); - let finality_notifications = Box::new(client.finality_notification_stream().fuse()); - - let pool = TestTransactionPoolSetup::new(client); - - let registry = Registry::new(); - let metrics = ChainStateMetrics::new(Some(registry)).expect("metrics"); - let cache = LruCache::new(NonZeroUsize::new(10).expect("cache")); - - TestSetup { - pool, - metrics, - cache, - block_import_notifications, - finality_notifications, - } - } - - fn genesis(&self) -> THash { - self.pool.client.info().genesis_hash - } - - fn transactions_histogram(&self) -> &Histogram { - match &self.metrics { - ChainStateMetrics::Prometheus { - time_till_block_inclusion, - .. - } => time_till_block_inclusion, - _ => panic!("metrics"), - } - } - - fn process_notifications(&mut self) -> HashMap { - let mut block_imported_notifications = 0; - let mut finality_notifications = 0; - let mut transaction_notifications = 0; - - while let Some(block) = self.block_import_notifications.next().now_or_never() { - handle_block_imported( - block.expect("stream should not end"), - self.pool.client.as_ref(), - &self.metrics, - &mut self.pool.transaction_pool_info_provider, - &mut self.cache, - &mut None, - ); - block_imported_notifications += 1; - } - while let Some(finality) = self.finality_notifications.next().now_or_never() { - handle_block_finalized(finality.expect("stream should not end"), &self.metrics); - finality_notifications += 1; - } - while let Some(transaction) = self - .pool - .transaction_pool_info_provider - .next_transaction() - .now_or_never() - { - handle_transaction_in_pool( - transaction.expect("stream should not end"), - &mut self.cache, - ); - transaction_notifications += 1; - } - HashMap::from_iter(vec![ - (NotificationType::BlockImport, block_imported_notifications), - (NotificationType::Finality, finality_notifications), - (NotificationType::Transaction, transaction_notifications), - ]) - } - } - - fn blocks_imported(n: usize) -> HashMap { - HashMap::from_iter(vec![ - (NotificationType::BlockImport, n), - (NotificationType::Finality, 0), - (NotificationType::Transaction, 0), - ]) - } - fn transactions(n: usize) -> HashMap { - HashMap::from_iter(vec![ - (NotificationType::BlockImport, 0), - (NotificationType::Finality, 0), - (NotificationType::Transaction, n), - ]) - } - - const EPS: Duration = Duration::from_nanos(1); - - #[tokio::test] - async fn transactions_are_reported() { - let mut setup = TestSetup::new(); - let genesis = setup.genesis(); - let xt = setup - .pool - .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 0); - - let time_before_submit = Instant::now(); - setup.pool.submit(&genesis, xt).await; - - assert_eq!( - setup.process_notifications(), - transactions(1), - "'In pool' notification wasn't sent" - ); - let time_after_submit = Instant::now(); - - tokio::time::sleep(Duration::from_millis(20)).await; - - let time_before_import = Instant::now(); - let _block_1 = setup.pool.propose_block(genesis, None).await; - let pre_count = setup.transactions_histogram().get_sample_count(); - - assert_eq!( - setup.process_notifications(), - blocks_imported(1), - "Block import notification wasn't sent" - ); - - let time_after_import = Instant::now(); - - let duration = - Duration::from_secs_f64(setup.transactions_histogram().get_sample_sum() / 1000.); - - assert_eq!(pre_count, 0); - assert_eq!(setup.transactions_histogram().get_sample_count(), 1); - assert!(duration >= time_before_import - time_after_submit - EPS); - assert!(duration <= time_after_import - time_before_submit + EPS); - } - - #[tokio::test] - async fn transactions_are_reported_only_if_ready_when_added_to_the_pool() { - let mut setup = TestSetup::new(); - let genesis = setup.genesis(); - - let xt1 = setup - .pool - .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 0); - let xt2 = setup - .pool - .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 1); - let xt3 = setup - .pool - .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 2); - - setup.pool.submit(&genesis, xt2.clone()).await; - - // No notification for xt2 as it is not ready - assert_eq!( - setup.process_notifications(), - transactions(0), - "Future transactions should not be reported" - ); - - setup.pool.submit(&genesis, xt1.clone()).await; - setup.pool.submit(&genesis, xt3.clone()).await; - - // Notifications for xt1 and xt3 - assert_eq!(setup.process_notifications(), transactions(2)); - - let block_1 = setup.pool.propose_block(genesis, None).await; - // Block import notification. xt1 notification never appears - assert_eq!(setup.process_notifications(), blocks_imported(1)); - // All 3 extrinsics are included in the block - assert_eq!(block_1.extrinsics.len(), 3); - } - - #[tokio::test] - async fn retracted_transactions_are_reported_only_once() { - let mut setup = TestSetup::new(); - let genesis = setup.genesis(); - - let xt1 = setup - .pool - .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 0); - let xt2 = setup - .pool - .extrinsic(AccountKeyring::Charlie, AccountKeyring::Dave, 0); - - setup.pool.submit(&genesis, xt1.clone()).await; - setup.pool.submit(&genesis, xt2.clone()).await; - - // make sure import notifications are received before block import - assert_eq!(setup.process_notifications(), transactions(2)); - - let block_1a = setup.pool.propose_block(genesis, None).await; - assert_eq!(block_1a.extrinsics.len(), 2); - assert_eq!(setup.process_notifications(), blocks_imported(1)); - assert_eq!(setup.transactions_histogram().get_sample_count(), 2); - - let sum_before = setup.transactions_histogram().get_sample_sum(); - - // external fork block with xt1 - let mut block_1b_builder = BlockBuilderBuilder::new(&*setup.pool.client) - .on_parent_block(genesis) - .with_parent_block_number(0) - .build() - .unwrap(); - - block_1b_builder.push(xt1.into()).unwrap(); - let block_1b = block_1b_builder.build().unwrap().block; - setup.pool.import_block(block_1b.clone()).await; - setup.pool.finalize(block_1b.hash()).await; - - let block_2b = setup.pool.propose_block(block_1b.hash(), None).await; - - assert_eq!(block_2b.extrinsics.len(), 1); - assert_eq!(setup.transactions_histogram().get_sample_count(), 2); - assert_eq!(setup.transactions_histogram().get_sample_sum(), sum_before); - } - - #[tokio::test] - async fn transactions_skipped_in_block_authorship_are_not_reported_at_that_time() { - let mut setup = TestSetup::new(); - let genesis = setup.genesis(); - - let xt1 = setup - .pool - .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 0); - let xt2 = setup - .pool - .extrinsic(AccountKeyring::Charlie, AccountKeyring::Eve, 0); - - setup.pool.submit(&genesis, xt1.clone()).await; - setup.pool.submit(&genesis, xt2.clone()).await; - assert_eq!(setup.process_notifications(), transactions(2)); - - let time_after_submit = Instant::now(); - - let block_1 = setup - .pool - .propose_block(genesis, Some(2 * xt1.encoded_size() - 1)) - .await; - - assert_eq!(setup.process_notifications(), blocks_imported(1)); - assert_eq!(block_1.extrinsics.len(), 1); - assert_eq!(setup.transactions_histogram().get_sample_count(), 1); - let sample_1 = setup.transactions_histogram().get_sample_sum(); - - tokio::time::sleep(Duration::from_millis(10)).await; - - let time_before_block_2 = Instant::now(); - let block_2 = setup - .pool - .propose_block(block_1.hash(), Some(2 * xt1.encoded_size() - 1)) - .await; - - assert_eq!(setup.process_notifications(), blocks_imported(1)); - assert_eq!(block_2.extrinsics.len(), 1); - assert_eq!(setup.transactions_histogram().get_sample_count(), 2); - - let sample_2 = setup.transactions_histogram().get_sample_sum() - sample_1; - - let duration = Duration::from_secs_f64(sample_2 / 1000.0); - - assert!(duration >= time_before_block_2 - time_after_submit - EPS); - } -} diff --git a/finality-aleph/src/metrics/finality_rate.rs b/finality-aleph/src/metrics/finality_rate.rs index 09d084b5..cd2022b6 100644 --- a/finality-aleph/src/metrics/finality_rate.rs +++ b/finality-aleph/src/metrics/finality_rate.rs @@ -8,8 +8,7 @@ use sc_service::Arc; use sp_core::{bounded_vec::BoundedVec, ConstU32}; use substrate_prometheus_endpoint::{register, Counter, PrometheusError, Registry, U64}; -use super::Checkpoint; -use crate::metrics::LOG_TARGET; +use crate::{metrics::LOG_TARGET, BlockId}; const MAX_CACHE_SIZE: usize = 1800; const MAX_INNER_SIZE: u32 = 64; @@ -36,11 +35,11 @@ impl FinalityRateMetrics { Ok(FinalityRateMetrics::Prometheus { own_finalized: register( - Counter::new("aleph_own_finalized_blocks", "no help")?, + Counter::new("aleph_own_finalized_blocks", "Number of self-produced blocks that became finalized")?, registry, )?, own_hopeless: register( - Counter::new("aleph_own_hopeless_blocks", "no help")?, + Counter::new("aleph_own_hopeless_blocks", "Number of self-produced blocks, such that some alternative block with the same block number was finalized")?, registry, )?, imported_cache: Arc::new(Mutex::new(LruCache::new( @@ -49,39 +48,21 @@ impl FinalityRateMetrics { }) } - pub fn report_block( - &self, - block_hash: BlockHash, - block_number: BlockNumber, - checkpoint: Checkpoint, - own: Option, - ) { - match checkpoint { - Checkpoint::Imported => { - if let Some(true) = own { - self.report_own_imported(block_hash, block_number); - } - } - Checkpoint::Finalized => self.report_finalized(block_hash, block_number), - _ => {} - } - } - /// Stores the imported block's hash. Assumes that the imported block is own. - fn report_own_imported(&self, hash: BlockHash, number: BlockNumber) { + pub fn report_own_imported(&self, id: BlockId) { let mut imported_cache = match self { FinalityRateMetrics::Prometheus { imported_cache, .. } => imported_cache.lock(), FinalityRateMetrics::Noop => return, }; let entry = imported_cache - .get_or_insert_mut(number, BoundedVec::<_, ConstU32>::new); + .get_or_insert_mut(id.number(), BoundedVec::<_, ConstU32>::new); - if entry.try_push(hash).is_err() { + if entry.try_push(id.hash()).is_err() { warn!( target: LOG_TARGET, "Finality Rate Metrics encountered too many own imported blocks at level {}", - number + id.number() ); } } @@ -89,7 +70,7 @@ impl FinalityRateMetrics { /// Counts the blocks at the level of `number` different than the passed block /// and reports them as hopeless. If `hash` is a hash of own block it will be found /// in `imported_cache` and reported as finalized. - fn report_finalized(&self, hash: BlockHash, number: BlockNumber) { + pub fn report_finalized(&self, id: BlockId) { let (own_finalized, own_hopeless, imported_cache) = match self { FinalityRateMetrics::Prometheus { own_finalized, @@ -100,12 +81,12 @@ impl FinalityRateMetrics { }; let mut imported_cache = imported_cache.lock(); - if let Some(hashes) = imported_cache.get_mut(&number) { - let new_hopeless_count = hashes.iter().filter(|h| **h != hash).count(); + if let Some(hashes) = imported_cache.get_mut(&id.number()) { + let new_hopeless_count = hashes.iter().filter(|h| **h != id.hash()).count(); own_hopeless.inc_by(new_hopeless_count as u64); own_finalized.inc_by((hashes.len() - new_hopeless_count) as u64); } - imported_cache.pop(&number); + imported_cache.pop(&id.number()); } } @@ -116,7 +97,7 @@ mod tests { use primitives::{BlockHash, BlockNumber}; use substrate_prometheus_endpoint::{Counter, Registry, U64}; - use crate::{metrics::finality_rate::ImportedHashesCache, FinalityRateMetrics}; + use super::{FinalityRateMetrics, ImportedHashesCache}; type FinalityRateMetricsInternals = (Counter, Counter, ImportedHashesCache); @@ -158,12 +139,12 @@ mod tests { verify_state(&metrics, 0, 0, HashMap::new()); let hash0 = BlockHash::random(); - metrics.report_own_imported(hash0, 0); + metrics.report_own_imported((hash0, 0).into()); verify_state(&metrics, 0, 0, HashMap::from([(0, vec![hash0])])); let hash1 = BlockHash::random(); - metrics.report_own_imported(hash1, 1); + metrics.report_own_imported((hash1, 1).into()); verify_state( &metrics, @@ -173,7 +154,7 @@ mod tests { ); let hash2 = BlockHash::random(); - metrics.report_own_imported(hash2, 1); + metrics.report_own_imported((hash2, 1).into()); verify_state( &metrics, @@ -182,11 +163,11 @@ mod tests { HashMap::from([(0, vec![hash0]), (1, vec![hash1, hash2])]), ); - metrics.report_finalized(hash0, 0); + metrics.report_finalized((hash0, 0).into()); verify_state(&metrics, 1, 0, HashMap::from([(1, vec![hash1, hash2])])); - metrics.report_finalized(BlockHash::random(), 1); + metrics.report_finalized((BlockHash::random(), 1).into()); verify_state(&metrics, 1, 2, HashMap::new()); } diff --git a/finality-aleph/src/metrics/mod.rs b/finality-aleph/src/metrics/mod.rs index 6e322fcd..4ea3ce6c 100644 --- a/finality-aleph/src/metrics/mod.rs +++ b/finality-aleph/src/metrics/mod.rs @@ -1,15 +1,13 @@ -mod all_block; -mod chain_state; +mod best_block; mod finality_rate; +mod slo; mod timing; pub mod transaction_pool; -pub use all_block::AllBlockMetrics; -pub use chain_state::run_chain_state_metrics; -pub use finality_rate::FinalityRateMetrics; +pub use slo::{run_metrics_service, SloMetrics}; +pub use timing::{Checkpoint, DefaultClock}; +pub type TimingBlockMetrics = timing::TimingBlockMetrics; use substrate_prometheus_endpoint::{exponential_buckets, prometheus}; -pub use timing::{Checkpoint, DefaultClock, TimingBlockMetrics}; -pub use transaction_pool::TransactionPoolInfoProvider; const LOG_TARGET: &str = "aleph-metrics"; diff --git a/finality-aleph/src/metrics/slo.rs b/finality-aleph/src/metrics/slo.rs new file mode 100644 index 00000000..b84ff4f4 --- /dev/null +++ b/finality-aleph/src/metrics/slo.rs @@ -0,0 +1,122 @@ +use futures::{Stream, StreamExt}; +use log::warn; +use parity_scale_codec::Encode; +use primitives::Block; +use sp_runtime::traits::Block as _; +use substrate_prometheus_endpoint::Registry; + +use super::{finality_rate::FinalityRateMetrics, timing::DefaultClock}; +use crate::{ + block::ChainStatus, + metrics::{ + best_block::BestBlockMetrics, timing::Checkpoint, transaction_pool::TransactionPoolMetrics, + TimingBlockMetrics, LOG_TARGET, + }, + BlockId, SubstrateChainStatus, +}; + +pub async fn run_metrics_service + Unpin>( + metrics: &SloMetrics, + transaction_pool_stream: &mut TS, +) { + if !metrics.is_noop() { + while let Some(tx) = transaction_pool_stream.next().await { + metrics.report_transaction_in_pool(tx); + } + warn!(target: LOG_TARGET, "SLO Metrics service terminated, because the transaction pool stream ended."); + } +} + +pub type Hashing = sp_runtime::traits::HashingFor; +pub type TxHash = ::Output; + +#[derive(Clone)] +pub struct SloMetrics { + timing_metrics: TimingBlockMetrics, + finality_rate_metrics: FinalityRateMetrics, + best_block_metrics: BestBlockMetrics, + transaction_metrics: TransactionPoolMetrics, + chain_status: SubstrateChainStatus, +} + +impl SloMetrics { + pub fn new(registry: Option<&Registry>, chain_status: SubstrateChainStatus) -> Self { + let warn_creation_failed = |name, e| warn!(target: LOG_TARGET, "Failed to register Prometheus {name} metrics: {e:?}."); + let timing_metrics = TimingBlockMetrics::new(registry, DefaultClock).unwrap_or_else(|e| { + warn!( + target: LOG_TARGET, + "Failed to register Prometheus block timing metrics: {:?}.", e + ); + TimingBlockMetrics::Noop + }); + let finality_rate_metrics = FinalityRateMetrics::new(registry).unwrap_or_else(|e| { + warn!( + target: LOG_TARGET, + "Failed to register Prometheus finality rate metrics: {:?}.", e + ); + FinalityRateMetrics::Noop + }); + let best_block_metrics = BestBlockMetrics::new(registry.cloned(), chain_status.clone()) + .unwrap_or_else(|e| { + warn_creation_failed("best block related", e); + BestBlockMetrics::Noop + }); + let transaction_metrics = TransactionPoolMetrics::new(registry, DefaultClock) + .unwrap_or_else(|e| { + warn_creation_failed("transaction pool", e); + TransactionPoolMetrics::Noop + }); + + SloMetrics { + timing_metrics, + finality_rate_metrics, + best_block_metrics, + transaction_metrics, + chain_status, + } + } + + pub fn is_noop(&self) -> bool { + matches!(self.timing_metrics, TimingBlockMetrics::Noop) + && matches!(self.finality_rate_metrics, FinalityRateMetrics::Noop) + && matches!(self.best_block_metrics, BestBlockMetrics::Noop) + && matches!(self.transaction_metrics, TransactionPoolMetrics::Noop) + } + + pub fn timing_metrics(&self) -> &TimingBlockMetrics { + &self.timing_metrics + } + + pub fn report_transaction_in_pool(&self, hash: TxHash) { + self.transaction_metrics.report_in_pool(hash); + } + + pub fn report_block_imported(&mut self, block_id: BlockId, is_new_best: bool, own: bool) { + self.timing_metrics + .report_block(block_id.hash(), Checkpoint::Imported); + if own { + self.finality_rate_metrics + .report_own_imported(block_id.clone()); + } + if is_new_best { + self.best_block_metrics + .report_best_block_imported(block_id.clone()); + } + if let Ok(Some(block)) = self.chain_status.block(block_id.clone()) { + // Skip inherents - there is always exactly one, namely the timestamp inherent. + for xt in block.extrinsics().iter().skip(1) { + self.transaction_metrics + .report_in_block(xt.using_encoded(::hash)); + } + } + } + + pub fn report_block_finalized(&self, block_id: BlockId) { + self.timing_metrics + .report_block(block_id.hash(), Checkpoint::Finalized); + self.finality_rate_metrics + .report_finalized(block_id.clone()); + self.best_block_metrics + .report_block_finalized(block_id.clone()); + } +} diff --git a/finality-aleph/src/metrics/timing.rs b/finality-aleph/src/metrics/timing.rs index 53b338cd..a71fae52 100644 --- a/finality-aleph/src/metrics/timing.rs +++ b/finality-aleph/src/metrics/timing.rs @@ -24,7 +24,7 @@ pub trait Clock { fn now(&self) -> Instant; } -#[derive(Clone)] +#[derive(Clone, Default)] pub struct DefaultClock; impl Clock for DefaultClock { fn now(&self) -> Instant { @@ -166,7 +166,7 @@ impl TimingBlockMetrics { let duration = checkpoint_time .checked_duration_since(*start) .unwrap_or_else(|| { - Self::warn_about_monotonicity_violation( + warn_about_monotonicity_violation( *start, checkpoint_time, checkpoint_type, @@ -190,7 +190,7 @@ impl TimingBlockMetrics { let duration = checkpoint_time .checked_duration_since(*start) .unwrap_or_else(|| { - Self::warn_about_monotonicity_violation( + warn_about_monotonicity_violation( *start, checkpoint_time, checkpoint_type, @@ -202,23 +202,6 @@ impl TimingBlockMetrics { } } } - - fn warn_about_monotonicity_violation( - start: Instant, - checkpoint_time: Instant, - checkpoint_type: Checkpoint, - hash: BlockHash, - ) { - warn!( - target: LOG_TARGET, - "Earlier metrics time {:?} is later that current one \ - {:?}. Checkpoint type {:?}, block: {:?}", - start, - checkpoint_time, - checkpoint_type, - hash - ); - } } #[derive(Clone, Copy, Debug, Display, Hash, PartialEq, Eq)] @@ -243,6 +226,23 @@ impl Checkpoint { } } +fn warn_about_monotonicity_violation( + start: Instant, + checkpoint_time: Instant, + checkpoint_type: Checkpoint, + hash: BlockHash, +) { + warn!( + target: LOG_TARGET, + "Earlier metrics time {:?} is later that current one \ + {:?}. Checkpoint type {:?}, block: {:?}", + start, + checkpoint_time, + checkpoint_type, + hash + ); +} + #[cfg(test)] mod tests { use std::{cell::RefCell, cmp::min}; diff --git a/finality-aleph/src/metrics/transaction_pool.rs b/finality-aleph/src/metrics/transaction_pool.rs index aa954051..7ed61a29 100644 --- a/finality-aleph/src/metrics/transaction_pool.rs +++ b/finality-aleph/src/metrics/transaction_pool.rs @@ -1,63 +1,145 @@ -use std::sync::Arc; +use std::{ + num::NonZeroUsize, + sync::Arc, + time::{Duration, Instant}, +}; -use futures::StreamExt; -use sc_transaction_pool_api::{ImportNotificationStream, TransactionFor, TransactionPool}; -use sp_runtime::traits::Member; +use lru::LruCache; +use parking_lot::Mutex; +use substrate_prometheus_endpoint::{ + register, Counter, Histogram, HistogramOpts, PrometheusError, Registry, U64, +}; -#[async_trait::async_trait] -pub trait TransactionPoolInfoProvider { - type TxHash: Member + std::hash::Hash; - type Extrinsic: sp_runtime::traits::Extrinsic; - async fn next_transaction(&mut self) -> Option; +use crate::metrics::{exponential_buckets_two_sided, timing::Clock}; - fn hash_of(&self, extrinsic: &Self::Extrinsic) -> Self::TxHash; -} +// Size of transaction cache: 32B (Hash) + 16B (Instant) * `100_000` is approximately 4.8MB +const TRANSACTION_CACHE_SIZE: usize = 100_000; +const BUCKETS_FACTOR: f64 = 1.4; -pub struct TransactionPoolWrapper { - pool: Arc, - import_notification_stream: ImportNotificationStream, +#[derive(Clone)] +pub enum TransactionPoolMetrics { + Prometheus { + time_till_block_inclusion: Histogram, + transactions_not_seen_in_the_pool: Counter, + cache: Arc>>, + clock: C, + }, + Noop, } -impl TransactionPoolWrapper { - pub fn new(pool: Arc) -> Self { - Self { - pool: pool.clone(), - import_notification_stream: pool.import_notification_stream(), - } - } -} +impl TransactionPoolMetrics { + pub fn new(registry: Option<&Registry>, clock: C) -> Result { + let registry = match registry { + None => return Ok(Self::Noop), + Some(registry) => registry, + }; -#[async_trait::async_trait] -impl TransactionPoolInfoProvider for TransactionPoolWrapper { - type TxHash = T::Hash; - type Extrinsic = TransactionFor; + Ok(Self::Prometheus { + time_till_block_inclusion: register( + Histogram::with_opts( + HistogramOpts::new( + "aleph_transaction_to_block_time", + "Time from becoming ready in the pool to inclusion in some valid block.", + ) + .buckets(exponential_buckets_two_sided( + 2000.0, + BUCKETS_FACTOR, + 2, + 8, + )?), + )?, + registry, + )?, + transactions_not_seen_in_the_pool: register( + Counter::new( + "aleph_transactions_not_seen_in_the_pool", + "\ + Number of transactions that were reported to be in block before reporting of \ + being in the ready queue in the transaction pool. This could happen \ + for many reasons, e.g. when a transaction has been added to the future pool, \ + has been submitted locally, or because of a race condition \ + (especially probable when there is an increased transaction load)", + )?, + registry, + )?, + cache: Arc::new(Mutex::new(LruCache::new( + NonZeroUsize::new(TRANSACTION_CACHE_SIZE) + .expect("the cache size is a non-zero constant"), + ))), + clock, + }) + } - async fn next_transaction(&mut self) -> Option { - self.import_notification_stream.next().await + pub fn report_in_pool(&self, hash: TxHash) { + if let Self::Prometheus { cache, clock, .. } = self { + // Putting new transaction can evict the oldest one. However, even if the + // removed transaction was actually still in the pool, we don't have + // any guarantees that it would be eventually included in the block. + // Therefore, we ignore such transaction. + let cache = &mut *cache.lock(); + cache.put(hash, clock.now()); + } } - fn hash_of(&self, extrinsic: &Self::Extrinsic) -> Self::TxHash { - self.pool.hash_of(extrinsic) + pub fn report_in_block(&self, hash: TxHash) { + if let Self::Prometheus { + time_till_block_inclusion, + transactions_not_seen_in_the_pool, + cache, + .. + } = self + { + let cache = &mut *cache.lock(); + let elapsed = match cache.pop(&hash) { + Some(insert_time) => insert_time.elapsed(), + None => { + // Either it was never in the pool (e.g. submitted locally), or we've got BlockImport + // notification faster than transaction in pool one. The latter is much more likely, + // so we report it as zero. + transactions_not_seen_in_the_pool.inc(); + Duration::ZERO + } + }; + time_till_block_inclusion.observe(elapsed.as_secs_f64() * 1000.); + } } } #[cfg(test)] pub mod test { - use std::{sync::Arc, time::Duration}; + use std::{ + collections::HashMap, + hash::Hash, + sync::Arc, + time::{Duration, Instant}, + }; - use futures::{future, StreamExt}; + use futures::{future, FutureExt, Stream, StreamExt}; + use parity_scale_codec::Encode; use sc_basic_authorship::ProposerFactory; - use sc_client_api::{BlockchainEvents, HeaderBackend}; + use sc_block_builder::BlockBuilderBuilder; + use sc_client_api::{ + BlockBackend, BlockImportNotification, BlockchainEvents, FinalityNotification, + HeaderBackend, + }; use sc_transaction_pool::{BasicPool, FullChainApi}; - use sc_transaction_pool_api::{MaintainedTransactionPool, TransactionPool}; + use sc_transaction_pool_api::{ + ImportNotificationStream, MaintainedTransactionPool, TransactionPool, + }; use sp_consensus::{BlockOrigin, DisableProofRecording, Environment, Proposer as _}; use sp_runtime::{traits::Block as BlockT, transaction_validity::TransactionSource}; + use substrate_prometheus_endpoint::{Histogram, Registry}; + use substrate_test_client::TestClientBuilder; use substrate_test_runtime::{Extrinsic, ExtrinsicBuilder, Transfer}; use substrate_test_runtime_client::{AccountKeyring, ClientBlockImportExt, ClientExt}; use crate::{ - metrics::transaction_pool::TransactionPoolWrapper, - testing::mocks::{TBlock, THash, TestClient}, + metrics::{ + slo::{Hashing, TxHash}, + timing::DefaultClock, + transaction_pool::TransactionPoolMetrics, + }, + testing::mocks::{TBlock, THash, TestClient, TestClientBuilderExt}, }; type TChainApi = FullChainApi; @@ -68,7 +150,6 @@ pub mod test { pub client: Arc, pub pool: Arc, pub proposer_factory: TProposerFactory, - pub transaction_pool_info_provider: TransactionPoolWrapper>, } impl TestTransactionPoolSetup { @@ -81,7 +162,6 @@ pub mod test { spawner.clone(), client.clone(), ); - let transaction_pool_info_provider = TransactionPoolWrapper::new(pool.clone()); let proposer_factory = ProposerFactory::new(spawner, client.clone(), pool.clone(), None, None); @@ -90,10 +170,13 @@ pub mod test { client, pool, proposer_factory, - transaction_pool_info_provider, } } + pub fn import_notification_stream(&self) -> ImportNotificationStream { + self.pool.import_notification_stream() + } + pub async fn propose_block(&mut self, at: THash, weight_limit: Option) -> TBlock { let proposer = self .proposer_factory @@ -169,4 +252,279 @@ pub mod test { .unwrap(); } } + + // Transaction pool metrics tests + struct TestSetup { + pub pool: TestTransactionPoolSetup, + pub metrics: TransactionPoolMetrics, + pub block_import_notifications: + Box> + Unpin>, + pub finality_notifications: Box> + Unpin>, + pub pool_import_notifications: ImportNotificationStream, + } + + #[derive(PartialEq, Eq, Hash, Debug)] + enum NotificationType { + BlockImport, + Finality, + Transaction, + } + + impl TestSetup { + fn new() -> Self { + let client = Arc::new(TestClientBuilder::new().build()); + + let block_import_notifications = + Box::new(client.every_import_notification_stream().fuse()); + let finality_notifications = Box::new(client.finality_notification_stream().fuse()); + + let pool = TestTransactionPoolSetup::new(client); + let pool_import_notifications = pool.import_notification_stream(); + + let registry = Registry::new(); + let metrics = + TransactionPoolMetrics::new(Some(®istry), DefaultClock).expect("metrics"); + + TestSetup { + pool, + metrics, + block_import_notifications, + finality_notifications, + pool_import_notifications, + } + } + + fn genesis(&self) -> THash { + self.pool.client.info().genesis_hash + } + + fn transactions_histogram(&self) -> &Histogram { + match &self.metrics { + TransactionPoolMetrics::Prometheus { + time_till_block_inclusion, + .. + } => time_till_block_inclusion, + _ => panic!("metrics"), + } + } + + fn process_notifications(&mut self) -> HashMap { + let mut block_imported_notifications = 0; + let mut finality_notifications = 0; + let mut transaction_notifications = 0; + + while let Some(block) = self.block_import_notifications.next().now_or_never() { + let body = self + .pool + .client + .block_body(block.expect("stream should not end").hash) + .expect("block should exist") + .expect("block should have body"); + for xt in body { + let hash = xt.using_encoded(::hash); + self.metrics.report_in_block(hash); + } + block_imported_notifications += 1; + } + while self.finality_notifications.next().now_or_never().is_some() { + finality_notifications += 1; + } + while let Some(transaction) = self.pool_import_notifications.next().now_or_never() { + self.metrics + .report_in_pool(transaction.expect("stream should not end")); + transaction_notifications += 1; + } + HashMap::from_iter(vec![ + (NotificationType::BlockImport, block_imported_notifications), + (NotificationType::Finality, finality_notifications), + (NotificationType::Transaction, transaction_notifications), + ]) + } + } + + fn blocks_imported(n: usize) -> HashMap { + HashMap::from_iter(vec![ + (NotificationType::BlockImport, n), + (NotificationType::Finality, 0), + (NotificationType::Transaction, 0), + ]) + } + fn transactions(n: usize) -> HashMap { + HashMap::from_iter(vec![ + (NotificationType::BlockImport, 0), + (NotificationType::Finality, 0), + (NotificationType::Transaction, n), + ]) + } + + const EPS: Duration = Duration::from_nanos(1); + + #[tokio::test] + async fn transactions_are_reported() { + let mut setup = TestSetup::new(); + let genesis = setup.genesis(); + let xt = setup + .pool + .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 0); + + let time_before_submit = Instant::now(); + setup.pool.submit(&genesis, xt).await; + + assert_eq!( + setup.process_notifications(), + transactions(1), + "'In pool' notification wasn't sent" + ); + let time_after_submit = Instant::now(); + + tokio::time::sleep(Duration::from_millis(20)).await; + + let time_before_import = Instant::now(); + let _block_1 = setup.pool.propose_block(genesis, None).await; + let pre_count = setup.transactions_histogram().get_sample_count(); + + assert_eq!( + setup.process_notifications(), + blocks_imported(1), + "Block import notification wasn't sent" + ); + + let time_after_import = Instant::now(); + + let duration = + Duration::from_secs_f64(setup.transactions_histogram().get_sample_sum() / 1000.); + + assert_eq!(pre_count, 0); + assert_eq!(setup.transactions_histogram().get_sample_count(), 1); + assert!(duration >= time_before_import - time_after_submit - EPS); + assert!(duration <= time_after_import - time_before_submit + EPS); + } + + #[tokio::test] + async fn transactions_are_reported_only_if_ready_when_added_to_the_pool() { + let mut setup = TestSetup::new(); + let genesis = setup.genesis(); + + let xt1 = setup + .pool + .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 0); + let xt2 = setup + .pool + .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 1); + let xt3 = setup + .pool + .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 2); + + setup.pool.submit(&genesis, xt2.clone()).await; + + // No notification for xt2 as it is not ready + assert_eq!( + setup.process_notifications(), + transactions(0), + "Future transactions should not be reported" + ); + + setup.pool.submit(&genesis, xt1.clone()).await; + setup.pool.submit(&genesis, xt3.clone()).await; + + // Notifications for xt1 and xt3 + assert_eq!(setup.process_notifications(), transactions(2)); + + let block_1 = setup.pool.propose_block(genesis, None).await; + // Block import notification. xt1 notification never appears + assert_eq!(setup.process_notifications(), blocks_imported(1)); + // All 3 extrinsics are included in the block + assert_eq!(block_1.extrinsics.len(), 3); + } + + #[tokio::test] + async fn retracted_transactions_are_reported_only_once() { + let mut setup = TestSetup::new(); + let genesis = setup.genesis(); + + let xt1 = setup + .pool + .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 0); + let xt2 = setup + .pool + .extrinsic(AccountKeyring::Charlie, AccountKeyring::Dave, 0); + + setup.pool.submit(&genesis, xt1.clone()).await; + setup.pool.submit(&genesis, xt2.clone()).await; + + // make sure import notifications are received before block import + assert_eq!(setup.process_notifications(), transactions(2)); + + let block_1a = setup.pool.propose_block(genesis, None).await; + assert_eq!(block_1a.extrinsics.len(), 2); + assert_eq!(setup.process_notifications(), blocks_imported(1)); + assert_eq!(setup.transactions_histogram().get_sample_count(), 2); + + let sum_before = setup.transactions_histogram().get_sample_sum(); + + // external fork block with xt1 + let mut block_1b_builder = BlockBuilderBuilder::new(&*setup.pool.client) + .on_parent_block(genesis) + .with_parent_block_number(0) + .build() + .unwrap(); + + block_1b_builder.push(xt1.into()).unwrap(); + let block_1b = block_1b_builder.build().unwrap().block; + setup.pool.import_block(block_1b.clone()).await; + setup.pool.finalize(block_1b.hash()).await; + + let block_2b = setup.pool.propose_block(block_1b.hash(), None).await; + + assert_eq!(block_2b.extrinsics.len(), 1); + assert_eq!(setup.transactions_histogram().get_sample_count(), 2); + assert_eq!(setup.transactions_histogram().get_sample_sum(), sum_before); + } + + #[tokio::test] + async fn transactions_skipped_in_block_authorship_are_not_reported_at_that_time() { + let mut setup = TestSetup::new(); + let genesis = setup.genesis(); + + let xt1 = setup + .pool + .extrinsic(AccountKeyring::Alice, AccountKeyring::Bob, 0); + let xt2 = setup + .pool + .extrinsic(AccountKeyring::Charlie, AccountKeyring::Eve, 0); + + setup.pool.submit(&genesis, xt1.clone()).await; + setup.pool.submit(&genesis, xt2.clone()).await; + assert_eq!(setup.process_notifications(), transactions(2)); + + let time_after_submit = Instant::now(); + + let block_1 = setup + .pool + .propose_block(genesis, Some(2 * xt1.encoded_size() - 1)) + .await; + + assert_eq!(setup.process_notifications(), blocks_imported(1)); + assert_eq!(block_1.extrinsics.len(), 1); + assert_eq!(setup.transactions_histogram().get_sample_count(), 1); + let sample_1 = setup.transactions_histogram().get_sample_sum(); + + tokio::time::sleep(Duration::from_millis(10)).await; + + let time_before_block_2 = Instant::now(); + let block_2 = setup + .pool + .propose_block(block_1.hash(), Some(2 * xt1.encoded_size() - 1)) + .await; + + assert_eq!(setup.process_notifications(), blocks_imported(1)); + assert_eq!(block_2.extrinsics.len(), 1); + assert_eq!(setup.transactions_histogram().get_sample_count(), 2); + + let sample_2 = setup.transactions_histogram().get_sample_sum() - sample_1; + + let duration = Duration::from_secs_f64(sample_2 / 1000.0); + + assert!(duration >= time_before_block_2 - time_after_submit - EPS); + } } diff --git a/finality-aleph/src/network/session/mod.rs b/finality-aleph/src/network/session/mod.rs index 81298e77..bae67600 100644 --- a/finality-aleph/src/network/session/mod.rs +++ b/finality-aleph/src/network/session/mod.rs @@ -32,7 +32,7 @@ pub use discovery::Discovery; #[cfg(test)] pub use handler::tests::authentication; pub use handler::{Handler as SessionHandler, HandlerError as SessionHandlerError}; -pub use service::{Config as ConnectionManagerConfig, ManagerError, Service as ConnectionManager}; +pub use service::{Config as ConnectionManagerConfig, Service as ConnectionManager}; /// The maximum size an authentication can have and be accepted. /// This leaves a generous margin of error, as the signature is 64 bytes, diff --git a/finality-aleph/src/nodes.rs b/finality-aleph/src/nodes.rs index e035c069..e1dd0afb 100644 --- a/finality-aleph/src/nodes.rs +++ b/finality-aleph/src/nodes.rs @@ -5,6 +5,7 @@ use futures::channel::oneshot; use log::{debug, error}; use network_clique::{RateLimitingDialer, RateLimitingListener, Service, SpawnHandleT}; use pallet_aleph_runtime_api::AlephSessionApi; +use primitives::TransactionHash; use rate_limiter::SleepingRateLimiter; use sc_client_api::Backend; use sc_keystore::{Keystore, LocalKeystore}; @@ -20,7 +21,7 @@ use crate::{ crypto::AuthorityPen, finalization::AlephFinalizer, idx_to_account::ValidatorIndexToAccountIdConverterImpl, - metrics::{run_chain_state_metrics, transaction_pool::TransactionPoolWrapper}, + metrics::{run_metrics_service, SloMetrics}, network::{ address_cache::validator_address_cache_updater, session::{ConnectionManager, ConnectionManagerConfig}, @@ -57,7 +58,7 @@ where C: crate::ClientForAleph + Send + Sync + 'static, C::Api: AlephSessionApi + AuraApi, BE: Backend + 'static, - TP: TransactionPool + 'static, + TP: TransactionPool + 'static, { let AlephConfig { authentication_network, @@ -68,7 +69,6 @@ where select_chain_provider, spawn_handle, keystore, - metrics, registry, unit_creation_delay, session_period, @@ -144,22 +144,17 @@ where let chain_events = client.chain_status_notifier(); - let client_for_slo_metrics = client.clone(); - let registry_for_slo_metrics = registry.clone(); - spawn_handle.spawn("aleph/slo-metrics", async move { - if let Err(err) = run_chain_state_metrics( - client_for_slo_metrics.as_ref(), - client_for_slo_metrics.every_import_notification_stream(), - client_for_slo_metrics.finality_notification_stream(), - registry_for_slo_metrics, - TransactionPoolWrapper::new(transaction_pool), - ) - .await - { - error!( - target: LOG_TARGET, - "ChainStateMetrics service finished with err: {err}." - ); + let slo_metrics = SloMetrics::new(registry.as_ref(), chain_status.clone()); + let timing_metrics = slo_metrics.timing_metrics().clone(); + + spawn_handle.spawn("aleph/slo-metrics", { + let slo_metrics = slo_metrics.clone(); + async move { + run_metrics_service( + &slo_metrics, + &mut transaction_pool.import_notification_stream(), + ) + .await; } }); @@ -177,8 +172,8 @@ where VERIFIER_CACHE_SIZE, genesis_header, ); - let finalizer = AlephFinalizer::new(client.clone(), metrics.clone()); - import_queue_handle.attach_metrics(metrics.clone()); + let finalizer = AlephFinalizer::new(client.clone()); + import_queue_handle.attach_metrics(timing_metrics.clone()); let justifications_for_sync = justification_channel_provider.get_sender(); let sync_io = SyncIO::new( SyncDatabaseIO::new(chain_status.clone(), finalizer, import_queue_handle), @@ -195,6 +190,7 @@ where session_info.clone(), sync_io, registry.clone(), + slo_metrics, favourite_block_user_requests, ) { Ok(x) => x, @@ -256,7 +252,7 @@ where justifications_for_sync, JustificationTranslator::new(chain_status.clone()), request_block, - metrics, + timing_metrics, spawn_handle, connection_manager, keystore, diff --git a/finality-aleph/src/party/manager/aggregator.rs b/finality-aleph/src/party/manager/aggregator.rs index a9eb0ac3..a28a58f7 100644 --- a/finality-aleph/src/party/manager/aggregator.rs +++ b/finality-aleph/src/party/manager/aggregator.rs @@ -19,7 +19,7 @@ use crate::{ }, crypto::Signature, justification::AlephJustification, - metrics::{AllBlockMetrics, Checkpoint}, + metrics::{Checkpoint, TimingBlockMetrics}, network::data::Network, party::{ manager::aggregator::AggregatorVersion::{Current, Legacy}, @@ -60,15 +60,14 @@ where async fn process_new_block_data( aggregator: &mut Aggregator, block: BlockId, - metrics: &mut AllBlockMetrics, + metrics: &mut TimingBlockMetrics, ) where CN: Network, LN: Network, { trace!(target: "aleph-party", "Received unit {:?} in aggregator.", block); let hash = block.hash(); - metrics.report_block(block, Checkpoint::Ordered, None); - + metrics.report_block(hash, Checkpoint::Ordered); aggregator.start_aggregation(hash).await; } @@ -108,7 +107,7 @@ async fn run_aggregator( io: IO, client: C, session_boundaries: &SessionBoundaries, - mut metrics: AllBlockMetrics, + mut metrics: TimingBlockMetrics, mut exit_rx: oneshot::Receiver<()>, ) -> Result<(), Error> where @@ -191,7 +190,7 @@ pub fn task( client: C, io: IO, session_boundaries: SessionBoundaries, - metrics: AllBlockMetrics, + metrics: TimingBlockMetrics, multikeychain: Keychain, version: AggregatorVersion, ) -> Task diff --git a/finality-aleph/src/party/manager/mod.rs b/finality-aleph/src/party/manager/mod.rs index 4d600f8f..6b1931b4 100644 --- a/finality-aleph/src/party/manager/mod.rs +++ b/finality-aleph/src/party/manager/mod.rs @@ -21,7 +21,7 @@ use crate::{ }, crypto::{AuthorityPen, AuthorityVerifier}, data_io::{ChainTracker, DataStore, OrderedDataInterpreter, SubstrateChainInfoProvider}, - metrics::AllBlockMetrics, + metrics::TimingBlockMetrics, mpsc, network::{ data::{ @@ -110,7 +110,7 @@ where justifications_for_sync: JS, justification_translator: JustificationTranslator, block_requester: RB, - metrics: AllBlockMetrics, + metrics: TimingBlockMetrics, spawn_handle: SpawnHandle, session_manager: SM, keystore: Arc, @@ -142,7 +142,7 @@ where justifications_for_sync: JS, justification_translator: JustificationTranslator, block_requester: RB, - metrics: AllBlockMetrics, + metrics: TimingBlockMetrics, spawn_handle: SpawnHandle, session_manager: SM, keystore: Arc, diff --git a/finality-aleph/src/sync/service.rs b/finality-aleph/src/sync/service.rs index 0f36ca02..ecfc24a6 100644 --- a/finality-aleph/src/sync/service.rs +++ b/finality-aleph/src/sync/service.rs @@ -15,6 +15,7 @@ use crate::{ EquivocationProof, Finalizer, Header, HeaderVerifier, Justification, JustificationVerifier, UnverifiedHeader, UnverifiedHeaderFor, }, + metrics::SloMetrics, network::GossipNetwork, session::SessionBoundaryInfo, sync::{ @@ -143,6 +144,7 @@ where blocks_from_creator: mpsc::UnboundedReceiver, major_sync_last_status: bool, metrics: Metrics, + slo_metrics: SloMetrics, favourite_block_request: mpsc::UnboundedReceiver>, } @@ -180,6 +182,7 @@ where session_info: SessionBoundaryInfo, io: IO, metrics_registry: Option, + slo_metrics: SloMetrics, favourite_block_request: mpsc::UnboundedReceiver>, ) -> Result<(Self, impl RequestBlocks), HandlerError> { let IO { @@ -196,13 +199,10 @@ where let broadcast_ticker = Ticker::new(TICK_PERIOD, BROADCAST_COOLDOWN); let chain_extension_ticker = Ticker::new(TICK_PERIOD, CHAIN_EXTENSION_COOLDOWN); let (block_requests_for_sync, block_requests_from_user) = mpsc::unbounded(); - let metrics = match Metrics::new(metrics_registry) { - Ok(metrics) => metrics, - Err(e) => { - warn!(target: LOG_TARGET, "Failed to create metrics: {}.", e); - Metrics::noop() - } - }; + let metrics = Metrics::new(metrics_registry).unwrap_or_else(|e| { + warn!(target: LOG_TARGET, "Failed to create metrics: {}.", e); + Metrics::noop() + }); Ok(( Service { @@ -217,6 +217,7 @@ where block_requests_from_user, major_sync_last_status: false, metrics, + slo_metrics, favourite_block_request, }, block_requests_for_sync, @@ -585,9 +586,12 @@ where match event { BlockImported(header) => { trace!(target: LOG_TARGET, "Handling a new imported block."); + let mut own_block = false; + let id = header.id(); self.metrics.report_event(Event::HandleBlockImported); match self.handler.block_imported(header) { Ok(Some(broadcast)) => { + own_block = true; if let Err(e) = self .network .broadcast(NetworkData::RequestResponse(broadcast)) @@ -607,10 +611,14 @@ where ); } } + let is_new_best = id == self.handler.favourite_block().id(); + self.slo_metrics + .report_block_imported(id, is_new_best, own_block); } - BlockFinalized(_) => { + BlockFinalized(header) => { trace!(target: LOG_TARGET, "Handling a new finalized block."); self.metrics.report_event(Event::HandleBlockFinalized); + self.slo_metrics.report_block_finalized(header.id()) } } // We either learned about a new finalized or best block, so we diff --git a/pallets/pink-scorpion/Cargo.toml b/pallets/pink-scorpion/Cargo.toml deleted file mode 100644 index cb0e7902..00000000 --- a/pallets/pink-scorpion/Cargo.toml +++ /dev/null @@ -1,56 +0,0 @@ -[package] -name = "pallet_pink_scorpion" -description = "FRAME pallet template for defining custom runtime logic." -version = "0.0.0" -license = "MIT-0" -authors.workspace = true -homepage.workspace = true -repository.workspace = true -edition.workspace = true -publish = false - - -[package.metadata.docs.rs] -targets = ["x86_64-unknown-linux-gnu"] - -[dependencies] -codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = [ - "derive", -] } -scale-info = { version = "2.10.0", default-features = false, features = [ - "derive", -] } - -# frame deps -frame-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0", default-features = false, optional = true } -frame-support = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0", default-features = false } -frame-system = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0", default-features = false } - -[dev-dependencies] -sp-core = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0" } -sp-io = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0" } -sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-v1.9.0" } - -[features] -default = ["std"] -std = [ - "codec/std", - "frame-benchmarking?/std", - "frame-support/std", - "frame-system/std", - "scale-info/std", - "sp-core/std", - "sp-io/std", - "sp-runtime/std", -] -runtime-benchmarks = [ - "frame-benchmarking/runtime-benchmarks", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "sp-runtime/runtime-benchmarks", -] -try-runtime = [ - "frame-support/try-runtime", - "frame-system/try-runtime", - "sp-runtime/try-runtime", -] \ No newline at end of file diff --git a/pallets/pink-scorpion/src/lib.rs b/pallets/pink-scorpion/src/lib.rs deleted file mode 100644 index f23914f2..00000000 --- a/pallets/pink-scorpion/src/lib.rs +++ /dev/null @@ -1,117 +0,0 @@ -#![cfg_attr(not(feature = "std"), no_std)] - -#[frame_support::pallet] -pub mod pallet_pink_scorpion { - use super::*; - use frame_support::pallet_prelude::*; - use frame_system::pallet_prelude::*; - use scale_info::prelude::vec::Vec; - use core::convert::TryInto; - - #[pallet::pallet] - #[pallet::without_storage_info] - pub struct Pallet(_); - - #[pallet::config] - pub trait Config: frame_system::Config { - type RuntimeEvent: From> + IsType<::RuntimeEvent>; - } - - #[derive(Encode, Decode, MaxEncodedLen, TypeInfo, Debug, Clone, PartialEq, Eq)] - pub struct FSEvent { - pub creationtime: [u8; 64], - pub filepath: [u8; 256], - pub eventkey: [u8; 128], - } - - #[pallet::storage] - #[pallet::getter(fn info)] - pub(super) type DisAssembly = StorageMap<_, Blake2_128Concat, T::AccountId, Vec<(u64, FSEvent)>, OptionQuery>; - - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - pub enum Event { - /// An event indicating a file has been disassembled. - FileDisassembled { who: T::AccountId, event: FSEvent }, - /// An event indicating a file has been reassembled. - FileReassembled { who: T::AccountId, creation_time: Vec, file_path: Vec, event_key: Vec }, - } - - #[pallet::error] - pub enum Error { - /// Error indicating the creation time is too long. - CreationTimeTooLong, - /// Error indicating the file path is too long. - FilePathTooLong, - /// Error indicating the event key is too long. - EventKeyTooLong, - } - - #[pallet::call] - impl Pallet { - pub fn file_disassembled( - origin: OriginFor, - creation_time: Vec, - file_path: Vec, - event_key: Vec, - ) -> DispatchResult { - let sender = ensure_signed(origin)?; - - // Validate input lengths - ensure!(creation_time.len() <= 64, Error::::CreationTimeTooLong); - ensure!(file_path.len() <= 256, Error::::FilePathTooLong); - ensure!(event_key.len() <= 128, Error::::EventKeyTooLong); - - // Create FSEvent instance - let event = FSEvent { - creationtime: Self::vec_to_array::<64>(creation_time)?, - filepath: Self::vec_to_array::<256>(file_path)?, - eventkey: Self::vec_to_array::<128>(event_key)?, - }; - - // Get the current events for the sender - let mut events_vec = DisAssembly::::get(&sender).unwrap_or_default(); - - // Generate a new key for the event using the block number converted to u64 - let key: u64 = frame_system::Pallet::::block_number().try_into().map_err(|_| Error::::FilePathTooLong)?; - - // Insert the new event into the Vec - events_vec.push((key, event.clone())); - - // Store the updated events in storage - DisAssembly::::insert(&sender, events_vec); - - // Emit event for file disassembly - Self::deposit_event(Event::::FileDisassembled { - who: sender, - event, - }); - - Ok(()) - } - - pub fn file_reassembled( - origin: OriginFor, - creation_time: Vec, - file_path: Vec, - event_key: Vec, - ) -> DispatchResult { - let sender = ensure_signed(origin)?; - - // Emit event for file reassembly - Self::deposit_event(Event::FileReassembled { who: sender, creation_time, file_path, event_key }); - Ok(()) - } - } - - impl Pallet { - fn vec_to_array(vec: Vec) -> Result<[u8; N], Error> { - let mut array = [0u8; N]; - if vec.len() > N { - return Err(Error::::CreationTimeTooLong); - } - array[..vec.len()].copy_from_slice(&vec); - Ok(array) - } - } -} diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs index 0650268e..41ef259f 100644 --- a/primitives/src/lib.rs +++ b/primitives/src/lib.rs @@ -86,6 +86,9 @@ pub type BlockId = generic::BlockId; /// Block Hash type pub type BlockHash =
::Hash; +/// A hash of extrinsic. +pub type TransactionHash = Hash; + /// The address format for describing accounts. pub type Address = sp_runtime::MultiAddress; diff --git a/scripts/accounts-invariants/aleph_chain_version.py b/scripts/accounts-invariants/aleph_chain_version.py new file mode 100644 index 00000000..58e00b00 --- /dev/null +++ b/scripts/accounts-invariants/aleph_chain_version.py @@ -0,0 +1,28 @@ +import enum + + +class AlephChainVersion(enum.IntEnum): + VERSION_11_4 = 65, + VERSION_12_0 = 67, + VERSION_12_2 = 68, + VERSION_13_0 = 70, + VERSION_13_2 = 71, + VERSION_12_3 = 72, + VERSION_13_3 = 73, + VERSION_14_X = 14000000, + + @classmethod + def from_spec_version(cls, spec_version): + return cls(spec_version) + + +def get_aleph_chain_version(chain_connection, block_hash): + """ + Retrieves spec_version from chain and returns an `AlephChainVersion` enum + :param chain_connection: WS handler + :param block_hash: Block hash to query state from + :return: AlephChainVersion + """ + runtime_version = chain_connection.get_block_runtime_version(block_hash) + spec_version = runtime_version['specVersion'] + return AlephChainVersion.from_spec_version(spec_version) diff --git a/scripts/accounts-invariants/common.py b/scripts/accounts-invariants/chain_operations.py similarity index 51% rename from scripts/accounts-invariants/common.py rename to scripts/accounts-invariants/chain_operations.py index c6bbdcb6..ddfced42 100644 --- a/scripts/accounts-invariants/common.py +++ b/scripts/accounts-invariants/chain_operations.py @@ -1,60 +1,9 @@ -#!/bin/python3 - -import enum -import logging -import datetime - import substrateinterface -import json - -def get_global_logger(): - log_formatter = logging.Formatter("%(asctime)s [%(levelname)s] %(message)s") - root_logger = logging.getLogger() - root_logger.setLevel('DEBUG') - - time_now = datetime.datetime.now().strftime("%d-%m-%Y_%H:%M:%S") - file_handler = logging.FileHandler(f"pallet-balances-maintenance-{time_now}.log") - file_handler.setFormatter(log_formatter) - file_handler.setLevel(logging.DEBUG) - root_logger.addHandler(file_handler) - - console_handler = logging.StreamHandler() - console_handler.setFormatter(log_formatter) - console_handler.setLevel(logging.INFO) - root_logger.addHandler(console_handler) - - return logging - - -log = get_global_logger() - - -class ChainMajorVersion(enum.Enum): - PRE_12_MAJOR_VERSION = 65, - AT_LEAST_12_MAJOR_VERSION = 68, - AT_LEAST_13_2_VERSION = 71, - - @classmethod - def from_spec_version(cls, spec_version): - if spec_version <= 65: - return cls(ChainMajorVersion.PRE_12_MAJOR_VERSION) - elif 68 <= spec_version < 71 or spec_version == 72: - return cls(ChainMajorVersion.AT_LEAST_12_MAJOR_VERSION) - elif spec_version >= 71: - return cls(ChainMajorVersion.AT_LEAST_13_2_VERSION) - +from tqdm import tqdm +import sys +import logging -def get_chain_major_version(chain_connection, block_hash): - """ - Retrieves spec_version from chain and returns an enum whether this is pre 12 version or at least 12 version - :param chain_connection: WS handler - :param block_hash: Block hash to query state from - :return: ChainMajorVersion - """ - runtime_version = chain_connection.get_block_runtime_version(block_hash) - spec_version = runtime_version['specVersion'] - major_version = ChainMajorVersion.from_spec_version(spec_version) - return major_version +log = logging.getLogger() def filter_accounts(chain_connection, @@ -80,22 +29,19 @@ def filter_accounts(chain_connection, page_size=1000, block_hash=block_hash) total_accounts_count = 0 - total_issuance = 0 - for (i, (account_id, info)) in enumerate(account_query): + for (i, (account_id, info)) in tqdm(iterable=enumerate(account_query), + desc="Accounts checked", + unit="", + file=sys.stdout): total_accounts_count += 1 - free = info['data']['free'].value - reserved = info['data']['reserved'].value - total_issuance += free + reserved if check_accounts_predicate(info, chain_major_version, ed): accounts_that_do_meet_predicate.append([account_id.value, info.serialize()]) - if i % 5000 == 0 and i > 0: - log.info(f"Checked {i} accounts") log.info( f"Total accounts that match given predicate {check_accounts_predicate_name} is {len(accounts_that_do_meet_predicate)}") log.info(f"Total accounts checked: {total_accounts_count}") - return accounts_that_do_meet_predicate, total_issuance + return accounts_that_do_meet_predicate def format_balance(chain_connection, amount): @@ -111,44 +57,6 @@ def format_balance(chain_connection, amount): return f"{amount} {token}" -def batch_transfer(chain_connection, - input_args, - accounts, - amount, - sender_keypair): - """ - Send Balance.Transfer calls in a batch - :param chain_connection: WS connection handler - :param input_args: script input arguments returned from argparse - :param accounts: transfer beneficents - :param amount: amount to be transferred - :param sender_keypair: keypair of sender account - :return: None. Can raise exception in case of SubstrateRequestException thrown - """ - for (i, account_ids_chunk) in enumerate(chunks(accounts, input_args.transfer_calls_in_batch)): - balance_calls = list(map(lambda account: chain_connection.compose_call( - call_module='Balances', - call_function='transfer', - call_params={ - 'dest': account, - 'value': amount, - }), account_ids_chunk)) - batch_call = chain_connection.compose_call( - call_module='Utility', - call_function='batch', - call_params={ - 'calls': balance_calls - } - ) - - extrinsic = chain_connection.create_signed_extrinsic(call=batch_call, keypair=sender_keypair) - log.info(f"About to send {len(balance_calls)} transfers, each with {format_balance(chain_connection, amount)} " - f"from {sender_keypair.ss58_address} to below accounts: " - f"{account_ids_chunk}") - - submit_extrinsic(chain_connection, extrinsic, len(balance_calls), args.dry_run) - - def submit_extrinsic(chain_connection, extrinsic, expected_number_of_events, @@ -193,18 +101,4 @@ def get_all_accounts(chain_connection, block_hash=None): chain_major_version=None, check_accounts_predicate=lambda x, y, z: True, check_accounts_predicate_name="\'all accounts\'", - block_hash=block_hash)[0] - - -def save_accounts_to_json_file(json_file_name, accounts): - with open(json_file_name, 'w') as f: - json.dump(accounts, f) - log.info(f"Wrote file '{json_file_name}'") - - -def chunks(list_of_elements, n): - """ - Lazily split 'list_of_elements' into 'n'-sized chunks. - """ - for i in range(0, len(list_of_elements), n): - yield list_of_elements[i:i + n] + block_hash=block_hash) diff --git a/scripts/accounts-invariants/contracts.py b/scripts/accounts-invariants/contracts.py new file mode 100644 index 00000000..fbe2ae53 --- /dev/null +++ b/scripts/accounts-invariants/contracts.py @@ -0,0 +1,44 @@ +import logging +from tqdm import tqdm +import sys + +log = logging.getLogger() + + +def query_contract_and_code_owners_accounts(chain_connection, block_hash): + """ + Returns contract accounts and code owners. + """ + code_owners = set() + contract_accounts = set() + + log.info(f"Querying code owners.") + code_info_of_query = chain_connection.query_map(module='Contracts', + storage_function='CodeInfoOf', + page_size=500, + block_hash=block_hash) + + for (i, (account_id, info)) in tqdm(iterable=enumerate(code_info_of_query), + desc="CodeInfoOfs checked", + unit="", + file=sys.stdout): + code_owners.add(info.serialize()['owner']) + + log.info(f"Total code owners is {len(code_owners)}") + log.debug(f"Code owners: {code_owners}") + + log.info(f"Querying contract accounts.") + contract_info_of_query = chain_connection.query_map(module='Contracts', + storage_function='ContractInfoOf', + page_size=1000, + block_hash=block_hash) + for (i, (account_id, info)) in tqdm(iterable=enumerate(contract_info_of_query), + desc="ContractInfoOfs checked", + unit="", + file=sys.stdout): + contract_accounts.add(account_id.value) + + log.info(f"Total contracts count is {len(contract_accounts)}") + log.debug(f"Contract accounts: {contract_accounts}") + + return code_owners, contract_accounts diff --git a/scripts/accounts-invariants/logger.py b/scripts/accounts-invariants/logger.py new file mode 100644 index 00000000..36885f7e --- /dev/null +++ b/scripts/accounts-invariants/logger.py @@ -0,0 +1,19 @@ +import logging +import datetime + + +def setup_global_logger(): + log_formatter = logging.Formatter("%(asctime)s [%(levelname)s] %(message)s") + root_logger = logging.getLogger() + root_logger.setLevel('DEBUG') + + time_now = datetime.datetime.now().strftime("%d-%m-%Y_%H:%M:%S") + file_handler = logging.FileHandler(f"pallet-balances-maintenance-{time_now}.log") + file_handler.setFormatter(log_formatter) + file_handler.setLevel(logging.DEBUG) + root_logger.addHandler(file_handler) + + console_handler = logging.StreamHandler() + console_handler.setFormatter(log_formatter) + console_handler.setLevel(logging.INFO) + root_logger.addHandler(console_handler) diff --git a/scripts/accounts-invariants/pallet-balances-maintenance.py b/scripts/accounts-invariants/pallet-balances-maintenance.py index 088a3fca..039803c8 100755 --- a/scripts/accounts-invariants/pallet-balances-maintenance.py +++ b/scripts/accounts-invariants/pallet-balances-maintenance.py @@ -1,16 +1,18 @@ #!/bin/python3 -import logging - -from common import * -import copy -import json +from chain_operations import * +from aleph_chain_version import * +from utils import * +from total_issuance import * import substrateinterface import argparse import os - -from substrateinterface.storage import StorageKey +import logger +import logging +import contracts +from tqdm import tqdm +import sys def get_args() -> argparse.Namespace: @@ -19,10 +21,9 @@ def get_args() -> argparse.Namespace: Script for maintenance operations on AlephNode chain with regards to pallet balances. It has following functionality: -* workaround for bug https://github.com/paritytech/polkadot-sdk/pull/2700/files, that make sure all - accounts have at least ED as their free balance, -* programmatic support for sending Balances.UpgradeAccounts ext for all accounts, * checking pallet balances and account reference counters invariants. +* calling pallet operations for maintenance actions +* checking total issuance By default, it connects to a AlephZero Testnet and performs sanity checks only ie not changing state of the chain at all. Accounts that do not satisfy those checks are written to accounts-with-failed-invariants.json file. @@ -42,19 +43,6 @@ def get_args() -> argparse.Namespace: parser.add_argument('--dry-run', action='store_true', help='Specify this switch if script should just print what if would do. Default: False') - parser.add_argument('--transfer-calls-in-batch', - type=int, - default=64, - help='How many transfer calls to perform in a single batch transaction. Default: 64') - parser.add_argument('--upgrade-accounts-in-batch', - type=int, - default=128, - help='How many accounts to upgrade in a single transaction. Default: 128') - parser.add_argument('--double-providers-accounts-to-fix', - type=int, - default=10, - help='How many accounts to fix in one script run session.' - ' Default: 10') parser.add_argument('--fix-consumers-calls-in-batch', type=int, default=10, @@ -64,29 +52,16 @@ def get_args() -> argparse.Namespace: type=str, default='', help='Block hash from which this script should query state from. Default: chain tip.') + parser.add_argument('--start-range-block-hash', + type=str, + default='', + help='A block hash which denotes starting interval when searching for total issuance ' + 'imbalance. Must be present when --check-total-issuance is set.') + parser.add_argument('--check-total-issuance', + action='store_true', + help='Specify this switch if script should compare total issuance aggregated over all ' + 'accounts with StorageValue balances.total_issuance') group = parser.add_mutually_exclusive_group() - group.add_argument('--fix-free-balance', - action='store_true', - help='Specify this switch if script should find all accounts ' - 'that have free < ED and send transfers so that free >= ED. ' - 'It requires AlephNode < 12.X version and SENDER_ACCOUNT env to be set with ' - 'a mnemonic phrase of sender account that has funds for transfers and fees. ' - 'dust-accounts.json file is saved with all such accounts.' - 'Default: False') - group.add_argument('--upgrade-accounts', - action='store_true', - help='Specify this switch if script should send Balances.UpgradeAccounts ' - 'for all accounts on a chain. It requires at least AlephNode 12.X version ' - 'and SENDER_ACCOUNT env to be set with a mnemonic phrase of sender account that has funds ' - 'for transfers and fees.' - 'Default: False') - group.add_argument('--fix-double-providers-count', - action='store_true', - help='Specify this switch if script should query all accounts that have providers == 2' - 'and decrease this counter by one using System.SetStorage call. ' - 'It requires at least AlephNode 12.X version ' - 'and SENDER_ACCOUNT env to be set with a sudo mnemonic phrase. ' - 'Default: False') group.add_argument('--fix-consumers-counter-underflow', action='store_true', help='Specify this switch if script should query all accounts that have underflow consumers ' @@ -94,12 +69,6 @@ def get_args() -> argparse.Namespace: 'Operations.fix_accounts_consumers_underflow call.' 'Query operation is possible on all chains, but fix only on AlephNode >= 13.2' 'Default: False') - group.add_argument('--fix-consumers-counter-overflow', - action='store_true', - help='Specify this switch if script should query all accounts that have overflow consumers ' - 'counter, and decrease this counter by one using System.SetStorage call. ' - 'It requires at least AlephNode 12.X version ' - 'and SENDER_ACCOUNT env to be set with a sudo mnemonic phrase.') return parser.parse_args() @@ -121,7 +90,7 @@ def check_account_invariants(account, chain_major_version, ed): # balance so max possible value of providers is 1 account_ref_counter_invariant = (providers <= 1 and consumers == 0) or (consumers > 0 and providers == 1) - if chain_major_version == ChainMajorVersion.PRE_12_MAJOR_VERSION: + if chain_major_version <= AlephChainVersion.VERSION_11_4: misc_frozen = account['data']['misc_frozen'].value fee_frozen = account['data']['fee_frozen'].value @@ -159,485 +128,6 @@ def check_account_invariants(account, chain_major_version, ed): consumer_ref_applies_to_suspended_balances_invariant -def check_if_account_would_be_dust_in_12_version(account, chain_major_version, ed): - """ - This predicate checks if a valid account in pre-12 version will be invalid in version 12. - - :param account: AccountInfo struct (element of System.Accounts StorageMap) - :param chain_major_version: Must be < 12 - :param ed: existential deposit - :return: True if account free balance < ED, False otherwise - """ - - assert chain_major_version == ChainMajorVersion.PRE_12_MAJOR_VERSION, \ - "Chain major version must be less than 12!" - assert check_account_invariants(account, chain_major_version, ed), \ - f"Account {account} does not meet pre-12 version invariants!" - - free = account['data']['free'].value - - return free < ed - - -def find_dust_accounts(chain_connection, ed, chain_major_version, block_hash=None): - """ - This function finds all accounts that are valid in 11 version, but not on 12 version - """ - assert chain_major_version == ChainMajorVersion.PRE_12_MAJOR_VERSION, \ - "Chain major version must be less than 12!" - return filter_accounts(chain_connection=chain_connection, - ed=ed, - chain_major_version=chain_major_version, - check_accounts_predicate=check_if_account_would_be_dust_in_12_version, - check_accounts_predicate_name="\'account valid in pre-12 version but not in 12 version\'", - block_hash=block_hash)[0] - - -def is_account_not_upgraded(account, chain_major_version, ed): - """ - Checks if accounts has LSB flag not set, so it's not upgraded. - """ - assert chain_major_version in [ChainMajorVersion.AT_LEAST_12_MAJOR_VERSION, - ChainMajorVersion.AT_LEAST_13_2_VERSION], \ - "Chain major version must be at least 12!" - - flags = account['data']['flags'].value - is_account_already_upgraded = flags >= 2 ** 127 - return not is_account_already_upgraded - - -def upgrade_accounts(chain_connection, - input_args, - ed, - chain_major_version, - sender_keypair, - block_hash=None): - """ - Prepare and send Balances.UpgradeAccounts call for all accounts on a chain that are not upgraded yet - :param chain_connection: WS connection handler - :param input_args: script input arguments returned from argparse - :param ed: chain existential deposit - :param chain_major_version: enum ChainMajorVersion - :param sender_keypair: keypair of sender account - :param block_hash: A block hash to query state from - :return: None. Can raise exception in case of SubstrateRequestException thrown - """ - log.info("Querying all accounts.") - not_upgraded_accounts_and_info = filter_accounts(chain_connection=chain_connection, - ed=None, - chain_major_version=chain_major_version, - check_accounts_predicate=is_account_not_upgraded, - check_accounts_predicate_name="\'not upgraded accounts\'", - block_hash=block_hash)[0] - save_accounts_to_json_file("not-upgraded-accounts.json", not_upgraded_accounts_and_info) - not_upgraded_accounts = list(map(lambda x: x[0], not_upgraded_accounts_and_info)) - - for (i, account_ids_chunk) in enumerate(chunks(not_upgraded_accounts, input_args.upgrade_accounts_in_batch)): - upgrade_accounts_call = chain_connection.compose_call( - call_module='Balances', - call_function='upgrade_accounts', - call_params={ - 'who': account_ids_chunk, - } - ) - - extrinsic = chain_connection.create_signed_extrinsic(call=upgrade_accounts_call, keypair=sender_keypair) - log.info( - f"About to upgrade {len(account_ids_chunk)} accounts, each with " - f"{format_balance(chain_connection, existential_deposit)}") - - submit_extrinsic(chain_connection, extrinsic, len(account_ids_chunk), args.dry_run) - - -def check_if_account_has_double_providers(account, chain_major_version, ed): - """ - This predicate checks if an account's providers counter is equal to 2 - :param account: AccountInfo struct (element of System.Accounts StorageMap) - :param chain_major_version: Must be >= 12 - :param ed: existential deposit, not used - :return: True if providers == 2, False otherwise - """ - - assert chain_major_version == ChainMajorVersion.AT_LEAST_12_MAJOR_VERSION, \ - "Chain major version must be at least 12!" - - providers = account['providers'].value - - return providers == 2 - - -def state_sanity_check(chain_connection, - account_id, - set_storage_block_hash, - account_info_assert_function): - """ - Makes sure AccountInfo data changed only in terms of given assert function, by comparing state between block that - setStorage landed vs state of that block parent. - :param chain_connection WS connection handler - :param account_id: An account to check - :param set_storage_block_hash: a hash of a block that contains setStorage - :param account_info_assert_function: a function that checks for previous and current block state - :return: None, but might raise AssertionError. - """ - set_storage_block_number = chain_connection.get_block_number(set_storage_block_hash) - parent_block_number = set_storage_block_number - 1 - parent_block_hash = chain_connection.get_block_hash(parent_block_number) - - log.info(f"Comparing AccountInfo for account {account_id} " - f"between blocks #{parent_block_number} and #{set_storage_block_number}") - parent_account_info_state = chain_connection.query(module='System', - storage_function='Account', - params=[account_id], - block_hash=parent_block_hash).value - log.debug(f"Account state in the parent block: {parent_account_info_state}") - set_storage_info_state = chain_connection.query(module='System', - storage_function='Account', - params=[account_id], - block_hash=set_storage_block_hash).value - log.debug(f"Account state in the setStorage block: {set_storage_info_state}") - account_info_assert_function(account_id, parent_account_info_state, set_storage_block_number, - set_storage_info_state) - - -def assert_state_different_only_in_providers_counter(account_id, parent_account_info_state, set_storage_block_number, - set_storage_info_state): - assert parent_account_info_state['providers'] == 2, f"Providers before fix for account {account_id} is not 2!" - assert set_storage_info_state['providers'] == 1, f"Providers after fix for account {account_id} is not 1!" - changed_state_for_sake_of_assert = copy.deepcopy(parent_account_info_state) - changed_state_for_sake_of_assert['providers'] = 1 - assert changed_state_for_sake_of_assert == set_storage_info_state, \ - f"Parent account info state is different from set storage state with more than providers counter! " \ - f"Parent state: {parent_account_info_state} " \ - f"Set storage state: {set_storage_info_state}" \ - f"Set storage block number {set_storage_block_number}" - - -def assert_state_different_only_in_consumers_counter(account_id, parent_account_info_state, set_storage_block_number, - set_storage_info_state): - assert parent_account_info_state['consumers'] - 1 == set_storage_info_state['consumers'], \ - f"Consumers counter before fix for account {account_id} is not decremented!" - changed_state_for_sake_of_assert = copy.deepcopy(parent_account_info_state) - changed_state_for_sake_of_assert['consumers'] = set_storage_info_state['consumers'] - assert changed_state_for_sake_of_assert == set_storage_info_state, \ - f"Parent account info state is different from set storage state with more than consumers counter! " \ - f"Parent state: {parent_account_info_state} " \ - f"Set storage state: {set_storage_info_state}" \ - f"Set storage block number {set_storage_block_number}" - - -def get_system_account_metadata_scale_codec_type(chain_connection): - """ - Retrieves System.Account metadata decoder type - :param chain_connection WS connection handler - :return: string representation of System.Account decoder type - """ - system_account_storage_function = \ - next(filter( - lambda storage_function: storage_function['storage_name'] == 'Account' and - storage_function['module_id'] == 'System', - chain_connection.get_metadata_storage_functions())) - internal_metadata_scale_codec_type = system_account_storage_function['type_value'] - return internal_metadata_scale_codec_type - - -def fix_double_providers_count_for_account(chain_connection, - account_id, - sudo_sender_keypair, - internal_system_account_scale_codec_type, - input_args, - block_hash=None): - """ - Fixes double providers counter for a given account id. - :param chain_connection: WS connection handler - :param account_id: Account id to which we should fix providers counter - :param sudo_sender_keypair Mnemonic phrase of sudo - :param internal_system_account_scale_codec_type Internal metadata SCALE decoder/encoder type for System.Account - entry - :param block_hash: A block hash to query state from - """ - log.info(f"Fixing double providers counter for account {account_id}") - fix_account_info_with_set_storage(chain_connection=chain_connection, - account_id=account_id, - sudo_sender_keypair=sudo_sender_keypair, - internal_system_account_scale_codec_type=internal_system_account_scale_codec_type, - input_args=input_args, - account_info_functor=set_providers_counter_to_one, - account_info_check_functor=assert_state_different_only_in_providers_counter, - block_hash=block_hash) - - -def fix_account_info_with_set_storage(chain_connection, - account_id, - sudo_sender_keypair, - internal_system_account_scale_codec_type, - input_args, - account_info_functor, - account_info_check_functor, - block_hash=None): - """ - General function to fix AccountInfo using System.SetStorage call. - :param chain_connection: WS connection handler - :param account_id: Account id to which we should fix providers counter - :param sudo_sender_keypair Mnemonic phrase of sudo - :param internal_system_account_scale_codec_type Internal metadata SCALE decoder/encoder type for System.Account - entry - :param account_info_functor: a function which returns fixed account info - :param account_info_check_functor: a function which compares previous and current block states - :param block_hash: A block hash to query state from - """ - log.info(f"Querying state for account {account_id}") - result = chain_connection.query(module='System', - storage_function='Account', - params=[account_id], - block_hash=block_hash) - log.debug(f"Returned value: {result.value}") - account_id_and_account_info_data = [(account_id, result.value)] - raw_key_values = get_raw_key_values(chain_connection, - account_id_and_account_info_data, - internal_system_account_scale_codec_type, - account_info_functor) - - set_storage_call = chain_connection.compose_call( - call_module='System', - call_function='set_storage', - call_params={ - 'items': raw_key_values, - }) - # ref time is set to 400ms to make sure this is the only tx that ends up in a block - # 359 875 586 000 is a maximal weight (found empirically) that sudo_unchecked_weight is able to consume - max_weight = 359875586000 - sudo_unchecked_weight_call = chain_connection.compose_call( - call_module='Sudo', - call_function='sudo_unchecked_weight', - call_params={ - 'call': set_storage_call, - 'weight': { - 'proof_size': 0, - 'ref_time': max_weight, - }, - } - ) - - # add a small tip to make sure this will be the first transaction in the block - token_mili_unit = 1000000000 - extrinsic = chain_connection.create_signed_extrinsic(call=sudo_unchecked_weight_call, - keypair=sudo_sender_keypair, - tip=token_mili_unit) - set_storage_block_hash = submit_extrinsic(chain_connection, extrinsic, 1, input_args.dry_run) - if not input_args.dry_run: - state_sanity_check(chain_connection, - account_id, - set_storage_block_hash, - account_info_check_functor) - - -def fix_double_providers_count(chain_connection, - input_args, - chain_major_version, - sudo_sender_keypair, - block_hash=None): - """ - Queries those accounts using System.Account map which have providers == 2. - For each such account, performs System.SetStorage with the same data but providers set to 1. - Must be run on AlephNode chain with at least 12 version. - :param chain_connection: WS connection handler - :param input_args: script input arguments returned from argparse - :param chain_major_version: enum ChainMajorVersion - :param sudo_sender_keypair: sudo keypair of sender account - :param block_hash: A block hash to query state from - :return: None. Can raise exception in case of SubstrateRequestException thrown - """ - log.info("Querying all accounts that have double provider counter.") - double_providers_accounts = filter_accounts(chain_connection=chain_connection, - ed=None, - chain_major_version=chain_major_version, - check_accounts_predicate=check_if_account_has_double_providers, - check_accounts_predicate_name="\'double provider count\'", - block_hash=block_hash)[0] - log.info(f"Found {len(double_providers_accounts)} accounts with double provider counter.") - if len(double_providers_accounts) > 0: - save_accounts_to_json_file("double-providers-accounts.json", double_providers_accounts) - log.info(f"Will fix at most first {input_args.double_providers_accounts_to_fix} accounts.") - internal_system_account_scale_codec_type = get_system_account_metadata_scale_codec_type(chain_connection) - for account_id, _ in double_providers_accounts[:input_args.double_providers_accounts_to_fix]: - fix_double_providers_count_for_account(chain_connection, - account_id, - sudo_sender_keypair, - internal_system_account_scale_codec_type, - input_args, - block_hash) - - -def get_raw_key_values(chain_connection, - account_id_and_data_chunk, - internal_system_account_scale_codec_type, - account_info_functor): - """ - Prepares input arguments for System.setStorage calls wth fixed providers counter - :param chain_connection: WS connection handler. Used for passing metadata when creating storage keys, which - is a valid assumption that it's not going to change during this script execution - :param account_id_and_data_chunk: A list of tuples (account_id, decoded_account_info) - :param internal_system_account_scale_codec_type Internal metadata SCALE decoder/encoder type for System.Account - entry - :param account_info_functor: function that manipulates input account info and returns corrected data - :return: List of tuples (system_account_storage_key_hexstring, account_info_raw_value_hexstring) ready to be sent - to System.setStorage call - """ - account_ids_chunk = list( - map(lambda account_id_and_data: account_id_and_data[0], account_id_and_data_chunk)) - system_account_storage_keys_hexstrings = list(map( - lambda account_id: - StorageKey.create_from_storage_function(pallet="System", - storage_function="Account", - params=[account_id], - runtime_config=chain_connection.runtime_config, - metadata=chain_connection.metadata).to_hex(), - account_ids_chunk)) - account_info_chunk = list( - map(lambda account_id_and_data: account_id_and_data[1], account_id_and_data_chunk)) - raw_hexstring_values = list(map(lambda account_info: account_info_functor(chain_connection, - account_info, - internal_system_account_scale_codec_type), - account_info_chunk)) - raw_key_values = list(zip(system_account_storage_keys_hexstrings, raw_hexstring_values)) - log.info(f"Prepared {len(raw_key_values)} raw key value pairs.") - log.debug(f"{raw_key_values}") - return raw_key_values - - -def assert_same_data_except_providers_counter(account_data_hexstring, - account_data_with_fixed_providers_counter_hexstring): - """ - Function makes sure previous and fixed account data is different only in providers counter - :param account_data_hexstring: Hexstring (raw value) representation of original AccountData - :param account_data_with_fixed_providers_counter_hexstring: Hexstring representation (raw value) of AccountData with - fixed providers counter - :return: None, but raises AssertionError in case data is different not only in providers counter - """ - # example hexstring of AccountInfo is - # 0x00000000000000000100000000000000f4010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080 - # difference can be only on byte 20th, which is LSB of providers counter that must be equal to 1 in fixed data - assert account_data_hexstring[:19] == account_data_with_fixed_providers_counter_hexstring[:19], \ - f"First 20 bytes of original and fixed AccountInfo must be equal" - assert account_data_with_fixed_providers_counter_hexstring[19] == '1', \ - f"Providers counter of fixed AccountInfo must be 1" - assert account_data_hexstring[20:] == account_data_with_fixed_providers_counter_hexstring[20:], \ - f"Last but 21 bytes of original and fixed AccountInfo must be equal" - - -def assert_same_data_except_consumers_counter(account_data_hexstring, - account_data_with_decremented_consumers_counter_hexstring): - """ - Function makes sure previous and fixed account data is different only in consumers counter - :param account_data_hexstring: Hexstring (raw value) representation of original AccountData - :param account_data_with_decremented_consumers_counter_hexstring: Hexstring representation (raw value) of - AccountData with decremented consumers counter - :return: None, but raises AssertionError in case data is different not only in consumers counter - """ - # example hexstring of AccountInfo is that has consumers == 4 - # 0x1a0000000400000001000000000000008dbc99a42761730200000000000000000094ff113c0000000000000000000000c1015dcaffee71020000000000000000b5985591727f46020000000000000080 - # difference can be only on byte 12th, which is LSB of consumers counter - assert account_data_hexstring[:11] == account_data_with_decremented_consumers_counter_hexstring[:11], \ - f"First 12 bytes of original and fixed AccountInfo must be equal" - assert int(account_data_hexstring[11]) - 1 == int( - account_data_with_decremented_consumers_counter_hexstring[11]), \ - f"Consumers counter of fixed AccountInfo must be decremented" - assert account_data_hexstring[12:] == account_data_with_decremented_consumers_counter_hexstring[12:], \ - f"Last but 12 bytes of original and fixed AccountInfo must be equal" - - -def set_providers_counter_to_one(chain_connection, account_info, internal_system_account_scale_codec_type): - """ - Method sets provider counter for a System.Account to 1 using System.SetStorage call. Since we must replace whole - System.Account value, which contains also other account counters as well as balances data for the account, this - solution is prone to a race condition in which we this data is altered meanwhile we issue set_storage. Practically, - this can happen either that here is a transaction that ends up in the same block as set_storage or just before, - causing a (write) race condition. In order to prevent that one needs to read state of parent of the block that - contains setStorge transaction and make sure only difference in state is providers counter. - - This function encodes original AccountInfo with fixed providers count (set to 1). It also asserts - original and fixed AccountInfo, encoded as hexstrings, is different only on the providers counter. - - :param chain_connection: WS connection handler. Uses for passing metadata when creating storage keys, which - is a valid assumption that it's not going to change during this script execution - :param account_info: decoded AccountInfo that has double providers counter - :param internal_system_account_scale_codec_type Internal metadata SCALE decoder/encoder type for System.Account - entry - :return: Raw storage value hexstring representation of AccountInfo with providers counter set to 1 - """ - fixed_account_data = copy.deepcopy(account_info) - fixed_account_data['providers'] = 1 - scale_object = chain_connection.runtime_config.create_scale_object( - type_string=internal_system_account_scale_codec_type, metadata=chain_connection.metadata - ) - account_data_with_fixed_providers_counter = scale_object.encode(fixed_account_data) - fixed_account_info_hexstring = account_data_with_fixed_providers_counter.to_hex() - original_encoded_data_hexstring = scale_object.encode(account_info).to_hex() - assert_same_data_except_providers_counter(original_encoded_data_hexstring, - fixed_account_info_hexstring) - return fixed_account_info_hexstring - - -def decrement_consumers_counter(chain_connection, account_info, internal_system_account_scale_codec_type): - """ - See description of `set_providers_counter_to_one` for more details. - :param chain_connection: WS connection handler. Uses for passing metadata when creating storage keys, which - is a valid assumption that it's not going to change during this script execution - :param account_info: decoded AccountInfo that has consumers counter overflow - :param internal_system_account_scale_codec_type Internal metadata SCALE decoder/encoder type for System.Account - entry - :return: Raw storage value hexstring representation of AccountInfo with decremented consumers counter or - AssertionError if consumers is 0. - """ - fixed_account_data = copy.deepcopy(account_info) - assert fixed_account_data['consumers'] > 0, f"Consumers counter of account {account_info} must be > 0!" - fixed_account_data['consumers'] -= 1 - scale_object = chain_connection.runtime_config.create_scale_object( - type_string=internal_system_account_scale_codec_type, metadata=chain_connection.metadata - ) - account_data_with_fixed_consumers_counter = scale_object.encode(fixed_account_data) - fixed_account_info_hexstring = account_data_with_fixed_consumers_counter.to_hex() - original_encoded_data_hexstring = scale_object.encode(account_info).to_hex() - assert_same_data_except_consumers_counter(original_encoded_data_hexstring, - fixed_account_info_hexstring) - return fixed_account_info_hexstring - - -def query_contract_and_code_owners_accounts(chain_connection, block_hash): - """ - Returns contract accounts and code owners. - """ - code_owners = set() - contract_accounts = set() - - log.info(f"Querying code owners.") - code_info_of_query = chain_connection.query_map(module='Contracts', - storage_function='CodeInfoOf', - page_size=1000, - block_hash=block_hash) - - for (i, (account_id, info)) in enumerate(code_info_of_query): - code_owners.add(info.serialize()['owner']) - if i % 5000 == 0 and i > 0: - log.info(f"Checked {i} code owners") - log.info(f"Total code owners is {len(code_owners)}") - log.debug(f"Code owners: {code_owners}") - - log.info(f"Querying contract accounts.") - contract_info_of_query = chain_connection.query_map(module='Contracts', - storage_function='ContractInfoOf', - page_size=1000, - block_hash=block_hash) - for (i, (account_id, info)) in enumerate(contract_info_of_query): - contract_accounts.add(account_id.value) - if i % 5000 == 0 and i > 0: - log.info(f"Checked {i} contracts") - log.info(f"Total contracts count is {len(contract_accounts)}") - log.debug(f"Contract accounts: {contract_accounts}") - - return code_owners, contract_accounts - - def reserved_or_frozen_non_zero(account_id, account_info): """ Checks if an account has zero consumers, but non-zero reserved amount. @@ -661,22 +151,6 @@ def get_vesting_lock(account_id_locks): return vesting_lock is not None -def has_account_consumer_overflow(account_id_and_info, locks, bonded, next_keys): - """ - Returns True if an account has consumers overflow - """ - account_id, account_info = account_id_and_info - consumers = account_info['consumers'] - if account_id in locks and len(locks[account_id]) > 0 and get_staking_lock(locks[account_id]) is not None and \ - consumers == 4 and \ - account_id in next_keys and \ - account_id in bonded and bonded[account_id] != account_id: - log.debug(f"Found an account that has four consumers, staking lock, next session key, " - f"and stash != controller: {account_id}") - return True - return False - - def has_account_consumer_underflow(account_id_and_info, locks, bonded, ledger, next_keys, contract_accounts): """ Returns True if an account has consumers underflow @@ -734,23 +208,6 @@ def get_expected_consumers_counter_in_13_version(account_id, return expected_consumers -def query_accounts_with_consumers_counter_overflow(chain_connection, block_hash=None): - """ - Queries all accounts that have an overflow of consumers counter, ie accounts which satisfy below conditions: - * `consumers` == 4, - `balances.Locks` contain entries with `id` == `staking`, - `staking.bonded(accountId) != accountId`, - accountId is in `session.nextKeys` - :param chain_connection: WS connection handler - :param block_hash: A block hash to query state from - """ - bonded, _, locks, next_keys = get_consumers_related_data(chain_connection, block_hash) - - log.info("Querying all accounts and filtering by consumers overflow predicate.") - return [account_id_and_info for account_id_and_info in get_all_accounts(chain_connection, block_hash) if - has_account_consumer_overflow(account_id_and_info, locks, bonded, next_keys)] - - def query_accounts_with_consumers_counter_underflow(chain_connection, block_hash=None): """ Queries all accounts that have an underflow of consumers counter by calculating expected number of consumers and @@ -760,7 +217,7 @@ def query_accounts_with_consumers_counter_underflow(chain_connection, block_hash :param block_hash: A block hash to query state from """ bonded, ledger, locks, next_keys = get_consumers_related_data(chain_connection, block_hash) - _, contract_accounts = query_contract_and_code_owners_accounts( + _, contract_accounts = contracts.query_contract_and_code_owners_accounts( chain_connection=chain_ws_connection, block_hash=block_hash) @@ -822,7 +279,10 @@ def batch_fix_accounts_consumers_underflow(chain_connection, :param sender_keypair: keypair of sender account :return: None. Can raise exception in case of SubstrateRequestException thrown """ - for (i, account_ids_chunk) in enumerate(chunks(accounts, input_args.fix_consumers_calls_in_batch)): + for (i, account_ids_chunk) in tqdm(iterable=enumerate(chunks(accounts, input_args.fix_consumers_calls_in_batch)), + desc="Accounts checked", + unit="", + file=sys.stdout): operations_calls = list(map(lambda account: chain_connection.compose_call( call_module='Operations', call_function='fix_accounts_consumers_underflow', @@ -845,36 +305,10 @@ def batch_fix_accounts_consumers_underflow(chain_connection, submit_extrinsic(chain_connection, extrinsic, len(operations_calls), args.dry_run) -def fix_overflow_consumers_counter_for_account(chain_connection, - account_id, - sudo_sender_keypair, - internal_system_account_scale_codec_type, - input_args, - block_hash=None): - """ - Decrements consumers counter for fiven account id - :param chain_connection: WS connection handler - :param account_id: Account id to which we should decrement consumers counter - :param sudo_sender_keypair Mnemonic phrase of sudo - :param internal_system_account_scale_codec_type Internal metadata SCALE decoder/encoder type for System.Account - entry - :param block_hash: A block has to query state from - """ - log.info(f"Decrementing consumers counter for account {account_id}") - fix_account_info_with_set_storage(chain_connection=chain_connection, - account_id=account_id, - sudo_sender_keypair=sudo_sender_keypair, - internal_system_account_scale_codec_type=internal_system_account_scale_codec_type, - input_args=input_args, - account_info_functor=decrement_consumers_counter, - account_info_check_functor=assert_state_different_only_in_consumers_counter, - block_hash=block_hash) - - def perform_accounts_sanity_checks(chain_connection, ed, chain_major_version, - total_issuance_from_chain): + block_hash=None): """ Checks whether all accounts on a chain matches pallet balances invariants :param chain_connection: WS connection handler @@ -882,35 +316,28 @@ def perform_accounts_sanity_checks(chain_connection, :param chain_major_version: enum ChainMajorVersion :return:None """ - invalid_accounts, total_issuance_from_accounts = \ - filter_accounts(chain_connection=chain_connection, - ed=ed, - chain_major_version=chain_major_version, - check_accounts_predicate=lambda x, y, z: not check_account_invariants(x, y, z), - check_accounts_predicate_name="\'incorrect account invariants\'") + invalid_accounts = filter_accounts(chain_connection=chain_connection, + ed=ed, + chain_major_version=chain_major_version, + check_accounts_predicate=lambda x, y, z: not check_account_invariants(x, y, z), + check_accounts_predicate_name="\'incorrect account invariants\'", + block_hash=block_hash) if len(invalid_accounts) > 0: log.warning(f"Found {len(invalid_accounts)} accounts that do not meet balances invariants!") save_accounts_to_json_file("accounts-with-failed-invariants.json", invalid_accounts) else: log.info(f"All accounts on chain {chain_connection.chain} meet balances invariants.") - total_issuance_from_accounts_human = format_balance(chain_connection, total_issuance_from_accounts) - log.info(f"Total issuance computed from accounts: {total_issuance_from_accounts_human}") - if total_issuance_from_accounts != total_issuance_from_chain: - total_issuance_from_chain_human = format_balance(chain_connection, total_issuance_from_chain) - delta_human = format_balance(chain_connection, - total_issuance_from_chain - total_issuance_from_accounts) - log.warning(f"TotalIssuance from chain: {total_issuance_from_chain_human} is different from computed: " - f"{total_issuance_from_accounts_human}, delta: {delta_human}") if __name__ == "__main__": + logger.setup_global_logger() + log = logging.getLogger() args = get_args() - if args.fix_free_balance or args.upgrade_accounts or args.fix_double_providers_count \ - or args.fix_consumers_counter_underflow or args.fix_consumers_counter_overflow: + if args.fix_consumers_counter_underflow: sender_origin_account_seed = os.getenv('SENDER_ACCOUNT') if sender_origin_account_seed is None: - log.error(f"When specifying --fix-free-balance or --upgrade-accounts or --fix-double-providers-count or " + log.error(f"When specifying " f"--fix-consumers-counter-underflow, env SENDER_ACCOUNT must exists. Exiting.") exit(1) if args.dry_run: @@ -923,85 +350,20 @@ def perform_accounts_sanity_checks(chain_connection, state_block_hash = chain_ws_connection.get_chain_head() log.info(f"Script uses block hash {state_block_hash} to query state from.") - chain_major_version = get_chain_major_version(chain_ws_connection, state_block_hash) - log.info(f"Major version of chain connected to is {chain_major_version}") - if args.fix_free_balance: - if chain_major_version is not ChainMajorVersion.PRE_12_MAJOR_VERSION: - log.error(f"--fix-free-balance can be used only on chains with pre-12 version. Exiting.") - exit(2) - if args.upgrade_accounts: - if chain_major_version is not ChainMajorVersion.AT_LEAST_12_MAJOR_VERSION: - log.error(f"--upgrade-accounts can be used only on chains with at least 12 version. Exiting.") - exit(3) - if args.fix_double_providers_count: - if chain_major_version is not ChainMajorVersion.AT_LEAST_12_MAJOR_VERSION: - log.error(f"--fix-double-providers-count can be used only on chains with at least 12 version. Exiting.") - exit(4) + aleph_chain_version = get_aleph_chain_version(chain_ws_connection, state_block_hash) + log.info(f"Version of an AlephNode chain connected to is {str(aleph_chain_version)}") if args.fix_consumers_counter_underflow: - if chain_major_version is not ChainMajorVersion.AT_LEAST_13_2_VERSION: + if aleph_chain_version < AlephChainVersion.VERSION_13_2: log.error( f"Fixing underflow consumers account can only be done on AlephNode chains with at least " f"13.2 version. Exiting.") exit(5) - if args.fix_consumers_counter_overflow: - if chain_major_version is not ChainMajorVersion.AT_LEAST_13_2_VERSION: - log.error( - f"Fixing underflow consumers account can only be done on AlephNode chains with at least " - f"13.2 version. Exiting.") - exit(6) - - total_issuance_from_chain = chain_ws_connection.query(module='Balances', - storage_function='TotalIssuance', - block_hash=state_block_hash).value - log.info(f"Chain total issuance is {format_balance(chain_ws_connection, total_issuance_from_chain)}") existential_deposit = chain_ws_connection.get_constant(module_name="Balances", constant_name="ExistentialDeposit", block_hash=state_block_hash).value log.info(f"Existential deposit is {format_balance(chain_ws_connection, existential_deposit)}") - if args.fix_free_balance: - sender_origin_account_keypair = substrateinterface.Keypair.create_from_uri(sender_origin_account_seed) - log.info(f"Using following account for transfers: {sender_origin_account_keypair.ss58_address}") - log.info(f"Will send at most {args.transfer_calls_in_batch} transfers in a batch.") - log.info(f"Looking for accounts that would be dust in 12 version.") - dust_accounts_in_12_version = find_dust_accounts(chain_connection=chain_ws_connection, - ed=existential_deposit, - chain_major_version=chain_major_version, - block_hash=state_block_hash) - if len(dust_accounts_in_12_version): - log.info(f"Found {len(dust_accounts_in_12_version)} accounts that will be invalid in 12 version.") - save_accounts_to_json_file("dust-accounts.json", dust_accounts_in_12_version) - log.info("Adjusting balances by sending transfers.") - batch_transfer(chain_connection=chain_ws_connection, - input_args=args, - accounts=list(map(lambda x: x[0], dust_accounts_in_12_version)), - amount=existential_deposit, - sender_keypair=sender_origin_account_keypair) - log.info(f"Transfers done.") - else: - log.info(f"No dust accounts found, skipping transfers.") - if args.upgrade_accounts: - sender_origin_account_keypair = substrateinterface.Keypair.create_from_uri(sender_origin_account_seed) - log.info(f"Using following account for upgrade_accounts: {sender_origin_account_keypair.ss58_address}") - log.info(f"Will upgrade at most {args.upgrade_accounts_in_batch} accounts in a batch.") - upgrade_accounts(chain_connection=chain_ws_connection, - input_args=args, - ed=existential_deposit, - chain_major_version=chain_major_version, - sender_keypair=sender_origin_account_keypair, - block_hash=state_block_hash) - log.info("Upgrade accounts done.") - if args.fix_double_providers_count: - sudo_account_keypair = substrateinterface.Keypair.create_from_uri(sender_origin_account_seed) - log.info(f"This script is going to query all accounts that have providers == 2 and decrease this counter " - f"by one using System.SetStorage extrinsic, which requires sudo.") - log.info(f"Using the following account for System.SetStorage calls: {sudo_account_keypair.ss58_address}") - fix_double_providers_count(chain_connection=chain_ws_connection, - input_args=args, - chain_major_version=chain_major_version, - sudo_sender_keypair=sudo_account_keypair, - block_hash=state_block_hash) if args.fix_consumers_counter_underflow: log.info(f"This script is going to query all accounts that have underflow of consumers counter, " f"and fix them using runtime Operations.fix_accounts_consumers_underflow extrinsic.") @@ -1011,7 +373,7 @@ def perform_accounts_sanity_checks(chain_connection, log.info(f"Found {len(accounts_with_consumers_underflow)} accounts with consumers underflow.") if len(accounts_with_consumers_underflow) > 0: save_accounts_to_json_file("accounts_with_consumers_underflow.json", accounts_with_consumers_underflow) - code_owners, contract_accounts = query_contract_and_code_owners_accounts( + code_owners, contract_accounts = contracts.query_contract_and_code_owners_accounts( chain_connection=chain_ws_connection, block_hash=state_block_hash) accounts_with_consumers_underflow_set = set(list(map(lambda x: x[0], accounts_with_consumers_underflow))) @@ -1028,29 +390,31 @@ def perform_accounts_sanity_checks(chain_connection, input_args=args, sender_keypair=sender_origin_account_keypair, accounts=list(accounts_with_consumers_underflow_set)) - if args.fix_consumers_counter_overflow: - log.info(f"This script is going to query all accounts that have overflow of consumers counter, " - f"and decrease this counter by one using System.SetStorage extrinsic, which requires sudo.") - sudo_account_keypair = substrateinterface.Keypair.create_from_uri(sender_origin_account_seed) - log.info(f"Using the following account for System.SetStorage calls: {sudo_account_keypair.ss58_address}") - accounts_with_consumers_overflow = \ - query_accounts_with_consumers_counter_overflow(chain_connection=chain_ws_connection, - block_hash=state_block_hash) - log.info(f"Found {len(accounts_with_consumers_overflow)} accounts with consumers overflow.") - if len(accounts_with_consumers_overflow) > 0: - save_accounts_to_json_file("accounts_with_consumers_overflow.json", accounts_with_consumers_overflow) - internal_system_account_scale_codec_type = get_system_account_metadata_scale_codec_type(chain_ws_connection) - for account_id, _ in accounts_with_consumers_overflow: - fix_overflow_consumers_counter_for_account(chain_ws_connection, - account_id, - sudo_account_keypair, - internal_system_account_scale_codec_type, - args, - block_hash=state_block_hash) + if args.check_total_issuance: + log.info(f"Comparing total issuance aggregated over all accounts with storage value balances.total_issuance") + total_issuance_from_chain, total_issuance_from_accounts = \ + get_total_issuance_imbalance(chain_connection=chain_ws_connection, + block_hash=state_block_hash) + log_total_issuance_imbalance(chain_connection=chain_ws_connection, + total_issuance_from_chain=total_issuance_from_chain, + total_issuance_from_accounts=total_issuance_from_accounts, + block_hash=state_block_hash) + delta = total_issuance_from_chain - total_issuance_from_accounts + if delta != 0: + if not args.start_range_block_hash: + log.error(f"--start-range-block-hash must be set when --check-total-issuance is set " + f"to perform further actions. Exiting.") + sys.exit(2) + log.warning(f"Total issuance retrieved from the chain storage is different than aggregated sum over" + f" all accounts. Finding first block when it happened.") + first_block_hash_imbalance = find_block_hash_with_imbalance(chain_connection=chain_ws_connection, + start_block_hash=args.start_range_block_hash, + end_block_hash=state_block_hash) + log.info(f"The first block where it happened is {first_block_hash_imbalance}") log.info(f"Performing pallet balances sanity checks.") perform_accounts_sanity_checks(chain_connection=chain_ws_connection, ed=existential_deposit, - chain_major_version=chain_major_version, - total_issuance_from_chain=total_issuance_from_chain) + chain_major_version=aleph_chain_version, + block_hash=state_block_hash) log.info(f"DONE") diff --git a/scripts/accounts-invariants/total_issuance.py b/scripts/accounts-invariants/total_issuance.py new file mode 100644 index 00000000..d154f3ba --- /dev/null +++ b/scripts/accounts-invariants/total_issuance.py @@ -0,0 +1,130 @@ +import logging +import itertools +import functools + +from chain_operations import format_balance, get_all_accounts + +log = logging.getLogger() + + +def get_total_issuance_imbalance(chain_connection, block_hash): + """ + Compares total issuance computed from all accounts with balances.total_issuance storage + :param chain_connection: WS handler + :param block_hash: total issuance computed from all accounts + :return: delta between those two values + """ + total_issuance_from_chain = get_total_issuance_from_storage(chain_connection=chain_connection, + block_hash=block_hash) + all_accounts_and_infos = get_all_accounts(chain_connection, block_hash) + total_issuance_from_accounts = calculate_total_issuance( + map(lambda account_and_info: account_and_info[1], all_accounts_and_infos)) + return total_issuance_from_chain, total_issuance_from_accounts + + +def log_total_issuance_imbalance(chain_connection, + total_issuance_from_chain, + total_issuance_from_accounts, + block_hash): + """ + Logs imbalance data in a given block hash in a human-readable format. + :param chain_connection: WS handler + :param total_issuance_from_chain: balances.total_issuance storage value + :param total_issuance_from_accounts: total_issuance as sum aggregated over all accounts + :param block_hash: block hash from which above data was retrieved + :return: None + """ + total_issuance_from_accounts_human = format_balance(chain_connection, total_issuance_from_accounts) + total_issuance_from_chain_human = format_balance(chain_connection, total_issuance_from_chain) + delta = total_issuance_from_chain - total_issuance_from_accounts + delta_human = format_balance(chain_connection, delta) + log.info(f"Total issuance imbalance computed from block {block_hash}") + log.info( + f"balances.total_issuance storage value: {total_issuance_from_chain_human}") + log.info( + f"Total issuance computed as aggregated sum over all accounts: {total_issuance_from_accounts_human}") + log.info(f"Delta is: {delta_human}") + + +def calculate_total_issuance(account_infos): + """ + Calculates total issuance as sum over all accounts free + reserved funds + :param account_infos: A list AccountInfo structs + :return: total issuance as number + """ + + def get_account_total_balance(account_info): + free = account_info['data']['free'] + reserved = account_info['data']['reserved'] + return free + reserved + + return \ + functools.reduce(lambda x, account_info: x + get_account_total_balance(account_info), account_infos, 0) + + +def get_total_issuance_from_storage(chain_connection, block_hash): + """ + Retrieves balances.total_issuance StorageValue + :param chain_connection: WS handler + :param block_hash: A block hash to query state from + :return: total issuance as number + """ + total_issuance_from_chain = chain_connection.query(module='Balances', + storage_function='TotalIssuance', + block_hash=block_hash).value + return total_issuance_from_chain + + +def find_block_hash_with_imbalance(chain_connection, start_block_hash, end_block_hash): + """ + Finds a first block hash that positively contributed to a total issuance imbalance. + + Positive contribution to the total issuance imbalance in block B is a situation in which total issuance imbalance + increases in block B. Total issuance imbalance is a difference between aggregated sum of total bolance over all + accounts and balances.total_issuance storage value. It might happen that difference in some value X in block B, + and some value Y in parent(B), and X > Y. There might be many such blocks in chain [start_block_hash; end_block_hash] + and this method returns the first one. + + Method uses bisection algorithm. It computes mid-range block hash by computing + mid_block_number = floor((end_block_number - start_block_number) / 2) + and then calculating total_issuance imbalance in mid_block_number to start and end range total_issuance imbalance, + adjusting interval ends accordingly to bisection algorith. + + :param chain_connection: WS handler + :param start_block_hash: first block hash in range to check + :param end_block_hash: end block hash in range to check + :return: the first block_hash that contributed positively to total issuance imbalance + """ + start_block_number = chain_connection.get_block_number(start_block_hash) + end_block_number = chain_connection.get_block_number(end_block_hash) + + start_total_issuance_imbalance = get_total_issuance_imbalance(chain_connection, start_block_hash) + log_total_issuance_imbalance(chain_connection=chain_connection, + total_issuance_from_chain=start_total_issuance_imbalance[0], + total_issuance_from_accounts=start_total_issuance_imbalance[1], + block_hash=start_block_hash) + delta_start_imbalance = start_total_issuance_imbalance[0] - start_total_issuance_imbalance[1] + + while end_block_number - 1 > start_block_number: + log.info(f"Finding first block that contributed to total issuance imbalance in range " + f"[{start_block_number}; {end_block_number}]") + + mid_range_block_number = start_block_number + (end_block_number - start_block_number) // 2 + mid_range_block_hash = chain_connection.get_block_hash(mid_range_block_number) + log.info(f"Mid-range block hash: {mid_range_block_hash}, number: {mid_range_block_number}") + mid_total_issuance_imbalance = get_total_issuance_imbalance(chain_connection, mid_range_block_hash) + log_total_issuance_imbalance(chain_connection=chain_connection, + total_issuance_from_chain=mid_total_issuance_imbalance[0], + total_issuance_from_accounts=mid_total_issuance_imbalance[1], + block_hash=mid_range_block_hash) + + delta_mid_imbalance = mid_total_issuance_imbalance[0] - mid_total_issuance_imbalance[1] + if delta_mid_imbalance > delta_start_imbalance: + end_block_hash = mid_range_block_hash + end_block_number = chain_connection.get_block_number(end_block_hash) + else: + start_block_hash = mid_range_block_hash + start_block_number = chain_connection.get_block_number(start_block_hash) + delta_start_imbalance = delta_mid_imbalance + + return chain_connection.get_block_hash(end_block_number) diff --git a/scripts/accounts-invariants/utils.py b/scripts/accounts-invariants/utils.py new file mode 100644 index 00000000..7ebc8094 --- /dev/null +++ b/scripts/accounts-invariants/utils.py @@ -0,0 +1,18 @@ +import json +import logging + +log = logging.getLogger() + + +def save_accounts_to_json_file(json_file_name, accounts): + with open(json_file_name, 'w') as f: + json.dump(accounts, f) + log.info(f"Wrote file '{json_file_name}'") + + +def chunks(list_of_elements, n): + """ + Lazily split 'list_of_elements' into 'n'-sized chunks. + """ + for i in range(0, len(list_of_elements), n): + yield list_of_elements[i:i + n] From b6d084c966185b622fbd15f641b9e3e4ab587445 Mon Sep 17 00:00:00 2001 From: Arif Ahmad Date: Fri, 19 Jul 2024 09:37:16 +0530 Subject: [PATCH 3/4] dockerfile --- Dockerfile | 48 +++++++++++++++++++++++++++++++++++++++++++++ docker/Dockerfile | 6 +++--- entrypoint.sh | 9 +++++++++ rust-toolchain.toml | 2 +- 4 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 Dockerfile create mode 100644 entrypoint.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..acba7998 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,48 @@ +# Use Ubuntu as the base image +FROM debian:latest + +# Avoid prompts from apt +ENV DEBIAN_FRONTEND=noninteractive +ENV TERM=xterm + +# Install required packages +RUN apt-get update && \ + apt-get install -y curl build-essential pkg-config libssl-dev git protobuf-compiler clang libclang-dev llvm-dev librocksdb-dev jq make && \ + rm -rf /var/lib/apt/lists/* + +# Install Rust +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y +ENV PATH="/root/.cargo/bin:${PATH}" + +# Verify Rust installation +RUN rustc --version && cargo --version + +# Copy the source code into the image +COPY . /app +WORKDIR /app + +# Build the Rust project +RUN cargo build --release && \ + rm -rf /app/target/debug + +# Expose the necessary ports +EXPOSE 30333 30343 9944 + +# Make the release and scripts directories and its contents executable +# RUN chmod +x /app/target/release +# RUN chmod +x /app/scripts + +RUN chmod +x /app + + +# Keep the container running +CMD ["/bin/sh", "-c", "/app/scripts/run_nodes.sh"] +# CMD ["tail", "-f", "/dev/null"] +# CMD ["/app/scripts/run_nodes.sh"] + +# # Copy and make the entrypoint script executable +# COPY entrypoint.sh /usr/local/bin/entrypoint.sh +# RUN chmod +x /usr/local/bin/entrypoint.sh + +# # Command to run when the container starts +# ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] diff --git a/docker/Dockerfile b/docker/Dockerfile index 04bad0af..d4711d27 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -7,12 +7,12 @@ RUN apt update && \ EXPOSE 30333 30343 9944 -WORKDIR node +WORKDIR /node -COPY target/release/aleph-node /usr/local/bin +COPY ../target/release/aleph-node /usr/local/bin RUN chmod +x /usr/local/bin/aleph-node -COPY docker/docker_entrypoint.sh /node/docker_entrypoint.sh +COPY docker_entrypoint.sh /node/docker_entrypoint.sh RUN chmod +x /node/docker_entrypoint.sh ENTRYPOINT ["./docker_entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 00000000..ffd375ad --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/sh + + +# Start the aleph-node +/usr/local/bin/scripts/run_nodes.sh + + +# Keep the container running +tail -f /dev/null \ No newline at end of file diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 7a20ddee..78386293 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "1.74" +channel = "1.74.1" targets = [ "wasm32-unknown-unknown" ] components = [ "rustfmt", "clippy", "rust-src" ] profile = "minimal" From 2485aee4025065d52c342a00c1e582247ffd712b Mon Sep 17 00:00:00 2001 From: Arif Ahmad Date: Mon, 29 Jul 2024 12:57:56 +0530 Subject: [PATCH 4/4] 29-jul-update --- .DS_Store | Bin 0 -> 14340 bytes .github/.DS_Store | Bin 0 -> 6148 bytes aleph-client/.DS_Store | Bin 0 -> 6148 bytes baby-liminal-extension/.DS_Store | Bin 0 -> 6148 bytes bin/.DS_Store | Bin 0 -> 8196 bytes bin/runtime/.DS_Store | Bin 0 -> 6148 bytes bin/runtime/src/lib.rs | 35 ++++++++++++++++++++++++++++--- e2e-tests/.DS_Store | Bin 0 -> 6148 bytes pallets/.DS_Store | Bin 0 -> 8196 bytes scripts/.DS_Store | Bin 0 -> 6148 bytes 10 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 .DS_Store create mode 100644 .github/.DS_Store create mode 100644 aleph-client/.DS_Store create mode 100644 baby-liminal-extension/.DS_Store create mode 100644 bin/.DS_Store create mode 100644 bin/runtime/.DS_Store create mode 100644 e2e-tests/.DS_Store create mode 100644 pallets/.DS_Store create mode 100644 scripts/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..64771164e2e6d0cf7025e46c47392c1c2938911a GIT binary patch literal 14340 zcmeHNU2GIp6h71K&o0|S`BP#fS%NV}+geI37#>_p8zc(Bu0SFv-9Ore-JR0iQm_FV zH5xS<4G$QNhF24f8Xh1K5)u+LCM0O0z8Ri;G`=BE_?{Oa$AV{i71Mb%kEBG-X=H zQw_9!4_fe$`CD;Ds7wWuf1K<3XaY6Wl07n#DcTv(Mu$Fp^g7D$2oVSo2oVSo2oVSo zSULhc_u`1goiejQKWzsF@ol*@QxbPC5>v;*U4%}lOpq?e%GU=A{ zPN`VIqgYWotd_gQupD+gPcS*kq+8BArNd5^!%mjlvgPhjEY&*r5{jIxq*I315P=YZ zMg)5BsDq{`O-20jRHe%9qMdbj+T59*MQ1vDPaTTgpe{~`9e?D{fkt_9=f3Kh^}qkr zc>^-dR!ery+usLMY59e=TddFuXg`e%L5Z^jI8VX~(}r&h8+>^*OX%2+AlcHMe-3!| z_{x-4Ekvu?M)Pc2CoD_Dsyy|=J2e~gG_Cu{+GyAp$fw&l_D-`lq@ACRdv*rOmbNa2 z-pAe;jnOC~ZiM!r?1N8phNbTtmaYOqGsqqF;BVa!$ixe0Y{OpnLbvx~HHC-s@rximX zmj}t=gN1U=o*lMl%DIZ-O*s|OSTuH|`@y-np~0TS)@?&)dJ=O_5A^pW2Dc8KITMSn z-~8l`u_MQerLz4lBMg(>)f#m<|Gn#bxHBNoLaODteT@_{cn)3lg2#{}hoN99Eg&Kv zv0{dtld0))(JrHVU=d0bgTp4#eR!JeLx3Pzt#>4ghbHN?b~rW-7f*nzYS8jP6i6%F zdwJR2yJ2o_VB1sd-|bEO%l^X==wDz#n*F&-wwOT(GL%|{aC__S;q$#_y>$8q58d8$ zXR}&8XfmYBgJ^`qTlby#7R~5-81Cl!@CXqI5eN|o5eN~uUlBM6!@PIwVlJk(c>6E1 zPR_&p{{3E;nuk4JIS2dIi}{z@R^DbjJFt*a@Ak2pCm30hwcc@{oBv~3Rt>rhDs*A*G!|S&qE>=s@ zLB`5|m7!r8V@NTcWE5(=i*Lwt@b*kY&7jtBiM)2DQJ%E?)VZ!&Z!qLY+k&Yy?IYLF z7`}kY@Q7ph8XHATYnSRi*&@2uNbIfcmwv6IAu->x_rm!noZX+xC$Vm=UO?W_C+El+GR+4oXeW9qZ|rT*7jezfaoulf9R5NZhb0e>+>N;<9@`{O zyE_h^!0edU<*P9ukXGVJE&D%(Tuqil_14AJwMaH->SJ6GjYODQ{zfyHL$f?$Vf^CE zbrz+OZ&dwIYVO0K=}*&V{pCt4uAW{~v%*K7jFaY+nnk3t1aXyB=IrSVe9aj?zvK`1 zQ)yK@xKvzVBr>w~DxLyq?~|Ub*{}Qa#W#SJRxdp{_@n1ZgQgyjK{UGeR6J@jjDEiY z{oV5s^0x(Ef$05AWyfWrE(U)N;N+Y!ziViSZdWRiNJTl)ojMk5S<9=!vXu%mXVt>*-gqtJt>O$` z&VNf(n(}J+bbb9i@M%gfkvg|)ZEYl2fTtc$i{;VKTb+bjSaTdzGl28%$>`}Sk1wq@ zs5Lty-yLq0CoS9b*}9r#h8*etU@A>}=d+0p%z3*pn~l<5O3|q9GnLSm+Q;3wj(r>$ z{}!jV7r~|3PFIe>_5k@3gL79s3<9ZzUl*j-FtPgCqwbgJIu>dikXE@=x)q6Cb$+S! z-5)%yT|VhCQOoTw-_hnY)gMPW8vOnL@+lOy6e18Juuvb3Bx4Ucn#!9B;cKaxbV$@-51Fr^FqOW&aQm3mDa~v2WK#@^Js( U>o%*>%E&dlk8rWB*K z{G_Qdysu{!b-mo?x@zVtYWtd5(${=seHP|`IbaU_)B)_-9PLd(tIYv(z#PaO;O|3# z!Wb%Mg8tKi${zuMEp+=po6i!Q6DWp?nIJ|GPEvuA>hy@=Bpv;M@S5T3E61ni;5dRy=XEcgIxiBHfMkS3yNLrTSap2w3<(Ss*%zJw3qH#=k7 zn1DACoq^qNcYc!(vYR0yoByYL$SKD)ZB{q4MNwDlogGo;uGzdjD##>O5br>Lv8q)9Lu_WxT!U`jp@LtZxr_IztK?&;xC#XfZh5 zp6@M(weOyHwJoly_f@;rR=tx~spsMhI0MdrGw?qdz@06U9V`0m3^)VMz>Wbq9|DG8 zG;9>p(Sa$o0Kg&CNwAh)LSlkpG;9=Mfv|=GHI%KzU=4>pm|rw(6g8aKnh&c}6GJ8@L>*%@#K+6)YIJCXbU5}!UoipGJ{4oZ2m@o1S5T3CWindVj;xRAap>GgNJbS2j?H?9xOsVNrf)C&Wc=BmH_yS%$c=8pz z`pxc;CZv{%AW~*v_S@|4m!17!GZ`Y{?qbv-Y77nvn1QjU0zH+r#9&Xy zc%bV-#mu9p6KnCox-)Bq!ftoGKXA*5Lyy*)0;WJ&ftr78Oa4FkzWy(h?8y``1-427 zu1CG7iz8`ntsG8rZ2-T3i^;moqobhFbnH5kiVxw=Fc(M%7%FBSF#@w60Vjhsrof*n F@C9kWh(7=T literal 0 HcmV?d00001 diff --git a/bin/.DS_Store b/bin/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..98ab5eb7d2cadc820396ba6c9bcbd2f13df1d9b5 GIT binary patch literal 8196 zcmeHMzi$&U6n<{g_M*}fArM`V4s~E4DQOE7#1cXn7?2P_FaTJoTL08h$>QM zSlE!5DzP9jurhXHsKg2@e*_B?yk|QX-zA}ep+dxt?009s&wlTFj@_360L!*Ys{l&? zU|}Vhn8#*Fp>e7MWlHtfC>i1bd`N)<96!wgZPQ^GFbo(53G3D|Q|0%1=@7Y0Npi?bUpdS8D=Ug&mfcle`fF^hqTBn5%$`NAJY-6+72)Iqj_aI+bVI(!-Vl$Waoxwt=fKB^PT!YN zIw6~9gv|+fg7)rU6jK<{7Dl;=9#q9U#n%n{!OledI20f94bJW({!onWZ})rP?-;l~ z2Y-SK@d9Zy5#q=T?fHU;=<~r{&R(LH9?>C)kngeSt>N?P-X1@_*xSKF=F|74&Li?=r%8&3v3Rsx~0R$b^F+gux~EB|H4*I zZAYw(XglpjO`QTCoto!1n(6cxHZ>ianVqxdtazC^S;Fij$^5}uM|kq0MaflaMAuP(Hp- z^F&X2dYmVP$qj9TY{}N3y)m8c?mzFSz5SQ7j+(yO?RM0&y%)1tOFr4$e*JFnHM_|5 zcl>ggz`w-UBZqU~nYlTC3rBgT^K(Sz>^aM$SHLUa6}T$}-2Nih@2W%Jk5|AeaBmdg z{XxMQ1BaDGvvr^_R{&rGVPmNCCnM)5hk?V&B3fX=rUGrMa90dr(-BvW7dWge+H?}` z@*&*F!rf4W86EvALnjef^rct8E3l|Q-9EPY{O{j>|6fe = StorageMap<_, Blake2_128Concat, T::AccountId, FSEvent, OptionQuery>; + // pub(super) type DisReAssembly = StorageMap<_, Blake2_128Concat, T::AccountId, FSEvent, OptionQuery>; + pub(super) type DisReAssembly = StorageDoubleMap< _, Blake2_128Concat, T::AccountId, Blake2_128Concat, u64, FSEvent, OptionQuery>; + + #[pallet::storage] + #[pallet::getter(fn nonces)] + pub(super) type Nonces = StorageMap<_, Blake2_128Concat, T::AccountId, u64, ValueQuery>; #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] @@ -1655,6 +1661,7 @@ pub mod pallet_template { #[pallet::error] pub enum Error { + EventTypeTooLong, CreationTimeTooLong, FilePathTooLong, EventKeyTooLong, @@ -1666,17 +1673,24 @@ pub mod pallet_template { #[pallet::weight((Weight::from_parts(10_000, 0) + T::DbWeight::get().writes(1), DispatchClass::Operational))] pub fn disassembled( origin: OriginFor, + event_type: Vec, creation_time: Vec, file_path: Vec, event_key: Vec, ) -> DispatchResult { let sender = ensure_signed(origin)?; + ensure!(event_type.len() <= 64, Error::::EventTypeTooLong); ensure!(creation_time.len() <= 64, Error::::CreationTimeTooLong); ensure!(file_path.len() <= 256, Error::::FilePathTooLong); ensure!(event_key.len() <= 128, Error::::EventKeyTooLong); let event = FSEvent { + eventtype: { + let mut arr = [0u8; 64]; + arr[..event_type.len()].copy_from_slice(&event_type); + arr + }, creationtime: { let mut arr = [0u8; 64]; arr[..creation_time.len()].copy_from_slice(&creation_time); @@ -1694,7 +1708,11 @@ pub mod pallet_template { }, }; - >::insert(&sender, &event); + let nonce = Nonces::::get(&sender); + >::insert(&sender, nonce, &event); + Nonces::::insert(&sender, nonce + 1); + + // >::insert(&sender, &event); Self::deposit_event(Event::::FileDisassembled { who: sender.clone(), event: event.clone() }); @@ -1705,17 +1723,24 @@ pub mod pallet_template { #[pallet::weight((Weight::from_parts(10_000, 0) + T::DbWeight::get().writes(1), DispatchClass::Operational))] pub fn reassembled( origin: OriginFor, + event_type: Vec, creation_time: Vec, file_path: Vec, event_key: Vec, ) -> DispatchResult { let sender = ensure_signed(origin)?; + ensure!(event_type.len() <= 64, Error::::EventTypeTooLong); ensure!(creation_time.len() <= 64, Error::::CreationTimeTooLong); ensure!(file_path.len() <= 256, Error::::FilePathTooLong); ensure!(event_key.len() <= 128, Error::::EventKeyTooLong); let event = FSEvent { + eventtype: { + let mut arr = [0u8; 64]; + arr[..event_type.len()].copy_from_slice(&event_type); + arr + }, creationtime: { let mut arr = [0u8; 64]; arr[..creation_time.len()].copy_from_slice(&creation_time); @@ -1733,7 +1758,11 @@ pub mod pallet_template { }, }; - >::insert(&sender, &event); + let nonce = Nonces::::get(&sender); + >::insert(&sender, nonce, &event); + Nonces::::insert(&sender, nonce + 1); + + // >::insert(&sender, &event); Self::deposit_event(Event::::FileReassembled { who: sender.clone(), event: event.clone() }); diff --git a/e2e-tests/.DS_Store b/e2e-tests/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e2d14888241f738cb2acd7b5496d2ca9f247c4b3 GIT binary patch literal 6148 zcmeHKJ5Iwu5S@*Ka0EpJ4dq@T1#M&^bAns|B|)LE<%lS~du~C?F_0*@01b!X&4a26tai1#-d4S{$n{*D0cXG&ICTclvsuy$MIW63 zXTTZQGQi)52xZI+Yeo5VV2~pKun)5c=JL-5jBEgAhP5Irkf5nRO$~O$2$~Liw7AT$ zR@8I~QW^KL%E3-3L8`+ZC7eR0=%X{>473?Y^m54k|Nij#zn$b)&VVy;QVfKCKFue1 zBk5Ekte{+uvUZx;y(gHgAdNYQ5pCF_?Ap< literal 0 HcmV?d00001 diff --git a/pallets/.DS_Store b/pallets/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d84519c65e90ec8fd4927a071d55adb8790708fc GIT binary patch literal 8196 zcmeHMF>4e-6n>*o&nT!6Az-tuLckO@VzGu5EVN21nB)?Z!`tj~m$Tl+&cZ)n{(y~t zz&3@AAcB>WS}bh^zxQU`o!Q-UFA^k>H_Obsn|W{N`@Wgm;q4KTS($7u6D<-^50&lJ zOK4gOk8^F5Gp;9sHHatL8E!AH_Omo^_-cnLpbDr0s(>n>3Y-iDaAtGqO*!}NsJ5zr zDsUn6kOEjVh?b03%C4-z(fXm@Uf3 z`}R|bcZT`Wtm1LB$dKO}^IM=kWnhzn(;luZ;gy2fF6uVEF;j33S$_U;lvtnZ-2Ze03RJZv ztJ@2Dj@2JynR!W1xb$!f9!P%gJ_z~fvyLR~}U!hVId5`sq3aac*mVaq=Z@i~Gk b$HdMS)}jaHzrP3w@((@#Wf8PFbqf3j<1&0i literal 0 HcmV?d00001 diff --git a/scripts/.DS_Store b/scripts/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a8bb3fb12add2fa94f8c8017b01b27cb6272612c GIT binary patch literal 6148 zcmeHKT}lH%49;l5qD3kq__!CS*b}&x^#r|u{gJlVc1yL2ZwtN_Up$UJ```ui(HnRL zzf3~i?OJFNq)1XG-)v^GlYGleIz;4ZlXjJ;OhiRA#=!K*V4=BD&Fm1c#pd2s6VhQZPCc*)k1DV>SXiUo#tnx<3E|s;-7oZApVYX z@vLk-#~jZdPRu*cahEP|e)jM!DtPApExyW_F0(PdKQHH%j{E3o7WWeCrE^)$Gn1bS zIX{#2WB@grrMM$#+88hfjDZ;gd_DwdjG0}j1cra}Y%rmelhBDXxv&HxS zc{h7D28@A!#DFVA^{9q~w6^9_<60Y_oujevyhPBuKxsMl9WKR(XkIWDa0eJFCW5d) P?2mw_!IUxZrwn`nDp-`c literal 0 HcmV?d00001