From 71681da214eb2d526373c1ce9a878b8ca342a418 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 6 Jun 2024 22:02:40 +0100 Subject: [PATCH] * Pin to polkadot 1.9.0 * Add validator set / i'm online to support multi party scenarios * Key generation, injected into vault * Remove PEM functionality, use substrate format Signed-off-by: Ryan --- .cargo/config.toml | 8 +- Cargo.lock | 472 +-- Cargo.toml | 2 - charts/chronicle/templates/_chronicle.tpl | 7 - charts/chronicle/templates/statefulset.yaml | 19 +- charts/chronicle/values.yaml | 30 +- crates/api/Cargo.toml | 2 - crates/api/src/api.rs | 2 +- crates/chronicle-signing/Cargo.toml | 1 + .../src/embedded_secret_manager_source.rs | 12 +- crates/chronicle-signing/src/lib.rs | 30 +- .../chronicle-test-infrastructure/Cargo.toml | 2 +- crates/chronicle/Cargo.toml | 2 - crates/common/Cargo.toml | 14 +- crates/common/src/attributes.rs | 4 +- crates/common/src/identity.rs | 4 +- crates/common/src/ledger.rs | 5 +- crates/common/src/opa/core.rs | 3 - crates/common/src/prov/id/mod.rs | 2 +- .../src/prov/model/json_ld/from_json_ld.rs | 7 - crates/common/src/prov/model/mod.rs | 2 +- crates/opactl/Cargo.toml | 2 +- crates/pallet-chronicle/Cargo.toml | 3 +- crates/pallet-chronicle/src/lib.rs | 3 +- crates/pallet-chronicle/tree.txt | 3242 ++++++++++------- crates/pallet-opa/Cargo.toml | 3 +- crates/pallet-opa/src/lib.rs | 4 +- .../protocol-substrate-chronicle/Cargo.toml | 2 +- docker/unified-builder | 11 +- node/node-chronicle/Cargo.toml | 3 + node/node-chronicle/src/chain_spec.rs | 70 +- node/runtime-chronicle/Cargo.toml | 106 +- node/runtime-chronicle/build.rs | 19 +- node/runtime-chronicle/src/lib.rs | 1 + node/runtime-chronicle/tree.txt | 2378 +++++++----- terraform/chronicle-substrate/network.tf | 55 +- .../templates/bootnode.tmpl | 66 +- .../templates/rpcnode.tmpl | 67 + .../templates/validators.tmpl | 49 +- terraform/chronicle/chronicle.tf | 0 terraform/chronicle/variables.tf | 15 + terraform/vault-configuration/Makefile | 14 +- .../vault-configuration/policies/bootnode.hcl | 4 - .../policies/chronicle-substrate.hcl | 13 + terraform/vault-configuration/variables.tf | 30 +- terraform/vault-configuration/vault.tf | 52 +- 46 files changed, 4064 insertions(+), 2778 deletions(-) create mode 100644 terraform/chronicle-substrate/templates/rpcnode.tmpl create mode 100644 terraform/chronicle/chronicle.tf delete mode 100644 terraform/vault-configuration/policies/bootnode.hcl create mode 100644 terraform/vault-configuration/policies/chronicle-substrate.hcl diff --git a/.cargo/config.toml b/.cargo/config.toml index 109adb97e..5de14f395 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -4,6 +4,12 @@ linker = "aarch64-linux-gnu-gcc" [target.x86_64-unknown-linux-gnu] linker = "x86_64-linux-gnu-gcc" +[http] +timeout = 30 # timeout for each HTTP request, in seconds +low-speed-limit = 10 # network timeout threshold (bytes/sec) +multiplexing = false + [net] -git-fetch-with-cli = true # use the `git` executable for git operations +retry = 3 +git-fetch-with-cli = false # use the `git` executable for git operations diff --git a/Cargo.lock b/Cargo.lock index 2b654c81c..00c02b7a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -250,8 +250,6 @@ dependencies = [ "protocol-substrate-chronicle", "protocol-substrate-opa", "r2d2", - "rand 0.8.5", - "rand_core 0.6.4", "reqwest", "rust-embed", "serde", @@ -618,12 +616,6 @@ dependencies = [ "nodrop", ] -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - [[package]] name = "arrayvec" version = "0.7.4" @@ -1266,7 +1258,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.29", "itoa", "matchit", "memchr", @@ -1326,7 +1318,7 @@ dependencies = [ "ark-std", "dleq_vrf", "fflonk", - "merlin 3.0.0", + "merlin", "rand_chacha 0.3.1", "rand_core 0.6.4", "ring 0.1.0", @@ -1563,18 +1555,6 @@ dependencies = [ "constant_time_eq 0.3.0", ] -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array 0.12.4", -] - [[package]] name = "block-buffer" version = "0.9.0" @@ -1593,15 +1573,6 @@ dependencies = [ "generic-array 0.14.7", ] -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] - [[package]] name = "blocking" version = "1.6.1" @@ -1962,8 +1933,6 @@ dependencies = [ "protocol-substrate-chronicle", "protocol-substrate-opa", "question", - "rand 0.8.5", - "rand_core 0.6.4", "serde", "serde_derive", "serde_json", @@ -2095,6 +2064,7 @@ name = "chronicle-signing" version = "0.1.0" dependencies = [ "async-trait", + "hex", "k256 0.11.6", "rand 0.8.5", "secret-vault", @@ -2436,7 +2406,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" dependencies = [ "strum 0.26.2", - "strum_macros 0.26.2", + "strum_macros 0.26.3", "unicode-width", ] @@ -2452,7 +2422,7 @@ dependencies = [ "ark-std", "fflonk", "getrandom_or_panic", - "merlin 3.0.0", + "merlin", "rand_chacha 0.3.1", ] @@ -2498,8 +2468,8 @@ dependencies = [ "serde_derive", "serde_json", "serde_yaml", - "sp-core 25.0.0", - "sp-std 11.0.0", + "sp-core 28.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)", "tempfile", "testcontainers", "thiserror", @@ -2983,19 +2953,6 @@ dependencies = [ "cipher 0.4.4", ] -[[package]] -name = "curve25519-dalek" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" -dependencies = [ - "byteorder", - "digest 0.8.1", - "rand_core 0.5.1", - "subtle 2.5.0", - "zeroize", -] - [[package]] name = "curve25519-dalek" version = "3.2.0" @@ -3560,7 +3517,7 @@ dependencies = [ "regex", "syn 2.0.66", "termcolor", - "toml 0.8.13", + "toml 0.8.14", "walkdir", ] @@ -3910,12 +3867,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - [[package]] name = "fallible-iterator" version = "0.2.0" @@ -3993,7 +3944,7 @@ dependencies = [ "ark-poly", "ark-serialize", "ark-std", - "merlin 3.0.0", + "merlin", ] [[package]] @@ -5137,9 +5088,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", @@ -5188,7 +5139,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.28", + "hyper 0.14.29", "log", "rustls 0.21.12", "rustls-native-certs 0.6.3", @@ -5202,7 +5153,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.28", + "hyper 0.14.29", "pin-project-lite 0.2.14", "tokio", "tokio-io-timeout", @@ -5215,7 +5166,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.28", + "hyper 0.14.29", "native-tls", "tokio", "tokio-native-tls", @@ -5860,7 +5811,7 @@ dependencies = [ "beef", "futures-timer", "futures-util", - "hyper 0.14.28", + "hyper 0.14.29", "jsonrpsee-types 0.21.0", "pin-project", "rustc-hash", @@ -5883,7 +5834,7 @@ dependencies = [ "beef", "futures-timer", "futures-util", - "hyper 0.14.28", + "hyper 0.14.29", "jsonrpsee-types 0.22.5", "parking_lot 0.12.3", "pin-project", @@ -5904,7 +5855,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b7de9f3219d95985eb77fd03194d7c1b56c19bce1abfcc9d07462574b15572" dependencies = [ "async-trait", - "hyper 0.14.28", + "hyper 0.14.29", "hyper-rustls", "jsonrpsee-core 0.21.0", "jsonrpsee-types 0.21.0", @@ -5924,7 +5875,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ccf93fc4a0bfe05d851d37d7c32b7f370fe94336b52a2f0efc5f1981895c2e5" dependencies = [ "async-trait", - "hyper 0.14.28", + "hyper 0.14.29", "hyper-rustls", "jsonrpsee-core 0.22.5", "jsonrpsee-types 0.22.5", @@ -5958,7 +5909,7 @@ checksum = "12d8b6a9674422a8572e0b0abb12feeb3f2aeda86528c80d0350c2bd0923ab41" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.28", + "hyper 0.14.29", "jsonrpsee-core 0.22.5", "jsonrpsee-types 0.22.5", "pin-project", @@ -7056,18 +7007,6 @@ dependencies = [ "hash-db", ] -[[package]] -name = "merlin" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42" -dependencies = [ - "byteorder", - "keccak", - "rand_core 0.5.1", - "zeroize", -] - [[package]] name = "merlin" version = "3.0.0" @@ -7133,7 +7072,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd01039851e82f8799046eabbb354056283fb265c8ec0996af940f4e85a380ff" dependencies = [ "serde", - "toml 0.8.13", + "toml 0.8.14", ] [[package]] @@ -7240,7 +7179,7 @@ dependencies = [ "assert-json-diff", "colored", "futures-core", - "hyper 0.14.28", + "hyper 0.14.29", "log", "rand 0.8.5", "regex", @@ -7561,6 +7500,7 @@ dependencies = [ "sc-consensus-aura", "sc-consensus-grandpa", "sc-executor", + "sc-keystore", "sc-network", "sc-offchain", "sc-rpc-api", @@ -7578,6 +7518,7 @@ dependencies = [ "sp-inherents", "sp-io 30.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "sp-keyring", + "sp-keystore 0.34.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "sp-runtime 31.0.1 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "sp-timestamp", "structopt", @@ -8105,7 +8046,6 @@ dependencies = [ "scale-info", "serde", "sp-core 28.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-core-hashing 15.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "sp-io 30.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "sp-runtime 31.0.1 (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)", @@ -8173,7 +8113,6 @@ dependencies = [ "serde", "serde_json", "sp-core 28.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", - "sp-core-hashing 15.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "sp-io 30.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "sp-runtime 31.0.1 (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)", @@ -8407,15 +8346,6 @@ dependencies = [ "crypto-mac 0.11.0", ] -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", -] - [[package]] name = "pbkdf2" version = "0.12.2" @@ -9081,9 +9011,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.84" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" +checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" dependencies = [ "unicode-ident", ] @@ -9768,7 +9698,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.29", "hyper-rustls", "hyper-tls 0.5.0", "ipnet", @@ -9851,7 +9781,7 @@ dependencies = [ "blake2 0.10.6", "common 0.1.0", "fflonk", - "merlin 3.0.0", + "merlin", ] [[package]] @@ -9958,7 +9888,7 @@ dependencies = [ [[package]] name = "runtime-chronicle" -version = "4.0.0" +version = "1.0.0" dependencies = [ "frame-benchmarking", "frame-executive", @@ -10941,7 +10871,7 @@ dependencies = [ "fnv", "futures", "futures-timer", - "hyper 0.14.28", + "hyper 0.14.29", "hyper-rustls", "libp2p", "log", @@ -11034,7 +10964,7 @@ dependencies = [ "futures", "governor", "http 0.2.12", - "hyper 0.14.28", + "hyper 0.14.29", "jsonrpsee 0.22.5", "log", "serde_json", @@ -11532,24 +11462,6 @@ dependencies = [ "hashbrown 0.13.2", ] -[[package]] -name = "schnorrkel" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "curve25519-dalek 2.1.3", - "getrandom 0.1.16", - "merlin 2.0.1", - "rand 0.7.3", - "rand_core 0.5.1", - "sha2 0.8.2", - "subtle 2.5.0", - "zeroize", -] - [[package]] name = "schnorrkel" version = "0.11.4" @@ -11561,7 +11473,7 @@ dependencies = [ "arrayvec 0.7.4", "curve25519-dalek 4.1.2", "getrandom_or_panic", - "merlin 3.0.0", + "merlin", "rand_core 0.6.4", "serde_bytes", "sha2 0.10.8", @@ -11621,31 +11533,13 @@ dependencies = [ "zeroize", ] -[[package]] -name = "secp256k1" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" -dependencies = [ - "secp256k1-sys 0.6.1", -] - [[package]] name = "secp256k1" version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" dependencies = [ - "secp256k1-sys 0.9.2", -] - -[[package]] -name = "secp256k1-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" -dependencies = [ - "cc", + "secp256k1-sys", ] [[package]] @@ -11752,9 +11646,9 @@ dependencies = [ [[package]] name = "serde_arrow" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3225856c8d6dcee83d7d328076eb57b5e9dea372a5de8360928f74cf1b7dd9d" +checksum = "ea79c630781d66e4804964730d2db7517f0568edac0ba6c50641933b1d5ad5d1" dependencies = [ "arrow-array", "arrow-buffer", @@ -11907,18 +11801,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "sha2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", -] - [[package]] name = "sha2" version = "0.9.9" @@ -12124,7 +12006,7 @@ dependencies = [ "itertools 0.12.1", "libm", "libsecp256k1", - "merlin 3.0.0", + "merlin", "no-std-net 0.6.0", "nom", "num-bigint", @@ -12136,7 +12018,7 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "ruzstd", - "schnorrkel 0.11.4", + "schnorrkel", "serde", "serde_json", "sha2 0.10.8", @@ -12467,53 +12349,6 @@ dependencies = [ "sp-timestamp", ] -[[package]] -name = "sp-core" -version = "25.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9ebb090ead698a6df04347c86a31ba91a387edb8a58534ec70c4f977d1e1e87" -dependencies = [ - "array-bytes 6.2.3", - "bitflags 1.3.2", - "blake2 0.10.6", - "bounded-collections 0.1.9", - "bs58 0.5.1", - "dyn-clonable", - "ed25519-zebra 3.1.0", - "futures", - "hash-db", - "hash256-std-hasher", - "impl-serde", - "lazy_static", - "libsecp256k1", - "log", - "merlin 2.0.1", - "parity-scale-codec", - "parking_lot 0.12.3", - "paste", - "primitive-types", - "rand 0.8.5", - "regex", - "scale-info", - "schnorrkel 0.9.1", - "secp256k1 0.24.3", - "secrecy", - "serde", - "sp-core-hashing 13.0.0", - "sp-debug-derive 12.0.0", - "sp-externalities 0.23.0", - "sp-runtime-interface 21.0.0", - "sp-std 12.0.0", - "sp-storage 17.0.0", - "ss58-registry", - "substrate-bip39 0.4.6", - "thiserror", - "tiny-bip39", - "tracing", - "w3f-bls", - "zeroize", -] - [[package]] name = "sp-core" version = "28.0.0" @@ -12535,18 +12370,18 @@ dependencies = [ "itertools 0.10.5", "libsecp256k1", "log", - "merlin 3.0.0", + "merlin", "parity-scale-codec", "parking_lot 0.12.3", "paste", "primitive-types", "rand 0.8.5", "scale-info", - "schnorrkel 0.11.4", - "secp256k1 0.28.2", + "schnorrkel", + "secp256k1", "secrecy", "serde", - "sp-core-hashing 15.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core-hashing", "sp-debug-derive 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-externalities 0.25.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-runtime-interface 24.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -12581,7 +12416,7 @@ dependencies = [ "k256 0.13.3", "libsecp256k1", "log", - "merlin 3.0.0", + "merlin", "parity-bip39", "parity-scale-codec", "parking_lot 0.12.3", @@ -12589,8 +12424,8 @@ dependencies = [ "primitive-types", "rand 0.8.5", "scale-info", - "schnorrkel 0.11.4", - "secp256k1 0.28.2", + "schnorrkel", + "secp256k1", "secrecy", "serde", "sp-crypto-hashing", @@ -12607,20 +12442,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "sp-core-hashing" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb8524f01591ee58b46cd83c9dbc0fcffd2fd730dabec4f59326cd58a00f17e2" -dependencies = [ - "blake2b_simd", - "byteorder", - "digest 0.10.7", - "sha2 0.10.8", - "sha3", - "twox-hash", -] - [[package]] name = "sp-core-hashing" version = "15.0.0" @@ -12635,18 +12456,10 @@ dependencies = [ "twox-hash", ] -[[package]] -name = "sp-core-hashing" -version = "15.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" -dependencies = [ - "sp-crypto-hashing", -] - [[package]] name = "sp-crypto-ec-utils" version = "0.10.0" -source = "git+https://github.com/paritytech/polkadot-sdk#fc6c31829fc2e24e11a02b6a2adec27bc5d8918f" +source = "git+https://github.com/paritytech/polkadot-sdk#a09ec64d149b400de16f144ca02f0fa958d2bb13" dependencies = [ "ark-bls12-377", "ark-bls12-377-ext", @@ -12695,17 +12508,6 @@ dependencies = [ "parking_lot 0.12.3", ] -[[package]] -name = "sp-debug-derive" -version = "12.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50535e1a5708d3ba5c1195b59ebefac61cc8679c2c24716b87a86e8b7ed2e4a1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "sp-debug-derive" version = "14.0.0" @@ -12730,25 +12532,13 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#fc6c31829fc2e24e11a02b6a2adec27bc5d8918f" +source = "git+https://github.com/paritytech/polkadot-sdk#a09ec64d149b400de16f144ca02f0fa958d2bb13" dependencies = [ "proc-macro2", "quote", "syn 2.0.66", ] -[[package]] -name = "sp-externalities" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884d05160bc89d0943d1c9fb8006c3d44b80f37f8af607aeff8d4d9cc82e279a" -dependencies = [ - "environmental", - "parity-scale-codec", - "sp-std 12.0.0", - "sp-storage 17.0.0", -] - [[package]] name = "sp-externalities" version = "0.25.0" @@ -12775,7 +12565,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.25.0" -source = "git+https://github.com/paritytech/polkadot-sdk#fc6c31829fc2e24e11a02b6a2adec27bc5d8918f" +source = "git+https://github.com/paritytech/polkadot-sdk#a09ec64d149b400de16f144ca02f0fa958d2bb13" dependencies = [ "environmental", "parity-scale-codec", @@ -12819,7 +12609,7 @@ dependencies = [ "log", "parity-scale-codec", "rustversion", - "secp256k1 0.28.2", + "secp256k1", "sp-core 28.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-externalities 0.25.0 (registry+https://github.com/rust-lang/crates.io-index)", "sp-keystore 0.34.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -12844,7 +12634,7 @@ dependencies = [ "parity-scale-codec", "polkavm-derive", "rustversion", - "secp256k1 0.28.2", + "secp256k1", "sp-core 28.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", "sp-crypto-hashing", "sp-externalities 0.25.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", @@ -13014,25 +12804,6 @@ dependencies = [ "sp-weights 27.0.0 (git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0)", ] -[[package]] -name = "sp-runtime-interface" -version = "21.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f365332922a8cfa98ab00c6d08b1b0f24e159e730dd554e720d950ff3371b1f" -dependencies = [ - "bytes", - "impl-trait-for-tuples", - "parity-scale-codec", - "primitive-types", - "sp-externalities 0.23.0", - "sp-runtime-interface-proc-macro 15.0.0", - "sp-std 12.0.0", - "sp-storage 17.0.0", - "sp-tracing 14.0.0", - "sp-wasm-interface 18.0.0", - "static_assertions", -] - [[package]] name = "sp-runtime-interface" version = "24.0.0" @@ -13074,7 +12845,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "24.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#fc6c31829fc2e24e11a02b6a2adec27bc5d8918f" +source = "git+https://github.com/paritytech/polkadot-sdk#a09ec64d149b400de16f144ca02f0fa958d2bb13" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -13090,19 +12861,6 @@ dependencies = [ "static_assertions", ] -[[package]] -name = "sp-runtime-interface-proc-macro" -version = "15.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2afcbd1bd18d323371111b66b7ac2870bdc1c86c3d7b0dae67b112ca52b4d8" -dependencies = [ - "Inflector", - "proc-macro-crate 1.1.3", - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "sp-runtime-interface-proc-macro" version = "17.0.0" @@ -13133,7 +12891,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "17.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#fc6c31829fc2e24e11a02b6a2adec27bc5d8918f" +source = "git+https://github.com/paritytech/polkadot-sdk#a09ec64d149b400de16f144ca02f0fa958d2bb13" dependencies = [ "Inflector", "expander", @@ -13240,18 +12998,6 @@ dependencies = [ "x25519-dalek 2.0.1", ] -[[package]] -name = "sp-std" -version = "11.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c91d32e165d08a14098ce5ec923eaec59d1d0583758a18a770beec1b780b0d0" - -[[package]] -name = "sp-std" -version = "12.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c78c5a66682568cc7b153603c5d01a2cc8f5c221c7b1e921517a0eef18ae05" - [[package]] name = "sp-std" version = "14.0.0" @@ -13266,21 +13012,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0 [[package]] name = "sp-std" version = "14.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#fc6c31829fc2e24e11a02b6a2adec27bc5d8918f" - -[[package]] -name = "sp-storage" -version = "17.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016f20812cc51bd479cc88d048c35d44cd3adde4accdb159d49d6050f2953595" -dependencies = [ - "impl-serde", - "parity-scale-codec", - "ref-cast", - "serde", - "sp-debug-derive 12.0.0", - "sp-std 12.0.0", -] +source = "git+https://github.com/paritytech/polkadot-sdk#a09ec64d149b400de16f144ca02f0fa958d2bb13" [[package]] name = "sp-storage" @@ -13312,7 +13044,7 @@ dependencies = [ [[package]] name = "sp-storage" version = "19.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#fc6c31829fc2e24e11a02b6a2adec27bc5d8918f" +source = "git+https://github.com/paritytech/polkadot-sdk#a09ec64d149b400de16f144ca02f0fa958d2bb13" dependencies = [ "impl-serde", "parity-scale-codec", @@ -13334,19 +13066,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "sp-tracing" -version = "14.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d727cb5265641ffbb7d4e42c18b63e29f6cfdbd240aae3bcf093c3d6eb29a19" -dependencies = [ - "parity-scale-codec", - "sp-std 12.0.0", - "tracing", - "tracing-core", - "tracing-subscriber 0.2.25", -] - [[package]] name = "sp-tracing" version = "16.0.0" @@ -13375,7 +13094,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "16.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#fc6c31829fc2e24e11a02b6a2adec27bc5d8918f" +source = "git+https://github.com/paritytech/polkadot-sdk#a09ec64d149b400de16f144ca02f0fa958d2bb13" dependencies = [ "parity-scale-codec", "tracing", @@ -13484,20 +13203,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "sp-wasm-interface" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d85813d46a22484cdf5e5afddbbe85442dd1b4d84d67a8c7792f92f9f93607" -dependencies = [ - "anyhow", - "impl-trait-for-tuples", - "log", - "parity-scale-codec", - "sp-std 12.0.0", - "wasmtime", -] - [[package]] name = "sp-wasm-interface" version = "20.0.0" @@ -13528,7 +13233,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "20.0.0" -source = "git+https://github.com/paritytech/polkadot-sdk#fc6c31829fc2e24e11a02b6a2adec27bc5d8918f" +source = "git+https://github.com/paritytech/polkadot-sdk#a09ec64d149b400de16f144ca02f0fa958d2bb13" dependencies = [ "impl-trait-for-tuples", "log", @@ -13745,7 +13450,7 @@ version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" dependencies = [ - "strum_macros 0.26.2", + "strum_macros 0.26.3", ] [[package]] @@ -13763,11 +13468,11 @@ dependencies = [ [[package]] name = "strum_macros" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +checksum = "f7993a8e3a9e88a00351486baae9522c91b123a088f76469e5bd5cc17198ea87" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", @@ -13782,7 +13487,7 @@ checksum = "6a7590dc041b9bc2825e52ce5af8416c73dbe9d0654402bfd4b4941938b94d8f" dependencies = [ "hmac 0.11.0", "pbkdf2 0.8.0", - "schnorrkel 0.11.4", + "schnorrkel", "sha2 0.9.9", "zeroize", ] @@ -13794,7 +13499,7 @@ source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0 dependencies = [ "hmac 0.12.1", "pbkdf2 0.12.2", - "schnorrkel 0.11.4", + "schnorrkel", "sha2 0.10.8", "zeroize", ] @@ -13828,7 +13533,7 @@ name = "substrate-prometheus-endpoint" version = "0.17.0" source = "git+https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fceb82372a3019b37117aa453d564b212de" dependencies = [ - "hyper 0.14.28", + "hyper 0.14.29", "log", "prometheus", "thiserror", @@ -13851,7 +13556,7 @@ dependencies = [ [[package]] name = "substrate-validator-set" version = "1.1.0" -source = "git+https://github.com/gautamdhameja/substrate-validator-set.git#2c5e00ca3fd99380978d653fd79c8635aeb84c0c" +source = "git+https://github.com/gautamdhameja/substrate-validator-set.git?tag=polkadot-v1.9.0#2c5e00ca3fd99380978d653fd79c8635aeb84c0c" dependencies = [ "frame-benchmarking", "frame-support", @@ -13882,7 +13587,7 @@ dependencies = [ "sp-maybe-compressed-blob", "strum 0.24.1", "tempfile", - "toml 0.8.13", + "toml 0.8.14", "walkdir", "wasm-opt", ] @@ -13926,7 +13631,7 @@ dependencies = [ "serde", "serde_json", "sp-core 28.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sp-core-hashing 15.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core-hashing", "sp-runtime 31.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "subxt-lightclient", "subxt-macro", @@ -13999,7 +13704,7 @@ dependencies = [ "frame-metadata 16.0.0", "parity-scale-codec", "scale-info", - "sp-core-hashing 15.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core-hashing", "thiserror", ] @@ -14282,25 +13987,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "tiny-bip39" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" -dependencies = [ - "anyhow", - "hmac 0.12.1", - "once_cell", - "pbkdf2 0.11.0", - "rand 0.8.5", - "rustc-hash", - "sha2 0.10.8", - "thiserror", - "unicode-normalization", - "wasm-bindgen", - "zeroize", -] - [[package]] name = "tiny-keccak" version = "2.0.2" @@ -14479,14 +14165,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]] @@ -14524,15 +14210,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.11", ] [[package]] @@ -14549,7 +14235,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.29", "hyper-timeout", "percent-encoding", "pin-project", @@ -14576,7 +14262,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.29", "hyper-timeout", "percent-encoding", "pin-project", @@ -15215,9 +14901,9 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "w3f-bls" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7335e4c132c28cc43caef6adb339789e599e39adbe78da0c4d547fad48cbc331" +checksum = "9c5da5fa2c6afa2c9158eaa7cd9aee249765eb32b5fb0c63ad8b9e79336a47ec" dependencies = [ "ark-bls12-377", "ark-bls12-381", @@ -15711,9 +15397,9 @@ dependencies = [ [[package]] name = "wide" -version = "0.7.21" +version = "0.7.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8dc749a1b03f3c255a3064a4f5c0ee5ed09b7c6bc6d4525d31f779cd74d7fc" +checksum = "2c5cb32c74fe55350a3272ba792f050613e692253ae0d89ad5d83eb0dcea15e1" dependencies = [ "bytemuck", "safe_arch", @@ -16006,9 +15692,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.9" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c949fede1d13936a99f14fafd3e76fd642b556dd2ce96287fbe2e0151bfac6" +checksum = "56c52728401e1dc672a56e81e593e912aa54c78f40246869f78359a2bf24d29d" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index c338dddd5..ad2340669 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -84,11 +84,9 @@ k256 = { version = "0.11.3", features = [ "default", "arithmetic", "ecdsa", - "pkcs8", "sha256", "keccak256", "std", - "pem", "serde", ] } lazy_static = "1.4.0" diff --git a/charts/chronicle/templates/_chronicle.tpl b/charts/chronicle/templates/_chronicle.tpl index c1bda86c9..255607e62 100644 --- a/charts/chronicle/templates/_chronicle.tpl +++ b/charts/chronicle/templates/_chronicle.tpl @@ -30,13 +30,6 @@ chronicle: {{ include "common.names.fullname" . }} 9982 {{- end -}} -{{- define "chronicle.substrate.service" -}} -{{- $svc := include "lib.call-nested" (list . "node" "common.names.fullname") -}} -{{- $ns := .Release.Namespace -}} -{{- $domain := "svc.cluster.local" -}} -{{ printf "%s.%s.%s" $svc $ns $domain }} -{{- end -}} - {{- define "chronicle.affinity" -}} {{- if .Values.affinity -}} {{- toYaml .Values.affinity }} diff --git a/charts/chronicle/templates/statefulset.yaml b/charts/chronicle/templates/statefulset.yaml index 5828be395..3dbc68cbe 100644 --- a/charts/chronicle/templates/statefulset.yaml +++ b/charts/chronicle/templates/statefulset.yaml @@ -7,6 +7,11 @@ metadata: labels: {{ include "chronicle.labels" . | nindent 4 }} component: chronicle spec: + annotations: + sidecar.opentelemetry.io/inject: "true" + vault.hashicorp.com/ca-cert: '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' + vault.hashicorp.com/agent-inject-template-chronicle: '{{ with secret "kv/chronicle/chronicle_identity" }}{{ .Data.data.secret_seed }}{{ end }}' + vault.hashicorp.com/agent-inject-template-chronicle-pk: '{{ with secret "kv/chronicle/chronicle_account" }}{{ .Data.data.secret_seed }}{{ end }}' replicas: {{ include "chronicle.replicas" . }} selector: matchLabels: {{ include "chronicle.labels.matchLabels" . | nindent 6 }} @@ -61,8 +66,10 @@ spec: sleep 20; chronicle \ -c /etc/chronicle/config/config.toml \ + --chronicle-key-from-path /vault/secrets \ + --batcher-key-from-path /vault/secrets --console-logging json \ - --substrate grpc://{{ include "chronicle.substrate.service" . }}:{{ include "chronicle.substrate.rpc" . }} \ + --substrate grpc://{{ .Values.substrate.address }}:{{ .Values.substrate.port }} \ --remote-database \ --database-name {{ .Values.postgres.database }} \ --database-username {{ .Values.postgres.user }} \ @@ -84,6 +91,16 @@ spec: {{ include "chronicle.id-claims" . }} ; env: {{ include "lib.safeToYaml" .Values.env | nindent 12 }} + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: "localhost:4317" + - name: OTEL_RESOURCE_ATTRIBUTES + value: "service.name=chronicle,service.instance.id={{ .Release.Name }}" + - name: OTEL_PROPAGATORS + value: "tracecontext,baggage" + - name: OTEL_TRACES_EXPORTER + value: "otlp" + - name: OTEL_LOGS_EXPORTER + value: "otlp" - name: RUST_LOG value: {{ .Values.logLevel }} - name: PGPASSWORD diff --git a/charts/chronicle/values.yaml b/charts/chronicle/values.yaml index 6e725af6b..a1a20c86e 100644 --- a/charts/chronicle/values.yaml +++ b/charts/chronicle/values.yaml @@ -11,6 +11,10 @@ global: ## @md | `affinity`| custom affinity rules for the chronicle pod | {} | affinity: {} +substrate: + address: chronicle-substrate-rpc-node.svc + port: 9933 + auth: ## @md | `auth.required` | if true require authentication, rejecting 'anonymous' requests | false | required: false @@ -188,29 +192,3 @@ postgres: resources: volumes: {} - -node: - vault: - keys: - - name: aura - type: aura - scheme: secp256k1 - vaultPath: kv/secret/chronicle-node # path at which the secret is located in Vault - vaultKey: aura # key under which the secret value is stored in Vault - extraDerivation: "//${HOSTNAME}//aura" # allows to have unique derived keys for each pod of the statefulset - nodeKey: - name: bootnode-key - vaultPath: kv/secret/chronicle-node - vaultKey: bootnode-key - image: - ## @md | `test.api.image.pullPolicy` | the image pull policy | IfNotPresent | - pullPolicy: IfNotPresent - ## @md | `test.api.image.repository` | the image repository | blockchaintp/chronicle-helm-api-test | - repository: blockchaintp/chronicle-node-amd64 - ## @md | `test.api.image.tag` | the image tag | latest | - tag: BTP2.1.0-0.8.0 - node: - chain: "chronicle" - command: "node-chronicle" - - diff --git a/crates/api/Cargo.toml b/crates/api/Cargo.toml index 0406a75d8..b20c8ed82 100644 --- a/crates/api/Cargo.toml +++ b/crates/api/Cargo.toml @@ -37,8 +37,6 @@ opa = { workspace = true } opentelemetry = { workspace = true } parking_lot = { workspace = true } poem = { workspace = true } -rand = { workspace = true } -rand_core = { workspace = true } reqwest = { workspace = true } rust-embed = { workspace = true } serde = { workspace = true } diff --git a/crates/api/src/api.rs b/crates/api/src/api.rs index f04c11b04..bed50bf1b 100644 --- a/crates/api/src/api.rs +++ b/crates/api/src/api.rs @@ -70,7 +70,7 @@ impl Api policy_address: Option, liveness_check_interval: Option, ) -> Result { - let (commit_tx, mut commit_rx) = mpsc::channel::(10); + let (commit_tx, commit_rx) = mpsc::channel::(10); let (commit_notify_tx, _) = tokio::sync::broadcast::channel(20); let dispatch = diff --git a/crates/chronicle-signing/Cargo.toml b/crates/chronicle-signing/Cargo.toml index 0db125aa0..b9d263007 100644 --- a/crates/chronicle-signing/Cargo.toml +++ b/crates/chronicle-signing/Cargo.toml @@ -17,6 +17,7 @@ tokio = { workspace = true } tokio-stream = { workspace = true } tracing = { workspace = true } url = { workspace = true } +hex = {workspace = true} vaultrs = { workspace = true } [dev-dependencies] diff --git a/crates/chronicle-signing/src/embedded_secret_manager_source.rs b/crates/chronicle-signing/src/embedded_secret_manager_source.rs index bb59dd9e6..9e57ad1ea 100644 --- a/crates/chronicle-signing/src/embedded_secret_manager_source.rs +++ b/crates/chronicle-signing/src/embedded_secret_manager_source.rs @@ -1,6 +1,5 @@ use async_trait::async_trait; use k256::{ - pkcs8::{EncodePrivateKey, LineEnding}, SecretKey, }; use rand::{rngs::StdRng, SeedableRng}; @@ -30,17 +29,16 @@ impl EmbeddedSecretManagerSource { } } -fn new_signing_key(name: &str, seeds: &BTreeMap) -> Result, SecretError> { +fn new_signing_key(name: &str, seeds: &BTreeMap) -> Result { let secret = if let Some(seed) = seeds.get(name) { SecretKey::from_be_bytes(seed).map_err(|_| SecretError::BadSeed)? } else { SecretKey::random(StdRng::from_entropy()) }; - let privpem = secret - .to_pkcs8_pem(LineEnding::CRLF) - .map_err(|_| SecretError::InvalidPrivateKey)?; + let secret_bytes = secret.to_be_bytes(); + let hex_encoded = format!("0x{}", hex::encode(secret_bytes)); - Ok(privpem.as_bytes().into()) + Ok(hex_encoded) } #[async_trait] @@ -62,7 +60,7 @@ impl SecretsSource for EmbeddedSecretManagerSource { let secret = secrets.entry(secret_ref.clone()).or_insert_with(|| { let secret = new_signing_key(secret_ref.key.secret_name.as_ref(), &self.seeds).unwrap(); - secret.to_vec() + secret.into_bytes() }); let secret_value = SecretValue::from(secret); diff --git a/crates/chronicle-signing/src/lib.rs b/crates/chronicle-signing/src/lib.rs index c70686ec9..51fa2817a 100644 --- a/crates/chronicle-signing/src/lib.rs +++ b/crates/chronicle-signing/src/lib.rs @@ -2,8 +2,7 @@ use k256::{ ecdsa::{ signature::{Signer, Verifier}, Signature, SigningKey, VerifyingKey, - }, - pkcs8::DecodePrivateKey, + } }; use secret_vault::{ errors::SecretVaultError, FilesSource, FilesSourceOptions, MultipleSecretsSources, SecretName, @@ -38,6 +37,8 @@ pub enum SecretError { NoPublicKeyFound, #[error("No private key found")] NoPrivateKeyFound, + #[error("Decoding failure")] + DecodingFailure, #[error("Vault {source}")] SecretVault { @@ -237,11 +238,12 @@ impl WithSecret for ChronicleSigning { let signing_result = secret.value.exposed_in_as_str(|secret| { ( - // Not semantically the same thing as we re-use f - SigningKey::from_pkcs8_pem(&secret) - .map_err(|_| SecretError::InvalidPrivateKey) + // Convert hex encoded seed to SigningKey + hex::decode(secret.trim_start_matches("0x")).map_err(|_| SecretError::DecodingFailure).and_then( + |secret| SigningKey::from_bytes(&secret) + .map_err(|_| SecretError::InvalidPrivateKey)) .map(&f), - secret, + secret ) }); @@ -265,10 +267,12 @@ impl WithSecret for ChronicleSigning { let signing_result = secret.value.exposed_in_as_str(|secret| { ( - SigningKey::from_pkcs8_pem(&secret) - .map_err(|_| SecretError::InvalidPrivateKey) + // Convert hex encoded seed to SigningKey + hex::decode(secret.trim_start_matches("0x")).map_err(|_| SecretError::DecodingFailure).and_then( + |secret| SigningKey::from_bytes(&secret) + .map_err(|_| SecretError::InvalidPrivateKey)) .map(|signing_key| f(signing_key.verifying_key())), - secret, + secret ) }); @@ -286,10 +290,12 @@ impl WithSecret for ChronicleSigning { let key = secret.value.exposed_in_as_str(|secret| { ( - SigningKey::from_pkcs8_pem(&secret) - .map_err(|_| SecretError::InvalidPrivateKey) + // Convert hex encoded seed to SigningKey + hex::decode(secret.trim_start_matches("0x")).map_err(|_| SecretError::DecodingFailure).and_then( + |decoded_secret| SigningKey::from_bytes(&decoded_secret) + .map_err(|_| SecretError::InvalidPrivateKey)) .map(|signing_key| signing_key.verifying_key()), - secret, + secret ) }); diff --git a/crates/chronicle-test-infrastructure/Cargo.toml b/crates/chronicle-test-infrastructure/Cargo.toml index df40dcbd7..2c6467704 100644 --- a/crates/chronicle-test-infrastructure/Cargo.toml +++ b/crates/chronicle-test-infrastructure/Cargo.toml @@ -28,7 +28,7 @@ futures = { workspace = true } insta = { workspace = true, features = ["json", "yaml"] } lazy_static = { workspace = true } pallet-chronicle = { path = "../pallet-chronicle" } -parity-scale-codec = { version = "3.4.0", default-features = false, features = [ +parity-scale-codec = { version = "3.6.1", default-features = false, features = [ "derive", ] } portpicker = { workspace = true } diff --git a/crates/chronicle/Cargo.toml b/crates/chronicle/Cargo.toml index 2baf7d639..a8e412d01 100644 --- a/crates/chronicle/Cargo.toml +++ b/crates/chronicle/Cargo.toml @@ -33,8 +33,6 @@ opa = { workspace = true } opentelemetry = { workspace = true } percent-encoding = { workspace = true } question = { workspace = true } -rand = { workspace = true } -rand_core = { workspace = true } serde = { workspace = true } serde_derive = { workspace = true } serde_json = { workspace = true } diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index 40e0bfe67..929ffdcbb 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -28,7 +28,7 @@ diesel = { version = "2.1", features = [ "r2d2", ], optional = true } futures = { version = "0.3", default-features = false } -hashbrown = { version = "0.13", optional = true } +hashbrown = { version = "0.13", default-features = false, optional = true } hex = { version = "0.4", default-features = false, features = ["alloc"] } iref = { version = "2.2", optional = true } iri-string = { version = "^0.7", default-features = false, features = [ @@ -49,7 +49,7 @@ macro-attr-2018 = { workspace = true } mime = { version = "0.3", optional = true } newtype-derive-2018 = { workspace = true } opa = { git = "https://github.com/chronicleworks/opa-rs", rev = "9fa2fbce", optional = true } -parity-scale-codec = { version = "^3.4.0", default-features = false, features = [ +parity-scale-codec = { version = "3.6.1", default-features = false, features = [ "derive", "max-encoded-len", ], optional = true } @@ -78,10 +78,10 @@ serde = { version = "1.0", default-features = false, features = [ "derive", ] } serde_derive = { version = "1.0", default-features = false } -serde_json = { version = "^1.0", default-features = false } +serde_json = { version = "^1.0", default-features = false, features=["alloc"]} serde_yaml = { workspace = true, optional = true } -sp-core = { version = "25.0.0", default-features = false } -sp-std = { version = "11.0.0", optional = true } +sp-core = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } +sp-std = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false, optional = true} thiserror = { workspace = true } thiserror-no-std = { version = "2.0.2" } tracing = { version = "0.1", default-features = false, features = [ @@ -106,10 +106,11 @@ testcontainers = { workspace = true } tokio = { workspace = true } [features] -default = [] +default = ["std"] std = [ "k256/std", "sp-core/std", + "sp-std/std", "tracing/std", "serde/std", "serde_json/std", @@ -121,7 +122,6 @@ std = [ "anyhow/std", "percent-encoding/std", "opa", - "sp-core/full_crypto", "url", "reqwest", "rust-embed", diff --git a/crates/common/src/attributes.rs b/crates/common/src/attributes.rs index 102aa57c3..811aede2a 100644 --- a/crates/common/src/attributes.rs +++ b/crates/common/src/attributes.rs @@ -2,13 +2,13 @@ use std::collections::BTreeSet; #[cfg(not(feature = "std"))] -use parity_scale_codec::{alloc::collections::BTreeMap, alloc::collections::BTreeSet, alloc::string::String, alloc::vec::Vec}; +use parity_scale_codec::{alloc::collections::BTreeSet, alloc::string::String, alloc::vec::Vec}; #[cfg(feature = "parity-encoding")] use parity_scale_codec::Encode; #[cfg(feature = "parity-encoding")] use scale_encode::error::Kind; #[cfg(not(feature = "std"))] -use scale_info::{prelude::*, prelude::borrow::ToOwned, prelude::string::ToString}; +use scale_info::{prelude::borrow::ToOwned}; use serde_json::Value; use crate::prov::DomaintypeId; diff --git a/crates/common/src/identity.rs b/crates/common/src/identity.rs index 585aa4210..b3419678a 100644 --- a/crates/common/src/identity.rs +++ b/crates/common/src/identity.rs @@ -7,10 +7,10 @@ use k256::sha2::{Digest, Sha512}; #[cfg(not(feature = "std"))] use parity_scale_codec::{ alloc::collections::BTreeMap, alloc::collections::BTreeSet, alloc::string::String, - alloc::vec::Vec, Decode, Encode, + alloc::vec::Vec }; #[cfg(not(feature = "std"))] -use scale_info::{prelude::*, prelude::borrow::ToOwned, prelude::string::ToString, TypeInfo}; +use scale_info::{prelude::borrow::ToOwned, prelude::string::ToString}; use serde_json::{Map, Value}; #[cfg(feature = "std")] use thiserror::Error; diff --git a/crates/common/src/ledger.rs b/crates/common/src/ledger.rs index 96a33b174..1d7d5b9da 100644 --- a/crates/common/src/ledger.rs +++ b/crates/common/src/ledger.rs @@ -14,13 +14,10 @@ use crate::{ }, }; -#[cfg(not(feature = "std"))] -use core::str::FromStr; #[cfg(not(feature = "std"))] use parity_scale_codec::{ alloc::boxed::Box, alloc::collections::btree_map::Entry, alloc::collections::BTreeMap, - alloc::collections::BTreeSet, alloc::string::String, alloc::sync::Arc, alloc::vec::Vec, Decode, - Encode, + alloc::collections::BTreeSet, alloc::string::String, alloc::sync::Arc, alloc::vec::Vec }; #[cfg(not(feature = "std"))] use scale_info::prelude::*; diff --git a/crates/common/src/opa/core.rs b/crates/common/src/opa/core.rs index 7658121bc..ad541b4cb 100644 --- a/crates/common/src/opa/core.rs +++ b/crates/common/src/opa/core.rs @@ -30,9 +30,6 @@ impl H128 { } } -#[cfg(not(feature = "std"))] -use scale_info::prelude::format; - #[cfg_attr( feature = "parity-encoding", derive( diff --git a/crates/common/src/prov/id/mod.rs b/crates/common/src/prov/id/mod.rs index 557b59eee..dd38d80b4 100644 --- a/crates/common/src/prov/id/mod.rs +++ b/crates/common/src/prov/id/mod.rs @@ -17,7 +17,7 @@ use parity_scale_codec::{alloc::string::String, alloc::vec::Vec}; #[cfg(not(feature = "std"))] use scale_info::{ - prelude::borrow::ToOwned, prelude::string::ToString, prelude::sync::Arc, prelude::*, + prelude::borrow::ToOwned, prelude::string::ToString, prelude::*, }; #[cfg(feature = "diesel-bindings")] diff --git a/crates/common/src/prov/model/json_ld/from_json_ld.rs b/crates/common/src/prov/model/json_ld/from_json_ld.rs index e83c2f5b1..9e38f6e2f 100644 --- a/crates/common/src/prov/model/json_ld/from_json_ld.rs +++ b/crates/common/src/prov/model/json_ld/from_json_ld.rs @@ -488,7 +488,6 @@ trait Operation { fn activity(&self) -> Option; fn optional_role(&self) -> Option; fn start_time(&self) -> Option; - fn locator(&self) -> Option; fn end_time(&self) -> Option; fn entity(&self) -> Option; fn used_entity(&self) -> Option; @@ -616,12 +615,6 @@ impl Operation for Node { Some(ActivityId::from_external_id(external_id)) } - fn locator(&self) -> Option { - let mut objects = self.get(&id_from_iri_string(vocab::ChronicleOperation::Locator)); - let locator = objects.next()?; - Some(locator.as_str()?.to_owned()) - } - fn informing_activity(&self) -> Option { let mut name_objects = self.get(&id_from_iri_string(vocab::ChronicleOperation::InformingActivityName)); diff --git a/crates/common/src/prov/model/mod.rs b/crates/common/src/prov/model/mod.rs index 472637191..6fc956d53 100644 --- a/crates/common/src/prov/model/mod.rs +++ b/crates/common/src/prov/model/mod.rs @@ -18,7 +18,7 @@ use parity_scale_codec::{ }; #[cfg(not(feature = "std"))] use scale_info::{ - prelude::borrow::ToOwned, prelude::string::ToString, prelude::sync::Arc, prelude::*, + prelude::borrow::ToOwned, prelude::sync::Arc, }; use serde::Serialize; #[cfg(feature = "std")] diff --git a/crates/opactl/Cargo.toml b/crates/opactl/Cargo.toml index 817a79a9c..ee3a4fb68 100644 --- a/crates/opactl/Cargo.toml +++ b/crates/opactl/Cargo.toml @@ -40,7 +40,7 @@ frame-system = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = ' hex = { workspace = true } insta = { workspace = true, features = ["yaml"] } pallet-opa = { path = "../pallet-opa", features = ["std"] } -parity-scale-codec = { version = "3.4.0", default-features = false, features = [ +parity-scale-codec = { version = "3.6.1", default-features = false, features = [ "derive", ] } diff --git a/crates/pallet-chronicle/Cargo.toml b/crates/pallet-chronicle/Cargo.toml index 9bde56245..bba5a0904 100644 --- a/crates/pallet-chronicle/Cargo.toml +++ b/crates/pallet-chronicle/Cargo.toml @@ -15,11 +15,10 @@ frame-benchmarking = { git = 'https://github.com/paritytech/polkadot-sdk.git', t 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 } sp-core = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } -sp-core-hashing = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } sp-std = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } macro-attr-2018 = { workspace = true } newtype-derive-2018 = { workspace = true } -parity-scale-codec = { version = "^3.4.0", default-features = false, features = [ +parity-scale-codec = { version = "3.6.1", default-features = false, features = [ "derive", ] } scale-info = { version = "^2.10.0", default-features = false, features = [ diff --git a/crates/pallet-chronicle/src/lib.rs b/crates/pallet-chronicle/src/lib.rs index 8a56ee007..2dede4d0c 100644 --- a/crates/pallet-chronicle/src/lib.rs +++ b/crates/pallet-chronicle/src/lib.rs @@ -38,6 +38,7 @@ pub mod pallet { use common::ledger::OperationSubmission; use frame_support::{pallet_prelude::*, traits::BuildGenesisConfig}; use frame_system::pallet_prelude::*; + use sp_core::blake2_128; use sp_std::{collections::btree_set::BTreeSet, vec::Vec}; #[pallet::pallet] @@ -73,7 +74,7 @@ pub mod pallet { tracing::info!("Chronicle: Building genesis configuration."); if let Some(ref settings) = self.opa_settings { OpaSettings::::put(Some(common::opa::OpaSettings { - policy_address: common::opa::PolicyAddress::from(sp_core_hashing::blake2_128( + policy_address: common::opa::PolicyAddress::from(blake2_128( settings.policy_name.as_bytes(), )), policy_name: settings.policy_name.clone(), diff --git a/crates/pallet-chronicle/tree.txt b/crates/pallet-chronicle/tree.txt index c4b35efba..04d2e1820 100644 --- a/crates/pallet-chronicle/tree.txt +++ b/crates/pallet-chronicle/tree.txt @@ -1,1257 +1,2021 @@ pallet-chronicle v0.7.5 (/Users/ryan/code/chronicle/crates/pallet-chronicle) -├── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) -│ ├── anyhow v1.0.75 -│ ├── async-trait v0.1.74 (proc-macro) -│ │ ├── proc-macro2 v1.0.69 -│ │ │ └── unicode-ident v1.0.12 -│ │ ├── quote v1.0.33 -│ │ │ └── proc-macro2 v1.0.69 (*) -│ │ └── syn v2.0.38 -│ │ ├── proc-macro2 v1.0.69 (*) -│ │ ├── quote v1.0.33 (*) -│ │ └── unicode-ident v1.0.12 -│ ├── chrono v0.4.31 -│ │ ├── js-sys v0.3.64 -│ │ │ └── wasm-bindgen v0.2.87 -│ │ │ ├── cfg-if v1.0.0 -│ │ │ └── wasm-bindgen-macro v0.2.87 (proc-macro) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── wasm-bindgen-macro-support v0.2.87 -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ ├── syn v2.0.38 (*) -│ │ │ ├── wasm-bindgen-backend v0.2.87 -│ │ │ │ ├── bumpalo v3.14.0 -│ │ │ │ ├── log v0.4.20 -│ │ │ │ ├── once_cell v1.18.0 -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ ├── syn v2.0.38 (*) -│ │ │ │ └── wasm-bindgen-shared v0.2.87 -│ │ │ └── wasm-bindgen-shared v0.2.87 -│ │ ├── num-traits v0.2.17 +├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── array-bytes v6.2.3 +│ ├── environmental v1.1.4 +│ ├── log v0.4.21 +│ ├── sp-arithmetic v23.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── num-traits v0.2.19 │ │ │ [build-dependencies] -│ │ │ └── autocfg v1.1.0 -│ │ ├── serde v1.0.190 -│ │ │ └── serde_derive v1.0.190 (proc-macro) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v2.0.38 (*) -│ │ └── wasm-bindgen v0.2.87 (*) -│ ├── futures v0.3.29 -│ │ ├── futures-channel v0.3.29 -│ │ │ ├── futures-core v0.3.29 -│ │ │ └── futures-sink v0.3.29 -│ │ ├── futures-core v0.3.29 -│ │ ├── futures-executor v0.3.29 -│ │ │ ├── futures-core v0.3.29 -│ │ │ ├── futures-task v0.3.29 -│ │ │ ├── futures-util v0.3.29 -│ │ │ │ ├── futures-channel v0.3.29 (*) -│ │ │ │ ├── futures-core v0.3.29 -│ │ │ │ ├── futures-io v0.3.29 -│ │ │ │ ├── futures-macro v0.3.29 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ ├── futures-sink v0.3.29 -│ │ │ │ ├── futures-task v0.3.29 -│ │ │ │ ├── memchr v2.6.4 -│ │ │ │ ├── pin-project-lite v0.2.13 -│ │ │ │ ├── pin-utils v0.1.0 -│ │ │ │ └── slab v0.4.9 -│ │ │ │ [build-dependencies] -│ │ │ │ └── autocfg v1.1.0 -│ │ │ └── num_cpus v1.16.0 -│ │ │ └── libc v0.2.149 -│ │ ├── futures-io v0.3.29 -│ │ ├── futures-sink v0.3.29 -│ │ ├── futures-task v0.3.29 -│ │ └── futures-util v0.3.29 (*) -│ ├── glob v0.3.1 -│ ├── hex v0.4.3 -│ ├── iref v2.2.3 -│ │ ├── pct-str v1.2.0 -│ │ │ └── utf8-decode v1.0.1 -│ │ └── smallvec v1.11.1 -│ ├── iref-enum v2.1.0 (proc-macro) -│ │ ├── iref v2.2.3 -│ │ │ ├── pct-str v1.2.0 -│ │ │ │ └── utf8-decode v1.0.1 -│ │ │ └── smallvec v1.11.1 -│ │ ├── proc-macro2 v1.0.69 (*) -│ │ ├── quote v1.0.33 (*) -│ │ └── syn v1.0.109 -│ │ ├── proc-macro2 v1.0.69 (*) -│ │ ├── quote v1.0.33 (*) -│ │ └── unicode-ident v1.0.12 -│ ├── k256 v0.11.6 -│ │ ├── cfg-if v1.0.0 -│ │ ├── ecdsa v0.14.8 -│ │ │ ├── der v0.6.1 -│ │ │ │ └── const-oid v0.9.5 -│ │ │ ├── elliptic-curve v0.12.3 -│ │ │ │ ├── base16ct v0.1.1 -│ │ │ │ ├── crypto-bigint v0.4.9 -│ │ │ │ │ ├── generic-array v0.14.7 -│ │ │ │ │ │ ├── typenum v1.17.0 -│ │ │ │ │ │ └── zeroize v1.6.0 -│ │ │ │ │ │ └── zeroize_derive v1.4.2 (proc-macro) -│ │ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ └── version_check v0.9.4 -│ │ │ │ │ ├── rand_core v0.6.4 -│ │ │ │ │ │ └── getrandom v0.2.10 -│ │ │ │ │ │ └── cfg-if v1.0.0 -│ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ ├── der v0.6.1 (*) +│ │ │ └── autocfg feature "default" +│ │ │ └── autocfg v1.3.0 +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── serde feature "alloc" +│ │ │ └── serde v1.0.203 +│ │ ├── serde feature "derive" +│ │ │ ├── serde v1.0.203 +│ │ │ └── serde feature "serde_derive" +│ │ │ └── serde v1.0.203 +│ │ ├── parity-scale-codec feature "derive" +│ │ │ ├── parity-scale-codec v3.6.12 +│ │ │ │ ├── arrayvec v0.7.4 +│ │ │ │ ├── byte-slice-cast v1.2.2 +│ │ │ │ └── bytes v1.6.0 +│ │ │ └── parity-scale-codec feature "parity-scale-codec-derive" +│ │ │ └── parity-scale-codec v3.6.12 (*) +│ │ ├── parity-scale-codec feature "max-encoded-len" +│ │ │ └── parity-scale-codec v3.6.12 (*) +│ │ ├── scale-info feature "derive" +│ │ │ ├── scale-info v2.11.3 +│ │ │ │ ├── cfg-if feature "default" +│ │ │ │ │ └── cfg-if v1.0.0 +│ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ ├── serde feature "derive" (*) +│ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ └── bitvec feature "alloc" +│ │ │ │ └── bitvec v1.0.1 +│ │ │ │ ├── funty v2.0.0 +│ │ │ │ ├── wyz v0.5.1 +│ │ │ │ │ └── tap feature "default" +│ │ │ │ │ └── tap v1.0.1 +│ │ │ │ ├── radium feature "default" +│ │ │ │ │ └── radium v0.7.0 +│ │ │ │ └── tap feature "default" (*) +│ │ │ └── scale-info feature "scale-info-derive" +│ │ │ └── scale-info v2.11.3 (*) +│ │ ├── static_assertions feature "default" +│ │ │ └── static_assertions v1.1.0 +│ │ └── integer-sqrt feature "default" +│ │ └── integer-sqrt v0.1.5 +│ │ └── num-traits v0.2.19 (*) +│ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── blake2 v0.10.6 +│ │ │ ├── digest feature "default" │ │ │ │ ├── digest v0.10.7 -│ │ │ │ │ ├── block-buffer v0.10.4 -│ │ │ │ │ │ └── generic-array v0.14.7 (*) -│ │ │ │ │ ├── const-oid v0.9.5 -│ │ │ │ │ ├── crypto-common v0.1.6 -│ │ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ │ └── typenum v1.17.0 -│ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ ├── ff v0.12.1 -│ │ │ │ │ ├── rand_core v0.6.4 (*) -│ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ ├── group v0.12.1 -│ │ │ │ │ ├── ff v0.12.1 (*) -│ │ │ │ │ ├── rand_core v0.6.4 (*) -│ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ ├── pkcs8 v0.9.0 -│ │ │ │ │ ├── der v0.6.1 (*) -│ │ │ │ │ └── spki v0.6.0 -│ │ │ │ │ └── der v0.6.1 (*) -│ │ │ │ ├── rand_core v0.6.4 (*) -│ │ │ │ ├── sec1 v0.3.0 -│ │ │ │ │ ├── base16ct v0.1.1 -│ │ │ │ │ ├── der v0.6.1 (*) -│ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ ├── subtle v2.4.1 -│ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ ├── rfc6979 v0.3.1 -│ │ │ │ ├── crypto-bigint v0.4.9 (*) -│ │ │ │ ├── hmac v0.12.1 -│ │ │ │ │ └── digest v0.10.7 (*) -│ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ └── signature v1.6.4 -│ │ │ ├── digest v0.10.7 (*) -│ │ │ └── rand_core v0.6.4 (*) -│ │ ├── elliptic-curve v0.12.3 (*) -│ │ └── sha2 v0.10.8 -│ │ ├── cfg-if v1.0.0 -│ │ └── digest v0.10.7 (*) -│ ├── lazy_static v1.4.0 -│ ├── locspan v0.7.16 -│ ├── macro-attr-2018 v3.0.0 -│ ├── mime v0.3.17 -│ ├── newtype-derive-2018 v0.2.1 -│ │ └── generics v0.5.1 -│ ├── parity-scale-codec v3.6.5 -│ │ ├── arrayvec v0.7.4 -│ │ ├── byte-slice-cast v1.2.2 -│ │ ├── bytes v1.5.0 -│ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v1.0.109 (*) -│ │ ├── parity-scale-codec-derive v3.6.5 (proc-macro) -│ │ │ ├── proc-macro-crate v1.1.3 -│ │ │ │ ├── thiserror v1.0.50 -│ │ │ │ │ └── thiserror-impl v1.0.50 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ └── toml v0.5.11 -│ │ │ │ └── serde v1.0.190 -│ │ │ │ └── serde_derive v1.0.190 (proc-macro) (*) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v1.0.109 (*) -│ │ └── serde v1.0.190 (*) -│ ├── percent-encoding v2.3.0 -│ ├── scale-info v2.10.0 -│ │ ├── cfg-if v1.0.0 -│ │ ├── derive_more v0.99.17 (proc-macro) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v1.0.109 (*) -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── scale-info-derive v2.10.0 (proc-macro) -│ │ │ ├── proc-macro-crate v1.1.3 (*) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v1.0.109 (*) -│ │ └── serde v1.0.190 (*) -│ ├── serde v1.0.190 (*) -│ ├── serde_derive v1.0.190 (proc-macro) (*) -│ ├── serde_json v1.0.108 -│ │ ├── itoa v1.0.9 -│ │ ├── ryu v1.0.15 -│ │ └── serde v1.0.190 (*) -│ ├── static-iref v2.0.0 (proc-macro) -│ │ └── iref v2.2.3 (*) -│ ├── thiserror v1.0.50 -│ │ └── thiserror-impl v1.0.50 (proc-macro) (*) -│ ├── thiserror-no-std v2.0.2 -│ │ └── thiserror-impl-no-std v2.0.2 (proc-macro) -│ │ ├── proc-macro2 v1.0.69 (*) -│ │ ├── quote v1.0.33 (*) -│ │ └── syn v1.0.109 (*) -│ ├── tracing v0.1.40 -│ │ ├── pin-project-lite v0.2.13 -│ │ ├── tracing-attributes v0.1.27 (proc-macro) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v2.0.38 (*) -│ │ └── tracing-core v0.1.32 -│ │ └── once_cell v1.18.0 -│ ├── url v2.4.1 -│ │ ├── form_urlencoded v1.2.0 -│ │ │ └── percent-encoding v2.3.0 -│ │ ├── idna v0.4.0 -│ │ │ ├── unicode-bidi v0.3.13 -│ │ │ └── unicode-normalization v0.1.22 -│ │ │ └── tinyvec v1.6.0 -│ │ │ └── tinyvec_macros v0.1.1 -│ │ ├── percent-encoding v2.3.0 -│ │ └── serde v1.0.190 (*) -│ └── uuid v1.5.0 -│ └── serde v1.0.190 (*) -│ [build-dependencies] -│ ├── glob v0.3.1 -│ ├── lazy_static v1.4.0 -│ └── serde_json v1.0.108 -│ ├── itoa v1.0.9 -│ ├── ryu v1.0.15 -│ └── serde v1.0.190 (*) -├── frame-support v24.0.0 -│ ├── aquamarine v0.3.2 (proc-macro) -│ │ ├── include_dir v0.7.3 -│ │ │ └── include_dir_macros v0.7.3 (proc-macro) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ └── quote v1.0.33 (*) -│ │ ├── itertools v0.10.5 -│ │ │ └── either v1.9.0 -│ │ ├── proc-macro-error v1.0.4 -│ │ │ ├── proc-macro-error-attr v1.0.4 (proc-macro) -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ └── quote v1.0.33 (*) -│ │ │ │ [build-dependencies] -│ │ │ │ └── version_check v0.9.4 -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v1.0.109 (*) -│ │ │ [build-dependencies] -│ │ │ └── version_check v0.9.4 -│ │ ├── proc-macro2 v1.0.69 (*) -│ │ ├── quote v1.0.33 (*) -│ │ └── syn v1.0.109 (*) -│ ├── bitflags v1.3.2 -│ ├── docify v0.2.6 -│ │ └── docify_macros v0.2.6 (proc-macro) -│ │ ├── common-path v1.0.0 -│ │ ├── derive-syn-parse v0.1.5 (proc-macro) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v1.0.109 (*) -│ │ ├── once_cell v1.18.0 -│ │ ├── proc-macro2 v1.0.69 (*) -│ │ ├── quote v1.0.33 (*) -│ │ ├── regex v1.10.2 -│ │ │ ├── aho-corasick v1.1.2 -│ │ │ │ └── memchr v2.6.4 -│ │ │ ├── memchr v2.6.4 -│ │ │ ├── regex-automata v0.4.3 -│ │ │ │ ├── aho-corasick v1.1.2 (*) -│ │ │ │ ├── memchr v2.6.4 -│ │ │ │ └── regex-syntax v0.8.2 -│ │ │ └── regex-syntax v0.8.2 -│ │ ├── syn v2.0.38 (*) -│ │ ├── termcolor v1.3.0 -│ │ ├── toml v0.7.8 -│ │ │ ├── serde v1.0.190 (*) -│ │ │ ├── serde_spanned v0.6.4 -│ │ │ │ └── serde v1.0.190 (*) -│ │ │ ├── toml_datetime v0.6.5 -│ │ │ │ └── serde v1.0.190 (*) -│ │ │ └── toml_edit v0.19.15 -│ │ │ ├── indexmap v2.0.2 -│ │ │ │ ├── equivalent v1.0.1 -│ │ │ │ └── hashbrown v0.14.2 -│ │ │ ├── serde v1.0.190 (*) -│ │ │ ├── serde_spanned v0.6.4 (*) -│ │ │ ├── toml_datetime v0.6.5 (*) -│ │ │ └── winnow v0.5.17 -│ │ └── walkdir v2.4.0 -│ │ └── same-file v1.0.6 -│ ├── environmental v1.1.4 -│ ├── frame-metadata v16.0.0 -│ │ ├── cfg-if v1.0.0 -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ └── scale-info v2.10.0 (*) -│ ├── frame-support-procedural v19.0.0 (proc-macro) -│ │ ├── Inflector v0.11.4 -│ │ │ ├── lazy_static v1.4.0 -│ │ │ └── regex v1.10.2 (*) -│ │ ├── cfg-expr v0.15.5 -│ │ │ └── smallvec v1.11.1 -│ │ ├── derive-syn-parse v0.1.5 (proc-macro) (*) -│ │ ├── expander v2.0.0 -│ │ │ ├── blake2 v0.10.6 -│ │ │ │ └── digest v0.10.7 -│ │ │ │ ├── block-buffer v0.10.4 -│ │ │ │ │ └── generic-array v0.14.7 -│ │ │ │ │ └── typenum v1.17.0 -│ │ │ │ │ [build-dependencies] -│ │ │ │ │ └── version_check v0.9.4 -│ │ │ │ ├── crypto-common v0.1.6 -│ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ └── typenum v1.17.0 -│ │ │ │ └── subtle v2.4.1 -│ │ │ ├── fs-err v2.9.0 -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v2.0.38 (*) -│ │ ├── frame-support-procedural-tools v8.0.0 -│ │ │ ├── frame-support-procedural-tools-derive v9.0.0 (proc-macro) -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v2.0.38 (*) -│ │ │ ├── proc-macro-crate v1.1.3 (*) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v2.0.38 (*) -│ │ ├── itertools v0.10.5 (*) -│ │ ├── macro_magic v0.4.2 -│ │ │ ├── macro_magic_core v0.4.2 -│ │ │ │ ├── const-random v0.1.16 -│ │ │ │ │ └── const-random-macro v0.1.16 (proc-macro) -│ │ │ │ │ ├── getrandom v0.2.10 -│ │ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ │ └── libc v0.2.149 -│ │ │ │ │ ├── once_cell v1.18.0 -│ │ │ │ │ └── tiny-keccak v2.0.2 -│ │ │ │ │ └── crunchy v0.2.2 -│ │ │ │ ├── derive-syn-parse v0.1.5 (proc-macro) (*) -│ │ │ │ ├── macro_magic_core_macros v0.4.3 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v2.0.38 (*) -│ │ │ ├── macro_magic_macros v0.4.2 (proc-macro) -│ │ │ │ ├── macro_magic_core v0.4.2 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v2.0.38 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v2.0.38 (*) -│ │ ├── proc-macro-warning v0.4.2 -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v2.0.38 (*) -│ │ ├── proc-macro2 v1.0.69 (*) -│ │ ├── quote v1.0.33 (*) -│ │ └── syn v2.0.38 (*) -│ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ ├── k256 v0.13.1 -│ │ ├── cfg-if v1.0.0 -│ │ ├── ecdsa v0.16.8 -│ │ │ ├── der v0.7.8 -│ │ │ │ ├── const-oid v0.9.5 -│ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ ├── digest v0.10.7 (*) -│ │ │ ├── elliptic-curve v0.13.6 -│ │ │ │ ├── base16ct v0.2.0 -│ │ │ │ ├── crypto-bigint v0.5.3 -│ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ ├── rand_core v0.6.4 (*) -│ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ ├── ff v0.13.0 -│ │ │ │ │ ├── rand_core v0.6.4 (*) -│ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ ├── group v0.13.0 -│ │ │ │ │ ├── ff v0.13.0 (*) -│ │ │ │ │ ├── rand_core v0.6.4 (*) -│ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ ├── rand_core v0.6.4 (*) -│ │ │ │ ├── sec1 v0.7.3 -│ │ │ │ │ ├── base16ct v0.2.0 -│ │ │ │ │ ├── der v0.7.8 (*) -│ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ ├── subtle v2.4.1 -│ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ ├── rfc6979 v0.4.0 -│ │ │ │ ├── hmac v0.12.1 (*) -│ │ │ │ └── subtle v2.4.1 -│ │ │ └── signature v2.1.0 +│ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ ├── const-oid feature "default" +│ │ │ │ │ │ └── const-oid v0.9.6 +│ │ │ │ │ ├── block-buffer feature "default" +│ │ │ │ │ │ └── block-buffer v0.10.4 +│ │ │ │ │ │ └── generic-array feature "default" +│ │ │ │ │ │ └── generic-array v0.14.7 +│ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ └── typenum feature "default" +│ │ │ │ │ │ └── typenum v1.17.0 +│ │ │ │ │ │ [build-dependencies] +│ │ │ │ │ │ └── version_check feature "default" +│ │ │ │ │ │ └── version_check v0.9.4 +│ │ │ │ │ └── crypto-common feature "default" +│ │ │ │ │ └── crypto-common v0.1.6 +│ │ │ │ │ ├── generic-array feature "default" (*) +│ │ │ │ │ ├── generic-array feature "more_lengths" +│ │ │ │ │ │ └── generic-array v0.14.7 (*) +│ │ │ │ │ └── typenum feature "default" (*) +│ │ │ │ └── digest feature "core-api" +│ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ └── digest feature "block-buffer" +│ │ │ │ └── digest v0.10.7 (*) +│ │ │ └── digest feature "mac" │ │ │ ├── digest v0.10.7 (*) -│ │ │ └── rand_core v0.6.4 (*) -│ │ ├── elliptic-curve v0.13.6 (*) -│ │ └── sha2 v0.10.8 (*) -│ ├── log v0.4.20 -│ ├── macro_magic v0.4.2 -│ │ └── macro_magic_macros v0.4.2 (proc-macro) (*) -│ ├── parity-scale-codec v3.6.5 (*) -│ ├── paste v1.0.14 (proc-macro) -│ ├── scale-info v2.10.0 (*) -│ ├── serde v1.0.190 (*) -│ ├── serde_json v1.0.108 (*) -│ ├── smallvec v1.11.1 -│ ├── sp-api v22.0.0 -│ │ ├── log v0.4.20 -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── scale-info v2.10.0 (*) -│ │ ├── sp-api-proc-macro v11.0.0 (proc-macro) -│ │ │ ├── Inflector v0.11.4 (*) -│ │ │ ├── blake2 v0.10.6 (*) -│ │ │ ├── expander v2.0.0 (*) -│ │ │ ├── proc-macro-crate v1.1.3 (*) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v2.0.38 (*) -│ │ ├── sp-core v24.0.0 -│ │ │ ├── array-bytes v6.1.0 -│ │ │ ├── bitflags v1.3.2 -│ │ │ ├── blake2 v0.10.6 -│ │ │ │ └── digest v0.10.7 (*) -│ │ │ ├── bounded-collections v0.1.9 -│ │ │ │ ├── log v0.4.20 -│ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ └── serde v1.0.190 (*) -│ │ │ ├── bs58 v0.5.0 -│ │ │ ├── dyn-clonable v0.9.0 -│ │ │ │ ├── dyn-clonable-impl v0.9.0 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v1.0.109 (*) -│ │ │ │ └── dyn-clone v1.0.14 -│ │ │ ├── ed25519-zebra v3.1.0 -│ │ │ │ ├── curve25519-dalek v3.2.0 -│ │ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ │ ├── digest v0.9.0 -│ │ │ │ │ │ └── generic-array v0.14.7 (*) -│ │ │ │ │ ├── rand_core v0.5.1 -│ │ │ │ │ │ └── getrandom v0.1.16 -│ │ │ │ │ │ └── cfg-if v1.0.0 -│ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ └── zeroize v1.6.0 (*) +│ │ │ └── digest feature "subtle" +│ │ │ └── digest v0.10.7 (*) +│ │ ├── bounded-collections v0.2.0 +│ │ │ ├── log v0.4.21 +│ │ │ ├── serde feature "alloc" (*) +│ │ │ ├── serde feature "derive" (*) +│ │ │ ├── parity-scale-codec feature "max-encoded-len" (*) +│ │ │ └── scale-info feature "derive" (*) +│ │ ├── bs58 v0.5.1 +│ │ ├── ed25519-zebra v3.1.0 +│ │ │ ├── sha2 v0.9.9 +│ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ ├── cpufeatures feature "default" +│ │ │ │ │ └── cpufeatures v0.2.12 +│ │ │ │ │ └── libc feature "default" +│ │ │ │ │ ├── libc v0.2.155 +│ │ │ │ │ └── libc feature "std" +│ │ │ │ │ └── libc v0.2.155 +│ │ │ │ ├── digest feature "default" +│ │ │ │ │ └── digest v0.9.0 +│ │ │ │ │ └── generic-array feature "default" (*) +│ │ │ │ ├── block-buffer feature "default" +│ │ │ │ │ └── block-buffer v0.9.0 +│ │ │ │ │ └── generic-array feature "default" (*) +│ │ │ │ └── opaque-debug feature "default" +│ │ │ │ └── opaque-debug v0.3.1 +│ │ │ ├── hashbrown feature "default" │ │ │ │ ├── hashbrown v0.12.3 -│ │ │ │ │ └── ahash v0.7.7 -│ │ │ │ │ └── once_cell v1.18.0 +│ │ │ │ │ └── ahash v0.7.8 +│ │ │ │ │ ├── once_cell feature "alloc" +│ │ │ │ │ │ ├── once_cell v1.19.0 +│ │ │ │ │ │ └── once_cell feature "race" +│ │ │ │ │ │ └── once_cell v1.19.0 +│ │ │ │ │ └── getrandom feature "default" +│ │ │ │ │ └── getrandom v0.2.15 +│ │ │ │ │ ├── libc v0.2.155 +│ │ │ │ │ └── cfg-if feature "default" (*) │ │ │ │ │ [build-dependencies] -│ │ │ │ │ └── version_check v0.9.4 -│ │ │ │ ├── hex v0.4.3 -│ │ │ │ ├── rand_core v0.6.4 (*) -│ │ │ │ ├── sha2 v0.9.9 -│ │ │ │ │ ├── block-buffer v0.9.0 -│ │ │ │ │ │ └── generic-array v0.14.7 (*) -│ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ ├── digest v0.9.0 (*) -│ │ │ │ │ └── opaque-debug v0.3.0 -│ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ ├── futures v0.3.29 (*) -│ │ │ ├── hash-db v0.16.0 -│ │ │ ├── hash256-std-hasher v0.15.2 -│ │ │ │ └── crunchy v0.2.2 -│ │ │ ├── impl-serde v0.4.0 -│ │ │ │ └── serde v1.0.190 (*) -│ │ │ ├── lazy_static v1.4.0 -│ │ │ ├── libsecp256k1 v0.7.1 -│ │ │ │ ├── arrayref v0.3.7 -│ │ │ │ ├── base64 v0.13.1 -│ │ │ │ ├── digest v0.9.0 (*) -│ │ │ │ ├── hmac-drbg v0.3.0 -│ │ │ │ │ ├── digest v0.9.0 (*) -│ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ └── hmac v0.8.1 -│ │ │ │ │ ├── crypto-mac v0.8.0 -│ │ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ │ └── digest v0.9.0 (*) -│ │ │ │ ├── libsecp256k1-core v0.3.0 -│ │ │ │ │ ├── crunchy v0.2.2 +│ │ │ │ │ └── version_check feature "default" (*) +│ │ │ │ ├── hashbrown feature "ahash" +│ │ │ │ │ └── hashbrown v0.12.3 (*) +│ │ │ │ └── hashbrown feature "inline-more" +│ │ │ │ └── hashbrown v0.12.3 (*) +│ │ │ ├── rand_core feature "default" +│ │ │ │ └── rand_core v0.6.4 +│ │ │ │ └── getrandom feature "default" (*) +│ │ │ ├── hex feature "alloc" +│ │ │ │ └── hex v0.4.3 +│ │ │ ├── zeroize feature "default" +│ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ └── zeroize feature "alloc" +│ │ │ │ └── zeroize v1.8.1 +│ │ │ ├── curve25519-dalek feature "alloc" +│ │ │ │ ├── curve25519-dalek v3.2.0 │ │ │ │ │ ├── digest v0.9.0 (*) -│ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ ├── rand v0.8.5 -│ │ │ │ │ ├── rand_chacha v0.3.1 -│ │ │ │ │ │ ├── ppv-lite86 v0.2.17 -│ │ │ │ │ │ └── rand_core v0.6.4 (*) -│ │ │ │ │ └── rand_core v0.6.4 (*) -│ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ ├── sha2 v0.9.9 (*) -│ │ │ │ └── typenum v1.17.0 -│ │ │ │ [build-dependencies] -│ │ │ │ ├── libsecp256k1-gen-ecmult v0.3.0 -│ │ │ │ │ └── libsecp256k1-core v0.3.0 -│ │ │ │ │ ├── crunchy v0.2.2 -│ │ │ │ │ ├── digest v0.9.0 -│ │ │ │ │ │ └── generic-array v0.14.7 (*) -│ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ └── libsecp256k1-gen-genmult v0.3.0 -│ │ │ │ └── libsecp256k1-core v0.3.0 (*) -│ │ │ ├── log v0.4.20 -│ │ │ ├── merlin v2.0.1 -│ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ ├── keccak v0.1.4 -│ │ │ │ ├── rand_core v0.5.1 (*) -│ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── parking_lot v0.12.1 -│ │ │ │ ├── lock_api v0.4.11 -│ │ │ │ │ └── scopeguard v1.2.0 -│ │ │ │ │ [build-dependencies] -│ │ │ │ │ └── autocfg v1.1.0 -│ │ │ │ └── parking_lot_core v0.9.9 -│ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ └── smallvec v1.11.1 -│ │ │ ├── paste v1.0.14 (proc-macro) +│ │ │ │ │ ├── rand_core v0.5.1 +│ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ └── byteorder feature "i128" +│ │ │ │ │ └── byteorder v1.5.0 +│ │ │ │ └── zeroize feature "alloc" (*) +│ │ │ └── curve25519-dalek feature "u64_backend" +│ │ │ └── curve25519-dalek v3.2.0 (*) +│ │ ├── hash-db v0.16.0 +│ │ ├── hash256-std-hasher v0.15.2 +│ │ │ └── crunchy feature "default" +│ │ │ ├── crunchy v0.2.2 +│ │ │ └── crunchy feature "limit_128" +│ │ │ └── crunchy v0.2.2 +│ │ ├── impl-serde v0.4.0 +│ │ │ └── serde feature "alloc" (*) +│ │ ├── log v0.4.21 +│ │ ├── merlin v3.0.0 +│ │ │ ├── byteorder v1.5.0 +│ │ │ ├── keccak v0.1.5 +│ │ │ │ └── cpufeatures feature "default" (*) +│ │ │ ├── rand_core v0.6.4 (*) +│ │ │ └── zeroize feature "zeroize_derive" +│ │ │ └── zeroize v1.8.1 +│ │ ├── sp-crypto-hashing v0.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── blake2b_simd v1.0.2 +│ │ │ │ ├── arrayvec v0.7.4 +│ │ │ │ ├── arrayref feature "default" +│ │ │ │ │ └── arrayref v0.3.7 +│ │ │ │ └── constant_time_eq feature "default" +│ │ │ │ └── constant_time_eq v0.3.0 +│ │ │ ├── byteorder v1.5.0 +│ │ │ ├── digest v0.10.7 (*) +│ │ │ ├── sha2 v0.10.8 +│ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ ├── digest feature "default" (*) +│ │ │ │ └── cpufeatures feature "default" (*) +│ │ │ ├── sha3 v0.10.8 +│ │ │ │ ├── digest feature "default" (*) +│ │ │ │ └── keccak feature "default" +│ │ │ │ └── keccak v0.1.5 (*) +│ │ │ └── twox-hash feature "digest_0_10" +│ │ │ └── twox-hash v1.6.3 +│ │ │ ├── cfg-if v1.0.0 +│ │ │ ├── digest v0.10.7 (*) +│ │ │ ├── static_assertions v1.1.0 +│ │ │ └── rand feature "default" +│ │ │ ├── rand v0.8.5 +│ │ │ │ ├── libc v0.2.155 +│ │ │ │ ├── rand_chacha v0.3.1 +│ │ │ │ │ ├── ppv-lite86 feature "simd" +│ │ │ │ │ │ └── ppv-lite86 v0.2.17 +│ │ │ │ │ └── rand_core feature "default" (*) +│ │ │ │ └── rand_core feature "default" (*) +│ │ │ ├── rand feature "std" +│ │ │ │ ├── rand v0.8.5 (*) +│ │ │ │ ├── rand feature "alloc" +│ │ │ │ │ ├── rand v0.8.5 (*) +│ │ │ │ │ └── rand_core feature "alloc" +│ │ │ │ │ └── rand_core v0.6.4 (*) +│ │ │ │ ├── rand feature "getrandom" +│ │ │ │ │ ├── rand v0.8.5 (*) +│ │ │ │ │ └── rand_core feature "getrandom" +│ │ │ │ │ └── rand_core v0.6.4 (*) +│ │ │ │ ├── rand feature "libc" +│ │ │ │ │ └── rand v0.8.5 (*) +│ │ │ │ ├── rand feature "rand_chacha" +│ │ │ │ │ └── rand v0.8.5 (*) +│ │ │ │ ├── rand_chacha feature "std" +│ │ │ │ │ ├── rand_chacha v0.3.1 (*) +│ │ │ │ │ └── ppv-lite86 feature "std" +│ │ │ │ │ └── ppv-lite86 v0.2.17 +│ │ │ │ └── rand_core feature "std" +│ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ ├── getrandom feature "std" +│ │ │ │ │ └── getrandom v0.2.15 (*) +│ │ │ │ ├── rand_core feature "alloc" (*) +│ │ │ │ └── rand_core feature "getrandom" (*) +│ │ │ └── rand feature "std_rng" +│ │ │ ├── rand v0.8.5 (*) +│ │ │ └── rand feature "rand_chacha" (*) +│ │ ├── sp-runtime-interface v24.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── bytes v1.6.0 │ │ │ ├── primitive-types v0.12.2 │ │ │ │ ├── fixed-hash v0.8.0 -│ │ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ │ ├── rand v0.8.5 (*) -│ │ │ │ │ ├── rustc-hex v2.1.0 -│ │ │ │ │ └── static_assertions v1.1.0 +│ │ │ │ │ └── static_assertions feature "default" (*) │ │ │ │ ├── impl-codec v0.6.0 -│ │ │ │ │ └── parity-scale-codec v3.6.5 (*) +│ │ │ │ │ └── parity-scale-codec feature "max-encoded-len" (*) │ │ │ │ ├── impl-serde v0.4.0 (*) -│ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ └── uint v0.9.5 -│ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ ├── crunchy v0.2.2 -│ │ │ │ ├── hex v0.4.3 -│ │ │ │ └── static_assertions v1.1.0 -│ │ │ ├── rand v0.8.5 (*) -│ │ │ ├── regex v1.10.2 -│ │ │ │ ├── aho-corasick v1.1.2 -│ │ │ │ │ └── memchr v2.6.4 -│ │ │ │ ├── memchr v2.6.4 -│ │ │ │ ├── regex-automata v0.4.3 -│ │ │ │ │ ├── aho-corasick v1.1.2 (*) -│ │ │ │ │ ├── memchr v2.6.4 -│ │ │ │ │ └── regex-syntax v0.8.2 -│ │ │ │ └── regex-syntax v0.8.2 -│ │ │ ├── scale-info v2.10.0 (*) -│ │ │ ├── schnorrkel v0.9.1 -│ │ │ │ ├── arrayref v0.3.7 -│ │ │ │ ├── arrayvec v0.5.2 -│ │ │ │ ├── curve25519-dalek v2.1.3 +│ │ │ │ ├── uint v0.9.5 │ │ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ │ ├── digest v0.8.1 -│ │ │ │ │ │ └── generic-array v0.12.4 -│ │ │ │ │ │ └── typenum v1.17.0 -│ │ │ │ │ ├── rand_core v0.5.1 (*) -│ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ ├── getrandom v0.1.16 (*) -│ │ │ │ ├── merlin v2.0.1 (*) -│ │ │ │ ├── rand v0.7.3 -│ │ │ │ │ ├── getrandom v0.1.16 (*) -│ │ │ │ │ ├── rand_chacha v0.2.2 -│ │ │ │ │ │ ├── ppv-lite86 v0.2.17 -│ │ │ │ │ │ └── rand_core v0.5.1 (*) -│ │ │ │ │ └── rand_core v0.5.1 (*) -│ │ │ │ ├── rand_core v0.5.1 (*) -│ │ │ │ ├── sha2 v0.8.2 -│ │ │ │ │ ├── block-buffer v0.7.3 -│ │ │ │ │ │ ├── block-padding v0.1.5 -│ │ │ │ │ │ │ └── byte-tools v0.3.1 -│ │ │ │ │ │ ├── byte-tools v0.3.1 -│ │ │ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ │ │ └── generic-array v0.12.4 (*) -│ │ │ │ │ ├── digest v0.8.1 (*) -│ │ │ │ │ ├── fake-simd v0.1.2 -│ │ │ │ │ └── opaque-debug v0.2.3 -│ │ │ │ ├── subtle v2.4.1 -│ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ ├── secp256k1 v0.24.3 -│ │ │ │ └── secp256k1-sys v0.6.1 -│ │ │ │ [build-dependencies] -│ │ │ │ └── cc v1.0.83 -│ │ │ │ └── libc v0.2.149 -│ │ │ ├── secrecy v0.8.0 -│ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ ├── serde v1.0.190 (*) -│ │ │ ├── sp-core-hashing v12.0.0 -│ │ │ │ ├── blake2b_simd v1.0.2 -│ │ │ │ │ ├── arrayref v0.3.7 -│ │ │ │ │ ├── arrayvec v0.7.4 -│ │ │ │ │ └── constant_time_eq v0.3.0 -│ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ ├── sha2 v0.10.8 (*) -│ │ │ │ ├── sha3 v0.10.8 -│ │ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ │ └── keccak v0.1.4 -│ │ │ │ └── twox-hash v1.6.3 -│ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ ├── rand v0.8.5 (*) -│ │ │ │ └── static_assertions v1.1.0 -│ │ │ ├── sp-debug-derive v11.0.0 (proc-macro) -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v2.0.38 (*) -│ │ │ ├── sp-externalities v0.22.0 +│ │ │ │ │ ├── crunchy v0.2.2 +│ │ │ │ │ ├── hex v0.4.3 +│ │ │ │ │ └── static_assertions feature "default" (*) +│ │ │ │ └── scale-info feature "derive" (*) +│ │ │ ├── sp-externalities v0.25.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) │ │ │ │ ├── environmental v1.1.4 -│ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ └── sp-storage v16.0.0 +│ │ │ │ ├── parity-scale-codec v3.6.12 (*) +│ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ └── sp-storage v19.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) │ │ │ │ ├── impl-serde v0.4.0 (*) -│ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ ├── ref-cast v1.0.20 -│ │ │ │ │ └── ref-cast-impl v1.0.20 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ ├── sp-debug-derive v11.0.0 (proc-macro) (*) -│ │ │ │ └── sp-std v11.0.0 -│ │ │ ├── sp-runtime-interface v20.0.0 -│ │ │ │ ├── bytes v1.5.0 -│ │ │ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ │ │ ├── parity-scale-codec v3.6.5 (*) +│ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ ├── serde feature "derive" (*) +│ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ └── ref-cast feature "default" +│ │ │ │ └── ref-cast v1.0.23 +│ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── sp-storage v19.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-tracing v16.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── tracing v0.1.40 +│ │ │ │ │ ├── tracing-core v0.1.32 +│ │ │ │ │ │ └── once_cell feature "default" +│ │ │ │ │ │ ├── once_cell v1.19.0 +│ │ │ │ │ │ └── once_cell feature "std" +│ │ │ │ │ │ ├── once_cell v1.19.0 +│ │ │ │ │ │ └── once_cell feature "alloc" (*) +│ │ │ │ │ └── pin-project-lite feature "default" +│ │ │ │ │ └── pin-project-lite v0.2.14 +│ │ │ │ ├── tracing-core v0.1.32 (*) +│ │ │ │ └── parity-scale-codec feature "derive" (*) +│ │ │ ├── sp-wasm-interface v20.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ └── parity-scale-codec feature "derive" (*) +│ │ │ ├── parity-scale-codec feature "bytes" +│ │ │ │ └── parity-scale-codec v3.6.12 (*) +│ │ │ └── static_assertions feature "default" (*) +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── sp-storage v19.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── ss58-registry v1.47.0 +│ │ │ [build-dependencies] +│ │ │ ├── Inflector v0.11.4 +│ │ │ │ ├── lazy_static feature "default" +│ │ │ │ │ └── lazy_static v1.4.0 +│ │ │ │ │ └── spin feature "default" +│ │ │ │ │ └── spin v0.5.2 +│ │ │ │ └── regex feature "default" +│ │ │ │ ├── regex v1.10.4 +│ │ │ │ │ ├── aho-corasick v1.1.3 +│ │ │ │ │ │ └── memchr v2.7.2 +│ │ │ │ │ ├── memchr v2.7.2 +│ │ │ │ │ ├── regex-syntax v0.8.3 +│ │ │ │ │ ├── regex-automata feature "alloc" +│ │ │ │ │ │ └── regex-automata v0.4.6 +│ │ │ │ │ │ ├── aho-corasick v1.1.3 (*) +│ │ │ │ │ │ ├── memchr v2.7.2 +│ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ ├── regex-automata feature "meta" +│ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ ├── regex-automata feature "nfa-pikevm" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-automata feature "nfa-thompson" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-automata feature "alloc" (*) +│ │ │ │ │ │ └── regex-automata feature "syntax" +│ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ └── regex-automata feature "alloc" (*) +│ │ │ │ │ ├── regex-automata feature "nfa-pikevm" (*) +│ │ │ │ │ └── regex-automata feature "syntax" (*) +│ │ │ │ ├── regex feature "perf" +│ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ ├── regex feature "perf-backtrack" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ └── regex-automata feature "nfa-backtrack" +│ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ └── regex-automata feature "nfa-thompson" (*) +│ │ │ │ │ ├── regex feature "perf-cache" +│ │ │ │ │ │ └── regex v1.10.4 (*) +│ │ │ │ │ ├── regex feature "perf-dfa" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ └── regex-automata feature "hybrid" +│ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ ├── regex-automata feature "alloc" (*) +│ │ │ │ │ │ └── regex-automata feature "nfa-thompson" (*) +│ │ │ │ │ ├── regex feature "perf-inline" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ └── regex-automata feature "perf-inline" +│ │ │ │ │ │ └── regex-automata v0.4.6 (*) +│ │ │ │ │ ├── regex feature "perf-literal" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ └── regex-automata feature "perf-literal" +│ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ ├── regex-automata feature "perf-literal-multisubstring" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-automata feature "std" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ ├── aho-corasick feature "std" +│ │ │ │ │ │ │ │ ├── aho-corasick v1.1.3 (*) +│ │ │ │ │ │ │ │ └── memchr feature "std" +│ │ │ │ │ │ │ │ ├── memchr v2.7.2 +│ │ │ │ │ │ │ │ └── memchr feature "alloc" +│ │ │ │ │ │ │ │ └── memchr v2.7.2 +│ │ │ │ │ │ │ ├── memchr feature "std" (*) +│ │ │ │ │ │ │ ├── regex-automata feature "alloc" (*) +│ │ │ │ │ │ │ └── regex-syntax feature "std" +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ └── regex-automata feature "perf-literal-substring" +│ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ └── aho-corasick feature "perf-literal" +│ │ │ │ │ │ └── aho-corasick v1.1.3 (*) +│ │ │ │ │ └── regex feature "perf-onepass" +│ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ └── regex-automata feature "dfa-onepass" +│ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ └── regex-automata feature "nfa-thompson" (*) +│ │ │ │ ├── regex feature "std" +│ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ ├── aho-corasick feature "std" (*) +│ │ │ │ │ ├── memchr feature "std" (*) +│ │ │ │ │ ├── regex-automata feature "std" (*) +│ │ │ │ │ └── regex-syntax feature "std" (*) +│ │ │ │ ├── regex feature "unicode" +│ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ ├── regex feature "unicode-age" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-age" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-age" +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ └── regex-syntax feature "unicode-age" (*) +│ │ │ │ │ ├── regex feature "unicode-bool" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-bool" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-bool" +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ └── regex-syntax feature "unicode-bool" (*) +│ │ │ │ │ ├── regex feature "unicode-case" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-case" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-case" +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ └── regex-syntax feature "unicode-case" (*) +│ │ │ │ │ ├── regex feature "unicode-gencat" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-gencat" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-gencat" +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ └── regex-syntax feature "unicode-gencat" (*) +│ │ │ │ │ ├── regex feature "unicode-perl" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-perl" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-perl" +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ ├── regex-automata feature "unicode-word-boundary" +│ │ │ │ │ │ │ └── regex-automata v0.4.6 (*) +│ │ │ │ │ │ └── regex-syntax feature "unicode-perl" (*) +│ │ │ │ │ ├── regex feature "unicode-script" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-script" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-script" +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ └── regex-syntax feature "unicode-script" (*) +│ │ │ │ │ ├── regex feature "unicode-segment" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-segment" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-segment" +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ └── regex-syntax feature "unicode-segment" (*) +│ │ │ │ │ ├── regex-automata feature "unicode" +│ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-age" (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-bool" (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-case" (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-gencat" (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-perl" (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-script" (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-segment" (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-word-boundary" (*) +│ │ │ │ │ │ └── regex-syntax feature "unicode" +│ │ │ │ │ │ ├── regex-syntax v0.8.3 +│ │ │ │ │ │ ├── regex-syntax feature "unicode-age" (*) +│ │ │ │ │ │ ├── regex-syntax feature "unicode-bool" (*) +│ │ │ │ │ │ ├── regex-syntax feature "unicode-case" (*) +│ │ │ │ │ │ ├── regex-syntax feature "unicode-gencat" (*) +│ │ │ │ │ │ ├── regex-syntax feature "unicode-perl" (*) +│ │ │ │ │ │ ├── regex-syntax feature "unicode-script" (*) +│ │ │ │ │ │ └── regex-syntax feature "unicode-segment" (*) +│ │ │ │ │ └── regex-syntax feature "unicode" (*) +│ │ │ │ └── regex-syntax feature "default" +│ │ │ │ ├── regex-syntax v0.8.3 +│ │ │ │ ├── regex-syntax feature "std" (*) +│ │ │ │ └── regex-syntax feature "unicode" (*) +│ │ │ ├── quote v1.0.36 +│ │ │ │ └── proc-macro2 v1.0.85 +│ │ │ │ └── unicode-ident feature "default" +│ │ │ │ └── unicode-ident v1.0.12 +│ │ │ ├── serde_json feature "std" +│ │ │ │ ├── serde_json v1.0.117 +│ │ │ │ │ ├── serde v1.0.203 +│ │ │ │ │ ├── itoa feature "default" +│ │ │ │ │ │ └── itoa v1.0.11 +│ │ │ │ │ └── ryu feature "default" +│ │ │ │ │ └── ryu v1.0.18 +│ │ │ │ └── serde feature "std" +│ │ │ │ └── serde v1.0.203 +│ │ │ ├── serde feature "derive" +│ │ │ │ ├── serde v1.0.203 +│ │ │ │ └── serde feature "serde_derive" +│ │ │ │ └── serde v1.0.203 +│ │ │ ├── serde feature "std" (*) +│ │ │ ├── proc-macro2 feature "default" +│ │ │ │ ├── proc-macro2 v1.0.85 (*) +│ │ │ │ └── proc-macro2 feature "proc-macro" +│ │ │ │ └── proc-macro2 v1.0.85 (*) +│ │ │ └── unicode-xid feature "default" +│ │ │ └── unicode-xid v0.2.4 +│ │ ├── substrate-bip39 v0.4.7 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── pbkdf2 v0.12.2 +│ │ │ │ ├── digest feature "default" (*) +│ │ │ │ └── digest feature "mac" (*) +│ │ │ ├── schnorrkel v0.11.4 +│ │ │ │ ├── arrayref v0.3.7 +│ │ │ │ ├── arrayvec v0.7.4 +│ │ │ │ ├── getrandom_or_panic v0.0.3 +│ │ │ │ │ └── rand_core v0.6.4 (*) +│ │ │ │ ├── merlin v3.0.0 (*) +│ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ ├── sha2 v0.10.8 (*) +│ │ │ │ ├── subtle v2.5.0 +│ │ │ │ ├── zeroize feature "zeroize_derive" (*) +│ │ │ │ ├── curve25519-dalek feature "digest" +│ │ │ │ │ └── curve25519-dalek v4.1.2 +│ │ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ └── cfg-if feature "default" (*) +│ │ │ │ │ [build-dependencies] +│ │ │ │ │ ├── platforms feature "default" +│ │ │ │ │ │ ├── platforms v3.4.0 +│ │ │ │ │ │ └── platforms feature "std" +│ │ │ │ │ │ └── platforms v3.4.0 +│ │ │ │ │ └── rustc_version feature "default" +│ │ │ │ │ └── rustc_version v0.4.0 +│ │ │ │ │ └── semver feature "default" +│ │ │ │ │ ├── semver v1.0.23 +│ │ │ │ │ └── semver feature "std" +│ │ │ │ │ └── semver v1.0.23 +│ │ │ │ ├── curve25519-dalek feature "legacy_compatibility" +│ │ │ │ │ └── curve25519-dalek v4.1.2 (*) +│ │ │ │ ├── curve25519-dalek feature "precomputed-tables" +│ │ │ │ │ └── curve25519-dalek v4.1.2 (*) +│ │ │ │ └── curve25519-dalek feature "zeroize" +│ │ │ │ └── curve25519-dalek v4.1.2 (*) +│ │ │ ├── sha2 v0.10.8 (*) +│ │ │ ├── zeroize v1.8.1 +│ │ │ └── hmac feature "default" +│ │ │ └── hmac v0.12.1 +│ │ │ ├── digest feature "default" (*) +│ │ │ └── digest feature "mac" (*) +│ │ ├── zeroize v1.8.1 +│ │ ├── bitflags feature "default" +│ │ │ └── bitflags v1.3.2 +│ │ ├── serde feature "alloc" (*) +│ │ ├── serde feature "derive" (*) +│ │ ├── parity-scale-codec feature "derive" (*) +│ │ ├── parity-scale-codec feature "max-encoded-len" (*) +│ │ ├── scale-info feature "derive" (*) +│ │ ├── primitive-types feature "codec" +│ │ │ ├── primitive-types v0.12.2 (*) +│ │ │ └── primitive-types feature "impl-codec" +│ │ │ └── primitive-types v0.12.2 (*) +│ │ ├── primitive-types feature "scale-info" +│ │ │ ├── primitive-types v0.12.2 (*) +│ │ │ ├── primitive-types feature "codec" (*) +│ │ │ └── primitive-types feature "scale-info-crate" +│ │ │ └── primitive-types v0.12.2 (*) +│ │ ├── array-bytes feature "default" +│ │ │ └── array-bytes v6.2.3 +│ │ ├── k256 feature "alloc" +│ │ │ ├── k256 v0.13.3 +│ │ │ │ ├── serdect v0.2.0 +│ │ │ │ │ ├── base16ct v0.2.0 +│ │ │ │ │ └── serde v1.0.203 +│ │ │ │ ├── sha2 v0.10.8 (*) +│ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ ├── ecdsa feature "der" +│ │ │ │ │ └── ecdsa v0.16.9 +│ │ │ │ │ ├── spki v0.7.3 +│ │ │ │ │ │ ├── der feature "default" +│ │ │ │ │ │ │ └── der v0.7.9 +│ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ └── const-oid feature "default" (*) +│ │ │ │ │ │ └── der feature "oid" +│ │ │ │ │ │ └── der v0.7.9 (*) +│ │ │ │ │ ├── digest feature "oid" +│ │ │ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ │ │ └── digest feature "const-oid" +│ │ │ │ │ │ └── digest v0.10.7 (*) +│ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ ├── elliptic-curve feature "digest" +│ │ │ │ │ │ └── elliptic-curve v0.13.8 +│ │ │ │ │ │ ├── ff v0.13.0 +│ │ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ │ └── subtle feature "i128" +│ │ │ │ │ │ │ └── subtle v2.5.0 +│ │ │ │ │ │ ├── group v0.13.0 +│ │ │ │ │ │ │ ├── ff v0.13.0 (*) +│ │ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ │ └── subtle v2.5.0 +│ │ │ │ │ │ ├── pkcs8 v0.10.2 +│ │ │ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ │ │ ├── der feature "oid" (*) +│ │ │ │ │ │ │ └── spki feature "default" +│ │ │ │ │ │ │ └── spki v0.7.3 (*) +│ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ ├── generic-array feature "zeroize" +│ │ │ │ │ │ │ └── generic-array v0.14.7 (*) +│ │ │ │ │ │ ├── digest feature "default" (*) +│ │ │ │ │ │ ├── base16ct feature "default" +│ │ │ │ │ │ │ └── base16ct v0.2.0 +│ │ │ │ │ │ ├── crypto-bigint feature "generic-array" +│ │ │ │ │ │ │ └── crypto-bigint v0.5.5 +│ │ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ ├── rand_core feature "default" (*) +│ │ │ │ │ │ │ └── generic-array feature "default" (*) +│ │ │ │ │ │ ├── crypto-bigint feature "rand_core" +│ │ │ │ │ │ │ └── crypto-bigint v0.5.5 (*) +│ │ │ │ │ │ ├── crypto-bigint feature "zeroize" +│ │ │ │ │ │ │ └── crypto-bigint v0.5.5 (*) +│ │ │ │ │ │ ├── sec1 feature "default" +│ │ │ │ │ │ │ ├── sec1 v0.7.3 +│ │ │ │ │ │ │ │ ├── base16ct v0.2.0 +│ │ │ │ │ │ │ │ ├── generic-array v0.14.7 (*) +│ │ │ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ │ │ │ ├── der feature "oid" (*) +│ │ │ │ │ │ │ │ └── serdect feature "alloc" +│ │ │ │ │ │ │ │ ├── serdect v0.2.0 (*) +│ │ │ │ │ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ │ │ │ │ └── base16ct feature "alloc" +│ │ │ │ │ │ │ │ └── base16ct v0.2.0 +│ │ │ │ │ │ │ ├── sec1 feature "der" +│ │ │ │ │ │ │ │ ├── sec1 v0.7.3 (*) +│ │ │ │ │ │ │ │ └── sec1 feature "zeroize" +│ │ │ │ │ │ │ │ ├── sec1 v0.7.3 (*) +│ │ │ │ │ │ │ │ └── der feature "zeroize" +│ │ │ │ │ │ │ │ └── der v0.7.9 (*) +│ │ │ │ │ │ │ └── sec1 feature "point" +│ │ │ │ │ │ │ └── sec1 v0.7.3 (*) +│ │ │ │ │ │ ├── sec1 feature "subtle" +│ │ │ │ │ │ │ └── sec1 v0.7.3 (*) +│ │ │ │ │ │ ├── sec1 feature "zeroize" (*) +│ │ │ │ │ │ └── serdect feature "alloc" (*) +│ │ │ │ │ ├── elliptic-curve feature "sec1" +│ │ │ │ │ │ └── elliptic-curve v0.13.8 (*) +│ │ │ │ │ ├── serdect feature "alloc" (*) +│ │ │ │ │ ├── rfc6979 feature "default" +│ │ │ │ │ │ └── rfc6979 v0.4.0 +│ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ └── hmac feature "reset" +│ │ │ │ │ │ └── hmac v0.12.1 (*) +│ │ │ │ │ └── signature feature "rand_core" +│ │ │ │ │ └── signature v2.2.0 +│ │ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ │ └── rand_core v0.6.4 (*) +│ │ │ │ ├── elliptic-curve feature "hazmat" +│ │ │ │ │ └── elliptic-curve v0.13.8 (*) +│ │ │ │ └── elliptic-curve feature "sec1" (*) +│ │ │ ├── ecdsa feature "alloc" +│ │ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ │ ├── ecdsa feature "spki" +│ │ │ │ │ └── ecdsa v0.16.9 (*) +│ │ │ │ ├── elliptic-curve feature "alloc" +│ │ │ │ │ ├── elliptic-curve v0.13.8 (*) +│ │ │ │ │ ├── zeroize feature "alloc" (*) +│ │ │ │ │ ├── base16ct feature "alloc" (*) +│ │ │ │ │ ├── ff feature "alloc" +│ │ │ │ │ │ └── ff v0.13.0 (*) +│ │ │ │ │ ├── group feature "alloc" +│ │ │ │ │ │ └── group v0.13.0 (*) +│ │ │ │ │ ├── pkcs8 feature "alloc" +│ │ │ │ │ │ ├── pkcs8 v0.10.2 (*) +│ │ │ │ │ │ ├── der feature "alloc" +│ │ │ │ │ │ │ ├── der v0.7.9 (*) +│ │ │ │ │ │ │ └── zeroize feature "alloc" (*) +│ │ │ │ │ │ ├── der feature "zeroize" (*) +│ │ │ │ │ │ └── spki feature "alloc" +│ │ │ │ │ │ ├── spki v0.7.3 (*) +│ │ │ │ │ │ └── der feature "alloc" (*) +│ │ │ │ │ └── sec1 feature "alloc" +│ │ │ │ │ ├── sec1 v0.7.3 (*) +│ │ │ │ │ ├── zeroize feature "alloc" (*) +│ │ │ │ │ └── der feature "alloc" (*) +│ │ │ │ ├── spki feature "alloc" (*) +│ │ │ │ └── signature feature "alloc" +│ │ │ │ └── signature v2.2.0 (*) +│ │ │ └── elliptic-curve feature "alloc" (*) +│ │ ├── k256 feature "ecdsa" +│ │ │ ├── k256 v0.13.3 (*) +│ │ │ ├── k256 feature "arithmetic" +│ │ │ │ ├── k256 v0.13.3 (*) +│ │ │ │ └── elliptic-curve feature "arithmetic" +│ │ │ │ ├── elliptic-curve v0.13.8 (*) +│ │ │ │ └── elliptic-curve feature "group" +│ │ │ │ ├── elliptic-curve v0.13.8 (*) +│ │ │ │ └── elliptic-curve feature "ff" +│ │ │ │ └── elliptic-curve v0.13.8 (*) +│ │ │ ├── k256 feature "ecdsa-core" +│ │ │ │ └── k256 v0.13.3 (*) +│ │ │ ├── k256 feature "sha256" +│ │ │ │ ├── k256 v0.13.3 (*) +│ │ │ │ ├── k256 feature "digest" +│ │ │ │ │ ├── k256 v0.13.3 (*) +│ │ │ │ │ ├── k256 feature "ecdsa-core" (*) +│ │ │ │ │ ├── ecdsa feature "digest" +│ │ │ │ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ │ │ │ └── signature feature "digest" +│ │ │ │ │ │ └── signature v2.2.0 (*) +│ │ │ │ │ └── ecdsa feature "hazmat" +│ │ │ │ │ └── ecdsa v0.16.9 (*) +│ │ │ │ └── k256 feature "sha2" +│ │ │ │ └── k256 v0.13.3 (*) +│ │ │ ├── ecdsa feature "signing" +│ │ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ │ ├── ecdsa feature "arithmetic" +│ │ │ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ │ │ └── elliptic-curve feature "arithmetic" (*) +│ │ │ │ ├── ecdsa feature "digest" (*) +│ │ │ │ ├── ecdsa feature "hazmat" (*) +│ │ │ │ └── ecdsa feature "rfc6979" +│ │ │ │ └── ecdsa v0.16.9 (*) +│ │ │ └── ecdsa feature "verifying" +│ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ ├── ecdsa feature "arithmetic" (*) +│ │ │ ├── ecdsa feature "digest" (*) +│ │ │ └── ecdsa feature "hazmat" (*) +│ │ ├── libsecp256k1 feature "static-context" +│ │ │ └── libsecp256k1 v0.7.1 +│ │ │ ├── base64 v0.13.1 +│ │ │ ├── libsecp256k1-core v0.3.0 +│ │ │ │ ├── subtle v2.5.0 +│ │ │ │ ├── crunchy feature "default" (*) +│ │ │ │ └── digest feature "default" (*) +│ │ │ ├── rand v0.8.5 (*) +│ │ │ ├── serde feature "derive" (*) +│ │ │ ├── digest feature "default" (*) +│ │ │ └── arrayref feature "default" (*) +│ │ │ [build-dependencies] +│ │ │ ├── libsecp256k1-gen-ecmult feature "default" +│ │ │ │ └── libsecp256k1-gen-ecmult v0.3.0 +│ │ │ │ └── libsecp256k1-core feature "default" +│ │ │ │ ├── libsecp256k1-core v0.3.0 +│ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ ├── crunchy feature "default" (*) +│ │ │ │ │ └── digest feature "default" (*) +│ │ │ │ └── libsecp256k1-core feature "std" +│ │ │ │ ├── libsecp256k1-core v0.3.0 (*) +│ │ │ │ └── subtle feature "std" +│ │ │ │ └── subtle v2.5.0 +│ │ │ └── libsecp256k1-gen-genmult feature "default" +│ │ │ └── libsecp256k1-gen-genmult v0.3.0 +│ │ │ └── libsecp256k1-core feature "default" (*) +│ │ ├── parity-bip39 feature "alloc" +│ │ │ ├── parity-bip39 v2.0.1 +│ │ │ │ ├── bitcoin_hashes v0.13.0 +│ │ │ │ │ ├── hex-conservative v0.1.2 +│ │ │ │ │ └── bitcoin-internals feature "default" +│ │ │ │ │ └── bitcoin-internals v0.2.0 +│ │ │ │ └── unicode-normalization v0.1.22 +│ │ │ │ ├── tinyvec feature "alloc" +│ │ │ │ │ ├── tinyvec v1.6.0 +│ │ │ │ │ │ └── tinyvec_macros feature "default" +│ │ │ │ │ │ └── tinyvec_macros v0.1.1 +│ │ │ │ │ └── tinyvec feature "tinyvec_macros" +│ │ │ │ │ └── tinyvec v1.6.0 (*) +│ │ │ │ └── tinyvec feature "default" +│ │ │ │ └── tinyvec v1.6.0 (*) +│ │ │ └── parity-bip39 feature "unicode-normalization" +│ │ │ └── parity-bip39 v2.0.1 (*) +│ │ ├── schnorrkel feature "preaudit_deprecated" +│ │ │ └── schnorrkel v0.11.4 (*) +│ │ └── secrecy feature "alloc" +│ │ ├── secrecy v0.8.0 +│ │ │ └── zeroize v1.8.1 +│ │ └── zeroize feature "alloc" (*) +│ ├── sp-genesis-builder v0.7.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── log v0.4.21 +│ │ │ ├── parity-scale-codec v3.6.12 (*) +│ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-metadata-ir v0.6.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── parity-scale-codec v3.6.12 (*) +│ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── scale-info feature "derive" (*) +│ │ │ │ └── frame-metadata feature "current" +│ │ │ │ ├── frame-metadata v16.0.0 +│ │ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ │ └── scale-info feature "derive" (*) +│ │ │ │ └── frame-metadata feature "scale-info" +│ │ │ │ └── frame-metadata v16.0.0 (*) +│ │ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── either v1.12.0 +│ │ │ │ ├── hash256-std-hasher v0.15.2 (*) +│ │ │ │ ├── log v0.4.21 +│ │ │ │ ├── sp-application-crypto v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ │ ├── bytes v1.6.0 +│ │ │ │ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ ├── sp-crypto-hashing v0.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ ├── sp-externalities v0.25.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ ├── sp-runtime-interface v24.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ │ ├── sp-tracing v16.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ ├── tracing v0.1.40 (*) +│ │ │ │ │ │ ├── tracing-core v0.1.32 (*) +│ │ │ │ │ │ └── parity-scale-codec feature "bytes" (*) +│ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ │ ├── serde feature "derive" (*) +│ │ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ │ └── scale-info feature "derive" (*) +│ │ │ │ ├── sp-arithmetic v23.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── sp-weights v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── bounded-collections v0.2.0 (*) +│ │ │ │ │ ├── sp-arithmetic v23.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ │ ├── serde feature "derive" (*) +│ │ │ │ │ ├── smallvec feature "default" +│ │ │ │ │ │ └── smallvec v1.13.2 +│ │ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ │ └── scale-info feature "derive" (*) +│ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ ├── serde feature "derive" (*) +│ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ ├── parity-scale-codec feature "max-encoded-len" (*) +│ │ │ │ ├── scale-info feature "derive" (*) +│ │ │ │ └── docify feature "default" +│ │ │ │ └── docify v0.2.8 +│ │ │ ├── sp-runtime-interface v24.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── sp-version v29.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── impl-serde v0.4.0 (*) +│ │ │ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ ├── serde feature "derive" (*) +│ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ └── scale-info feature "derive" (*) +│ │ │ └── scale-info feature "derive" (*) +│ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── serde_json feature "alloc" +│ │ │ ├── serde_json v1.0.117 +│ │ │ │ ├── serde v1.0.203 +│ │ │ │ ├── itoa feature "default" (*) +│ │ │ │ └── ryu feature "default" (*) +│ │ │ └── serde feature "alloc" (*) +│ │ └── serde_json feature "arbitrary_precision" +│ │ └── serde_json v1.0.117 (*) +│ ├── sp-inherents v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── parity-scale-codec feature "derive" (*) +│ │ └── scale-info feature "derive" (*) +│ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-metadata-ir v0.6.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-staking v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── parity-scale-codec feature "derive" (*) +│ │ └── scale-info feature "derive" (*) +│ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── sp-tracing v16.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-weights v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── bitflags feature "default" (*) +│ ├── serde feature "alloc" (*) +│ ├── serde feature "derive" (*) +│ ├── serde_json feature "alloc" (*) +│ ├── smallvec feature "default" (*) +│ ├── parity-scale-codec feature "derive" (*) +│ ├── parity-scale-codec feature "max-encoded-len" (*) +│ ├── scale-info feature "derive" (*) +│ ├── static_assertions feature "default" (*) +│ ├── k256 feature "ecdsa" (*) +│ ├── docify feature "default" (*) +│ ├── frame-metadata feature "current" (*) +│ ├── macro_magic feature "default" +│ │ └── macro_magic v0.5.0 +│ ├── sp-api feature "frame-metadata" +│ │ ├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ └── sp-api feature "sp-metadata-ir" +│ │ └── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-runtime feature "serde" +│ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── scale-info feature "serde" +│ │ │ └── scale-info v2.11.3 (*) +│ │ ├── sp-core feature "serde" +│ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── scale-info feature "serde" (*) +│ │ │ ├── primitive-types feature "serde_no_std" │ │ │ │ ├── primitive-types v0.12.2 (*) -│ │ │ │ ├── sp-externalities v0.22.0 (*) -│ │ │ │ ├── sp-runtime-interface-proc-macro v14.0.0 (proc-macro) -│ │ │ │ │ ├── Inflector v0.11.4 (*) -│ │ │ │ │ ├── proc-macro-crate v1.1.3 (*) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ ├── sp-storage v16.0.0 (*) -│ │ │ │ ├── sp-tracing v13.0.0 -│ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ │ ├── tracing v0.1.40 (*) -│ │ │ │ │ ├── tracing-core v0.1.32 (*) -│ │ │ │ │ └── tracing-subscriber v0.2.25 -│ │ │ │ │ ├── ansi_term v0.12.1 -│ │ │ │ │ ├── chrono v0.4.31 (*) -│ │ │ │ │ ├── lazy_static v1.4.0 -│ │ │ │ │ ├── matchers v0.0.1 -│ │ │ │ │ │ └── regex-automata v0.1.10 -│ │ │ │ │ │ └── regex-syntax v0.6.29 -│ │ │ │ │ ├── regex v1.10.2 (*) -│ │ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ │ ├── serde_json v1.0.108 (*) -│ │ │ │ │ ├── sharded-slab v0.1.7 -│ │ │ │ │ │ └── lazy_static v1.4.0 -│ │ │ │ │ ├── smallvec v1.11.1 -│ │ │ │ │ ├── thread_local v1.1.7 -│ │ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ │ └── once_cell v1.18.0 -│ │ │ │ │ ├── tracing v0.1.40 (*) -│ │ │ │ │ ├── tracing-core v0.1.32 (*) -│ │ │ │ │ ├── tracing-log v0.1.4 -│ │ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ │ ├── once_cell v1.18.0 -│ │ │ │ │ │ └── tracing-core v0.1.32 (*) -│ │ │ │ │ └── tracing-serde v0.1.3 -│ │ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ │ └── tracing-core v0.1.32 (*) -│ │ │ │ ├── sp-wasm-interface v17.0.0 -│ │ │ │ │ ├── anyhow v1.0.75 -│ │ │ │ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ │ └── wasmtime v8.0.1 -│ │ │ │ │ ├── anyhow v1.0.75 -│ │ │ │ │ ├── bincode v1.3.3 -│ │ │ │ │ │ └── serde v1.0.190 (*) -│ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ ├── indexmap v1.9.3 -│ │ │ │ │ │ ├── hashbrown v0.12.3 (*) -│ │ │ │ │ │ └── serde v1.0.190 (*) -│ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ └── autocfg v1.1.0 -│ │ │ │ │ ├── libc v0.2.149 -│ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ ├── object v0.30.4 -│ │ │ │ │ │ ├── crc32fast v1.3.2 -│ │ │ │ │ │ │ └── cfg-if v1.0.0 -│ │ │ │ │ │ ├── hashbrown v0.13.2 -│ │ │ │ │ │ │ └── ahash v0.8.6 -│ │ │ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ │ │ ├── getrandom v0.2.10 (*) -│ │ │ │ │ │ │ ├── once_cell v1.18.0 -│ │ │ │ │ │ │ └── zerocopy v0.7.20 -│ │ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ │ └── version_check v0.9.4 -│ │ │ │ │ │ ├── indexmap v1.9.3 (*) -│ │ │ │ │ │ └── memchr v2.6.4 -│ │ │ │ │ ├── once_cell v1.18.0 -│ │ │ │ │ ├── paste v1.0.14 (proc-macro) -│ │ │ │ │ ├── psm v0.1.21 +│ │ │ │ └── primitive-types feature "impl-serde" +│ │ │ │ └── primitive-types v0.12.2 (*) +│ │ │ ├── sp-core feature "blake2" +│ │ │ │ └── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-core feature "bs58" +│ │ │ │ └── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-core feature "impl-serde" +│ │ │ │ └── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── bounded-collections feature "serde" +│ │ │ │ └── bounded-collections v0.2.0 (*) +│ │ │ ├── bs58 feature "alloc" +│ │ │ │ └── bs58 v0.5.1 +│ │ │ ├── k256 feature "serde" +│ │ │ │ ├── k256 v0.13.3 (*) +│ │ │ │ ├── k256 feature "ecdsa-core" (*) +│ │ │ │ ├── k256 feature "serdect" +│ │ │ │ │ └── k256 v0.13.3 (*) +│ │ │ │ ├── ecdsa feature "serde" +│ │ │ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ │ │ ├── ecdsa feature "serdect" +│ │ │ │ │ │ └── ecdsa v0.16.9 (*) +│ │ │ │ │ └── elliptic-curve feature "serde" +│ │ │ │ │ ├── elliptic-curve v0.13.8 (*) +│ │ │ │ │ ├── elliptic-curve feature "alloc" (*) +│ │ │ │ │ ├── elliptic-curve feature "pkcs8" +│ │ │ │ │ │ ├── elliptic-curve v0.13.8 (*) +│ │ │ │ │ │ └── elliptic-curve feature "sec1" (*) +│ │ │ │ │ ├── elliptic-curve feature "sec1" (*) +│ │ │ │ │ └── sec1 feature "serde" +│ │ │ │ │ └── sec1 v0.7.3 (*) +│ │ │ │ └── elliptic-curve feature "serde" (*) +│ │ │ └── sp-storage feature "serde" +│ │ │ ├── sp-storage v19.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ └── sp-storage feature "impl-serde" +│ │ │ └── sp-storage v19.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-application-crypto feature "serde" +│ │ │ ├── sp-application-crypto v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── scale-info feature "serde" (*) +│ │ │ └── sp-core feature "serde" (*) +│ │ ├── sp-arithmetic feature "serde" +│ │ │ ├── sp-arithmetic v23.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ └── scale-info feature "serde" (*) +│ │ └── sp-weights feature "serde" +│ │ ├── sp-weights v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── scale-info feature "serde" (*) +│ │ ├── bounded-collections feature "serde" (*) +│ │ └── sp-arithmetic feature "serde" (*) +│ └── tt-call feature "default" +│ └── tt-call v1.0.9 +├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── log v0.4.21 +│ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── cfg-if feature "default" (*) +│ ├── serde feature "alloc" (*) +│ ├── serde feature "derive" (*) +│ ├── parity-scale-codec feature "derive" (*) +│ ├── scale-info feature "derive" (*) +│ ├── scale-info feature "serde" (*) +│ ├── sp-core feature "serde" (*) +│ ├── docify feature "default" (*) +│ ├── sp-runtime feature "serde" (*) +│ ├── sp-weights feature "serde" (*) +│ └── sp-version feature "serde" +│ ├── sp-version v29.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-runtime feature "serde" (*) +│ └── sp-version feature "impl-serde" +│ └── sp-version v29.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── serde v1.0.203 +├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── sp-core-hashing v15.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ └── sp-crypto-hashing feature "default" +│ ├── sp-crypto-hashing v0.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ └── sp-crypto-hashing feature "std" +│ ├── sp-crypto-hashing v0.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── byteorder feature "std" +│ │ └── byteorder v1.5.0 +│ ├── digest feature "std" +│ │ ├── digest v0.10.7 (*) +│ │ ├── digest feature "alloc" +│ │ │ └── digest v0.10.7 (*) +│ │ └── crypto-common feature "std" +│ │ └── crypto-common v0.1.6 (*) +│ ├── sha2 feature "std" +│ │ ├── sha2 v0.10.8 (*) +│ │ └── digest feature "std" (*) +│ ├── blake2b_simd feature "std" +│ │ └── blake2b_simd v1.0.2 (*) +│ ├── sha3 feature "std" +│ │ ├── sha3 v0.10.8 (*) +│ │ └── digest feature "std" (*) +│ └── twox-hash feature "std" +│ ├── twox-hash v1.6.3 (*) +│ └── twox-hash feature "rand" +│ └── twox-hash v1.6.3 (*) +├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +├── uuid v1.8.0 +│ └── serde v1.0.203 +├── tracing feature "attributes" +│ ├── tracing v0.1.40 (*) +│ └── tracing feature "tracing-attributes" +│ └── tracing v0.1.40 (*) +├── common feature "parity-encoding" +│ ├── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) +│ │ ├── anyhow v1.0.86 +│ │ ├── futures v0.3.30 +│ │ │ ├── futures-core v0.3.30 +│ │ │ ├── futures-io v0.3.30 +│ │ │ ├── futures-sink v0.3.30 +│ │ │ ├── futures-task v0.3.30 +│ │ │ ├── futures-util feature "sink" +│ │ │ │ ├── futures-util v0.3.30 +│ │ │ │ │ ├── futures-core v0.3.30 +│ │ │ │ │ ├── futures-sink v0.3.30 +│ │ │ │ │ ├── futures-task v0.3.30 +│ │ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ │ ├── pin-utils feature "default" +│ │ │ │ │ │ └── pin-utils v0.1.0 +│ │ │ │ │ └── slab feature "default" +│ │ │ │ │ ├── slab v0.4.9 │ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ └── cc v1.0.83 (*) -│ │ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ │ ├── target-lexicon v0.12.12 -│ │ │ │ │ ├── wasmparser v0.102.0 -│ │ │ │ │ │ ├── indexmap v1.9.3 (*) -│ │ │ │ │ │ └── url v2.4.1 (*) -│ │ │ │ │ ├── wasmtime-environ v8.0.1 -│ │ │ │ │ │ ├── anyhow v1.0.75 -│ │ │ │ │ │ ├── cranelift-entity v0.95.1 -│ │ │ │ │ │ │ └── serde v1.0.190 (*) -│ │ │ │ │ │ ├── gimli v0.27.3 -│ │ │ │ │ │ │ ├── fallible-iterator v0.2.0 -│ │ │ │ │ │ │ ├── indexmap v1.9.3 (*) -│ │ │ │ │ │ │ └── stable_deref_trait v1.2.0 -│ │ │ │ │ │ ├── indexmap v1.9.3 (*) -│ │ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ │ ├── object v0.30.4 (*) -│ │ │ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ │ │ ├── target-lexicon v0.12.12 -│ │ │ │ │ │ ├── thiserror v1.0.50 (*) -│ │ │ │ │ │ ├── wasmparser v0.102.0 (*) -│ │ │ │ │ │ └── wasmtime-types v8.0.1 -│ │ │ │ │ │ ├── cranelift-entity v0.95.1 (*) -│ │ │ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ │ │ ├── thiserror v1.0.50 (*) -│ │ │ │ │ │ └── wasmparser v0.102.0 (*) -│ │ │ │ │ ├── wasmtime-jit v8.0.1 -│ │ │ │ │ │ ├── addr2line v0.19.0 -│ │ │ │ │ │ │ └── gimli v0.27.3 (*) -│ │ │ │ │ │ ├── anyhow v1.0.75 -│ │ │ │ │ │ ├── bincode v1.3.3 (*) -│ │ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ │ ├── cpp_demangle v0.3.5 -│ │ │ │ │ │ │ └── cfg-if v1.0.0 -│ │ │ │ │ │ ├── gimli v0.27.3 (*) -│ │ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ │ ├── object v0.30.4 (*) -│ │ │ │ │ │ ├── rustc-demangle v0.1.23 -│ │ │ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ │ │ ├── target-lexicon v0.12.12 -│ │ │ │ │ │ ├── wasmtime-environ v8.0.1 (*) -│ │ │ │ │ │ ├── wasmtime-jit-icache-coherence v8.0.1 -│ │ │ │ │ │ │ └── cfg-if v1.0.0 -│ │ │ │ │ │ └── wasmtime-runtime v8.0.1 -│ │ │ │ │ │ ├── anyhow v1.0.75 -│ │ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ │ ├── indexmap v1.9.3 (*) -│ │ │ │ │ │ ├── libc v0.2.149 -│ │ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ │ ├── memfd v0.6.4 -│ │ │ │ │ │ │ └── rustix v0.38.21 -│ │ │ │ │ │ │ ├── bitflags v2.4.1 -│ │ │ │ │ │ │ ├── errno v0.3.5 -│ │ │ │ │ │ │ └── libc v0.2.149 -│ │ │ │ │ │ ├── memoffset v0.8.0 -│ │ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ │ └── autocfg v1.1.0 -│ │ │ │ │ │ ├── paste v1.0.14 (proc-macro) -│ │ │ │ │ │ ├── rand v0.8.5 (*) -│ │ │ │ │ │ ├── wasmtime-asm-macros v8.0.1 -│ │ │ │ │ │ │ └── cfg-if v1.0.0 -│ │ │ │ │ │ ├── wasmtime-environ v8.0.1 (*) -│ │ │ │ │ │ └── wasmtime-jit-debug v8.0.1 -│ │ │ │ │ │ └── once_cell v1.18.0 -│ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ └── cc v1.0.83 (*) -│ │ │ │ │ └── wasmtime-runtime v8.0.1 (*) -│ │ │ │ └── static_assertions v1.1.0 -│ │ │ ├── sp-std v11.0.0 -│ │ │ ├── sp-storage v16.0.0 (*) -│ │ │ ├── ss58-registry v1.43.0 -│ │ │ │ └── num-format v0.4.4 -│ │ │ │ ├── arrayvec v0.7.4 -│ │ │ │ └── itoa v1.0.9 -│ │ │ │ [build-dependencies] -│ │ │ │ ├── Inflector v0.11.4 (*) -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ ├── serde_json v1.0.108 (*) -│ │ │ │ └── unicode-xid v0.2.4 -│ │ │ ├── substrate-bip39 v0.4.5 -│ │ │ │ ├── hmac v0.11.0 -│ │ │ │ │ ├── crypto-mac v0.11.1 -│ │ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ │ └── digest v0.9.0 (*) -│ │ │ │ ├── pbkdf2 v0.8.0 -│ │ │ │ │ └── crypto-mac v0.11.1 (*) -│ │ │ │ ├── schnorrkel v0.9.1 (*) -│ │ │ │ ├── sha2 v0.9.9 (*) -│ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ ├── thiserror v1.0.50 (*) -│ │ │ ├── tiny-bip39 v1.0.0 -│ │ │ │ ├── anyhow v1.0.75 -│ │ │ │ ├── hmac v0.12.1 (*) -│ │ │ │ ├── once_cell v1.18.0 -│ │ │ │ ├── pbkdf2 v0.11.0 -│ │ │ │ │ └── digest v0.10.7 (*) -│ │ │ │ ├── rand v0.8.5 (*) -│ │ │ │ ├── rustc-hash v1.1.0 +│ │ │ │ │ │ └── autocfg feature "default" (*) +│ │ │ │ │ └── slab feature "std" +│ │ │ │ │ └── slab v0.4.9 (*) +│ │ │ │ └── futures-util feature "futures-sink" +│ │ │ │ └── futures-util v0.3.30 (*) +│ │ │ └── futures-channel feature "sink" +│ │ │ ├── futures-channel v0.3.30 +│ │ │ │ ├── futures-core v0.3.30 +│ │ │ │ └── futures-sink v0.3.30 +│ │ │ └── futures-channel feature "futures-sink" +│ │ │ └── futures-channel v0.3.30 (*) +│ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── tracing feature "attributes" (*) +│ │ ├── percent-encoding feature "alloc" +│ │ │ └── percent-encoding v2.3.1 +│ │ ├── serde feature "derive" (*) +│ │ ├── serde feature "rc" +│ │ │ └── serde v1.0.203 +│ │ ├── serde_json feature "alloc" (*) +│ │ ├── lazy_static feature "default" (*) +│ │ ├── thiserror feature "default" +│ │ │ └── thiserror v1.0.61 +│ │ ├── chrono feature "alloc" +│ │ │ └── chrono v0.4.38 +│ │ │ ├── num-traits v0.2.19 (*) +│ │ │ └── serde v1.0.203 +│ │ ├── chrono feature "serde" +│ │ │ └── chrono v0.4.38 (*) +│ │ ├── hex feature "alloc" (*) +│ │ ├── iri-string feature "alloc" +│ │ │ └── iri-string v0.7.2 +│ │ ├── k256 feature "ecdsa" +│ │ │ ├── k256 v0.11.6 │ │ │ │ ├── sha2 v0.10.8 (*) -│ │ │ │ ├── thiserror v1.0.50 (*) -│ │ │ │ ├── unicode-normalization v0.1.22 (*) -│ │ │ │ ├── wasm-bindgen v0.2.87 (*) -│ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ ├── tracing v0.1.40 (*) -│ │ │ └── zeroize v1.6.0 (*) -│ │ ├── sp-metadata-ir v0.3.0 -│ │ │ ├── frame-metadata v16.0.0 (*) -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── scale-info v2.10.0 (*) -│ │ │ └── sp-std v11.0.0 -│ │ ├── sp-runtime v27.0.0 -│ │ │ ├── either v1.9.0 -│ │ │ ├── hash256-std-hasher v0.15.2 (*) -│ │ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ │ ├── log v0.4.20 -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── paste v1.0.14 (proc-macro) -│ │ │ ├── rand v0.8.5 (*) -│ │ │ ├── scale-info v2.10.0 (*) -│ │ │ ├── serde v1.0.190 (*) -│ │ │ ├── sp-application-crypto v26.0.0 -│ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ ├── sp-core v24.0.0 (*) -│ │ │ │ ├── sp-io v26.0.0 -│ │ │ │ │ ├── bytes v1.5.0 -│ │ │ │ │ ├── ed25519-dalek v2.0.0 -│ │ │ │ │ │ ├── curve25519-dalek v4.1.1 -│ │ │ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ │ ├── platforms v3.1.2 -│ │ │ │ │ │ │ └── rustc_version v0.4.0 -│ │ │ │ │ │ │ └── semver v1.0.20 -│ │ │ │ │ │ ├── ed25519 v2.2.3 -│ │ │ │ │ │ │ └── signature v2.1.0 (*) -│ │ │ │ │ │ └── sha2 v0.10.8 (*) -│ │ │ │ │ ├── libsecp256k1 v0.7.1 (*) -│ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ ├── secp256k1 v0.24.3 (*) -│ │ │ │ │ ├── sp-core v24.0.0 (*) -│ │ │ │ │ ├── sp-externalities v0.22.0 (*) -│ │ │ │ │ ├── sp-keystore v0.30.0 -│ │ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ │ ├── parking_lot v0.12.1 (*) -│ │ │ │ │ │ ├── sp-core v24.0.0 (*) -│ │ │ │ │ │ ├── sp-externalities v0.22.0 (*) -│ │ │ │ │ │ └── thiserror v1.0.50 (*) -│ │ │ │ │ ├── sp-runtime-interface v20.0.0 (*) -│ │ │ │ │ ├── sp-state-machine v0.31.0 -│ │ │ │ │ │ ├── hash-db v0.16.0 -│ │ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ │ ├── parking_lot v0.12.1 (*) -│ │ │ │ │ │ ├── rand v0.8.5 (*) -│ │ │ │ │ │ ├── smallvec v1.11.1 -│ │ │ │ │ │ ├── sp-core v24.0.0 (*) -│ │ │ │ │ │ ├── sp-externalities v0.22.0 (*) -│ │ │ │ │ │ ├── sp-panic-handler v11.0.0 -│ │ │ │ │ │ │ ├── backtrace v0.3.69 -│ │ │ │ │ │ │ │ ├── addr2line v0.21.0 -│ │ │ │ │ │ │ │ │ └── gimli v0.28.0 -│ │ │ │ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ │ │ │ ├── libc v0.2.149 -│ │ │ │ │ │ │ │ ├── miniz_oxide v0.7.1 -│ │ │ │ │ │ │ │ │ └── adler v1.0.2 -│ │ │ │ │ │ │ │ ├── object v0.32.1 -│ │ │ │ │ │ │ │ │ └── memchr v2.6.4 -│ │ │ │ │ │ │ │ └── rustc-demangle v0.1.23 -│ │ │ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ │ │ └── cc v1.0.83 (*) -│ │ │ │ │ │ │ ├── lazy_static v1.4.0 -│ │ │ │ │ │ │ └── regex v1.10.2 (*) -│ │ │ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ │ │ ├── sp-trie v25.0.0 -│ │ │ │ │ │ │ ├── ahash v0.8.6 (*) -│ │ │ │ │ │ │ ├── hash-db v0.16.0 -│ │ │ │ │ │ │ ├── hashbrown v0.13.2 (*) -│ │ │ │ │ │ │ ├── lazy_static v1.4.0 -│ │ │ │ │ │ │ ├── memory-db v0.32.0 -│ │ │ │ │ │ │ │ └── hash-db v0.16.0 -│ │ │ │ │ │ │ ├── nohash-hasher v0.2.0 -│ │ │ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ │ │ ├── parking_lot v0.12.1 (*) -│ │ │ │ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ │ │ │ ├── schnellru v0.2.1 -│ │ │ │ │ │ │ │ ├── ahash v0.8.6 (*) -│ │ │ │ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ │ │ │ └── hashbrown v0.13.2 (*) -│ │ │ │ │ │ │ ├── sp-core v24.0.0 (*) -│ │ │ │ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ │ │ │ ├── thiserror v1.0.50 (*) -│ │ │ │ │ │ │ ├── tracing v0.1.40 (*) -│ │ │ │ │ │ │ ├── trie-db v0.28.0 -│ │ │ │ │ │ │ │ ├── hash-db v0.16.0 -│ │ │ │ │ │ │ │ ├── hashbrown v0.13.2 (*) -│ │ │ │ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ │ │ │ ├── rustc-hex v2.1.0 -│ │ │ │ │ │ │ │ └── smallvec v1.11.1 -│ │ │ │ │ │ │ └── trie-root v0.18.0 -│ │ │ │ │ │ │ └── hash-db v0.16.0 -│ │ │ │ │ │ ├── thiserror v1.0.50 (*) -│ │ │ │ │ │ ├── tracing v0.1.40 (*) -│ │ │ │ │ │ └── trie-db v0.28.0 (*) -│ │ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ │ ├── sp-tracing v13.0.0 (*) -│ │ │ │ │ ├── sp-trie v25.0.0 (*) -│ │ │ │ │ ├── tracing v0.1.40 (*) -│ │ │ │ │ └── tracing-core v0.1.32 (*) -│ │ │ │ │ [build-dependencies] -│ │ │ │ │ └── rustversion v1.0.14 (proc-macro) -│ │ │ │ └── sp-std v11.0.0 -│ │ │ ├── sp-arithmetic v19.0.0 -│ │ │ │ ├── integer-sqrt v0.1.5 -│ │ │ │ │ └── num-traits v0.2.17 (*) -│ │ │ │ ├── num-traits v0.2.17 (*) -│ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ └── static_assertions v1.1.0 -│ │ │ ├── sp-core v24.0.0 (*) -│ │ │ ├── sp-io v26.0.0 (*) -│ │ │ ├── sp-std v11.0.0 -│ │ │ └── sp-weights v23.0.0 -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── scale-info v2.10.0 (*) -│ │ │ ├── serde v1.0.190 (*) -│ │ │ ├── smallvec v1.11.1 -│ │ │ ├── sp-arithmetic v19.0.0 (*) -│ │ │ ├── sp-core v24.0.0 (*) -│ │ │ ├── sp-debug-derive v11.0.0 (proc-macro) (*) -│ │ │ └── sp-std v11.0.0 -│ │ ├── sp-std v11.0.0 -│ │ └── sp-version v25.0.0 -│ │ ├── impl-serde v0.4.0 (*) -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── scale-info v2.10.0 (*) -│ │ ├── serde v1.0.190 (*) -│ │ ├── sp-core-hashing-proc-macro v12.0.0 (proc-macro) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ ├── sp-core-hashing v12.0.0 -│ │ │ │ ├── blake2b_simd v1.0.2 -│ │ │ │ │ ├── arrayref v0.3.7 -│ │ │ │ │ ├── arrayvec v0.7.4 -│ │ │ │ │ └── constant_time_eq v0.3.0 -│ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ ├── sha2 v0.10.8 -│ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ ├── cpufeatures v0.2.11 -│ │ │ │ │ │ └── libc v0.2.149 -│ │ │ │ │ └── digest v0.10.7 (*) -│ │ │ │ ├── sha3 v0.10.8 -│ │ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ │ └── keccak v0.1.4 -│ │ │ │ │ └── cpufeatures v0.2.11 (*) -│ │ │ │ └── twox-hash v1.6.3 -│ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ └── static_assertions v1.1.0 -│ │ │ └── syn v2.0.38 (*) -│ │ ├── sp-runtime v27.0.0 (*) -│ │ ├── sp-std v11.0.0 -│ │ └── sp-version-proc-macro v11.0.0 (proc-macro) -│ │ ├── parity-scale-codec v3.6.5 -│ │ │ ├── arrayvec v0.7.4 -│ │ │ ├── byte-slice-cast v1.2.2 -│ │ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ │ ├── parity-scale-codec-derive v3.6.5 (proc-macro) (*) -│ │ │ └── serde v1.0.190 (*) -│ │ ├── proc-macro2 v1.0.69 (*) -│ │ ├── quote v1.0.33 (*) -│ │ └── syn v2.0.38 (*) -│ ├── sp-arithmetic v19.0.0 (*) -│ ├── sp-core v24.0.0 (*) -│ ├── sp-core-hashing-proc-macro v12.0.0 (proc-macro) (*) -│ ├── sp-debug-derive v11.0.0 (proc-macro) (*) -│ ├── sp-genesis-builder v0.3.0 -│ │ ├── serde_json v1.0.108 (*) -│ │ ├── sp-api v22.0.0 (*) -│ │ ├── sp-runtime v27.0.0 (*) -│ │ └── sp-std v11.0.0 -│ ├── sp-inherents v22.0.0 -│ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── scale-info v2.10.0 (*) -│ │ └── sp-std v11.0.0 -│ ├── sp-io v26.0.0 (*) -│ ├── sp-metadata-ir v0.3.0 (*) -│ ├── sp-runtime v27.0.0 (*) -│ ├── sp-staking v22.0.0 -│ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── scale-info v2.10.0 (*) -│ │ ├── sp-core v24.0.0 (*) -│ │ ├── sp-runtime v27.0.0 (*) -│ │ └── sp-std v11.0.0 -│ ├── sp-std v11.0.0 -│ ├── sp-tracing v13.0.0 (*) -│ ├── sp-weights v23.0.0 (*) -│ ├── static_assertions v1.1.0 -│ └── tt-call v1.0.9 -├── frame-system v24.0.0 -│ ├── cfg-if v1.0.0 -│ ├── frame-support v24.0.0 (*) -│ ├── log v0.4.20 -│ ├── parity-scale-codec v3.6.5 (*) -│ ├── scale-info v2.10.0 (*) -│ ├── serde v1.0.190 (*) -│ ├── sp-core v24.0.0 (*) -│ ├── sp-io v26.0.0 (*) -│ ├── sp-runtime v27.0.0 (*) -│ ├── sp-std v11.0.0 -│ ├── sp-version v25.0.0 (*) -│ └── sp-weights v23.0.0 (*) -├── macro-attr-2018 v3.0.0 -├── newtype-derive-2018 v0.2.1 (*) -├── parity-scale-codec v3.6.5 (*) -├── scale-info v2.10.0 (*) -├── sp-std v11.0.0 -├── tracing v0.1.40 (*) -└── uuid v1.5.0 (*) +│ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ ├── ecdsa feature "der" +│ │ │ │ │ └── ecdsa v0.14.8 +│ │ │ │ │ ├── der feature "default" +│ │ │ │ │ │ └── der v0.6.1 +│ │ │ │ │ │ └── const-oid feature "default" (*) +│ │ │ │ │ ├── elliptic-curve feature "digest" +│ │ │ │ │ │ └── elliptic-curve v0.12.3 +│ │ │ │ │ │ ├── ff v0.12.1 +│ │ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ │ └── subtle feature "i128" (*) +│ │ │ │ │ │ ├── generic-array v0.14.7 (*) +│ │ │ │ │ │ ├── group v0.12.1 +│ │ │ │ │ │ │ ├── ff v0.12.1 (*) +│ │ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ │ └── subtle v2.5.0 +│ │ │ │ │ │ ├── pkcs8 v0.9.0 +│ │ │ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ │ │ ├── der feature "oid" +│ │ │ │ │ │ │ │ ├── der v0.6.1 (*) +│ │ │ │ │ │ │ │ └── der feature "const-oid" +│ │ │ │ │ │ │ │ └── der v0.6.1 (*) +│ │ │ │ │ │ │ └── spki feature "default" +│ │ │ │ │ │ │ └── spki v0.6.0 +│ │ │ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ │ │ └── der feature "oid" (*) +│ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ ├── der feature "oid" (*) +│ │ │ │ │ │ ├── base16ct feature "default" +│ │ │ │ │ │ │ └── base16ct v0.1.1 +│ │ │ │ │ │ ├── crypto-bigint feature "generic-array" +│ │ │ │ │ │ │ └── crypto-bigint v0.4.9 +│ │ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ ├── rand_core feature "default" (*) +│ │ │ │ │ │ │ └── generic-array feature "default" (*) +│ │ │ │ │ │ ├── crypto-bigint feature "rand_core" +│ │ │ │ │ │ │ └── crypto-bigint v0.4.9 (*) +│ │ │ │ │ │ ├── crypto-bigint feature "zeroize" +│ │ │ │ │ │ │ └── crypto-bigint v0.4.9 (*) +│ │ │ │ │ │ ├── digest feature "default" (*) +│ │ │ │ │ │ ├── sec1 feature "default" +│ │ │ │ │ │ │ ├── sec1 v0.3.0 +│ │ │ │ │ │ │ │ ├── base16ct v0.1.1 +│ │ │ │ │ │ │ │ ├── generic-array v0.14.7 (*) +│ │ │ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ │ │ │ └── der feature "oid" (*) +│ │ │ │ │ │ │ ├── sec1 feature "der" +│ │ │ │ │ │ │ │ └── sec1 v0.3.0 (*) +│ │ │ │ │ │ │ └── sec1 feature "point" +│ │ │ │ │ │ │ ├── sec1 v0.3.0 (*) +│ │ │ │ │ │ │ ├── sec1 feature "base16ct" +│ │ │ │ │ │ │ │ └── sec1 v0.3.0 (*) +│ │ │ │ │ │ │ └── sec1 feature "generic-array" +│ │ │ │ │ │ │ └── sec1 v0.3.0 (*) +│ │ │ │ │ │ ├── sec1 feature "subtle" +│ │ │ │ │ │ │ └── sec1 v0.3.0 (*) +│ │ │ │ │ │ └── sec1 feature "zeroize" +│ │ │ │ │ │ └── sec1 v0.3.0 (*) +│ │ │ │ │ ├── elliptic-curve feature "sec1" +│ │ │ │ │ │ └── elliptic-curve v0.12.3 (*) +│ │ │ │ │ ├── rfc6979 feature "default" +│ │ │ │ │ │ └── rfc6979 v0.3.1 +│ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ ├── crypto-bigint feature "generic-array" (*) +│ │ │ │ │ │ ├── crypto-bigint feature "zeroize" (*) +│ │ │ │ │ │ └── hmac feature "reset" (*) +│ │ │ │ │ ├── signature feature "hazmat-preview" +│ │ │ │ │ │ └── signature v1.6.4 +│ │ │ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ │ │ └── rand_core v0.6.4 (*) +│ │ │ │ │ └── signature feature "rand-preview" +│ │ │ │ │ ├── signature v1.6.4 (*) +│ │ │ │ │ └── signature feature "rand_core" +│ │ │ │ │ └── signature v1.6.4 (*) +│ │ │ │ ├── elliptic-curve feature "hazmat" +│ │ │ │ │ └── elliptic-curve v0.12.3 (*) +│ │ │ │ └── elliptic-curve feature "sec1" (*) +│ │ │ ├── k256 feature "arithmetic" +│ │ │ │ ├── k256 v0.11.6 (*) +│ │ │ │ └── elliptic-curve feature "arithmetic" +│ │ │ │ ├── elliptic-curve v0.12.3 (*) +│ │ │ │ ├── elliptic-curve feature "ff" +│ │ │ │ │ └── elliptic-curve v0.12.3 (*) +│ │ │ │ └── elliptic-curve feature "group" +│ │ │ │ └── elliptic-curve v0.12.3 (*) +│ │ │ ├── k256 feature "ecdsa-core" +│ │ │ │ └── k256 v0.11.6 (*) +│ │ │ ├── k256 feature "sha256" +│ │ │ │ ├── k256 v0.11.6 (*) +│ │ │ │ ├── k256 feature "digest" +│ │ │ │ │ ├── k256 v0.11.6 (*) +│ │ │ │ │ ├── k256 feature "ecdsa-core" (*) +│ │ │ │ │ ├── ecdsa feature "digest" +│ │ │ │ │ │ ├── ecdsa v0.14.8 (*) +│ │ │ │ │ │ └── signature feature "digest-preview" +│ │ │ │ │ │ ├── signature v1.6.4 (*) +│ │ │ │ │ │ └── signature feature "digest" +│ │ │ │ │ │ └── signature v1.6.4 (*) +│ │ │ │ │ └── ecdsa feature "hazmat" +│ │ │ │ │ └── ecdsa v0.14.8 (*) +│ │ │ │ └── k256 feature "sha2" +│ │ │ │ └── k256 v0.11.6 (*) +│ │ │ ├── ecdsa feature "sign" +│ │ │ │ ├── ecdsa v0.14.8 (*) +│ │ │ │ ├── ecdsa feature "arithmetic" +│ │ │ │ │ ├── ecdsa v0.14.8 (*) +│ │ │ │ │ └── elliptic-curve feature "arithmetic" (*) +│ │ │ │ ├── ecdsa feature "digest" (*) +│ │ │ │ ├── ecdsa feature "hazmat" (*) +│ │ │ │ └── ecdsa feature "rfc6979" +│ │ │ │ └── ecdsa v0.14.8 (*) +│ │ │ └── ecdsa feature "verify" +│ │ │ ├── ecdsa v0.14.8 (*) +│ │ │ ├── ecdsa feature "arithmetic" (*) +│ │ │ ├── ecdsa feature "digest" (*) +│ │ │ └── ecdsa feature "hazmat" (*) +│ │ ├── k256 feature "pkcs8" +│ │ │ ├── k256 v0.11.6 (*) +│ │ │ ├── k256 feature "ecdsa-core" (*) +│ │ │ ├── ecdsa feature "pkcs8" +│ │ │ │ ├── ecdsa v0.14.8 (*) +│ │ │ │ ├── ecdsa feature "der" (*) +│ │ │ │ └── elliptic-curve feature "pkcs8" +│ │ │ │ └── elliptic-curve v0.12.3 (*) +│ │ │ └── elliptic-curve feature "pkcs8" (*) +│ │ ├── macro-attr-2018 feature "default" +│ │ │ └── macro-attr-2018 v3.0.0 +│ │ ├── newtype-derive-2018 feature "default" +│ │ │ └── newtype-derive-2018 v0.2.3 +│ │ │ └── generics feature "default" +│ │ │ └── generics v0.5.3 +│ │ ├── parity-scale-codec feature "derive" (*) +│ │ ├── parity-scale-codec feature "max-encoded-len" (*) +│ │ ├── scale-decode feature "derive" +│ │ │ └── scale-decode v0.10.0 +│ │ │ ├── smallvec feature "default" (*) +│ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ ├── scale-bits feature "scale-info" +│ │ │ │ └── scale-bits v0.4.0 +│ │ │ │ ├── parity-scale-codec v3.6.12 (*) +│ │ │ │ └── scale-info v2.11.3 (*) +│ │ │ └── scale-info feature "bit-vec" +│ │ │ ├── scale-info v2.11.3 (*) +│ │ │ └── scale-info feature "bitvec" +│ │ │ └── scale-info v2.11.3 (*) +│ │ ├── scale-info feature "derive" (*) +│ │ ├── scale-encode feature "bits" +│ │ │ └── scale-encode v0.5.0 +│ │ │ ├── primitive-types v0.12.2 (*) +│ │ │ ├── smallvec feature "default" (*) +│ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ ├── scale-bits feature "scale-info" (*) +│ │ │ └── scale-info feature "bit-vec" (*) +│ │ ├── scale-encode feature "derive" +│ │ │ └── scale-encode v0.5.0 (*) +│ │ ├── scale-encode feature "primitive-types" +│ │ │ └── scale-encode v0.5.0 (*) +│ │ ├── thiserror-no-std feature "default" +│ │ │ └── thiserror-no-std v2.0.2 +│ │ └── uuid feature "serde" +│ │ └── uuid v1.8.0 (*) +│ │ [build-dependencies] +│ │ ├── serde_json v1.0.117 (*) +│ │ ├── lazy_static feature "default" (*) +│ │ └── glob feature "default" +│ │ └── glob v0.3.1 +│ ├── lazy_static feature "spin_no_std" +│ │ ├── lazy_static v1.4.0 (*) +│ │ └── lazy_static feature "spin" +│ │ └── lazy_static v1.4.0 (*) +│ ├── common feature "parity-scale-codec" +│ │ └── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) (*) +│ ├── common feature "scale-decode" +│ │ └── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) (*) +│ ├── common feature "scale-encode" +│ │ └── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) (*) +│ └── common feature "scale-info" +│ └── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) (*) +├── macro-attr-2018 feature "default" (*) +├── newtype-derive-2018 feature "default" (*) +├── parity-scale-codec feature "derive" (*) +└── scale-info feature "derive" (*) [dev-dependencies] -├── chronicle-telemetry v0.7.5 (/Users/ryan/code/chronicle/crates/chronicle-telemetry) -│ ├── cfg-if v1.0.0 -│ ├── console-subscriber v0.1.10 -│ │ ├── console-api v0.5.0 -│ │ │ ├── prost v0.11.9 -│ │ │ │ ├── bytes v1.5.0 -│ │ │ │ └── prost-derive v0.11.9 (proc-macro) -│ │ │ │ ├── anyhow v1.0.75 -│ │ │ │ ├── itertools v0.10.5 (*) -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v1.0.109 (*) -│ │ │ ├── prost-types v0.11.9 -│ │ │ │ └── prost v0.11.9 (*) -│ │ │ ├── tonic v0.9.2 -│ │ │ │ ├── async-trait v0.1.74 (proc-macro) (*) -│ │ │ │ ├── axum v0.6.20 -│ │ │ │ │ ├── async-trait v0.1.74 (proc-macro) (*) -│ │ │ │ │ ├── axum-core v0.3.4 -│ │ │ │ │ │ ├── async-trait v0.1.74 (proc-macro) (*) -│ │ │ │ │ │ ├── bytes v1.5.0 -│ │ │ │ │ │ ├── futures-util v0.3.29 (*) -│ │ │ │ │ │ ├── http v0.2.9 -│ │ │ │ │ │ │ ├── bytes v1.5.0 -│ │ │ │ │ │ │ ├── fnv v1.0.7 -│ │ │ │ │ │ │ └── itoa v1.0.9 -│ │ │ │ │ │ ├── http-body v0.4.5 -│ │ │ │ │ │ │ ├── bytes v1.5.0 -│ │ │ │ │ │ │ ├── http v0.2.9 (*) -│ │ │ │ │ │ │ └── pin-project-lite v0.2.13 -│ │ │ │ │ │ ├── mime v0.3.17 -│ │ │ │ │ │ ├── tower-layer v0.3.2 -│ │ │ │ │ │ └── tower-service v0.3.2 -│ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ └── rustversion v1.0.14 (proc-macro) -│ │ │ │ │ ├── bitflags v1.3.2 -│ │ │ │ │ ├── bytes v1.5.0 -│ │ │ │ │ ├── futures-util v0.3.29 (*) -│ │ │ │ │ ├── http v0.2.9 (*) -│ │ │ │ │ ├── http-body v0.4.5 (*) -│ │ │ │ │ ├── hyper v0.14.27 -│ │ │ │ │ │ ├── bytes v1.5.0 -│ │ │ │ │ │ ├── futures-channel v0.3.29 (*) -│ │ │ │ │ │ ├── futures-core v0.3.29 -│ │ │ │ │ │ ├── futures-util v0.3.29 (*) -│ │ │ │ │ │ ├── h2 v0.3.21 -│ │ │ │ │ │ │ ├── bytes v1.5.0 -│ │ │ │ │ │ │ ├── fnv v1.0.7 -│ │ │ │ │ │ │ ├── futures-core v0.3.29 -│ │ │ │ │ │ │ ├── futures-sink v0.3.29 -│ │ │ │ │ │ │ ├── futures-util v0.3.29 (*) -│ │ │ │ │ │ │ ├── http v0.2.9 (*) -│ │ │ │ │ │ │ ├── indexmap v1.9.3 (*) -│ │ │ │ │ │ │ ├── slab v0.4.9 (*) -│ │ │ │ │ │ │ ├── tokio v1.33.0 -│ │ │ │ │ │ │ │ ├── bytes v1.5.0 -│ │ │ │ │ │ │ │ ├── mio v0.8.9 -│ │ │ │ │ │ │ │ ├── num_cpus v1.16.0 (*) -│ │ │ │ │ │ │ │ ├── pin-project-lite v0.2.13 -│ │ │ │ │ │ │ │ └── tokio-macros v2.1.0 (proc-macro) -│ │ │ │ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ │ │ │ ├── tokio-util v0.7.10 -│ │ │ │ │ │ │ │ ├── bytes v1.5.0 -│ │ │ │ │ │ │ │ ├── futures-core v0.3.29 -│ │ │ │ │ │ │ │ ├── futures-sink v0.3.29 -│ │ │ │ │ │ │ │ ├── pin-project-lite v0.2.13 -│ │ │ │ │ │ │ │ ├── tokio v1.33.0 (*) -│ │ │ │ │ │ │ │ └── tracing v0.1.40 (*) -│ │ │ │ │ │ │ └── tracing v0.1.40 (*) -│ │ │ │ │ │ ├── http v0.2.9 (*) -│ │ │ │ │ │ ├── http-body v0.4.5 (*) -│ │ │ │ │ │ ├── httparse v1.8.0 -│ │ │ │ │ │ ├── httpdate v1.0.3 -│ │ │ │ │ │ ├── itoa v1.0.9 -│ │ │ │ │ │ ├── pin-project-lite v0.2.13 -│ │ │ │ │ │ ├── socket2 v0.4.10 -│ │ │ │ │ │ ├── tokio v1.33.0 (*) -│ │ │ │ │ │ ├── tower-service v0.3.2 -│ │ │ │ │ │ ├── tracing v0.1.40 (*) -│ │ │ │ │ │ └── want v0.3.1 -│ │ │ │ │ │ └── try-lock v0.2.4 -│ │ │ │ │ ├── itoa v1.0.9 -│ │ │ │ │ ├── matchit v0.7.3 -│ │ │ │ │ ├── memchr v2.6.4 -│ │ │ │ │ ├── mime v0.3.17 -│ │ │ │ │ ├── percent-encoding v2.3.0 -│ │ │ │ │ ├── pin-project-lite v0.2.13 -│ │ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ │ ├── sync_wrapper v0.1.2 -│ │ │ │ │ ├── tower v0.4.13 -│ │ │ │ │ │ ├── futures-core v0.3.29 -│ │ │ │ │ │ ├── futures-util v0.3.29 (*) -│ │ │ │ │ │ ├── indexmap v1.9.3 (*) -│ │ │ │ │ │ ├── pin-project v1.1.3 -│ │ │ │ │ │ │ └── pin-project-internal v1.1.3 (proc-macro) -│ │ │ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ │ │ ├── pin-project-lite v0.2.13 -│ │ │ │ │ │ ├── rand v0.8.5 (*) -│ │ │ │ │ │ ├── slab v0.4.9 (*) -│ │ │ │ │ │ ├── tokio v1.33.0 (*) -│ │ │ │ │ │ ├── tokio-util v0.7.10 (*) -│ │ │ │ │ │ ├── tower-layer v0.3.2 -│ │ │ │ │ │ ├── tower-service v0.3.2 -│ │ │ │ │ │ └── tracing v0.1.40 (*) -│ │ │ │ │ ├── tower-layer v0.3.2 -│ │ │ │ │ └── tower-service v0.3.2 -│ │ │ │ │ [build-dependencies] -│ │ │ │ │ └── rustversion v1.0.14 (proc-macro) -│ │ │ │ ├── base64 v0.21.5 -│ │ │ │ ├── bytes v1.5.0 -│ │ │ │ ├── futures-core v0.3.29 -│ │ │ │ ├── futures-util v0.3.29 (*) -│ │ │ │ ├── h2 v0.3.21 (*) -│ │ │ │ ├── http v0.2.9 (*) -│ │ │ │ ├── http-body v0.4.5 (*) -│ │ │ │ ├── hyper v0.14.27 (*) -│ │ │ │ ├── hyper-timeout v0.4.1 -│ │ │ │ │ ├── hyper v0.14.27 (*) -│ │ │ │ │ ├── pin-project-lite v0.2.13 -│ │ │ │ │ ├── tokio v1.33.0 (*) -│ │ │ │ │ └── tokio-io-timeout v1.2.0 -│ │ │ │ │ ├── pin-project-lite v0.2.13 -│ │ │ │ │ └── tokio v1.33.0 (*) -│ │ │ │ ├── percent-encoding v2.3.0 -│ │ │ │ ├── pin-project v1.1.3 (*) -│ │ │ │ ├── prost v0.11.9 (*) -│ │ │ │ ├── tokio v1.33.0 (*) -│ │ │ │ ├── tokio-stream v0.1.14 -│ │ │ │ │ ├── futures-core v0.3.29 -│ │ │ │ │ ├── pin-project-lite v0.2.13 -│ │ │ │ │ └── tokio v1.33.0 (*) -│ │ │ │ ├── tower v0.4.13 (*) -│ │ │ │ ├── tower-layer v0.3.2 -│ │ │ │ ├── tower-service v0.3.2 -│ │ │ │ └── tracing v0.1.40 (*) -│ │ │ └── tracing-core v0.1.32 (*) -│ │ ├── crossbeam-channel v0.5.8 -│ │ │ ├── cfg-if v1.0.0 -│ │ │ └── crossbeam-utils v0.8.16 -│ │ │ └── cfg-if v1.0.0 -│ │ ├── crossbeam-utils v0.8.16 (*) -│ │ ├── futures v0.3.29 (*) -│ │ ├── hdrhistogram v7.5.2 -│ │ │ ├── base64 v0.13.1 -│ │ │ ├── byteorder v1.5.0 -│ │ │ ├── flate2 v1.0.28 -│ │ │ │ ├── crc32fast v1.3.2 (*) -│ │ │ │ └── miniz_oxide v0.7.1 (*) -│ │ │ ├── nom v7.1.3 -│ │ │ │ ├── memchr v2.6.4 -│ │ │ │ └── minimal-lexical v0.2.1 -│ │ │ └── num-traits v0.2.17 (*) -│ │ ├── humantime v2.1.0 -│ │ ├── prost-types v0.11.9 (*) -│ │ ├── serde v1.0.190 (*) -│ │ ├── serde_json v1.0.108 (*) -│ │ ├── thread_local v1.1.7 (*) -│ │ ├── tokio v1.33.0 (*) -│ │ ├── tokio-stream v0.1.14 (*) -│ │ ├── tonic v0.9.2 (*) -│ │ ├── tracing v0.1.40 (*) -│ │ ├── tracing-core v0.1.32 (*) -│ │ └── tracing-subscriber v0.3.17 -│ │ ├── matchers v0.1.0 -│ │ │ └── regex-automata v0.1.10 (*) -│ │ ├── nu-ansi-term v0.46.0 -│ │ │ └── overload v0.1.1 -│ │ ├── once_cell v1.18.0 -│ │ ├── regex v1.10.2 (*) -│ │ ├── serde v1.0.190 (*) -│ │ ├── serde_json v1.0.108 (*) -│ │ ├── sharded-slab v0.1.7 (*) -│ │ ├── smallvec v1.11.1 -│ │ ├── thread_local v1.1.7 (*) -│ │ ├── tracing v0.1.40 (*) -│ │ ├── tracing-core v0.1.32 (*) -│ │ ├── tracing-log v0.1.4 (*) -│ │ └── tracing-serde v0.1.3 (*) -│ ├── tracing v0.1.40 (*) -│ ├── tracing-elastic-apm v3.2.3 -│ │ ├── anyhow v1.0.75 -│ │ ├── base64 v0.13.1 -│ │ ├── fxhash v0.2.1 -│ │ │ └── byteorder v1.5.0 -│ │ ├── rand v0.8.5 (*) -│ │ ├── reqwest v0.11.22 -│ │ │ ├── base64 v0.21.5 -│ │ │ ├── bytes v1.5.0 -│ │ │ ├── futures-core v0.3.29 -│ │ │ ├── futures-util v0.3.29 (*) -│ │ │ ├── http v0.2.9 (*) -│ │ │ ├── js-sys v0.3.64 (*) -│ │ │ ├── serde v1.0.190 (*) -│ │ │ ├── serde_json v1.0.108 (*) -│ │ │ ├── serde_urlencoded v0.7.1 -│ │ │ │ ├── form_urlencoded v1.2.0 (*) -│ │ │ │ ├── itoa v1.0.9 -│ │ │ │ ├── ryu v1.0.15 -│ │ │ │ └── serde v1.0.190 (*) -│ │ │ ├── tower-service v0.3.2 -│ │ │ ├── url v2.4.1 (*) -│ │ │ ├── wasm-bindgen v0.2.87 (*) -│ │ │ ├── wasm-bindgen-futures v0.4.37 -│ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ ├── js-sys v0.3.64 (*) -│ │ │ │ └── wasm-bindgen v0.2.87 (*) -│ │ │ └── web-sys v0.3.64 -│ │ │ ├── js-sys v0.3.64 (*) -│ │ │ └── wasm-bindgen v0.2.87 (*) -│ │ ├── serde v1.0.190 (*) -│ │ ├── serde_json v1.0.108 (*) -│ │ ├── tokio v1.33.0 (*) -│ │ ├── tracing v0.1.40 (*) -│ │ ├── tracing-subscriber v0.3.17 (*) -│ │ └── version v3.0.0 -│ ├── tracing-log v0.1.4 (*) -│ ├── tracing-subscriber v0.3.17 (*) -│ └── url v2.4.1 (*) -├── sp-core v24.0.0 (*) -└── sp-runtime v27.0.0 (*) +├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── chronicle-telemetry feature "default" +│ └── chronicle-telemetry v0.7.5 (/Users/ryan/code/chronicle/crates/chronicle-telemetry) +│ ├── cfg-if feature "default" (*) +│ ├── console-subscriber feature "default" +│ │ ├── console-subscriber v0.2.0 +│ │ │ ├── futures-task v0.3.30 +│ │ │ ├── console-api feature "default" +│ │ │ │ └── console-api v0.6.0 +│ │ │ │ ├── futures-core feature "default" +│ │ │ │ │ ├── futures-core v0.3.30 +│ │ │ │ │ └── futures-core feature "std" +│ │ │ │ │ ├── futures-core v0.3.30 +│ │ │ │ │ └── futures-core feature "alloc" +│ │ │ │ │ └── futures-core v0.3.30 +│ │ │ │ ├── prost feature "default" +│ │ │ │ │ ├── prost v0.12.6 +│ │ │ │ │ │ └── bytes v1.6.0 +│ │ │ │ │ ├── prost feature "derive" +│ │ │ │ │ │ └── prost v0.12.6 (*) +│ │ │ │ │ └── prost feature "std" +│ │ │ │ │ └── prost v0.12.6 (*) +│ │ │ │ ├── prost-types feature "default" +│ │ │ │ │ ├── prost-types v0.12.6 +│ │ │ │ │ │ └── prost feature "prost-derive" +│ │ │ │ │ │ ├── prost v0.12.6 (*) +│ │ │ │ │ │ └── prost feature "derive" (*) +│ │ │ │ │ └── prost-types feature "std" +│ │ │ │ │ ├── prost-types v0.12.6 (*) +│ │ │ │ │ └── prost feature "std" (*) +│ │ │ │ ├── tonic feature "codegen" +│ │ │ │ │ └── tonic v0.10.2 +│ │ │ │ │ ├── axum v0.6.20 +│ │ │ │ │ │ ├── bytes feature "default" +│ │ │ │ │ │ │ ├── bytes v1.6.0 +│ │ │ │ │ │ │ └── bytes feature "std" +│ │ │ │ │ │ │ └── bytes v1.6.0 +│ │ │ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ │ │ ├── axum-core feature "default" +│ │ │ │ │ │ │ └── axum-core v0.3.4 +│ │ │ │ │ │ │ ├── bytes feature "default" (*) +│ │ │ │ │ │ │ ├── futures-util feature "alloc" +│ │ │ │ │ │ │ │ ├── futures-util v0.3.30 (*) +│ │ │ │ │ │ │ │ ├── futures-core feature "alloc" (*) +│ │ │ │ │ │ │ │ └── futures-task feature "alloc" +│ │ │ │ │ │ │ │ └── futures-task v0.3.30 +│ │ │ │ │ │ │ ├── http feature "default" +│ │ │ │ │ │ │ │ └── http v0.2.12 +│ │ │ │ │ │ │ │ ├── bytes feature "default" (*) +│ │ │ │ │ │ │ │ ├── fnv feature "default" +│ │ │ │ │ │ │ │ │ ├── fnv v1.0.7 +│ │ │ │ │ │ │ │ │ └── fnv feature "std" +│ │ │ │ │ │ │ │ │ └── fnv v1.0.7 +│ │ │ │ │ │ │ │ └── itoa feature "default" (*) +│ │ │ │ │ │ │ ├── http-body feature "default" +│ │ │ │ │ │ │ │ └── http-body v0.4.6 +│ │ │ │ │ │ │ │ ├── bytes feature "default" (*) +│ │ │ │ │ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ │ │ │ │ └── http feature "default" (*) +│ │ │ │ │ │ │ ├── mime feature "default" +│ │ │ │ │ │ │ │ └── mime v0.3.17 +│ │ │ │ │ │ │ ├── tower-layer feature "default" +│ │ │ │ │ │ │ │ └── tower-layer v0.3.2 +│ │ │ │ │ │ │ └── tower-service feature "default" +│ │ │ │ │ │ │ └── tower-service v0.3.2 +│ │ │ │ │ │ ├── futures-util feature "alloc" (*) +│ │ │ │ │ │ ├── http feature "default" (*) +│ │ │ │ │ │ ├── itoa feature "default" (*) +│ │ │ │ │ │ ├── http-body feature "default" (*) +│ │ │ │ │ │ ├── mime feature "default" (*) +│ │ │ │ │ │ ├── tower-layer feature "default" (*) +│ │ │ │ │ │ ├── tower-service feature "default" (*) +│ │ │ │ │ │ ├── bitflags feature "default" (*) +│ │ │ │ │ │ ├── hyper feature "default" +│ │ │ │ │ │ │ └── hyper v0.14.29 +│ │ │ │ │ │ │ ├── futures-core v0.3.30 +│ │ │ │ │ │ │ ├── futures-util v0.3.30 (*) +│ │ │ │ │ │ │ ├── bytes feature "default" (*) +│ │ │ │ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ │ │ │ ├── http feature "default" (*) +│ │ │ │ │ │ │ ├── itoa feature "default" (*) +│ │ │ │ │ │ │ ├── http-body feature "default" (*) +│ │ │ │ │ │ │ ├── tower-service feature "default" (*) +│ │ │ │ │ │ │ ├── futures-channel feature "default" +│ │ │ │ │ │ │ │ ├── futures-channel v0.3.30 (*) +│ │ │ │ │ │ │ │ └── futures-channel feature "std" +│ │ │ │ │ │ │ │ ├── futures-channel v0.3.30 (*) +│ │ │ │ │ │ │ │ ├── futures-core feature "std" (*) +│ │ │ │ │ │ │ │ └── futures-channel feature "alloc" +│ │ │ │ │ │ │ │ ├── futures-channel v0.3.30 (*) +│ │ │ │ │ │ │ │ └── futures-core feature "alloc" (*) +│ │ │ │ │ │ │ ├── h2 feature "default" +│ │ │ │ │ │ │ │ └── h2 v0.3.26 +│ │ │ │ │ │ │ │ ├── futures-core v0.3.30 +│ │ │ │ │ │ │ │ ├── futures-sink v0.3.30 +│ │ │ │ │ │ │ │ ├── futures-util v0.3.30 (*) +│ │ │ │ │ │ │ │ ├── bytes feature "default" (*) +│ │ │ │ │ │ │ │ ├── slab feature "default" (*) +│ │ │ │ │ │ │ │ ├── http feature "default" (*) +│ │ │ │ │ │ │ │ ├── fnv feature "default" (*) +│ │ │ │ │ │ │ │ ├── indexmap feature "default" +│ │ │ │ │ │ │ │ │ ├── indexmap v2.2.6 +│ │ │ │ │ │ │ │ │ │ ├── equivalent v1.0.1 +│ │ │ │ │ │ │ │ │ │ └── hashbrown feature "raw" +│ │ │ │ │ │ │ │ │ │ └── hashbrown v0.14.5 +│ │ │ │ │ │ │ │ │ └── indexmap feature "std" +│ │ │ │ │ │ │ │ │ └── indexmap v2.2.6 (*) +│ │ │ │ │ │ │ │ ├── indexmap feature "std" (*) +│ │ │ │ │ │ │ │ ├── tokio feature "default" +│ │ │ │ │ │ │ │ │ └── tokio v1.38.0 +│ │ │ │ │ │ │ │ │ ├── mio v0.8.11 +│ │ │ │ │ │ │ │ │ │ └── libc feature "default" (*) +│ │ │ │ │ │ │ │ │ ├── bytes feature "default" (*) +│ │ │ │ │ │ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ │ │ │ │ │ ├── libc feature "default" (*) +│ │ │ │ │ │ │ │ │ ├── socket2 feature "all" +│ │ │ │ │ │ │ │ │ │ └── socket2 v0.5.7 +│ │ │ │ │ │ │ │ │ │ └── libc feature "default" (*) +│ │ │ │ │ │ │ │ │ └── socket2 feature "default" +│ │ │ │ │ │ │ │ │ └── socket2 v0.5.7 (*) +│ │ │ │ │ │ │ │ ├── tokio feature "io-util" +│ │ │ │ │ │ │ │ │ ├── tokio v1.38.0 (*) +│ │ │ │ │ │ │ │ │ └── tokio feature "bytes" +│ │ │ │ │ │ │ │ │ └── tokio v1.38.0 (*) +│ │ │ │ │ │ │ │ ├── tokio-util feature "codec" +│ │ │ │ │ │ │ │ │ └── tokio-util v0.7.11 +│ │ │ │ │ │ │ │ │ ├── futures-core feature "default" (*) +│ │ │ │ │ │ │ │ │ ├── bytes feature "default" (*) +│ │ │ │ │ │ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ │ │ │ │ │ ├── futures-sink feature "default" +│ │ │ │ │ │ │ │ │ │ ├── futures-sink v0.3.30 +│ │ │ │ │ │ │ │ │ │ └── futures-sink feature "std" +│ │ │ │ │ │ │ │ │ │ ├── futures-sink v0.3.30 +│ │ │ │ │ │ │ │ │ │ └── futures-sink feature "alloc" +│ │ │ │ │ │ │ │ │ │ └── futures-sink v0.3.30 +│ │ │ │ │ │ │ │ │ ├── tokio feature "default" (*) +│ │ │ │ │ │ │ │ │ └── tokio feature "sync" +│ │ │ │ │ │ │ │ │ └── tokio v1.38.0 (*) +│ │ │ │ │ │ │ │ ├── tokio-util feature "default" +│ │ │ │ │ │ │ │ │ └── tokio-util v0.7.11 (*) +│ │ │ │ │ │ │ │ ├── tokio-util feature "io" +│ │ │ │ │ │ │ │ │ └── tokio-util v0.7.11 (*) +│ │ │ │ │ │ │ │ └── tracing feature "std" +│ │ │ │ │ │ │ │ ├── tracing v0.1.40 (*) +│ │ │ │ │ │ │ │ └── tracing-core feature "std" +│ │ │ │ │ │ │ │ ├── tracing-core v0.1.32 (*) +│ │ │ │ │ │ │ │ └── tracing-core feature "once_cell" +│ │ │ │ │ │ │ │ └── tracing-core v0.1.32 (*) +│ │ │ │ │ │ │ ├── tokio feature "default" (*) +│ │ │ │ │ │ │ ├── tokio feature "sync" (*) +│ │ │ │ │ │ │ ├── socket2 feature "all" (*) +│ │ │ │ │ │ │ ├── socket2 feature "default" (*) +│ │ │ │ │ │ │ ├── tracing feature "std" (*) +│ │ │ │ │ │ │ ├── httparse feature "default" +│ │ │ │ │ │ │ │ ├── httparse v1.8.0 +│ │ │ │ │ │ │ │ └── httparse feature "std" +│ │ │ │ │ │ │ │ └── httparse v1.8.0 +│ │ │ │ │ │ │ ├── httpdate feature "default" +│ │ │ │ │ │ │ │ └── httpdate v1.0.3 +│ │ │ │ │ │ │ └── want feature "default" +│ │ │ │ │ │ │ └── want v0.3.1 +│ │ │ │ │ │ │ └── try-lock feature "default" +│ │ │ │ │ │ │ └── try-lock v0.2.5 +│ │ │ │ │ │ ├── hyper feature "stream" +│ │ │ │ │ │ │ └── hyper v0.14.29 (*) +│ │ │ │ │ │ ├── matchit feature "default" +│ │ │ │ │ │ │ └── matchit v0.7.3 +│ │ │ │ │ │ ├── memchr feature "default" +│ │ │ │ │ │ │ ├── memchr v2.7.2 +│ │ │ │ │ │ │ └── memchr feature "std" +│ │ │ │ │ │ │ ├── memchr v2.7.2 +│ │ │ │ │ │ │ └── memchr feature "alloc" +│ │ │ │ │ │ │ └── memchr v2.7.2 +│ │ │ │ │ │ ├── percent-encoding feature "default" +│ │ │ │ │ │ │ ├── percent-encoding v2.3.1 +│ │ │ │ │ │ │ └── percent-encoding feature "std" +│ │ │ │ │ │ │ ├── percent-encoding v2.3.1 +│ │ │ │ │ │ │ └── percent-encoding feature "alloc" (*) +│ │ │ │ │ │ ├── serde feature "default" +│ │ │ │ │ │ │ ├── serde v1.0.203 +│ │ │ │ │ │ │ └── serde feature "std" +│ │ │ │ │ │ │ └── serde v1.0.203 +│ │ │ │ │ │ ├── sync_wrapper feature "default" +│ │ │ │ │ │ │ └── sync_wrapper v0.1.2 +│ │ │ │ │ │ └── tower feature "util" +│ │ │ │ │ │ ├── tower v0.4.13 +│ │ │ │ │ │ │ ├── tokio-util v0.7.11 (*) +│ │ │ │ │ │ │ ├── futures-core feature "default" (*) +│ │ │ │ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ │ │ │ ├── futures-util feature "alloc" (*) +│ │ │ │ │ │ │ ├── slab feature "default" (*) +│ │ │ │ │ │ │ ├── tower-layer feature "default" (*) +│ │ │ │ │ │ │ ├── tower-service feature "default" (*) +│ │ │ │ │ │ │ ├── tokio feature "default" (*) +│ │ │ │ │ │ │ ├── tokio feature "sync" (*) +│ │ │ │ │ │ │ ├── tracing feature "std" (*) +│ │ │ │ │ │ │ ├── indexmap feature "default" +│ │ │ │ │ │ │ │ └── indexmap v1.9.3 +│ │ │ │ │ │ │ │ └── hashbrown feature "raw" +│ │ │ │ │ │ │ │ └── hashbrown v0.12.3 (*) +│ │ │ │ │ │ │ │ [build-dependencies] +│ │ │ │ │ │ │ │ └── autocfg feature "default" (*) +│ │ │ │ │ │ │ ├── pin-project feature "default" +│ │ │ │ │ │ │ │ └── pin-project v1.1.5 +│ │ │ │ │ │ │ ├── rand feature "default" (*) +│ │ │ │ │ │ │ └── rand feature "small_rng" +│ │ │ │ │ │ │ └── rand v0.8.5 (*) +│ │ │ │ │ │ ├── tower feature "__common" +│ │ │ │ │ │ │ ├── tower v0.4.13 (*) +│ │ │ │ │ │ │ ├── tower feature "futures-core" +│ │ │ │ │ │ │ │ └── tower v0.4.13 (*) +│ │ │ │ │ │ │ └── tower feature "pin-project-lite" +│ │ │ │ │ │ │ └── tower v0.4.13 (*) +│ │ │ │ │ │ ├── tower feature "futures-util" +│ │ │ │ │ │ │ └── tower v0.4.13 (*) +│ │ │ │ │ │ └── tower feature "pin-project" +│ │ │ │ │ │ └── tower v0.4.13 (*) +│ │ │ │ │ ├── prost feature "std" (*) +│ │ │ │ │ ├── bytes feature "default" (*) +│ │ │ │ │ ├── async-stream feature "default" +│ │ │ │ │ │ └── async-stream v0.3.5 +│ │ │ │ │ │ ├── futures-core feature "default" (*) +│ │ │ │ │ │ └── pin-project-lite feature "default" (*) +│ │ │ │ │ ├── http feature "default" (*) +│ │ │ │ │ ├── http-body feature "default" (*) +│ │ │ │ │ ├── tower-layer feature "default" (*) +│ │ │ │ │ ├── tower-service feature "default" (*) +│ │ │ │ │ ├── hyper feature "default" (*) +│ │ │ │ │ ├── hyper feature "full" +│ │ │ │ │ │ ├── hyper v0.14.29 (*) +│ │ │ │ │ │ ├── hyper feature "client" +│ │ │ │ │ │ │ └── hyper v0.14.29 (*) +│ │ │ │ │ │ ├── hyper feature "http1" +│ │ │ │ │ │ │ └── hyper v0.14.29 (*) +│ │ │ │ │ │ ├── hyper feature "http2" +│ │ │ │ │ │ │ ├── hyper v0.14.29 (*) +│ │ │ │ │ │ │ └── hyper feature "h2" +│ │ │ │ │ │ │ └── hyper v0.14.29 (*) +│ │ │ │ │ │ ├── hyper feature "runtime" +│ │ │ │ │ │ │ ├── hyper v0.14.29 (*) +│ │ │ │ │ │ │ ├── hyper feature "tcp" +│ │ │ │ │ │ │ │ ├── hyper v0.14.29 (*) +│ │ │ │ │ │ │ │ ├── hyper feature "socket2" +│ │ │ │ │ │ │ │ │ └── hyper v0.14.29 (*) +│ │ │ │ │ │ │ │ ├── tokio feature "net" +│ │ │ │ │ │ │ │ │ ├── tokio v1.38.0 (*) +│ │ │ │ │ │ │ │ │ ├── tokio feature "libc" +│ │ │ │ │ │ │ │ │ │ └── tokio v1.38.0 (*) +│ │ │ │ │ │ │ │ │ ├── tokio feature "mio" +│ │ │ │ │ │ │ │ │ │ └── tokio v1.38.0 (*) +│ │ │ │ │ │ │ │ │ ├── tokio feature "socket2" +│ │ │ │ │ │ │ │ │ │ └── tokio v1.38.0 (*) +│ │ │ │ │ │ │ │ │ ├── mio feature "net" +│ │ │ │ │ │ │ │ │ │ └── mio v0.8.11 (*) +│ │ │ │ │ │ │ │ │ ├── mio feature "os-ext" +│ │ │ │ │ │ │ │ │ │ ├── mio v0.8.11 (*) +│ │ │ │ │ │ │ │ │ │ └── mio feature "os-poll" +│ │ │ │ │ │ │ │ │ │ └── mio v0.8.11 (*) +│ │ │ │ │ │ │ │ │ └── mio feature "os-poll" (*) +│ │ │ │ │ │ │ │ ├── tokio feature "rt" +│ │ │ │ │ │ │ │ │ └── tokio v1.38.0 (*) +│ │ │ │ │ │ │ │ └── tokio feature "time" +│ │ │ │ │ │ │ │ └── tokio v1.38.0 (*) +│ │ │ │ │ │ │ ├── tokio feature "rt" (*) +│ │ │ │ │ │ │ └── tokio feature "time" (*) +│ │ │ │ │ │ ├── hyper feature "server" +│ │ │ │ │ │ │ └── hyper v0.14.29 (*) +│ │ │ │ │ │ └── hyper feature "stream" (*) +│ │ │ │ │ ├── h2 feature "default" (*) +│ │ │ │ │ ├── tokio feature "default" (*) +│ │ │ │ │ ├── tracing feature "default" +│ │ │ │ │ │ ├── tracing v0.1.40 (*) +│ │ │ │ │ │ ├── tracing feature "attributes" (*) +│ │ │ │ │ │ └── tracing feature "std" (*) +│ │ │ │ │ ├── percent-encoding feature "default" (*) +│ │ │ │ │ ├── tower feature "balance" +│ │ │ │ │ │ ├── tower v0.4.13 (*) +│ │ │ │ │ │ ├── tower feature "discover" +│ │ │ │ │ │ │ ├── tower v0.4.13 (*) +│ │ │ │ │ │ │ └── tower feature "__common" (*) +│ │ │ │ │ │ ├── tower feature "load" +│ │ │ │ │ │ │ ├── tower v0.4.13 (*) +│ │ │ │ │ │ │ ├── tokio feature "time" (*) +│ │ │ │ │ │ │ ├── tower feature "__common" (*) +│ │ │ │ │ │ │ ├── tower feature "tokio" +│ │ │ │ │ │ │ │ └── tower v0.4.13 (*) +│ │ │ │ │ │ │ └── tower feature "tracing" +│ │ │ │ │ │ │ └── tower v0.4.13 (*) +│ │ │ │ │ │ ├── tower feature "make" +│ │ │ │ │ │ │ ├── tower v0.4.13 (*) +│ │ │ │ │ │ │ ├── tokio feature "io-std" +│ │ │ │ │ │ │ │ └── tokio v1.38.0 (*) +│ │ │ │ │ │ │ ├── tower feature "futures-util" (*) +│ │ │ │ │ │ │ ├── tower feature "pin-project-lite" (*) +│ │ │ │ │ │ │ └── tower feature "tokio" (*) +│ │ │ │ │ │ ├── tower feature "rand" +│ │ │ │ │ │ │ └── tower v0.4.13 (*) +│ │ │ │ │ │ ├── tower feature "ready-cache" +│ │ │ │ │ │ │ ├── tower v0.4.13 (*) +│ │ │ │ │ │ │ ├── tokio feature "sync" (*) +│ │ │ │ │ │ │ ├── tower feature "futures-core" (*) +│ │ │ │ │ │ │ ├── tower feature "futures-util" (*) +│ │ │ │ │ │ │ ├── tower feature "indexmap" +│ │ │ │ │ │ │ │ └── tower v0.4.13 (*) +│ │ │ │ │ │ │ ├── tower feature "pin-project-lite" (*) +│ │ │ │ │ │ │ ├── tower feature "tokio" (*) +│ │ │ │ │ │ │ └── tower feature "tracing" (*) +│ │ │ │ │ │ └── tower feature "slab" +│ │ │ │ │ │ └── tower v0.4.13 (*) +│ │ │ │ │ ├── tower feature "buffer" +│ │ │ │ │ │ ├── tower v0.4.13 (*) +│ │ │ │ │ │ ├── tokio feature "rt" (*) +│ │ │ │ │ │ ├── tokio feature "sync" (*) +│ │ │ │ │ │ ├── tower feature "__common" (*) +│ │ │ │ │ │ ├── tower feature "tokio" (*) +│ │ │ │ │ │ ├── tower feature "tokio-util" +│ │ │ │ │ │ │ └── tower v0.4.13 (*) +│ │ │ │ │ │ └── tower feature "tracing" (*) +│ │ │ │ │ ├── tower feature "discover" (*) +│ │ │ │ │ ├── tower feature "limit" +│ │ │ │ │ │ ├── tower v0.4.13 (*) +│ │ │ │ │ │ ├── tokio feature "sync" (*) +│ │ │ │ │ │ ├── tokio feature "time" (*) +│ │ │ │ │ │ ├── tower feature "__common" (*) +│ │ │ │ │ │ ├── tower feature "tokio" (*) +│ │ │ │ │ │ ├── tower feature "tokio-util" (*) +│ │ │ │ │ │ └── tower feature "tracing" (*) +│ │ │ │ │ ├── tower feature "load" (*) +│ │ │ │ │ ├── tower feature "make" (*) +│ │ │ │ │ ├── tower feature "timeout" +│ │ │ │ │ │ ├── tower v0.4.13 (*) +│ │ │ │ │ │ ├── tokio feature "time" (*) +│ │ │ │ │ │ ├── tower feature "pin-project-lite" (*) +│ │ │ │ │ │ └── tower feature "tokio" (*) +│ │ │ │ │ ├── tower feature "util" (*) +│ │ │ │ │ ├── pin-project feature "default" (*) +│ │ │ │ │ ├── base64 feature "default" +│ │ │ │ │ │ ├── base64 v0.21.7 +│ │ │ │ │ │ └── base64 feature "std" +│ │ │ │ │ │ ├── base64 v0.21.7 +│ │ │ │ │ │ └── base64 feature "alloc" +│ │ │ │ │ │ └── base64 v0.21.7 +│ │ │ │ │ ├── hyper-timeout feature "default" +│ │ │ │ │ │ └── hyper-timeout v0.4.1 +│ │ │ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ │ │ ├── hyper feature "client" (*) +│ │ │ │ │ │ ├── hyper feature "default" (*) +│ │ │ │ │ │ ├── tokio feature "default" (*) +│ │ │ │ │ │ └── tokio-io-timeout feature "default" +│ │ │ │ │ │ └── tokio-io-timeout v1.2.0 +│ │ │ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ │ │ ├── tokio feature "default" (*) +│ │ │ │ │ │ └── tokio feature "time" (*) +│ │ │ │ │ └── tokio-stream feature "default" +│ │ │ │ │ ├── tokio-stream v0.1.15 +│ │ │ │ │ │ ├── futures-core feature "default" (*) +│ │ │ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ │ │ ├── tokio feature "default" (*) +│ │ │ │ │ │ └── tokio feature "sync" (*) +│ │ │ │ │ └── tokio-stream feature "time" +│ │ │ │ │ ├── tokio-stream v0.1.15 (*) +│ │ │ │ │ └── tokio feature "time" (*) +│ │ │ │ ├── tonic feature "prost" +│ │ │ │ │ └── tonic v0.10.2 (*) +│ │ │ │ ├── tonic feature "transport" +│ │ │ │ │ ├── tonic v0.10.2 (*) +│ │ │ │ │ ├── tonic feature "channel" +│ │ │ │ │ │ └── tonic v0.10.2 (*) +│ │ │ │ │ ├── tokio feature "net" (*) +│ │ │ │ │ └── tokio feature "time" (*) +│ │ │ │ └── tracing-core feature "default" +│ │ │ │ ├── tracing-core v0.1.32 (*) +│ │ │ │ └── tracing-core feature "std" (*) +│ │ │ ├── console-api feature "transport" +│ │ │ │ ├── console-api v0.6.0 (*) +│ │ │ │ └── tonic feature "transport" (*) +│ │ │ ├── prost-types feature "default" (*) +│ │ │ ├── tonic feature "default" +│ │ │ │ ├── tonic v0.10.2 (*) +│ │ │ │ ├── tonic feature "codegen" (*) +│ │ │ │ ├── tonic feature "prost" (*) +│ │ │ │ └── tonic feature "transport" (*) +│ │ │ ├── tonic feature "transport" (*) +│ │ │ ├── tokio feature "default" (*) +│ │ │ ├── tokio feature "macros" +│ │ │ │ ├── tokio v1.38.0 (*) +│ │ │ │ └── tokio feature "tokio-macros" +│ │ │ │ └── tokio v1.38.0 (*) +│ │ │ ├── tokio feature "sync" (*) +│ │ │ ├── tokio feature "time" (*) +│ │ │ ├── tokio feature "tracing" +│ │ │ │ └── tokio v1.38.0 (*) +│ │ │ ├── tracing feature "default" (*) +│ │ │ ├── tracing-core feature "default" (*) +│ │ │ ├── serde feature "default" (*) +│ │ │ ├── serde feature "derive" (*) +│ │ │ ├── tokio-stream feature "default" (*) +│ │ │ ├── tokio-stream feature "net" +│ │ │ │ ├── tokio-stream v0.1.15 (*) +│ │ │ │ └── tokio feature "net" (*) +│ │ │ ├── crossbeam-channel feature "default" +│ │ │ │ ├── crossbeam-channel v0.5.13 +│ │ │ │ │ └── crossbeam-utils v0.8.20 +│ │ │ │ └── crossbeam-channel feature "std" +│ │ │ │ ├── crossbeam-channel v0.5.13 (*) +│ │ │ │ └── crossbeam-utils feature "std" +│ │ │ │ └── crossbeam-utils v0.8.20 +│ │ │ ├── crossbeam-utils feature "default" +│ │ │ │ ├── crossbeam-utils v0.8.20 +│ │ │ │ └── crossbeam-utils feature "std" (*) +│ │ │ ├── hdrhistogram feature "serialization" +│ │ │ │ ├── hdrhistogram v7.5.4 +│ │ │ │ │ ├── base64 feature "default" (*) +│ │ │ │ │ ├── byteorder feature "default" +│ │ │ │ │ │ ├── byteorder v1.5.0 +│ │ │ │ │ │ └── byteorder feature "std" (*) +│ │ │ │ │ ├── flate2 feature "default" +│ │ │ │ │ │ ├── flate2 v1.0.30 +│ │ │ │ │ │ │ ├── crc32fast feature "default" +│ │ │ │ │ │ │ │ ├── crc32fast v1.4.2 +│ │ │ │ │ │ │ │ │ └── cfg-if feature "default" (*) +│ │ │ │ │ │ │ │ └── crc32fast feature "std" +│ │ │ │ │ │ │ │ └── crc32fast v1.4.2 (*) +│ │ │ │ │ │ │ └── miniz_oxide feature "with-alloc" +│ │ │ │ │ │ │ └── miniz_oxide v0.7.3 +│ │ │ │ │ │ │ └── adler v1.0.2 +│ │ │ │ │ │ └── flate2 feature "rust_backend" +│ │ │ │ │ │ ├── flate2 v1.0.30 (*) +│ │ │ │ │ │ ├── flate2 feature "any_impl" +│ │ │ │ │ │ │ └── flate2 v1.0.30 (*) +│ │ │ │ │ │ └── flate2 feature "miniz_oxide" +│ │ │ │ │ │ └── flate2 v1.0.30 (*) +│ │ │ │ │ ├── nom feature "default" +│ │ │ │ │ │ ├── nom v7.1.3 +│ │ │ │ │ │ │ ├── memchr v2.7.2 +│ │ │ │ │ │ │ └── minimal-lexical v0.2.1 +│ │ │ │ │ │ └── nom feature "std" +│ │ │ │ │ │ ├── nom v7.1.3 (*) +│ │ │ │ │ │ ├── memchr feature "std" (*) +│ │ │ │ │ │ ├── nom feature "alloc" +│ │ │ │ │ │ │ └── nom v7.1.3 (*) +│ │ │ │ │ │ └── minimal-lexical feature "std" +│ │ │ │ │ │ └── minimal-lexical v0.2.1 +│ │ │ │ │ └── num-traits feature "default" +│ │ │ │ │ ├── num-traits v0.2.19 (*) +│ │ │ │ │ └── num-traits feature "std" +│ │ │ │ │ └── num-traits v0.2.19 (*) +│ │ │ │ ├── hdrhistogram feature "base64" +│ │ │ │ │ └── hdrhistogram v7.5.4 (*) +│ │ │ │ ├── hdrhistogram feature "flate2" +│ │ │ │ │ └── hdrhistogram v7.5.4 (*) +│ │ │ │ └── hdrhistogram feature "nom" +│ │ │ │ └── hdrhistogram v7.5.4 (*) +│ │ │ ├── humantime feature "default" +│ │ │ │ └── humantime v2.1.0 +│ │ │ ├── serde_json feature "default" +│ │ │ │ ├── serde_json v1.0.117 (*) +│ │ │ │ └── serde_json feature "std" +│ │ │ │ ├── serde_json v1.0.117 (*) +│ │ │ │ └── serde feature "std" (*) +│ │ │ ├── thread_local feature "default" +│ │ │ │ └── thread_local v1.1.8 +│ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ └── once_cell feature "default" (*) +│ │ │ ├── tracing-subscriber feature "fmt" +│ │ │ │ ├── tracing-subscriber v0.3.18 +│ │ │ │ │ ├── tracing v0.1.40 (*) +│ │ │ │ │ ├── tracing-core v0.1.32 (*) +│ │ │ │ │ ├── once_cell feature "default" (*) +│ │ │ │ │ ├── serde feature "default" (*) +│ │ │ │ │ ├── serde_json feature "default" (*) +│ │ │ │ │ ├── thread_local feature "default" (*) +│ │ │ │ │ ├── matchers feature "default" +│ │ │ │ │ │ └── matchers v0.1.0 +│ │ │ │ │ │ └── regex-automata feature "default" +│ │ │ │ │ │ ├── regex-automata v0.1.10 +│ │ │ │ │ │ │ └── regex-syntax feature "default" +│ │ │ │ │ │ │ ├── regex-syntax v0.6.29 +│ │ │ │ │ │ │ └── regex-syntax feature "unicode" +│ │ │ │ │ │ │ ├── regex-syntax v0.6.29 +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-age" +│ │ │ │ │ │ │ │ └── regex-syntax v0.6.29 +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-bool" +│ │ │ │ │ │ │ │ └── regex-syntax v0.6.29 +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-case" +│ │ │ │ │ │ │ │ └── regex-syntax v0.6.29 +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-gencat" +│ │ │ │ │ │ │ │ └── regex-syntax v0.6.29 +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-perl" +│ │ │ │ │ │ │ │ └── regex-syntax v0.6.29 +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-script" +│ │ │ │ │ │ │ │ └── regex-syntax v0.6.29 +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-segment" +│ │ │ │ │ │ │ └── regex-syntax v0.6.29 +│ │ │ │ │ │ └── regex-automata feature "std" +│ │ │ │ │ │ ├── regex-automata v0.1.10 (*) +│ │ │ │ │ │ └── regex-automata feature "regex-syntax" +│ │ │ │ │ │ └── regex-automata v0.1.10 (*) +│ │ │ │ │ ├── nu-ansi-term feature "default" +│ │ │ │ │ │ └── nu-ansi-term v0.46.0 +│ │ │ │ │ │ └── overload feature "default" +│ │ │ │ │ │ └── overload v0.1.1 +│ │ │ │ │ ├── regex feature "std" +│ │ │ │ │ │ ├── regex v1.10.4 +│ │ │ │ │ │ │ ├── regex-syntax v0.8.3 +│ │ │ │ │ │ │ ├── regex-automata feature "alloc" +│ │ │ │ │ │ │ │ └── regex-automata v0.4.6 +│ │ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ │ ├── regex-automata feature "meta" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ ├── regex-automata feature "nfa-pikevm" +│ │ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ │ └── regex-automata feature "nfa-thompson" +│ │ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ │ └── regex-automata feature "alloc" (*) +│ │ │ │ │ │ │ │ └── regex-automata feature "syntax" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ └── regex-automata feature "alloc" (*) +│ │ │ │ │ │ │ ├── regex-automata feature "nfa-pikevm" (*) +│ │ │ │ │ │ │ └── regex-automata feature "syntax" (*) +│ │ │ │ │ │ ├── regex-automata feature "std" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "alloc" (*) +│ │ │ │ │ │ │ └── regex-syntax feature "std" +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ └── regex-syntax feature "std" (*) +│ │ │ │ │ ├── regex feature "unicode-case" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-case" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-case" +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ └── regex-syntax feature "unicode-case" (*) +│ │ │ │ │ ├── regex feature "unicode-perl" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode-perl" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-perl" +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ ├── regex-automata feature "unicode-word-boundary" +│ │ │ │ │ │ │ └── regex-automata v0.4.6 (*) +│ │ │ │ │ │ └── regex-syntax feature "unicode-perl" (*) +│ │ │ │ │ ├── sharded-slab feature "default" +│ │ │ │ │ │ └── sharded-slab v0.1.7 +│ │ │ │ │ │ └── lazy_static feature "default" (*) +│ │ │ │ │ ├── smallvec feature "default" (*) +│ │ │ │ │ ├── tracing-log feature "log-tracer" +│ │ │ │ │ │ └── tracing-log v0.2.0 +│ │ │ │ │ │ ├── tracing-core feature "default" (*) +│ │ │ │ │ │ ├── once_cell feature "default" (*) +│ │ │ │ │ │ └── log feature "default" +│ │ │ │ │ │ └── log v0.4.21 +│ │ │ │ │ ├── tracing-log feature "std" +│ │ │ │ │ │ ├── tracing-log v0.2.0 (*) +│ │ │ │ │ │ └── log feature "std" +│ │ │ │ │ │ └── log v0.4.21 +│ │ │ │ │ └── tracing-serde feature "default" +│ │ │ │ │ └── tracing-serde v0.1.3 +│ │ │ │ │ ├── tracing-core feature "default" (*) +│ │ │ │ │ └── serde feature "default" (*) +│ │ │ │ ├── tracing-subscriber feature "registry" +│ │ │ │ │ ├── tracing-subscriber v0.3.18 (*) +│ │ │ │ │ ├── tracing-subscriber feature "sharded-slab" +│ │ │ │ │ │ └── tracing-subscriber v0.3.18 (*) +│ │ │ │ │ ├── tracing-subscriber feature "std" +│ │ │ │ │ │ ├── tracing-subscriber v0.3.18 (*) +│ │ │ │ │ │ ├── tracing-core feature "std" (*) +│ │ │ │ │ │ └── tracing-subscriber feature "alloc" +│ │ │ │ │ │ └── tracing-subscriber v0.3.18 (*) +│ │ │ │ │ └── tracing-subscriber feature "thread_local" +│ │ │ │ │ └── tracing-subscriber v0.3.18 (*) +│ │ │ │ └── tracing-subscriber feature "std" (*) +│ │ │ └── tracing-subscriber feature "registry" (*) +│ │ └── console-subscriber feature "env-filter" +│ │ ├── console-subscriber v0.2.0 (*) +│ │ └── tracing-subscriber feature "env-filter" +│ │ ├── tracing-subscriber v0.3.18 (*) +│ │ ├── tracing-subscriber feature "matchers" +│ │ │ └── tracing-subscriber v0.3.18 (*) +│ │ ├── tracing-subscriber feature "once_cell" +│ │ │ └── tracing-subscriber v0.3.18 (*) +│ │ ├── tracing-subscriber feature "regex" +│ │ │ └── tracing-subscriber v0.3.18 (*) +│ │ ├── tracing-subscriber feature "std" (*) +│ │ ├── tracing-subscriber feature "thread_local" (*) +│ │ └── tracing-subscriber feature "tracing" +│ │ └── tracing-subscriber v0.3.18 (*) +│ ├── tracing feature "default" (*) +│ ├── tracing-subscriber feature "default" +│ │ ├── tracing-subscriber v0.3.18 (*) +│ │ ├── tracing-subscriber feature "ansi" +│ │ │ ├── tracing-subscriber v0.3.18 (*) +│ │ │ ├── tracing-subscriber feature "fmt" (*) +│ │ │ └── tracing-subscriber feature "nu-ansi-term" +│ │ │ └── tracing-subscriber v0.3.18 (*) +│ │ ├── tracing-subscriber feature "fmt" (*) +│ │ ├── tracing-subscriber feature "smallvec" +│ │ │ └── tracing-subscriber v0.3.18 (*) +│ │ ├── tracing-subscriber feature "std" (*) +│ │ └── tracing-subscriber feature "tracing-log" +│ │ └── tracing-subscriber v0.3.18 (*) +│ ├── tracing-subscriber feature "env-filter" (*) +│ ├── tracing-subscriber feature "json" +│ │ ├── tracing-subscriber v0.3.18 (*) +│ │ ├── tracing-subscriber feature "serde" +│ │ │ └── tracing-subscriber v0.3.18 (*) +│ │ ├── tracing-subscriber feature "serde_json" +│ │ │ └── tracing-subscriber v0.3.18 (*) +│ │ └── tracing-subscriber feature "tracing-serde" +│ │ └── tracing-subscriber v0.3.18 (*) +│ ├── tracing-subscriber feature "registry" (*) +│ ├── opentelemetry-otlp feature "default" +│ │ ├── opentelemetry-otlp v0.15.0 +│ │ │ ├── http v0.2.12 (*) +│ │ │ ├── opentelemetry v0.22.0 +│ │ │ │ ├── thiserror v1.0.61 +│ │ │ │ ├── futures-core feature "default" (*) +│ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ ├── futures-sink feature "default" (*) +│ │ │ │ ├── once_cell feature "default" (*) +│ │ │ │ └── urlencoding feature "default" +│ │ │ │ └── urlencoding v2.1.3 +│ │ │ ├── opentelemetry-proto v0.5.0 +│ │ │ │ ├── opentelemetry v0.22.0 (*) +│ │ │ │ ├── opentelemetry_sdk v0.22.1 +│ │ │ │ │ ├── thiserror v1.0.61 +│ │ │ │ │ ├── futures-util feature "async-await-macro" +│ │ │ │ │ │ ├── futures-util v0.3.30 (*) +│ │ │ │ │ │ ├── futures-util feature "async-await" +│ │ │ │ │ │ │ └── futures-util v0.3.30 (*) +│ │ │ │ │ │ └── futures-util feature "futures-macro" +│ │ │ │ │ │ └── futures-util v0.3.30 (*) +│ │ │ │ │ ├── futures-util feature "sink" (*) +│ │ │ │ │ ├── futures-util feature "std" +│ │ │ │ │ │ ├── futures-util v0.3.30 (*) +│ │ │ │ │ │ ├── futures-core feature "std" (*) +│ │ │ │ │ │ ├── futures-util feature "alloc" (*) +│ │ │ │ │ │ ├── futures-util feature "slab" +│ │ │ │ │ │ │ └── futures-util v0.3.30 (*) +│ │ │ │ │ │ └── futures-task feature "std" +│ │ │ │ │ │ ├── futures-task v0.3.30 +│ │ │ │ │ │ └── futures-task feature "alloc" (*) +│ │ │ │ │ ├── futures-channel feature "default" (*) +│ │ │ │ │ ├── once_cell feature "default" (*) +│ │ │ │ │ ├── percent-encoding feature "default" (*) +│ │ │ │ │ ├── rand feature "small_rng" (*) +│ │ │ │ │ ├── rand feature "std" (*) +│ │ │ │ │ ├── rand feature "std_rng" (*) +│ │ │ │ │ ├── crossbeam-channel feature "default" (*) +│ │ │ │ │ ├── opentelemetry feature "default" +│ │ │ │ │ │ ├── opentelemetry v0.22.0 (*) +│ │ │ │ │ │ └── opentelemetry feature "trace" +│ │ │ │ │ │ ├── opentelemetry v0.22.0 (*) +│ │ │ │ │ │ └── opentelemetry feature "pin-project-lite" +│ │ │ │ │ │ └── opentelemetry v0.22.0 (*) +│ │ │ │ │ ├── futures-executor feature "default" +│ │ │ │ │ │ ├── futures-executor v0.3.30 +│ │ │ │ │ │ │ ├── futures-core v0.3.30 +│ │ │ │ │ │ │ ├── futures-task v0.3.30 +│ │ │ │ │ │ │ └── futures-util v0.3.30 (*) +│ │ │ │ │ │ └── futures-executor feature "std" +│ │ │ │ │ │ ├── futures-executor v0.3.30 (*) +│ │ │ │ │ │ ├── futures-core feature "std" (*) +│ │ │ │ │ │ ├── futures-util feature "std" (*) +│ │ │ │ │ │ └── futures-task feature "std" (*) +│ │ │ │ │ ├── glob feature "default" (*) +│ │ │ │ │ └── ordered-float feature "default" +│ │ │ │ │ ├── ordered-float v4.2.0 +│ │ │ │ │ │ └── num-traits v0.2.19 (*) +│ │ │ │ │ └── ordered-float feature "std" +│ │ │ │ │ ├── ordered-float v4.2.0 (*) +│ │ │ │ │ └── num-traits feature "std" (*) +│ │ │ │ ├── prost feature "default" (*) +│ │ │ │ ├── tonic feature "codegen" +│ │ │ │ │ └── tonic v0.11.0 +│ │ │ │ │ ├── axum v0.6.20 (*) +│ │ │ │ │ ├── prost feature "std" (*) +│ │ │ │ │ ├── bytes feature "default" (*) +│ │ │ │ │ ├── async-stream feature "default" (*) +│ │ │ │ │ ├── http feature "default" (*) +│ │ │ │ │ ├── http-body feature "default" (*) +│ │ │ │ │ ├── tower-layer feature "default" (*) +│ │ │ │ │ ├── tower-service feature "default" (*) +│ │ │ │ │ ├── hyper feature "default" (*) +│ │ │ │ │ ├── hyper feature "full" (*) +│ │ │ │ │ ├── h2 feature "default" (*) +│ │ │ │ │ ├── tokio feature "default" (*) +│ │ │ │ │ ├── tracing feature "default" (*) +│ │ │ │ │ ├── percent-encoding feature "default" (*) +│ │ │ │ │ ├── tower feature "balance" (*) +│ │ │ │ │ ├── tower feature "buffer" (*) +│ │ │ │ │ ├── tower feature "discover" (*) +│ │ │ │ │ ├── tower feature "limit" (*) +│ │ │ │ │ ├── tower feature "load" (*) +│ │ │ │ │ ├── tower feature "make" (*) +│ │ │ │ │ ├── tower feature "timeout" (*) +│ │ │ │ │ ├── tower feature "util" (*) +│ │ │ │ │ ├── pin-project feature "default" (*) +│ │ │ │ │ ├── base64 feature "default" (*) +│ │ │ │ │ ├── hyper-timeout feature "default" (*) +│ │ │ │ │ └── tokio-stream feature "default" (*) +│ │ │ │ └── tonic feature "prost" +│ │ │ │ └── tonic v0.11.0 (*) +│ │ │ ├── opentelemetry_sdk v0.22.1 (*) +│ │ │ ├── thiserror v1.0.61 +│ │ │ ├── tonic v0.11.0 (*) +│ │ │ ├── futures-core feature "default" (*) +│ │ │ ├── prost feature "default" (*) +│ │ │ ├── tokio feature "rt" (*) +│ │ │ ├── tokio feature "sync" (*) +│ │ │ └── opentelemetry-semantic-conventions feature "default" +│ │ │ └── opentelemetry-semantic-conventions v0.14.0 +│ │ ├── opentelemetry-otlp feature "grpc-tonic" +│ │ │ ├── opentelemetry-otlp v0.15.0 (*) +│ │ │ ├── opentelemetry-otlp feature "http" +│ │ │ │ └── opentelemetry-otlp v0.15.0 (*) +│ │ │ ├── opentelemetry-otlp feature "prost" +│ │ │ │ └── opentelemetry-otlp v0.15.0 (*) +│ │ │ ├── opentelemetry-otlp feature "tokio" +│ │ │ │ └── opentelemetry-otlp v0.15.0 (*) +│ │ │ ├── opentelemetry-otlp feature "tonic" +│ │ │ │ └── opentelemetry-otlp v0.15.0 (*) +│ │ │ └── opentelemetry-proto feature "gen-tonic" +│ │ │ ├── opentelemetry-proto v0.5.0 (*) +│ │ │ ├── opentelemetry-proto feature "gen-tonic-messages" +│ │ │ │ ├── opentelemetry-proto v0.5.0 (*) +│ │ │ │ ├── opentelemetry-proto feature "prost" +│ │ │ │ │ └── opentelemetry-proto v0.5.0 (*) +│ │ │ │ └── opentelemetry-proto feature "tonic" +│ │ │ │ └── opentelemetry-proto v0.5.0 (*) +│ │ │ ├── opentelemetry-proto feature "tonic" (*) +│ │ │ └── tonic feature "transport" +│ │ │ ├── tonic v0.11.0 (*) +│ │ │ ├── tokio feature "net" (*) +│ │ │ ├── tokio feature "time" (*) +│ │ │ └── tonic feature "channel" +│ │ │ └── tonic v0.11.0 (*) +│ │ └── opentelemetry-otlp feature "trace" +│ │ ├── opentelemetry-otlp v0.15.0 (*) +│ │ ├── opentelemetry feature "trace" (*) +│ │ ├── opentelemetry-proto feature "trace" +│ │ │ ├── opentelemetry-proto v0.5.0 (*) +│ │ │ ├── opentelemetry feature "trace" (*) +│ │ │ └── opentelemetry_sdk feature "trace" +│ │ │ ├── opentelemetry_sdk v0.22.1 (*) +│ │ │ ├── opentelemetry feature "trace" (*) +│ │ │ ├── opentelemetry_sdk feature "async-trait" +│ │ │ │ └── opentelemetry_sdk v0.22.1 (*) +│ │ │ ├── opentelemetry_sdk feature "crossbeam-channel" +│ │ │ │ └── opentelemetry_sdk v0.22.1 (*) +│ │ │ ├── opentelemetry_sdk feature "percent-encoding" +│ │ │ │ └── opentelemetry_sdk v0.22.1 (*) +│ │ │ └── opentelemetry_sdk feature "rand" +│ │ │ └── opentelemetry_sdk v0.22.1 (*) +│ │ └── opentelemetry_sdk feature "trace" (*) +│ ├── tracing-flame feature "default" +│ │ ├── tracing-flame v0.2.0 +│ │ │ ├── tracing feature "std" (*) +│ │ │ ├── tracing-subscriber feature "fmt" (*) +│ │ │ ├── tracing-subscriber feature "registry" (*) +│ │ │ └── lazy_static feature "default" (*) +│ │ └── tracing-flame feature "smallvec" +│ │ ├── tracing-flame v0.2.0 (*) +│ │ └── tracing-subscriber feature "smallvec" (*) +│ ├── tracing-log feature "default" +│ │ ├── tracing-log v0.1.4 +│ │ │ ├── tracing-core feature "default" (*) +│ │ │ ├── once_cell feature "default" (*) +│ │ │ └── log feature "default" (*) +│ │ ├── tracing-log feature "log-tracer" +│ │ │ └── tracing-log v0.1.4 (*) +│ │ ├── tracing-log feature "std" +│ │ │ ├── tracing-log v0.1.4 (*) +│ │ │ └── log feature "std" (*) +│ │ └── tracing-log feature "trace-logger" +│ │ └── tracing-log v0.1.4 (*) +│ ├── tracing-opentelemetry feature "default" +│ │ ├── tracing-opentelemetry v0.23.0 +│ │ │ ├── tracing-log v0.2.0 (*) +│ │ │ ├── tracing feature "std" (*) +│ │ │ ├── tracing-core feature "default" (*) +│ │ │ ├── once_cell feature "default" (*) +│ │ │ ├── tracing-subscriber feature "registry" (*) +│ │ │ ├── tracing-subscriber feature "std" (*) +│ │ │ ├── smallvec feature "default" (*) +│ │ │ ├── opentelemetry feature "trace" (*) +│ │ │ └── opentelemetry_sdk feature "trace" (*) +│ │ ├── tracing-opentelemetry feature "metrics" +│ │ │ ├── tracing-opentelemetry v0.23.0 (*) +│ │ │ ├── opentelemetry feature "metrics" +│ │ │ │ └── opentelemetry v0.22.0 (*) +│ │ │ ├── opentelemetry_sdk feature "metrics" +│ │ │ │ ├── opentelemetry_sdk v0.22.1 (*) +│ │ │ │ ├── opentelemetry feature "metrics" (*) +│ │ │ │ ├── opentelemetry_sdk feature "async-trait" (*) +│ │ │ │ └── opentelemetry_sdk feature "glob" +│ │ │ │ └── opentelemetry_sdk v0.22.1 (*) +│ │ │ └── tracing-opentelemetry feature "smallvec" +│ │ │ └── tracing-opentelemetry v0.23.0 (*) +│ │ └── tracing-opentelemetry feature "tracing-log" +│ │ └── tracing-opentelemetry v0.23.0 (*) +│ ├── url feature "default" +│ │ └── url v2.5.0 +│ │ ├── percent-encoding feature "default" (*) +│ │ ├── serde feature "default" (*) +│ │ ├── serde feature "derive" (*) +│ │ ├── form_urlencoded feature "default" +│ │ │ ├── form_urlencoded v1.2.1 +│ │ │ │ └── percent-encoding v2.3.1 +│ │ │ └── form_urlencoded feature "std" +│ │ │ ├── form_urlencoded v1.2.1 (*) +│ │ │ ├── percent-encoding feature "std" (*) +│ │ │ └── form_urlencoded feature "alloc" +│ │ │ ├── form_urlencoded v1.2.1 (*) +│ │ │ └── percent-encoding feature "alloc" (*) +│ │ └── idna feature "default" +│ │ ├── idna v0.5.0 +│ │ │ ├── unicode-normalization v0.1.22 (*) +│ │ │ └── unicode-bidi feature "hardcoded-data" +│ │ │ └── unicode-bidi v0.3.15 +│ │ └── idna feature "std" +│ │ ├── idna v0.5.0 (*) +│ │ ├── idna feature "alloc" +│ │ │ └── idna v0.5.0 (*) +│ │ ├── unicode-bidi feature "std" +│ │ │ └── unicode-bidi v0.3.15 +│ │ └── unicode-normalization feature "std" +│ │ └── unicode-normalization v0.1.22 (*) +│ └── url feature "serde" +│ └── url v2.5.0 (*) +└── uuid feature "default" + ├── uuid v1.8.0 (*) + └── uuid feature "std" + └── uuid v1.8.0 (*) diff --git a/crates/pallet-opa/Cargo.toml b/crates/pallet-opa/Cargo.toml index d1c05bbf4..c348412f7 100644 --- a/crates/pallet-opa/Cargo.toml +++ b/crates/pallet-opa/Cargo.toml @@ -16,7 +16,6 @@ frame-benchmarking = { git = 'https://github.com/paritytech/polkadot-sdk.git', t 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 } sp-core = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } -sp-core-hashing = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } sp-std = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } k256 = { version = "0.11", default-features = false, features = [ "arithmetic", @@ -26,7 +25,7 @@ k256 = { version = "0.11", default-features = false, features = [ ] } macro-attr-2018 = { workspace = true } newtype-derive-2018 = { workspace = true } -parity-scale-codec = { version = "^3.4.0", default-features = false, features = [ +parity-scale-codec = { version = "3.6.1", default-features = false, features = [ "derive", ] } scale-info = { version = "^2.10.0", default-features = false, features = [ diff --git a/crates/pallet-opa/src/lib.rs b/crates/pallet-opa/src/lib.rs index 1ba6f56be..e2934302a 100644 --- a/crates/pallet-opa/src/lib.rs +++ b/crates/pallet-opa/src/lib.rs @@ -42,7 +42,7 @@ pub mod opa_core { } use parity_scale_codec::Encode; -use sp_core_hashing::blake2_128; +use sp_core::blake2_128; use tracing::{error, instrument}; pub use weights::*; @@ -256,7 +256,7 @@ fn apply_signed_operation_payload( Ok(()) } Operation::SetPolicy(SetPolicy { policy, id }) => { - let hash = sp_core_hashing::blake2_128(policy.as_bytes()); + let hash = sp_core::blake2_128(policy.as_bytes()); let meta = PolicyMeta { id: id.clone(), diff --git a/crates/protocol-substrate-chronicle/Cargo.toml b/crates/protocol-substrate-chronicle/Cargo.toml index 7579fc07d..022b23d0c 100644 --- a/crates/protocol-substrate-chronicle/Cargo.toml +++ b/crates/protocol-substrate-chronicle/Cargo.toml @@ -20,7 +20,7 @@ chronicle-signing = { path = "../chronicle-signing" } common = { path = "../common", features = ["parity-encoding", "std"] } hex = { workspace = true } opa = { git = "https://github.com/chronicleworks/opa-rs", rev = "9fa2fbce" } -parity-scale-codec = { version = "^3.4.0", default-features = false, features = [ +parity-scale-codec = { version = "3.6.1", default-features = false, features = [ "derive", "max-encoded-len", "std", diff --git a/docker/unified-builder b/docker/unified-builder index 7b723d980..76d6d8f0a 100644 --- a/docker/unified-builder +++ b/docker/unified-builder @@ -12,12 +12,16 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -ARG RUST_VERSION=1.78 +ARG RUST_VERSION=1.78.0 ARG CARGO_HOME=.cargo_cached -FROM --platform=${BUILDPLATFORM} rust:${RUST_VERSION} as hostbase +FROM --platform=${BUILDPLATFORM} rust:${RUST_VERSION}-bookworm as hostbase ENV PKG_CONFIG_ALLOW_CROSS=1 ENV OPENSSL_STATIC=true ENV CARGO_HOME=$CARGO_HOME +# Set environment variables for Git to handle slow connections +ENV GIT_HTTP_LOW_SPEED_LIMIT=100 +ENV GIT_HTTP_LOW_SPEED_TIME=60 + RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ @@ -36,7 +40,8 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ RUN rustup target add aarch64-unknown-linux-gnu \ && rustup target add x86_64-unknown-linux-gnu \ - && rustup target add wasm32-unknown-unknown + && rustup target add wasm32-unknown-unknown \ + && rustup component add rust-src WORKDIR /app RUN useradd -m tester \ diff --git a/node/node-chronicle/Cargo.toml b/node/node-chronicle/Cargo.toml index 037d6556d..19fec50e6 100644 --- a/node/node-chronicle/Cargo.toml +++ b/node/node-chronicle/Cargo.toml @@ -47,6 +47,9 @@ sp-io = { git = 'https://github.com/paritytech/polkadot-sdk', sp-keyring = { git = 'https://github.com/paritytech/polkadot-sdk', tag = 'polkadot-v1.9.0'} sp-runtime = { git = 'https://github.com/paritytech/polkadot-sdk', tag = 'polkadot-v1.9.0'} sp-timestamp = { git = 'https://github.com/paritytech/polkadot-sdk', tag = 'polkadot-v1.9.0'} +sc-keystore = { git = 'https://github.com/paritytech/polkadot-sdk', tag = 'polkadot-v1.9.0'} +sp-keystore = { git = 'https://github.com/paritytech/polkadot-sdk', tag = 'polkadot-v1.9.0'} + pallet-im-online = { git = 'https://github.com/paritytech/polkadot-sdk', tag = 'polkadot-v1.9.0'} pallet-session = { git = 'https://github.com/paritytech/polkadot-sdk', tag = 'polkadot-v1.9.0'} diff --git a/node/node-chronicle/src/chain_spec.rs b/node/node-chronicle/src/chain_spec.rs index 8a9d6e091..d0f7a212b 100644 --- a/node/node-chronicle/src/chain_spec.rs +++ b/node/node-chronicle/src/chain_spec.rs @@ -1,12 +1,15 @@ +use std::path::Path; + use runtime_chronicle::{ opaque::SessionKeys, pallet_chronicle, AccountId, AuraConfig, GrandpaConfig, ImOnlineConfig, Runtime, RuntimeGenesisConfig, SessionConfig, Signature, SudoConfig, SystemConfig, ValidatorSetConfig, WASM_BINARY }; +use sc_keystore::LocalKeystore; use sc_service::ChainType; use sc_telemetry::{log, serde_json}; use sp_consensus_aura::sr25519::AuthorityId as AuraId; use sp_consensus_grandpa::AuthorityId as GrandpaId; use sp_core::{sr25519, Pair, Public}; -use sp_runtime::traits::{IdentifyAccount, Verify}; +use sp_runtime::{traits::{IdentifyAccount, Verify}, KeyTypeId}; use pallet_im_online::sr25519::AuthorityId as ImOnlineId; use serde_json::to_value; @@ -34,8 +37,41 @@ where } /// Generate an Aura authority key. -pub fn authority_keys_from_seed(s: &str) -> (AuraId, GrandpaId, ImOnlineId) { - (get_from_seed::(s), get_from_seed::(s), get_from_seed::(s)) +pub fn authority_keys_from_seed(s: &str) -> (AccountId, AuraId, GrandpaId, ImOnlineId) { + (get_account_id_from_seed::(s), get_from_seed::(s), get_from_seed::(s), get_from_seed::(s)) +} + +use sp_keystore::Keystore; + +pub fn authority_keys_from_keystore(p: &std::path::Path) -> (AccountId, AuraId, GrandpaId, ImOnlineId) { + let keystore = LocalKeystore::open(p, None).expect("Local keystore should open"); + + let sudo_key = Keystore::sr25519_public_keys(&keystore, KeyTypeId(*b"acco")) + .into_iter() + .next() + .expect("Account key should be present in keystore"); + + let aura_key = Keystore::sr25519_public_keys(&keystore, KeyTypeId(*b"aura")) + .into_iter() + .next() + .expect("Aura key should be present in keystore"); + + let grandpa_key = Keystore::ed25519_public_keys(&keystore, KeyTypeId(*b"gran")) + .into_iter() + .next() + .expect("Grandpa key should be present in keystore"); + + let im_online_key = Keystore::sr25519_public_keys(&keystore, KeyTypeId(*b"onli")) + .into_iter() + .next() + .expect("ImOnline key should be present in keystore"); + + ( + AccountPublic::from(sudo_key).into_account(), + aura_key.into(), + grandpa_key.into(), + im_online_key.into(), + ) } pub fn development_config() -> Result { @@ -70,7 +106,7 @@ pub fn local_testnet_config() -> Result { .with_chain_type(ChainType::Local) .with_genesis_config( to_value(genesis( - vec![authority_keys_from_seed("Alice"), authority_keys_from_seed("Bob")], + vec![authority_keys_from_seed("Alice")], get_account_id_from_seed::("Alice"), true, )).expect("Genesis config should be serializable") @@ -85,7 +121,7 @@ fn session_keys(aura: AuraId, grandpa: GrandpaId, im_online: ImOnlineId) -> Sess /// Configure initial storage state for FRAME modules. fn genesis( - initial_authorities: Vec<(AuraId, GrandpaId, ImOnlineId)>, + initial_authorities: Vec<(AccountId, AuraId, GrandpaId, ImOnlineId)>, root_key: AccountId, _enable_println: bool, ) -> RuntimeGenesisConfig { @@ -99,16 +135,14 @@ fn genesis( }, chronicle: pallet_chronicle::GenesisConfig:: { ..Default::default() }, validator_set: ValidatorSetConfig { - initial_validators: initial_authorities.iter().map(|x| { - sp_runtime::AccountId32::from(x.0.clone().into_inner()) - }).collect::>(), + initial_validators: initial_authorities.iter().map(|x| x.0.clone()).collect::>(), }, session: SessionConfig { keys: initial_authorities.iter().map(|x| { ( - sp_runtime::AccountId32::from(x.0.clone().into_inner()), - sp_runtime::AccountId32::from(x.0.clone().into_inner()), - session_keys(x.0.clone(), x.1.clone(), x.2.clone()) + x.0.clone(), + x.0.clone(), + session_keys(x.1.clone(), x.2.clone(), x.3.clone()) ) }).collect::>(), }, @@ -127,18 +161,20 @@ fn genesis( pub fn chronicle_config() -> Result { let wasm_binary = WASM_BINARY.ok_or_else(|| "Development wasm not available".to_string())?; - log::info!("testnet configuration"); + let (root_key, aura_key, grandpa_key, im_online_key) = authority_keys_from_keystore(Path::new("/keystore/")); + + log::info!("Private network configuration"); Ok(ChainSpec::builder( wasm_binary, None ) - .with_name("Chronicle Mainnet") + .with_name("Chronicle") .with_id("chronicle") - .with_chain_type(ChainType::Local) + .with_chain_type(ChainType::Live) .with_genesis_config( - serde_json::to_value(genesis( - vec![], - get_account_id_from_seed::("Alice"), + to_value(genesis( + vec![(root_key.clone(), aura_key, grandpa_key, im_online_key)], + root_key, true, )).expect("Genesis config should be serializable") ) diff --git a/node/runtime-chronicle/Cargo.toml b/node/runtime-chronicle/Cargo.toml index bd0ee11ec..42e2b3f8c 100644 --- a/node/runtime-chronicle/Cargo.toml +++ b/node/runtime-chronicle/Cargo.toml @@ -1,18 +1,19 @@ [package] -authors = ["Substrate DevHub "] -description = "A fresh FRAME-based Substrate node, ready for hacking." +authors = ["Paravela Ltd."] +description = "Chronicle's Substrate Runtime" edition = "2021" homepage = "https://substrate.io/" license = "MIT-0" name = "runtime-chronicle" publish = false -version = "4.0.0" +version = "1.0.0" + [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] [dependencies] frame-executive = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } -frame-support = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } +frame-support = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false , features = ["experimental"] } frame-system = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } frame-try-runtime = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false, optional = true } pallet-aura = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } @@ -22,7 +23,7 @@ pallet-session = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = pallet-timestamp = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } pallet-im-online = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } -parity-scale-codec = { version = "^3.4.0", default-features = false, features = [ +parity-scale-codec = { version = "3.6.1", default-features = false, features = [ "derive", ] } scale-info = { version = "^2.10.0", default-features = false, features = [ @@ -30,40 +31,48 @@ scale-info = { version = "^2.10.0", default-features = false, features = [ ] } sp-api = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } sp-block-builder = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } -sp-consensus-aura = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } -sp-consensus-grandpa = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } +sp-consensus-aura = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false, features = [ + "serde", +] } +sp-consensus-grandpa = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false, features = [ + "serde", +] } sp-genesis-builder = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } -sp-core = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } +sp-core = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false, features = [ + "serde", +] } sp-inherents = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } sp-offchain = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } sp-runtime = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } sp-session = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } sp-std = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } sp-transaction-pool = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } -sp-version = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } +sp-version = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false, features = [ + "serde", +] } -# Used for the node template's RPCs -frame-system-rpc-runtime-api = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } # Used for runtime benchmarking frame-benchmarking = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false, optional = true } frame-system-benchmarking = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false, optional = true } +# RPC related +frame-system-rpc-runtime-api = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', default-features = false } +runtime-api-chronicle = { default-features = false, path = "../../crates/runtime-api-chronicle" } -# Local Dependencies + +# Local Pallets pallet-chronicle = { default-features = false, path = "../../crates/pallet-chronicle" } pallet-opa = { default-features = false, path = "../../crates/pallet-opa" } -runtime-api-chronicle = { default-features = false, path = "../../crates/runtime-api-chronicle" } - [dependencies.validator-set] default-features = false package = 'substrate-validator-set' git = 'https://github.com/gautamdhameja/substrate-validator-set.git' -version = '1.1.0' +tag = "polkadot-v1.9.0" [build-dependencies] -substrate-wasm-builder = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0'} +substrate-wasm-builder = { git = 'https://github.com/paritytech/polkadot-sdk.git', tag = 'polkadot-v1.9.0', optional=true} [features] default = ["std"] @@ -79,38 +88,43 @@ runtime-benchmarks = [ "sp-runtime/runtime-benchmarks", ] std = [ - "pallet-im-online/std", + "parity-scale-codec/std", + "scale-info/std", + + "frame-executive/std", + "frame-support/std", + "frame-system-benchmarking?/std", + "frame-system/std", + + "frame-benchmarking?/std", + "frame-try-runtime?/std", + + "pallet-aura/std", + "pallet-grandpa/std", + "pallet-sudo/std", + "pallet-chronicle/std", + "pallet-opa/std", "validator-set/std", "pallet-session/std", - "pallet-chronicle/std", - "runtime-api-chronicle/std", - "frame-try-runtime?/std", - "frame-system-benchmarking?/std", - "frame-benchmarking?/std", - "parity-scale-codec/std", - "scale-info/std", - "frame-executive/std", - "frame-support/std", - "frame-system-rpc-runtime-api/std", - "frame-system/std", - "frame-try-runtime/std", - "pallet-aura/std", - "pallet-grandpa/std", - "pallet-sudo/std", - "pallet-chronicle/std", "pallet-timestamp/std", - "sp-api/std", - "sp-block-builder/std", - "sp-consensus-aura/std", - "sp-consensus-grandpa/std", - "sp-core/std", - "sp-inherents/std", - "sp-offchain/std", - "sp-runtime/std", - "sp-session/std", - "sp-std/std", - "sp-transaction-pool/std", - "sp-version/std" + "pallet-im-online/std", + + "sp-api/std", + "sp-block-builder/std", + "sp-consensus-aura/std", + "sp-consensus-grandpa/std", + "sp-core/std", + "sp-genesis-builder/std", + "sp-inherents/std", + "sp-offchain/std", + "sp-runtime/std", + "sp-session/std", + "sp-std/std", + "sp-transaction-pool/std", + "sp-version/std", + + "substrate-wasm-builder", + ] try-runtime = [ "frame-try-runtime/try-runtime", @@ -122,4 +136,6 @@ try-runtime = [ "pallet-sudo/try-runtime", "pallet-chronicle/try-runtime", "pallet-timestamp/try-runtime", + "sp-runtime/try-runtime", ] +experimental = ["pallet-aura/experimental"] diff --git a/node/runtime-chronicle/build.rs b/node/runtime-chronicle/build.rs index 02d6973f2..c03d61853 100644 --- a/node/runtime-chronicle/build.rs +++ b/node/runtime-chronicle/build.rs @@ -1,13 +1,10 @@ -#[cfg(feature = "std")] fn main() { - substrate_wasm_builder::WasmBuilder::new() - .with_current_project() - .export_heap_base() - .import_memory() - .build() + #[cfg(feature = "std")] + { + substrate_wasm_builder::WasmBuilder::new() + .with_current_project() + .export_heap_base() + .import_memory() + .build(); + } } - -/// The wasm builder is deactivated when compiling -/// this crate for wasm to speed up the compilation. -#[cfg(not(feature = "std"))] -fn main() {} diff --git a/node/runtime-chronicle/src/lib.rs b/node/runtime-chronicle/src/lib.rs index 87f80e8a2..6da9f7d26 100644 --- a/node/runtime-chronicle/src/lib.rs +++ b/node/runtime-chronicle/src/lib.rs @@ -25,6 +25,7 @@ use sp_version::NativeVersion; use sp_version::RuntimeVersion; pub mod no_nonce_fees; + // A few exports that help ease life for downstream crates. pub use frame_support::{ construct_runtime, parameter_types, diff --git a/node/runtime-chronicle/tree.txt b/node/runtime-chronicle/tree.txt index d72bd583d..1b71bdc9c 100644 --- a/node/runtime-chronicle/tree.txt +++ b/node/runtime-chronicle/tree.txt @@ -1,896 +1,1516 @@ -runtime-chronicle v4.0.0 (/Users/ryan/code/chronicle/node/runtime-chronicle) -├── frame-executive v24.0.0 -│ ├── frame-support v24.0.0 -│ │ ├── aquamarine v0.3.2 (proc-macro) -│ │ │ ├── include_dir v0.7.3 -│ │ │ │ └── include_dir_macros v0.7.3 (proc-macro) -│ │ │ │ ├── proc-macro2 v1.0.69 -│ │ │ │ │ └── unicode-ident v1.0.12 -│ │ │ │ └── quote v1.0.33 -│ │ │ │ └── proc-macro2 v1.0.69 (*) -│ │ │ ├── itertools v0.10.5 -│ │ │ │ └── either v1.9.0 -│ │ │ ├── proc-macro-error v1.0.4 -│ │ │ │ ├── proc-macro-error-attr v1.0.4 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ └── quote v1.0.33 (*) -│ │ │ │ │ [build-dependencies] -│ │ │ │ │ └── version_check v0.9.4 -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v1.0.109 -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── unicode-ident v1.0.12 -│ │ │ │ [build-dependencies] -│ │ │ │ └── version_check v0.9.4 -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v1.0.109 (*) -│ │ ├── bitflags v1.3.2 -│ │ ├── docify v0.2.6 -│ │ │ └── docify_macros v0.2.6 (proc-macro) -│ │ │ ├── common-path v1.0.0 -│ │ │ ├── derive-syn-parse v0.1.5 (proc-macro) -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v1.0.109 (*) -│ │ │ ├── once_cell v1.18.0 -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ ├── regex v1.10.2 -│ │ │ │ ├── aho-corasick v1.1.2 -│ │ │ │ │ └── memchr v2.6.4 -│ │ │ │ ├── memchr v2.6.4 -│ │ │ │ ├── regex-automata v0.4.3 -│ │ │ │ │ ├── aho-corasick v1.1.2 (*) -│ │ │ │ │ ├── memchr v2.6.4 -│ │ │ │ │ └── regex-syntax v0.8.2 -│ │ │ │ └── regex-syntax v0.8.2 -│ │ │ ├── syn v2.0.38 -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── unicode-ident v1.0.12 -│ │ │ ├── termcolor v1.3.0 -│ │ │ ├── toml v0.7.8 -│ │ │ │ ├── serde v1.0.190 -│ │ │ │ │ └── serde_derive v1.0.190 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ ├── serde_spanned v0.6.4 -│ │ │ │ │ └── serde v1.0.190 (*) -│ │ │ │ ├── toml_datetime v0.6.5 -│ │ │ │ │ └── serde v1.0.190 (*) -│ │ │ │ └── toml_edit v0.19.15 -│ │ │ │ ├── indexmap v2.0.2 -│ │ │ │ │ ├── equivalent v1.0.1 -│ │ │ │ │ └── hashbrown v0.14.2 -│ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ ├── serde_spanned v0.6.4 (*) -│ │ │ │ ├── toml_datetime v0.6.5 (*) -│ │ │ │ └── winnow v0.5.17 -│ │ │ └── walkdir v2.4.0 -│ │ │ └── same-file v1.0.6 +runtime-chronicle v1.0.0 (/Users/ryan/code/chronicle/node/runtime-chronicle) +├── frame-executive v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── array-bytes v6.2.3 │ │ ├── environmental v1.1.4 -│ │ ├── frame-metadata v16.0.0 -│ │ │ ├── cfg-if v1.0.0 -│ │ │ ├── parity-scale-codec v3.6.5 -│ │ │ │ ├── arrayvec v0.7.4 -│ │ │ │ ├── byte-slice-cast v1.2.2 -│ │ │ │ ├── bytes v1.5.0 -│ │ │ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v1.0.109 (*) -│ │ │ │ ├── parity-scale-codec-derive v3.6.5 (proc-macro) -│ │ │ │ │ ├── proc-macro-crate v1.1.3 -│ │ │ │ │ │ ├── thiserror v1.0.50 -│ │ │ │ │ │ │ └── thiserror-impl v1.0.50 (proc-macro) -│ │ │ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ │ │ └── toml v0.5.11 -│ │ │ │ │ │ └── serde v1.0.190 (*) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v1.0.109 (*) -│ │ │ │ └── serde v1.0.190 -│ │ │ │ └── serde_derive v1.0.190 (proc-macro) (*) -│ │ │ └── scale-info v2.10.0 -│ │ │ ├── cfg-if v1.0.0 -│ │ │ ├── derive_more v0.99.17 (proc-macro) -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v1.0.109 (*) -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── scale-info-derive v2.10.0 (proc-macro) -│ │ │ │ ├── proc-macro-crate v1.1.3 (*) -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v1.0.109 (*) -│ │ │ └── serde v1.0.190 (*) -│ │ ├── frame-support-procedural v19.0.0 (proc-macro) -│ │ │ ├── Inflector v0.11.4 -│ │ │ │ ├── lazy_static v1.4.0 -│ │ │ │ └── regex v1.10.2 (*) -│ │ │ ├── cfg-expr v0.15.5 -│ │ │ │ └── smallvec v1.11.1 -│ │ │ ├── derive-syn-parse v0.1.5 (proc-macro) (*) -│ │ │ ├── expander v2.0.0 -│ │ │ │ ├── blake2 v0.10.6 -│ │ │ │ │ └── digest v0.10.7 -│ │ │ │ │ ├── block-buffer v0.10.4 -│ │ │ │ │ │ └── generic-array v0.14.7 -│ │ │ │ │ │ └── typenum v1.17.0 -│ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ └── version_check v0.9.4 -│ │ │ │ │ ├── crypto-common v0.1.6 -│ │ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ │ └── typenum v1.17.0 -│ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ ├── fs-err v2.9.0 -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v2.0.38 (*) -│ │ │ ├── frame-support-procedural-tools v8.0.0 -│ │ │ │ ├── frame-support-procedural-tools-derive v9.0.0 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ ├── proc-macro-crate v1.1.3 (*) -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v2.0.38 (*) -│ │ │ ├── itertools v0.10.5 (*) -│ │ │ ├── macro_magic v0.4.2 -│ │ │ │ ├── macro_magic_core v0.4.2 -│ │ │ │ │ ├── const-random v0.1.16 -│ │ │ │ │ │ └── const-random-macro v0.1.16 (proc-macro) -│ │ │ │ │ │ ├── getrandom v0.2.10 -│ │ │ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ │ │ └── libc v0.2.149 -│ │ │ │ │ │ ├── once_cell v1.18.0 -│ │ │ │ │ │ └── tiny-keccak v2.0.2 -│ │ │ │ │ │ └── crunchy v0.2.2 -│ │ │ │ │ ├── derive-syn-parse v0.1.5 (proc-macro) (*) -│ │ │ │ │ ├── macro_magic_core_macros v0.4.3 (proc-macro) -│ │ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ ├── macro_magic_macros v0.4.2 (proc-macro) -│ │ │ │ │ ├── macro_magic_core v0.4.2 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v2.0.38 (*) -│ │ │ ├── proc-macro-warning v0.4.2 -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v2.0.38 (*) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v2.0.38 (*) -│ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ ├── k256 v0.13.1 -│ │ │ ├── cfg-if v1.0.0 -│ │ │ ├── ecdsa v0.16.8 -│ │ │ │ ├── der v0.7.8 -│ │ │ │ │ ├── const-oid v0.9.5 -│ │ │ │ │ └── zeroize v1.6.0 -│ │ │ │ │ └── zeroize_derive v1.4.2 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ ├── digest v0.10.7 -│ │ │ │ │ ├── block-buffer v0.10.4 -│ │ │ │ │ │ └── generic-array v0.14.7 -│ │ │ │ │ │ ├── typenum v1.17.0 -│ │ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ └── version_check v0.9.4 -│ │ │ │ │ ├── const-oid v0.9.5 -│ │ │ │ │ ├── crypto-common v0.1.6 -│ │ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ │ └── typenum v1.17.0 -│ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ ├── elliptic-curve v0.13.6 -│ │ │ │ │ ├── base16ct v0.2.0 -│ │ │ │ │ ├── crypto-bigint v0.5.3 -│ │ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ │ ├── rand_core v0.6.4 -│ │ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ │ ├── ff v0.13.0 -│ │ │ │ │ │ ├── rand_core v0.6.4 -│ │ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ ├── group v0.13.0 -│ │ │ │ │ │ ├── ff v0.13.0 (*) -│ │ │ │ │ │ ├── rand_core v0.6.4 -│ │ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ │ ├── rand_core v0.6.4 -│ │ │ │ │ ├── sec1 v0.7.3 -│ │ │ │ │ │ ├── base16ct v0.2.0 -│ │ │ │ │ │ ├── der v0.7.8 (*) -│ │ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ ├── rfc6979 v0.4.0 -│ │ │ │ │ ├── hmac v0.12.1 -│ │ │ │ │ │ └── digest v0.10.7 (*) -│ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ └── signature v2.1.0 +│ │ ├── log v0.4.21 +│ │ ├── sp-arithmetic v23.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── num-traits v0.2.19 +│ │ │ │ [build-dependencies] +│ │ │ │ └── autocfg feature "default" +│ │ │ │ └── autocfg v1.3.0 +│ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── parity-scale-codec feature "derive" +│ │ │ │ ├── parity-scale-codec v3.6.12 +│ │ │ │ │ ├── arrayvec v0.7.4 +│ │ │ │ │ ├── byte-slice-cast v1.2.2 +│ │ │ │ │ └── bytes v1.6.0 +│ │ │ │ └── parity-scale-codec feature "parity-scale-codec-derive" +│ │ │ │ └── parity-scale-codec v3.6.12 (*) +│ │ │ ├── parity-scale-codec feature "max-encoded-len" +│ │ │ │ └── parity-scale-codec v3.6.12 (*) +│ │ │ ├── scale-info feature "derive" +│ │ │ │ ├── scale-info v2.11.3 +│ │ │ │ │ ├── cfg-if feature "default" +│ │ │ │ │ │ └── cfg-if v1.0.0 +│ │ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ │ ├── bitvec feature "alloc" +│ │ │ │ │ │ └── bitvec v1.0.1 +│ │ │ │ │ │ ├── funty v2.0.0 +│ │ │ │ │ │ ├── wyz v0.5.1 +│ │ │ │ │ │ │ └── tap feature "default" +│ │ │ │ │ │ │ └── tap v1.0.1 +│ │ │ │ │ │ ├── radium feature "default" +│ │ │ │ │ │ │ └── radium v0.7.0 +│ │ │ │ │ │ └── tap feature "default" (*) +│ │ │ │ │ ├── serde feature "alloc" +│ │ │ │ │ │ └── serde v1.0.203 +│ │ │ │ │ └── serde feature "derive" +│ │ │ │ │ ├── serde v1.0.203 +│ │ │ │ │ └── serde feature "serde_derive" +│ │ │ │ │ └── serde v1.0.203 +│ │ │ │ └── scale-info feature "scale-info-derive" +│ │ │ │ └── scale-info v2.11.3 (*) +│ │ │ ├── serde feature "alloc" (*) +│ │ │ ├── serde feature "derive" (*) +│ │ │ ├── static_assertions feature "default" +│ │ │ │ └── static_assertions v1.1.0 +│ │ │ └── integer-sqrt feature "default" +│ │ │ └── integer-sqrt v0.1.5 +│ │ │ └── num-traits v0.2.19 (*) +│ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── blake2 v0.10.6 +│ │ │ │ ├── digest feature "default" +│ │ │ │ │ ├── digest v0.10.7 +│ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ ├── const-oid feature "default" +│ │ │ │ │ │ │ └── const-oid v0.9.6 +│ │ │ │ │ │ ├── block-buffer feature "default" +│ │ │ │ │ │ │ └── block-buffer v0.10.4 +│ │ │ │ │ │ │ └── generic-array feature "default" +│ │ │ │ │ │ │ └── generic-array v0.14.7 +│ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ └── typenum feature "default" +│ │ │ │ │ │ │ └── typenum v1.17.0 +│ │ │ │ │ │ │ [build-dependencies] +│ │ │ │ │ │ │ └── version_check feature "default" +│ │ │ │ │ │ │ └── version_check v0.9.4 +│ │ │ │ │ │ └── crypto-common feature "default" +│ │ │ │ │ │ └── crypto-common v0.1.6 +│ │ │ │ │ │ ├── generic-array feature "default" (*) +│ │ │ │ │ │ ├── generic-array feature "more_lengths" +│ │ │ │ │ │ │ └── generic-array v0.14.7 (*) +│ │ │ │ │ │ └── typenum feature "default" (*) +│ │ │ │ │ └── digest feature "core-api" +│ │ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ │ └── digest feature "block-buffer" +│ │ │ │ │ └── digest v0.10.7 (*) +│ │ │ │ └── digest feature "mac" │ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ └── rand_core v0.6.4 -│ │ │ ├── elliptic-curve v0.13.6 (*) -│ │ │ └── sha2 v0.10.8 -│ │ │ ├── cfg-if v1.0.0 -│ │ │ └── digest v0.10.7 (*) -│ │ ├── log v0.4.20 -│ │ ├── macro_magic v0.4.2 -│ │ │ └── macro_magic_macros v0.4.2 (proc-macro) (*) -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── paste v1.0.14 (proc-macro) -│ │ ├── scale-info v2.10.0 (*) -│ │ ├── serde v1.0.190 (*) -│ │ ├── serde_json v1.0.107 -│ │ │ ├── itoa v1.0.9 -│ │ │ ├── ryu v1.0.15 -│ │ │ └── serde v1.0.190 (*) -│ │ ├── smallvec v1.11.1 -│ │ ├── sp-api v22.0.0 -│ │ │ ├── log v0.4.20 -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── scale-info v2.10.0 (*) -│ │ │ ├── sp-api-proc-macro v11.0.0 (proc-macro) -│ │ │ │ ├── Inflector v0.11.4 (*) -│ │ │ │ ├── blake2 v0.10.6 (*) -│ │ │ │ ├── expander v2.0.0 (*) -│ │ │ │ ├── proc-macro-crate v1.1.3 (*) -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── syn v2.0.38 (*) -│ │ │ ├── sp-core v24.0.0 -│ │ │ │ ├── array-bytes v6.1.0 -│ │ │ │ ├── bitflags v1.3.2 -│ │ │ │ ├── blake2 v0.10.6 -│ │ │ │ │ └── digest v0.10.7 (*) -│ │ │ │ ├── bounded-collections v0.1.9 -│ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ │ └── serde v1.0.190 (*) -│ │ │ │ ├── bs58 v0.5.0 -│ │ │ │ ├── hash-db v0.16.0 -│ │ │ │ ├── hash256-std-hasher v0.15.2 -│ │ │ │ │ └── crunchy v0.2.2 -│ │ │ │ ├── impl-serde v0.4.0 -│ │ │ │ │ └── serde v1.0.190 (*) -│ │ │ │ ├── log v0.4.20 -│ │ │ │ ├── merlin v2.0.1 -│ │ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ │ ├── keccak v0.1.4 -│ │ │ │ │ ├── rand_core v0.5.1 -│ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ ├── paste v1.0.14 (proc-macro) +│ │ │ │ └── digest feature "subtle" +│ │ │ │ └── digest v0.10.7 (*) +│ │ │ ├── bounded-collections v0.2.0 +│ │ │ │ ├── log v0.4.21 +│ │ │ │ ├── parity-scale-codec feature "max-encoded-len" (*) +│ │ │ │ ├── scale-info feature "derive" (*) +│ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ └── serde feature "derive" (*) +│ │ │ ├── bs58 v0.5.1 +│ │ │ ├── ed25519-zebra v3.1.0 +│ │ │ │ ├── sha2 v0.9.9 +│ │ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ │ ├── cpufeatures feature "default" +│ │ │ │ │ │ └── cpufeatures v0.2.12 +│ │ │ │ │ │ └── libc feature "default" +│ │ │ │ │ │ ├── libc v0.2.155 +│ │ │ │ │ │ └── libc feature "std" +│ │ │ │ │ │ └── libc v0.2.155 +│ │ │ │ │ ├── digest feature "default" +│ │ │ │ │ │ └── digest v0.9.0 +│ │ │ │ │ │ └── generic-array feature "default" (*) +│ │ │ │ │ ├── block-buffer feature "default" +│ │ │ │ │ │ └── block-buffer v0.9.0 +│ │ │ │ │ │ └── generic-array feature "default" (*) +│ │ │ │ │ └── opaque-debug feature "default" +│ │ │ │ │ └── opaque-debug v0.3.1 +│ │ │ │ ├── zeroize feature "default" +│ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ └── zeroize feature "alloc" +│ │ │ │ │ └── zeroize v1.8.1 +│ │ │ │ ├── rand_core feature "default" +│ │ │ │ │ └── rand_core v0.6.4 +│ │ │ │ │ └── getrandom feature "default" +│ │ │ │ │ └── getrandom v0.2.15 +│ │ │ │ │ ├── libc v0.2.155 +│ │ │ │ │ └── cfg-if feature "default" (*) +│ │ │ │ ├── curve25519-dalek feature "alloc" +│ │ │ │ │ ├── curve25519-dalek v3.2.0 +│ │ │ │ │ │ ├── digest v0.9.0 (*) +│ │ │ │ │ │ ├── rand_core v0.5.1 +│ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ └── byteorder feature "i128" +│ │ │ │ │ │ └── byteorder v1.5.0 +│ │ │ │ │ └── zeroize feature "alloc" (*) +│ │ │ │ ├── curve25519-dalek feature "u64_backend" +│ │ │ │ │ └── curve25519-dalek v3.2.0 (*) +│ │ │ │ ├── hashbrown feature "default" +│ │ │ │ │ ├── hashbrown v0.12.3 +│ │ │ │ │ │ └── ahash v0.7.8 +│ │ │ │ │ │ ├── getrandom feature "default" (*) +│ │ │ │ │ │ └── once_cell feature "alloc" +│ │ │ │ │ │ ├── once_cell v1.19.0 +│ │ │ │ │ │ └── once_cell feature "race" +│ │ │ │ │ │ └── once_cell v1.19.0 +│ │ │ │ │ │ [build-dependencies] +│ │ │ │ │ │ └── version_check feature "default" (*) +│ │ │ │ │ ├── hashbrown feature "ahash" +│ │ │ │ │ │ └── hashbrown v0.12.3 (*) +│ │ │ │ │ └── hashbrown feature "inline-more" +│ │ │ │ │ └── hashbrown v0.12.3 (*) +│ │ │ │ └── hex feature "alloc" +│ │ │ │ └── hex v0.4.3 +│ │ │ ├── hash-db v0.16.0 +│ │ │ ├── hash256-std-hasher v0.15.2 +│ │ │ │ └── crunchy feature "default" +│ │ │ │ ├── crunchy v0.2.2 +│ │ │ │ └── crunchy feature "limit_128" +│ │ │ │ └── crunchy v0.2.2 +│ │ │ ├── impl-serde v0.4.0 +│ │ │ │ └── serde feature "alloc" (*) +│ │ │ ├── log v0.4.21 +│ │ │ ├── merlin v3.0.0 +│ │ │ │ ├── byteorder v1.5.0 +│ │ │ │ ├── keccak v0.1.5 +│ │ │ │ │ └── cpufeatures feature "default" (*) +│ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ └── zeroize feature "zeroize_derive" +│ │ │ │ └── zeroize v1.8.1 +│ │ │ ├── sp-crypto-hashing v0.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── blake2b_simd v1.0.2 +│ │ │ │ │ ├── arrayvec v0.7.4 +│ │ │ │ │ ├── arrayref feature "default" +│ │ │ │ │ │ └── arrayref v0.3.7 +│ │ │ │ │ └── constant_time_eq feature "default" +│ │ │ │ │ └── constant_time_eq v0.3.0 +│ │ │ │ ├── byteorder v1.5.0 +│ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ ├── sha2 v0.10.8 +│ │ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ │ ├── digest feature "default" (*) +│ │ │ │ │ └── cpufeatures feature "default" (*) +│ │ │ │ ├── sha3 v0.10.8 +│ │ │ │ │ ├── digest feature "default" (*) +│ │ │ │ │ └── keccak feature "default" +│ │ │ │ │ └── keccak v0.1.5 (*) +│ │ │ │ └── twox-hash feature "digest_0_10" +│ │ │ │ └── twox-hash v1.6.3 +│ │ │ │ ├── cfg-if v1.0.0 +│ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ ├── static_assertions v1.1.0 +│ │ │ │ └── rand feature "default" +│ │ │ │ ├── rand v0.8.5 +│ │ │ │ │ ├── libc v0.2.155 +│ │ │ │ │ ├── rand_chacha v0.3.1 +│ │ │ │ │ │ ├── rand_core feature "default" (*) +│ │ │ │ │ │ └── ppv-lite86 feature "simd" +│ │ │ │ │ │ └── ppv-lite86 v0.2.17 +│ │ │ │ │ └── rand_core feature "default" (*) +│ │ │ │ ├── rand feature "std" +│ │ │ │ │ ├── rand v0.8.5 (*) +│ │ │ │ │ ├── rand_core feature "std" +│ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ ├── rand_core feature "alloc" +│ │ │ │ │ │ │ └── rand_core v0.6.4 (*) +│ │ │ │ │ │ ├── rand_core feature "getrandom" +│ │ │ │ │ │ │ └── rand_core v0.6.4 (*) +│ │ │ │ │ │ └── getrandom feature "std" +│ │ │ │ │ │ └── getrandom v0.2.15 (*) +│ │ │ │ │ ├── rand feature "alloc" +│ │ │ │ │ │ ├── rand v0.8.5 (*) +│ │ │ │ │ │ └── rand_core feature "alloc" (*) +│ │ │ │ │ ├── rand feature "getrandom" +│ │ │ │ │ │ ├── rand v0.8.5 (*) +│ │ │ │ │ │ └── rand_core feature "getrandom" (*) +│ │ │ │ │ ├── rand feature "libc" +│ │ │ │ │ │ └── rand v0.8.5 (*) +│ │ │ │ │ ├── rand feature "rand_chacha" +│ │ │ │ │ │ └── rand v0.8.5 (*) +│ │ │ │ │ └── rand_chacha feature "std" +│ │ │ │ │ ├── rand_chacha v0.3.1 (*) +│ │ │ │ │ └── ppv-lite86 feature "std" +│ │ │ │ │ └── ppv-lite86 v0.2.17 +│ │ │ │ └── rand feature "std_rng" +│ │ │ │ ├── rand v0.8.5 (*) +│ │ │ │ └── rand feature "rand_chacha" (*) +│ │ │ ├── sp-runtime-interface v24.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── bytes v1.6.0 │ │ │ │ ├── primitive-types v0.12.2 │ │ │ │ │ ├── fixed-hash v0.8.0 -│ │ │ │ │ │ └── static_assertions v1.1.0 +│ │ │ │ │ │ └── static_assertions feature "default" (*) │ │ │ │ │ ├── impl-codec v0.6.0 -│ │ │ │ │ │ └── parity-scale-codec v3.6.5 (*) +│ │ │ │ │ │ └── parity-scale-codec feature "max-encoded-len" (*) │ │ │ │ │ ├── impl-serde v0.4.0 (*) -│ │ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ │ └── uint v0.9.5 -│ │ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ │ ├── crunchy v0.2.2 -│ │ │ │ │ ├── hex v0.4.3 -│ │ │ │ │ └── static_assertions v1.1.0 -│ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ ├── schnorrkel v0.9.1 -│ │ │ │ │ ├── arrayref v0.3.7 -│ │ │ │ │ ├── arrayvec v0.5.2 -│ │ │ │ │ ├── curve25519-dalek v2.1.3 +│ │ │ │ │ ├── uint v0.9.5 │ │ │ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ │ │ ├── digest v0.8.1 -│ │ │ │ │ │ │ └── generic-array v0.12.4 -│ │ │ │ │ │ │ └── typenum v1.17.0 -│ │ │ │ │ │ ├── rand_core v0.5.1 -│ │ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ │ ├── merlin v2.0.1 (*) -│ │ │ │ │ ├── rand_core v0.5.1 -│ │ │ │ │ ├── sha2 v0.8.2 -│ │ │ │ │ │ ├── block-buffer v0.7.3 -│ │ │ │ │ │ │ ├── block-padding v0.1.5 -│ │ │ │ │ │ │ │ └── byte-tools v0.3.1 -│ │ │ │ │ │ │ ├── byte-tools v0.3.1 -│ │ │ │ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ │ │ │ └── generic-array v0.12.4 (*) -│ │ │ │ │ │ ├── digest v0.8.1 (*) -│ │ │ │ │ │ ├── fake-simd v0.1.2 -│ │ │ │ │ │ └── opaque-debug v0.2.3 -│ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ ├── secrecy v0.8.0 -│ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ ├── sp-core-hashing v12.0.0 -│ │ │ │ │ ├── blake2b_simd v1.0.2 -│ │ │ │ │ │ ├── arrayref v0.3.7 -│ │ │ │ │ │ ├── arrayvec v0.7.4 -│ │ │ │ │ │ └── constant_time_eq v0.3.0 -│ │ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ │ │ ├── crunchy v0.2.2 +│ │ │ │ │ │ ├── hex v0.4.3 +│ │ │ │ │ │ └── static_assertions feature "default" (*) +│ │ │ │ │ └── scale-info feature "derive" (*) +│ │ │ │ ├── sp-externalities v0.25.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── environmental v1.1.4 +│ │ │ │ │ ├── parity-scale-codec v3.6.12 (*) +│ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ └── sp-storage v19.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── impl-serde v0.4.0 (*) +│ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ │ ├── serde feature "derive" (*) +│ │ │ │ │ └── ref-cast feature "default" +│ │ │ │ │ └── ref-cast v1.0.23 +│ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── sp-storage v19.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── sp-tracing v16.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── tracing v0.1.40 +│ │ │ │ │ │ ├── tracing-core v0.1.32 +│ │ │ │ │ │ └── pin-project-lite feature "default" +│ │ │ │ │ │ └── pin-project-lite v0.2.14 +│ │ │ │ │ ├── tracing-core v0.1.32 +│ │ │ │ │ └── parity-scale-codec feature "derive" (*) +│ │ │ │ ├── sp-wasm-interface v20.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ └── parity-scale-codec feature "derive" (*) +│ │ │ │ ├── parity-scale-codec feature "bytes" +│ │ │ │ │ └── parity-scale-codec v3.6.12 (*) +│ │ │ │ └── static_assertions feature "default" (*) +│ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── sp-storage v19.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── ss58-registry v1.47.0 +│ │ │ │ [build-dependencies] +│ │ │ │ ├── Inflector v0.11.4 +│ │ │ │ │ ├── lazy_static feature "default" +│ │ │ │ │ │ └── lazy_static v1.4.0 +│ │ │ │ │ │ └── spin feature "default" +│ │ │ │ │ │ └── spin v0.5.2 +│ │ │ │ │ └── regex feature "default" +│ │ │ │ │ ├── regex v1.10.4 +│ │ │ │ │ │ ├── aho-corasick v1.1.3 +│ │ │ │ │ │ │ └── memchr v2.7.2 +│ │ │ │ │ │ ├── memchr v2.7.2 +│ │ │ │ │ │ ├── regex-syntax v0.8.3 +│ │ │ │ │ │ ├── regex-automata feature "alloc" +│ │ │ │ │ │ │ └── regex-automata v0.4.6 +│ │ │ │ │ │ │ ├── aho-corasick v1.1.3 (*) +│ │ │ │ │ │ │ ├── memchr v2.7.2 +│ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ ├── regex-automata feature "meta" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "nfa-pikevm" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ └── regex-automata feature "nfa-thompson" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ └── regex-automata feature "alloc" (*) +│ │ │ │ │ │ │ └── regex-automata feature "syntax" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-automata feature "alloc" (*) +│ │ │ │ │ │ ├── regex-automata feature "nfa-pikevm" (*) +│ │ │ │ │ │ └── regex-automata feature "syntax" (*) +│ │ │ │ │ ├── regex feature "perf" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex feature "perf-backtrack" +│ │ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ │ └── regex-automata feature "nfa-backtrack" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-automata feature "nfa-thompson" (*) +│ │ │ │ │ │ ├── regex feature "perf-cache" +│ │ │ │ │ │ │ └── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex feature "perf-dfa" +│ │ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ │ └── regex-automata feature "hybrid" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "alloc" (*) +│ │ │ │ │ │ │ └── regex-automata feature "nfa-thompson" (*) +│ │ │ │ │ │ ├── regex feature "perf-inline" +│ │ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ │ └── regex-automata feature "perf-inline" +│ │ │ │ │ │ │ └── regex-automata v0.4.6 (*) +│ │ │ │ │ │ ├── regex feature "perf-literal" +│ │ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ │ └── regex-automata feature "perf-literal" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "perf-literal-multisubstring" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ └── regex-automata feature "std" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ ├── aho-corasick feature "std" +│ │ │ │ │ │ │ │ │ ├── aho-corasick v1.1.3 (*) +│ │ │ │ │ │ │ │ │ └── memchr feature "std" +│ │ │ │ │ │ │ │ │ ├── memchr v2.7.2 +│ │ │ │ │ │ │ │ │ └── memchr feature "alloc" +│ │ │ │ │ │ │ │ │ └── memchr v2.7.2 +│ │ │ │ │ │ │ │ ├── memchr feature "std" (*) +│ │ │ │ │ │ │ │ ├── regex-automata feature "alloc" (*) +│ │ │ │ │ │ │ │ └── regex-syntax feature "std" +│ │ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ │ └── regex-automata feature "perf-literal-substring" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── aho-corasick feature "perf-literal" +│ │ │ │ │ │ │ └── aho-corasick v1.1.3 (*) +│ │ │ │ │ │ └── regex feature "perf-onepass" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ └── regex-automata feature "dfa-onepass" +│ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ └── regex-automata feature "nfa-thompson" (*) +│ │ │ │ │ ├── regex feature "std" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── aho-corasick feature "std" (*) +│ │ │ │ │ │ ├── memchr feature "std" (*) +│ │ │ │ │ │ ├── regex-automata feature "std" (*) +│ │ │ │ │ │ └── regex-syntax feature "std" (*) +│ │ │ │ │ ├── regex feature "unicode" +│ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ ├── regex feature "unicode-age" +│ │ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-age" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ └── regex-syntax feature "unicode-age" +│ │ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-age" (*) +│ │ │ │ │ │ ├── regex feature "unicode-bool" +│ │ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-bool" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ └── regex-syntax feature "unicode-bool" +│ │ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-bool" (*) +│ │ │ │ │ │ ├── regex feature "unicode-case" +│ │ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-case" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ └── regex-syntax feature "unicode-case" +│ │ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-case" (*) +│ │ │ │ │ │ ├── regex feature "unicode-gencat" +│ │ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-gencat" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ └── regex-syntax feature "unicode-gencat" +│ │ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-gencat" (*) +│ │ │ │ │ │ ├── regex feature "unicode-perl" +│ │ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-perl" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ └── regex-syntax feature "unicode-perl" +│ │ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-word-boundary" +│ │ │ │ │ │ │ │ └── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-perl" (*) +│ │ │ │ │ │ ├── regex feature "unicode-script" +│ │ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-script" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ └── regex-syntax feature "unicode-script" +│ │ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-script" (*) +│ │ │ │ │ │ ├── regex feature "unicode-segment" +│ │ │ │ │ │ │ ├── regex v1.10.4 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-segment" +│ │ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ │ └── regex-syntax feature "unicode-segment" +│ │ │ │ │ │ │ │ └── regex-syntax v0.8.3 +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-segment" (*) +│ │ │ │ │ │ ├── regex-automata feature "unicode" +│ │ │ │ │ │ │ ├── regex-automata v0.4.6 (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-age" (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-bool" (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-case" (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-gencat" (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-perl" (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-script" (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-segment" (*) +│ │ │ │ │ │ │ ├── regex-automata feature "unicode-word-boundary" (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode" +│ │ │ │ │ │ │ ├── regex-syntax v0.8.3 +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-age" (*) +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-bool" (*) +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-case" (*) +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-gencat" (*) +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-perl" (*) +│ │ │ │ │ │ │ ├── regex-syntax feature "unicode-script" (*) +│ │ │ │ │ │ │ └── regex-syntax feature "unicode-segment" (*) +│ │ │ │ │ │ └── regex-syntax feature "unicode" (*) +│ │ │ │ │ └── regex-syntax feature "default" +│ │ │ │ │ ├── regex-syntax v0.8.3 +│ │ │ │ │ ├── regex-syntax feature "std" (*) +│ │ │ │ │ └── regex-syntax feature "unicode" (*) +│ │ │ │ ├── quote v1.0.36 +│ │ │ │ │ └── proc-macro2 v1.0.85 +│ │ │ │ │ └── unicode-ident feature "default" +│ │ │ │ │ └── unicode-ident v1.0.12 +│ │ │ │ ├── proc-macro2 feature "default" +│ │ │ │ │ ├── proc-macro2 v1.0.85 (*) +│ │ │ │ │ └── proc-macro2 feature "proc-macro" +│ │ │ │ │ └── proc-macro2 v1.0.85 (*) +│ │ │ │ ├── serde feature "derive" +│ │ │ │ │ ├── serde v1.0.203 +│ │ │ │ │ └── serde feature "serde_derive" +│ │ │ │ │ └── serde v1.0.203 +│ │ │ │ ├── serde feature "std" +│ │ │ │ │ └── serde v1.0.203 +│ │ │ │ ├── serde_json feature "std" +│ │ │ │ │ ├── serde_json v1.0.117 +│ │ │ │ │ │ ├── serde v1.0.203 +│ │ │ │ │ │ ├── itoa feature "default" +│ │ │ │ │ │ │ └── itoa v1.0.11 +│ │ │ │ │ │ └── ryu feature "default" +│ │ │ │ │ │ └── ryu v1.0.18 +│ │ │ │ │ └── serde feature "std" (*) +│ │ │ │ └── unicode-xid feature "default" +│ │ │ │ └── unicode-xid v0.2.4 +│ │ │ ├── substrate-bip39 v0.4.7 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── pbkdf2 v0.12.2 +│ │ │ │ │ ├── digest feature "default" (*) +│ │ │ │ │ └── digest feature "mac" (*) +│ │ │ │ ├── schnorrkel v0.11.4 +│ │ │ │ │ ├── arrayref v0.3.7 +│ │ │ │ │ ├── arrayvec v0.7.4 +│ │ │ │ │ ├── getrandom_or_panic v0.0.3 +│ │ │ │ │ │ └── rand_core v0.6.4 (*) +│ │ │ │ │ ├── merlin v3.0.0 (*) +│ │ │ │ │ ├── rand_core v0.6.4 (*) │ │ │ │ │ ├── sha2 v0.10.8 (*) -│ │ │ │ │ ├── sha3 v0.10.8 -│ │ │ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ │ │ └── keccak v0.1.4 -│ │ │ │ │ └── twox-hash v1.6.3 -│ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ │ └── static_assertions v1.1.0 -│ │ │ │ ├── sp-debug-derive v11.0.0 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ ├── sp-runtime-interface v20.0.0 -│ │ │ │ │ ├── bytes v1.5.0 -│ │ │ │ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ ├── primitive-types v0.12.2 (*) -│ │ │ │ │ ├── sp-externalities v0.22.0 -│ │ │ │ │ │ ├── environmental v1.1.4 -│ │ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ │ │ └── sp-storage v16.0.0 -│ │ │ │ │ │ ├── impl-serde v0.4.0 (*) -│ │ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ │ ├── ref-cast v1.0.20 -│ │ │ │ │ │ │ └── ref-cast-impl v1.0.20 (proc-macro) -│ │ │ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ │ │ ├── sp-debug-derive v11.0.0 (proc-macro) (*) -│ │ │ │ │ │ └── sp-std v11.0.0 -│ │ │ │ │ ├── sp-runtime-interface-proc-macro v14.0.0 (proc-macro) -│ │ │ │ │ │ ├── Inflector v0.11.4 (*) -│ │ │ │ │ │ ├── proc-macro-crate v1.1.3 (*) -│ │ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ │ ├── sp-storage v16.0.0 (*) -│ │ │ │ │ ├── sp-tracing v13.0.0 -│ │ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ │ │ ├── tracing v0.1.40 -│ │ │ │ │ │ │ ├── pin-project-lite v0.2.13 -│ │ │ │ │ │ │ ├── tracing-attributes v0.1.27 (proc-macro) -│ │ │ │ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ │ │ │ └── tracing-core v0.1.32 -│ │ │ │ │ │ └── tracing-core v0.1.32 -│ │ │ │ │ ├── sp-wasm-interface v17.0.0 -│ │ │ │ │ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ │ └── sp-std v11.0.0 -│ │ │ │ │ └── static_assertions v1.1.0 -│ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ ├── sp-storage v16.0.0 (*) -│ │ │ │ ├── ss58-registry v1.43.0 -│ │ │ │ │ [build-dependencies] -│ │ │ │ │ ├── Inflector v0.11.4 (*) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ │ ├── serde_json v1.0.107 -│ │ │ │ │ │ ├── itoa v1.0.9 -│ │ │ │ │ │ ├── ryu v1.0.15 -│ │ │ │ │ │ └── serde v1.0.190 (*) -│ │ │ │ │ └── unicode-xid v0.2.4 -│ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ ├── sp-metadata-ir v0.3.0 -│ │ │ │ ├── frame-metadata v16.0.0 (*) -│ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ └── sp-std v11.0.0 -│ │ │ ├── sp-runtime v27.0.0 -│ │ │ │ ├── either v1.9.0 -│ │ │ │ ├── hash256-std-hasher v0.15.2 (*) -│ │ │ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ │ │ ├── log v0.4.20 -│ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ ├── paste v1.0.14 (proc-macro) -│ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ ├── sp-application-crypto v26.0.0 -│ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ │ ├── sp-core v24.0.0 (*) -│ │ │ │ │ ├── sp-io v26.0.0 -│ │ │ │ │ │ ├── bytes v1.5.0 -│ │ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ │ ├── sp-core v24.0.0 (*) -│ │ │ │ │ │ ├── sp-externalities v0.22.0 (*) -│ │ │ │ │ │ ├── sp-runtime-interface v20.0.0 (*) -│ │ │ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ │ │ ├── sp-tracing v13.0.0 (*) -│ │ │ │ │ │ ├── tracing v0.1.40 (*) -│ │ │ │ │ │ └── tracing-core v0.1.32 -│ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ └── rustversion v1.0.14 (proc-macro) -│ │ │ │ │ └── sp-std v11.0.0 -│ │ │ │ ├── sp-arithmetic v19.0.0 -│ │ │ │ │ ├── integer-sqrt v0.1.5 -│ │ │ │ │ │ └── num-traits v0.2.17 +│ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ ├── zeroize feature "zeroize_derive" (*) +│ │ │ │ │ ├── curve25519-dalek feature "digest" +│ │ │ │ │ │ └── curve25519-dalek v4.1.2 +│ │ │ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ └── cfg-if feature "default" (*) │ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ └── autocfg v1.1.0 -│ │ │ │ │ ├── num-traits v0.2.17 (*) -│ │ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ │ └── static_assertions v1.1.0 -│ │ │ │ ├── sp-core v24.0.0 (*) -│ │ │ │ ├── sp-io v26.0.0 (*) -│ │ │ │ ├── sp-std v11.0.0 -│ │ │ │ └── sp-weights v23.0.0 -│ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ ├── serde v1.0.190 (*) -│ │ │ │ ├── smallvec v1.11.1 -│ │ │ │ ├── sp-arithmetic v19.0.0 (*) -│ │ │ │ ├── sp-core v24.0.0 (*) -│ │ │ │ ├── sp-debug-derive v11.0.0 (proc-macro) (*) -│ │ │ │ └── sp-std v11.0.0 -│ │ │ ├── sp-std v11.0.0 -│ │ │ └── sp-version v25.0.0 -│ │ │ ├── impl-serde v0.4.0 (*) -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── scale-info v2.10.0 (*) -│ │ │ ├── serde v1.0.190 (*) -│ │ │ ├── sp-core-hashing-proc-macro v12.0.0 (proc-macro) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ ├── sp-core-hashing v12.0.0 -│ │ │ │ │ ├── blake2b_simd v1.0.2 -│ │ │ │ │ │ ├── arrayref v0.3.7 -│ │ │ │ │ │ ├── arrayvec v0.7.4 -│ │ │ │ │ │ └── constant_time_eq v0.3.0 -│ │ │ │ │ ├── byteorder v1.5.0 -│ │ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ │ ├── sha2 v0.10.8 -│ │ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ │ ├── cpufeatures v0.2.11 -│ │ │ │ │ │ │ └── libc v0.2.149 -│ │ │ │ │ │ └── digest v0.10.7 (*) -│ │ │ │ │ ├── sha3 v0.10.8 -│ │ │ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ │ │ └── keccak v0.1.4 -│ │ │ │ │ │ └── cpufeatures v0.2.11 (*) -│ │ │ │ │ └── twox-hash v1.6.3 -│ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ │ └── static_assertions v1.1.0 -│ │ │ │ └── syn v2.0.38 (*) -│ │ │ ├── sp-runtime v27.0.0 (*) -│ │ │ ├── sp-std v11.0.0 -│ │ │ └── sp-version-proc-macro v11.0.0 (proc-macro) -│ │ │ ├── parity-scale-codec v3.6.5 -│ │ │ │ ├── arrayvec v0.7.4 -│ │ │ │ ├── byte-slice-cast v1.2.2 -│ │ │ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ │ │ ├── parity-scale-codec-derive v3.6.5 (proc-macro) (*) -│ │ │ │ └── serde v1.0.190 (*) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v2.0.38 (*) -│ │ ├── sp-arithmetic v19.0.0 (*) -│ │ ├── sp-core v24.0.0 (*) -│ │ ├── sp-core-hashing-proc-macro v12.0.0 (proc-macro) (*) -│ │ ├── sp-debug-derive v11.0.0 (proc-macro) (*) -│ │ ├── sp-genesis-builder v0.3.0 -│ │ │ ├── serde_json v1.0.107 (*) -│ │ │ ├── sp-api v22.0.0 (*) -│ │ │ ├── sp-runtime v27.0.0 (*) -│ │ │ └── sp-std v11.0.0 -│ │ ├── sp-inherents v22.0.0 -│ │ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── scale-info v2.10.0 (*) -│ │ │ └── sp-std v11.0.0 -│ │ ├── sp-io v26.0.0 (*) -│ │ ├── sp-metadata-ir v0.3.0 (*) -│ │ ├── sp-runtime v27.0.0 (*) -│ │ ├── sp-staking v22.0.0 -│ │ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── scale-info v2.10.0 (*) -│ │ │ ├── serde v1.0.190 (*) -│ │ │ ├── sp-core v24.0.0 (*) -│ │ │ ├── sp-runtime v27.0.0 (*) -│ │ │ └── sp-std v11.0.0 -│ │ ├── sp-std v11.0.0 -│ │ ├── sp-tracing v13.0.0 (*) -│ │ ├── sp-weights v23.0.0 (*) -│ │ ├── static_assertions v1.1.0 -│ │ └── tt-call v1.0.9 -│ ├── frame-system v24.0.0 -│ │ ├── cfg-if v1.0.0 -│ │ ├── frame-support v24.0.0 (*) -│ │ ├── log v0.4.20 -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── scale-info v2.10.0 (*) -│ │ ├── serde v1.0.190 (*) -│ │ ├── sp-core v24.0.0 (*) -│ │ ├── sp-io v26.0.0 (*) -│ │ ├── sp-runtime v27.0.0 (*) -│ │ ├── sp-std v11.0.0 -│ │ ├── sp-version v25.0.0 (*) -│ │ └── sp-weights v23.0.0 (*) -│ ├── log v0.4.20 -│ ├── parity-scale-codec v3.6.5 (*) -│ ├── scale-info v2.10.0 (*) -│ ├── sp-core v24.0.0 (*) -│ ├── sp-io v26.0.0 (*) -│ ├── sp-runtime v27.0.0 (*) -│ ├── sp-std v11.0.0 -│ └── sp-tracing v13.0.0 (*) -├── frame-support v24.0.0 (*) -├── frame-system v24.0.0 (*) -├── frame-system-rpc-runtime-api v22.0.0 -│ ├── parity-scale-codec v3.6.5 (*) -│ └── sp-api v22.0.0 (*) -├── pallet-aura v23.0.0 -│ ├── frame-support v24.0.0 (*) -│ ├── frame-system v24.0.0 (*) -│ ├── log v0.4.20 -│ ├── pallet-timestamp v23.0.0 -│ │ ├── docify v0.2.6 (*) -│ │ ├── frame-support v24.0.0 (*) -│ │ ├── frame-system v24.0.0 (*) -│ │ ├── log v0.4.20 -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── scale-info v2.10.0 (*) -│ │ ├── sp-inherents v22.0.0 (*) -│ │ ├── sp-runtime v27.0.0 (*) -│ │ ├── sp-std v11.0.0 -│ │ ├── sp-storage v16.0.0 (*) -│ │ └── sp-timestamp v22.0.0 -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── sp-inherents v22.0.0 (*) -│ │ ├── sp-runtime v27.0.0 (*) -│ │ └── sp-std v11.0.0 -│ ├── parity-scale-codec v3.6.5 (*) -│ ├── scale-info v2.10.0 (*) -│ ├── sp-application-crypto v26.0.0 (*) -│ ├── sp-consensus-aura v0.28.0 -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── scale-info v2.10.0 (*) -│ │ ├── sp-api v22.0.0 (*) -│ │ ├── sp-application-crypto v26.0.0 (*) -│ │ ├── sp-consensus-slots v0.28.0 -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── scale-info v2.10.0 (*) -│ │ │ ├── sp-std v11.0.0 -│ │ │ └── sp-timestamp v22.0.0 (*) -│ │ ├── sp-inherents v22.0.0 (*) -│ │ ├── sp-runtime v27.0.0 (*) -│ │ ├── sp-std v11.0.0 -│ │ └── sp-timestamp v22.0.0 (*) -│ ├── sp-runtime v27.0.0 (*) -│ └── sp-std v11.0.0 -├── pallet-balances v24.0.0 -│ ├── frame-support v24.0.0 (*) -│ ├── frame-system v24.0.0 (*) -│ ├── log v0.4.20 -│ ├── parity-scale-codec v3.6.5 (*) -│ ├── scale-info v2.10.0 (*) -│ ├── sp-runtime v27.0.0 (*) -│ └── sp-std v11.0.0 +│ │ │ │ │ │ ├── platforms feature "default" +│ │ │ │ │ │ │ ├── platforms v3.4.0 +│ │ │ │ │ │ │ └── platforms feature "std" +│ │ │ │ │ │ │ └── platforms v3.4.0 +│ │ │ │ │ │ └── rustc_version feature "default" +│ │ │ │ │ │ └── rustc_version v0.4.0 +│ │ │ │ │ │ └── semver feature "default" +│ │ │ │ │ │ ├── semver v1.0.23 +│ │ │ │ │ │ └── semver feature "std" +│ │ │ │ │ │ └── semver v1.0.23 +│ │ │ │ │ ├── curve25519-dalek feature "legacy_compatibility" +│ │ │ │ │ │ └── curve25519-dalek v4.1.2 (*) +│ │ │ │ │ ├── curve25519-dalek feature "precomputed-tables" +│ │ │ │ │ │ └── curve25519-dalek v4.1.2 (*) +│ │ │ │ │ └── curve25519-dalek feature "zeroize" +│ │ │ │ │ └── curve25519-dalek v4.1.2 (*) +│ │ │ │ ├── sha2 v0.10.8 (*) +│ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ └── hmac feature "default" +│ │ │ │ └── hmac v0.12.1 +│ │ │ │ ├── digest feature "default" (*) +│ │ │ │ └── digest feature "mac" (*) +│ │ │ ├── zeroize v1.8.1 +│ │ │ ├── array-bytes feature "default" +│ │ │ │ └── array-bytes v6.2.3 +│ │ │ ├── bitflags feature "default" +│ │ │ │ └── bitflags v1.3.2 +│ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ ├── parity-scale-codec feature "max-encoded-len" (*) +│ │ │ ├── scale-info feature "derive" (*) +│ │ │ ├── serde feature "alloc" (*) +│ │ │ ├── serde feature "derive" (*) +│ │ │ ├── k256 feature "alloc" +│ │ │ │ ├── k256 v0.13.3 +│ │ │ │ │ ├── serdect v0.2.0 +│ │ │ │ │ │ ├── base16ct v0.2.0 +│ │ │ │ │ │ └── serde v1.0.203 +│ │ │ │ │ ├── sha2 v0.10.8 (*) +│ │ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ │ ├── ecdsa feature "der" +│ │ │ │ │ │ └── ecdsa v0.16.9 +│ │ │ │ │ │ ├── spki v0.7.3 +│ │ │ │ │ │ │ ├── der feature "default" +│ │ │ │ │ │ │ │ └── der v0.7.9 +│ │ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ │ └── const-oid feature "default" (*) +│ │ │ │ │ │ │ └── der feature "oid" +│ │ │ │ │ │ │ └── der v0.7.9 (*) +│ │ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ │ ├── digest feature "oid" +│ │ │ │ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ │ │ │ └── digest feature "const-oid" +│ │ │ │ │ │ │ └── digest v0.10.7 (*) +│ │ │ │ │ │ ├── elliptic-curve feature "digest" +│ │ │ │ │ │ │ └── elliptic-curve v0.13.8 +│ │ │ │ │ │ │ ├── ff v0.13.0 +│ │ │ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ │ │ └── subtle feature "i128" +│ │ │ │ │ │ │ │ └── subtle v2.5.0 +│ │ │ │ │ │ │ ├── group v0.13.0 +│ │ │ │ │ │ │ │ ├── ff v0.13.0 (*) +│ │ │ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ │ │ └── subtle v2.5.0 +│ │ │ │ │ │ │ ├── pkcs8 v0.10.2 +│ │ │ │ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ │ │ │ ├── der feature "oid" (*) +│ │ │ │ │ │ │ │ └── spki feature "default" +│ │ │ │ │ │ │ │ └── spki v0.7.3 (*) +│ │ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ ├── digest feature "default" (*) +│ │ │ │ │ │ │ ├── generic-array feature "zeroize" +│ │ │ │ │ │ │ │ └── generic-array v0.14.7 (*) +│ │ │ │ │ │ │ ├── base16ct feature "default" +│ │ │ │ │ │ │ │ └── base16ct v0.2.0 +│ │ │ │ │ │ │ ├── crypto-bigint feature "generic-array" +│ │ │ │ │ │ │ │ └── crypto-bigint v0.5.5 +│ │ │ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ │ ├── generic-array feature "default" (*) +│ │ │ │ │ │ │ │ └── rand_core feature "default" (*) +│ │ │ │ │ │ │ ├── crypto-bigint feature "rand_core" +│ │ │ │ │ │ │ │ └── crypto-bigint v0.5.5 (*) +│ │ │ │ │ │ │ ├── crypto-bigint feature "zeroize" +│ │ │ │ │ │ │ │ └── crypto-bigint v0.5.5 (*) +│ │ │ │ │ │ │ ├── sec1 feature "default" +│ │ │ │ │ │ │ │ ├── sec1 v0.7.3 +│ │ │ │ │ │ │ │ │ ├── base16ct v0.2.0 +│ │ │ │ │ │ │ │ │ ├── generic-array v0.14.7 (*) +│ │ │ │ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ │ │ │ │ ├── der feature "oid" (*) +│ │ │ │ │ │ │ │ │ └── serdect feature "alloc" +│ │ │ │ │ │ │ │ │ ├── serdect v0.2.0 (*) +│ │ │ │ │ │ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ │ │ │ │ │ └── base16ct feature "alloc" +│ │ │ │ │ │ │ │ │ └── base16ct v0.2.0 +│ │ │ │ │ │ │ │ ├── sec1 feature "der" +│ │ │ │ │ │ │ │ │ ├── sec1 v0.7.3 (*) +│ │ │ │ │ │ │ │ │ └── sec1 feature "zeroize" +│ │ │ │ │ │ │ │ │ ├── sec1 v0.7.3 (*) +│ │ │ │ │ │ │ │ │ └── der feature "zeroize" +│ │ │ │ │ │ │ │ │ └── der v0.7.9 (*) +│ │ │ │ │ │ │ │ └── sec1 feature "point" +│ │ │ │ │ │ │ │ └── sec1 v0.7.3 (*) +│ │ │ │ │ │ │ ├── sec1 feature "subtle" +│ │ │ │ │ │ │ │ └── sec1 v0.7.3 (*) +│ │ │ │ │ │ │ ├── sec1 feature "zeroize" (*) +│ │ │ │ │ │ │ └── serdect feature "alloc" (*) +│ │ │ │ │ │ ├── elliptic-curve feature "sec1" +│ │ │ │ │ │ │ └── elliptic-curve v0.13.8 (*) +│ │ │ │ │ │ ├── serdect feature "alloc" (*) +│ │ │ │ │ │ ├── rfc6979 feature "default" +│ │ │ │ │ │ │ └── rfc6979 v0.4.0 +│ │ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ │ └── hmac feature "reset" +│ │ │ │ │ │ │ └── hmac v0.12.1 (*) +│ │ │ │ │ │ └── signature feature "rand_core" +│ │ │ │ │ │ └── signature v2.2.0 +│ │ │ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ │ │ └── rand_core v0.6.4 (*) +│ │ │ │ │ ├── elliptic-curve feature "hazmat" +│ │ │ │ │ │ └── elliptic-curve v0.13.8 (*) +│ │ │ │ │ └── elliptic-curve feature "sec1" (*) +│ │ │ │ ├── ecdsa feature "alloc" +│ │ │ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ │ │ ├── ecdsa feature "spki" +│ │ │ │ │ │ └── ecdsa v0.16.9 (*) +│ │ │ │ │ ├── elliptic-curve feature "alloc" +│ │ │ │ │ │ ├── elliptic-curve v0.13.8 (*) +│ │ │ │ │ │ ├── zeroize feature "alloc" (*) +│ │ │ │ │ │ ├── base16ct feature "alloc" (*) +│ │ │ │ │ │ ├── ff feature "alloc" +│ │ │ │ │ │ │ └── ff v0.13.0 (*) +│ │ │ │ │ │ ├── group feature "alloc" +│ │ │ │ │ │ │ └── group v0.13.0 (*) +│ │ │ │ │ │ ├── pkcs8 feature "alloc" +│ │ │ │ │ │ │ ├── pkcs8 v0.10.2 (*) +│ │ │ │ │ │ │ ├── der feature "alloc" +│ │ │ │ │ │ │ │ ├── der v0.7.9 (*) +│ │ │ │ │ │ │ │ └── zeroize feature "alloc" (*) +│ │ │ │ │ │ │ ├── der feature "zeroize" (*) +│ │ │ │ │ │ │ └── spki feature "alloc" +│ │ │ │ │ │ │ ├── spki v0.7.3 (*) +│ │ │ │ │ │ │ └── der feature "alloc" (*) +│ │ │ │ │ │ └── sec1 feature "alloc" +│ │ │ │ │ │ ├── sec1 v0.7.3 (*) +│ │ │ │ │ │ ├── der feature "alloc" (*) +│ │ │ │ │ │ └── zeroize feature "alloc" (*) +│ │ │ │ │ ├── spki feature "alloc" (*) +│ │ │ │ │ └── signature feature "alloc" +│ │ │ │ │ └── signature v2.2.0 (*) +│ │ │ │ └── elliptic-curve feature "alloc" (*) +│ │ │ ├── k256 feature "ecdsa" +│ │ │ │ ├── k256 v0.13.3 (*) +│ │ │ │ ├── k256 feature "arithmetic" +│ │ │ │ │ ├── k256 v0.13.3 (*) +│ │ │ │ │ └── elliptic-curve feature "arithmetic" +│ │ │ │ │ ├── elliptic-curve v0.13.8 (*) +│ │ │ │ │ └── elliptic-curve feature "group" +│ │ │ │ │ ├── elliptic-curve v0.13.8 (*) +│ │ │ │ │ └── elliptic-curve feature "ff" +│ │ │ │ │ └── elliptic-curve v0.13.8 (*) +│ │ │ │ ├── k256 feature "ecdsa-core" +│ │ │ │ │ └── k256 v0.13.3 (*) +│ │ │ │ ├── k256 feature "sha256" +│ │ │ │ │ ├── k256 v0.13.3 (*) +│ │ │ │ │ ├── k256 feature "digest" +│ │ │ │ │ │ ├── k256 v0.13.3 (*) +│ │ │ │ │ │ ├── k256 feature "ecdsa-core" (*) +│ │ │ │ │ │ ├── ecdsa feature "digest" +│ │ │ │ │ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ │ │ │ │ └── signature feature "digest" +│ │ │ │ │ │ │ └── signature v2.2.0 (*) +│ │ │ │ │ │ └── ecdsa feature "hazmat" +│ │ │ │ │ │ └── ecdsa v0.16.9 (*) +│ │ │ │ │ └── k256 feature "sha2" +│ │ │ │ │ └── k256 v0.13.3 (*) +│ │ │ │ ├── ecdsa feature "signing" +│ │ │ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ │ │ ├── ecdsa feature "arithmetic" +│ │ │ │ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ │ │ │ └── elliptic-curve feature "arithmetic" (*) +│ │ │ │ │ ├── ecdsa feature "digest" (*) +│ │ │ │ │ ├── ecdsa feature "hazmat" (*) +│ │ │ │ │ └── ecdsa feature "rfc6979" +│ │ │ │ │ └── ecdsa v0.16.9 (*) +│ │ │ │ └── ecdsa feature "verifying" +│ │ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ │ ├── ecdsa feature "arithmetic" (*) +│ │ │ │ ├── ecdsa feature "digest" (*) +│ │ │ │ └── ecdsa feature "hazmat" (*) +│ │ │ ├── libsecp256k1 feature "static-context" +│ │ │ │ └── libsecp256k1 v0.7.1 +│ │ │ │ ├── base64 v0.13.1 +│ │ │ │ ├── libsecp256k1-core v0.3.0 +│ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ ├── digest feature "default" (*) +│ │ │ │ │ └── crunchy feature "default" (*) +│ │ │ │ ├── rand v0.8.5 (*) +│ │ │ │ ├── serde feature "derive" (*) +│ │ │ │ ├── digest feature "default" (*) +│ │ │ │ └── arrayref feature "default" (*) +│ │ │ │ [build-dependencies] +│ │ │ │ ├── libsecp256k1-gen-ecmult feature "default" +│ │ │ │ │ └── libsecp256k1-gen-ecmult v0.3.0 +│ │ │ │ │ └── libsecp256k1-core feature "default" +│ │ │ │ │ ├── libsecp256k1-core v0.3.0 +│ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ ├── digest feature "default" (*) +│ │ │ │ │ │ └── crunchy feature "default" (*) +│ │ │ │ │ └── libsecp256k1-core feature "std" +│ │ │ │ │ ├── libsecp256k1-core v0.3.0 (*) +│ │ │ │ │ └── subtle feature "std" +│ │ │ │ │ └── subtle v2.5.0 +│ │ │ │ └── libsecp256k1-gen-genmult feature "default" +│ │ │ │ └── libsecp256k1-gen-genmult v0.3.0 +│ │ │ │ └── libsecp256k1-core feature "default" (*) +│ │ │ ├── parity-bip39 feature "alloc" +│ │ │ │ ├── parity-bip39 v2.0.1 +│ │ │ │ │ ├── bitcoin_hashes v0.13.0 +│ │ │ │ │ │ ├── hex-conservative v0.1.2 +│ │ │ │ │ │ └── bitcoin-internals feature "default" +│ │ │ │ │ │ └── bitcoin-internals v0.2.0 +│ │ │ │ │ └── unicode-normalization v0.1.22 +│ │ │ │ │ ├── tinyvec feature "alloc" +│ │ │ │ │ │ ├── tinyvec v1.6.0 +│ │ │ │ │ │ │ └── tinyvec_macros feature "default" +│ │ │ │ │ │ │ └── tinyvec_macros v0.1.1 +│ │ │ │ │ │ └── tinyvec feature "tinyvec_macros" +│ │ │ │ │ │ └── tinyvec v1.6.0 (*) +│ │ │ │ │ └── tinyvec feature "default" +│ │ │ │ │ └── tinyvec v1.6.0 (*) +│ │ │ │ └── parity-bip39 feature "unicode-normalization" +│ │ │ │ └── parity-bip39 v2.0.1 (*) +│ │ │ ├── primitive-types feature "codec" +│ │ │ │ ├── primitive-types v0.12.2 (*) +│ │ │ │ └── primitive-types feature "impl-codec" +│ │ │ │ └── primitive-types v0.12.2 (*) +│ │ │ ├── primitive-types feature "scale-info" +│ │ │ │ ├── primitive-types v0.12.2 (*) +│ │ │ │ ├── primitive-types feature "codec" (*) +│ │ │ │ └── primitive-types feature "scale-info-crate" +│ │ │ │ └── primitive-types v0.12.2 (*) +│ │ │ ├── schnorrkel feature "preaudit_deprecated" +│ │ │ │ └── schnorrkel v0.11.4 (*) +│ │ │ └── secrecy feature "alloc" +│ │ │ ├── secrecy v0.8.0 +│ │ │ │ └── zeroize v1.8.1 +│ │ │ └── zeroize feature "alloc" (*) +│ │ ├── sp-genesis-builder v0.7.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── log v0.4.21 +│ │ │ │ ├── parity-scale-codec v3.6.12 (*) +│ │ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── sp-metadata-ir v0.6.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── parity-scale-codec v3.6.12 (*) +│ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── frame-metadata feature "current" +│ │ │ │ │ │ ├── frame-metadata v16.0.0 +│ │ │ │ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ │ │ │ └── scale-info feature "derive" (*) +│ │ │ │ │ │ └── frame-metadata feature "scale-info" +│ │ │ │ │ │ └── frame-metadata v16.0.0 (*) +│ │ │ │ │ └── scale-info feature "derive" (*) +│ │ │ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── either v1.12.0 +│ │ │ │ │ ├── hash256-std-hasher v0.15.2 (*) +│ │ │ │ │ ├── log v0.4.21 +│ │ │ │ │ ├── sp-application-crypto v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ │ │ ├── bytes v1.6.0 +│ │ │ │ │ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ │ ├── sp-crypto-hashing v0.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ │ ├── sp-externalities v0.25.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ │ ├── sp-runtime-interface v24.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ │ │ ├── sp-tracing v16.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ │ ├── tracing v0.1.40 (*) +│ │ │ │ │ │ │ ├── tracing-core v0.1.32 +│ │ │ │ │ │ │ └── parity-scale-codec feature "bytes" (*) +│ │ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ │ │ ├── scale-info feature "derive" (*) +│ │ │ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ │ │ └── serde feature "derive" (*) +│ │ │ │ │ ├── sp-arithmetic v23.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── sp-weights v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ │ ├── bounded-collections v0.2.0 (*) +│ │ │ │ │ │ ├── sp-arithmetic v23.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ │ │ ├── scale-info feature "derive" (*) +│ │ │ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ │ │ ├── serde feature "derive" (*) +│ │ │ │ │ │ └── smallvec feature "default" +│ │ │ │ │ │ └── smallvec v1.13.2 +│ │ │ │ │ ├── docify feature "default" +│ │ │ │ │ │ └── docify v0.2.8 +│ │ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ │ ├── parity-scale-codec feature "max-encoded-len" (*) +│ │ │ │ │ ├── scale-info feature "derive" (*) +│ │ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ │ └── serde feature "derive" (*) +│ │ │ │ ├── sp-runtime-interface v24.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ ├── sp-version v29.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── impl-serde v0.4.0 (*) +│ │ │ │ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ │ ├── scale-info feature "derive" (*) +│ │ │ │ │ ├── serde feature "alloc" (*) +│ │ │ │ │ └── serde feature "derive" (*) +│ │ │ │ └── scale-info feature "derive" (*) +│ │ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── serde_json feature "alloc" +│ │ │ │ ├── serde_json v1.0.117 +│ │ │ │ │ ├── serde v1.0.203 +│ │ │ │ │ ├── itoa feature "default" (*) +│ │ │ │ │ └── ryu feature "default" (*) +│ │ │ │ └── serde feature "alloc" (*) +│ │ │ └── serde_json feature "arbitrary_precision" +│ │ │ └── serde_json v1.0.117 (*) +│ │ ├── sp-inherents v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ └── scale-info feature "derive" (*) +│ │ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-metadata-ir v0.6.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-staking v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ ├── scale-info feature "derive" (*) +│ │ │ ├── serde feature "alloc" (*) +│ │ │ └── serde feature "derive" (*) +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── sp-tracing v16.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-weights v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── bitflags feature "default" (*) +│ │ ├── docify feature "default" (*) +│ │ ├── frame-metadata feature "current" (*) +│ │ ├── parity-scale-codec feature "derive" (*) +│ │ ├── parity-scale-codec feature "max-encoded-len" (*) +│ │ ├── scale-info feature "derive" (*) +│ │ ├── serde feature "alloc" (*) +│ │ ├── serde feature "derive" (*) +│ │ ├── k256 feature "ecdsa" (*) +│ │ ├── macro_magic feature "default" +│ │ │ └── macro_magic v0.5.0 +│ │ ├── serde_json feature "alloc" (*) +│ │ ├── smallvec feature "default" (*) +│ │ ├── sp-api feature "frame-metadata" +│ │ │ ├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ └── sp-api feature "sp-metadata-ir" +│ │ │ └── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── static_assertions feature "default" (*) +│ │ ├── sp-runtime feature "serde" +│ │ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── scale-info feature "serde" +│ │ │ │ └── scale-info v2.11.3 (*) +│ │ │ ├── sp-core feature "serde" +│ │ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── scale-info feature "serde" (*) +│ │ │ │ ├── k256 feature "serde" +│ │ │ │ │ ├── k256 v0.13.3 (*) +│ │ │ │ │ ├── k256 feature "ecdsa-core" (*) +│ │ │ │ │ ├── k256 feature "serdect" +│ │ │ │ │ │ └── k256 v0.13.3 (*) +│ │ │ │ │ ├── ecdsa feature "serde" +│ │ │ │ │ │ ├── ecdsa v0.16.9 (*) +│ │ │ │ │ │ ├── ecdsa feature "serdect" +│ │ │ │ │ │ │ └── ecdsa v0.16.9 (*) +│ │ │ │ │ │ └── elliptic-curve feature "serde" +│ │ │ │ │ │ ├── elliptic-curve v0.13.8 (*) +│ │ │ │ │ │ ├── elliptic-curve feature "alloc" (*) +│ │ │ │ │ │ ├── elliptic-curve feature "pkcs8" +│ │ │ │ │ │ │ ├── elliptic-curve v0.13.8 (*) +│ │ │ │ │ │ │ └── elliptic-curve feature "sec1" (*) +│ │ │ │ │ │ ├── elliptic-curve feature "sec1" (*) +│ │ │ │ │ │ └── sec1 feature "serde" +│ │ │ │ │ │ └── sec1 v0.7.3 (*) +│ │ │ │ │ └── elliptic-curve feature "serde" (*) +│ │ │ │ ├── sp-core feature "blake2" +│ │ │ │ │ └── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── sp-core feature "bs58" +│ │ │ │ │ └── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── sp-core feature "impl-serde" +│ │ │ │ │ └── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── bounded-collections feature "serde" +│ │ │ │ │ └── bounded-collections v0.2.0 (*) +│ │ │ │ ├── bs58 feature "alloc" +│ │ │ │ │ └── bs58 v0.5.1 +│ │ │ │ ├── primitive-types feature "serde_no_std" +│ │ │ │ │ ├── primitive-types v0.12.2 (*) +│ │ │ │ │ └── primitive-types feature "impl-serde" +│ │ │ │ │ └── primitive-types v0.12.2 (*) +│ │ │ │ └── sp-storage feature "serde" +│ │ │ │ ├── sp-storage v19.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ └── sp-storage feature "impl-serde" +│ │ │ │ └── sp-storage v19.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-application-crypto feature "serde" +│ │ │ │ ├── sp-application-crypto v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── scale-info feature "serde" (*) +│ │ │ │ └── sp-core feature "serde" (*) +│ │ │ ├── sp-arithmetic feature "serde" +│ │ │ │ ├── sp-arithmetic v23.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ └── scale-info feature "serde" (*) +│ │ │ └── sp-weights feature "serde" +│ │ │ ├── sp-weights v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── scale-info feature "serde" (*) +│ │ │ ├── bounded-collections feature "serde" (*) +│ │ │ └── sp-arithmetic feature "serde" (*) +│ │ └── tt-call feature "default" +│ │ └── tt-call v1.0.9 +│ ├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── log v0.4.21 +│ │ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── docify feature "default" (*) +│ │ ├── cfg-if feature "default" (*) +│ │ ├── parity-scale-codec feature "derive" (*) +│ │ ├── scale-info feature "derive" (*) +│ │ ├── scale-info feature "serde" (*) +│ │ ├── serde feature "alloc" (*) +│ │ ├── serde feature "derive" (*) +│ │ ├── sp-core feature "serde" (*) +│ │ ├── sp-runtime feature "serde" (*) +│ │ ├── sp-weights feature "serde" (*) +│ │ └── sp-version feature "serde" +│ │ ├── sp-version v29.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-runtime feature "serde" (*) +│ │ └── sp-version feature "impl-serde" +│ │ └── sp-version v29.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── log v0.4.21 +│ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── sp-tracing v16.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── parity-scale-codec feature "derive" (*) +│ └── scale-info feature "derive" (*) +├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── frame-system-rpc-runtime-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── parity-scale-codec v3.6.12 (*) +│ └── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── pallet-aura v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── log v0.4.21 +│ ├── pallet-timestamp v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── log v0.4.21 +│ │ ├── sp-inherents v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── sp-storage v19.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-timestamp v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── sp-inherents v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ └── parity-scale-codec feature "derive" (*) +│ │ ├── docify feature "default" (*) +│ │ ├── parity-scale-codec feature "derive" (*) +│ │ ├── parity-scale-codec feature "max-encoded-len" (*) +│ │ └── scale-info feature "derive" (*) +│ ├── sp-application-crypto v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-consensus-aura v0.32.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── parity-scale-codec v3.6.12 (*) +│ │ ├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-application-crypto v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-consensus-slots v0.32.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── sp-timestamp v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ ├── parity-scale-codec feature "max-encoded-len" (*) +│ │ │ ├── scale-info feature "derive" (*) +│ │ │ ├── serde feature "alloc" (*) +│ │ │ └── serde feature "derive" (*) +│ │ ├── sp-inherents v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── sp-timestamp v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ └── scale-info feature "derive" (*) +│ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── parity-scale-codec feature "derive" (*) +│ ├── parity-scale-codec feature "max-encoded-len" (*) +│ └── scale-info feature "derive" (*) ├── pallet-chronicle v0.7.5 (/Users/ryan/code/chronicle/crates/pallet-chronicle) -│ ├── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) -│ │ ├── anyhow v1.0.75 -│ │ ├── async-trait v0.1.74 (proc-macro) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v2.0.38 (*) -│ │ ├── chrono v0.4.31 -│ │ │ ├── js-sys v0.3.64 -│ │ │ │ └── wasm-bindgen v0.2.87 -│ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ └── wasm-bindgen-macro v0.2.87 (proc-macro) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ └── wasm-bindgen-macro-support v0.2.87 -│ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ ├── syn v2.0.38 (*) -│ │ │ │ ├── wasm-bindgen-backend v0.2.87 -│ │ │ │ │ ├── bumpalo v3.14.0 -│ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ ├── once_cell v1.18.0 -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ ├── syn v2.0.38 (*) -│ │ │ │ │ └── wasm-bindgen-shared v0.2.87 -│ │ │ │ └── wasm-bindgen-shared v0.2.87 -│ │ │ ├── num-traits v0.2.17 (*) -│ │ │ ├── serde v1.0.190 (*) -│ │ │ └── wasm-bindgen v0.2.87 (*) -│ │ ├── futures v0.3.29 -│ │ │ ├── futures-channel v0.3.29 -│ │ │ │ ├── futures-core v0.3.29 -│ │ │ │ └── futures-sink v0.3.29 -│ │ │ ├── futures-core v0.3.29 -│ │ │ ├── futures-executor v0.3.29 -│ │ │ │ ├── futures-core v0.3.29 -│ │ │ │ ├── futures-task v0.3.29 -│ │ │ │ └── futures-util v0.3.29 -│ │ │ │ ├── futures-channel v0.3.29 (*) -│ │ │ │ ├── futures-core v0.3.29 -│ │ │ │ ├── futures-io v0.3.29 -│ │ │ │ ├── futures-macro v0.3.29 (proc-macro) -│ │ │ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ │ │ ├── quote v1.0.33 (*) -│ │ │ │ │ └── syn v2.0.38 (*) -│ │ │ │ ├── futures-sink v0.3.29 -│ │ │ │ ├── futures-task v0.3.29 -│ │ │ │ ├── memchr v2.6.4 -│ │ │ │ ├── pin-project-lite v0.2.13 -│ │ │ │ ├── pin-utils v0.1.0 -│ │ │ │ └── slab v0.4.9 -│ │ │ │ [build-dependencies] -│ │ │ │ └── autocfg v1.1.0 -│ │ │ ├── futures-io v0.3.29 -│ │ │ ├── futures-sink v0.3.29 -│ │ │ ├── futures-task v0.3.29 -│ │ │ └── futures-util v0.3.29 (*) -│ │ ├── glob v0.3.1 -│ │ ├── hex v0.4.3 -│ │ ├── iref v2.2.3 -│ │ │ ├── pct-str v1.2.0 -│ │ │ │ └── utf8-decode v1.0.1 -│ │ │ └── smallvec v1.11.1 -│ │ ├── iref-enum v2.1.0 (proc-macro) -│ │ │ ├── iref v2.2.3 -│ │ │ │ ├── pct-str v1.2.0 -│ │ │ │ │ └── utf8-decode v1.0.1 -│ │ │ │ └── smallvec v1.11.1 -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v1.0.109 (*) -│ │ ├── k256 v0.11.6 -│ │ │ ├── cfg-if v1.0.0 -│ │ │ ├── ecdsa v0.14.8 -│ │ │ │ ├── der v0.6.1 -│ │ │ │ │ └── const-oid v0.9.5 -│ │ │ │ ├── elliptic-curve v0.12.3 -│ │ │ │ │ ├── base16ct v0.1.1 -│ │ │ │ │ ├── crypto-bigint v0.4.9 -│ │ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ │ ├── rand_core v0.6.4 -│ │ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ │ ├── der v0.6.1 (*) -│ │ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ │ ├── ff v0.12.1 -│ │ │ │ │ │ ├── rand_core v0.6.4 -│ │ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ ├── group v0.12.1 -│ │ │ │ │ │ ├── ff v0.12.1 (*) -│ │ │ │ │ │ ├── rand_core v0.6.4 -│ │ │ │ │ │ └── subtle v2.4.1 -│ │ │ │ │ ├── pkcs8 v0.9.0 -│ │ │ │ │ │ ├── der v0.6.1 (*) -│ │ │ │ │ │ └── spki v0.6.0 -│ │ │ │ │ │ └── der v0.6.1 (*) -│ │ │ │ │ ├── rand_core v0.6.4 -│ │ │ │ │ ├── sec1 v0.3.0 -│ │ │ │ │ │ ├── base16ct v0.1.1 -│ │ │ │ │ │ ├── der v0.6.1 (*) -│ │ │ │ │ │ ├── generic-array v0.14.7 (*) -│ │ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ │ ├── subtle v2.4.1 -│ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ ├── rfc6979 v0.3.1 -│ │ │ │ │ ├── crypto-bigint v0.4.9 (*) -│ │ │ │ │ ├── hmac v0.12.1 (*) -│ │ │ │ │ └── zeroize v1.6.0 (*) -│ │ │ │ └── signature v1.6.4 -│ │ │ │ ├── digest v0.10.7 (*) -│ │ │ │ └── rand_core v0.6.4 -│ │ │ ├── elliptic-curve v0.12.3 (*) -│ │ │ └── sha2 v0.10.8 (*) -│ │ ├── lazy_static v1.4.0 -│ │ ├── locspan v0.7.16 -│ │ ├── macro-attr-2018 v3.0.0 -│ │ ├── mime v0.3.17 -│ │ ├── newtype-derive-2018 v0.2.1 -│ │ │ └── generics v0.5.0 -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── percent-encoding v2.3.0 -│ │ ├── scale-info v2.10.0 (*) -│ │ ├── serde v1.0.190 (*) -│ │ ├── serde_derive v1.0.190 (proc-macro) (*) -│ │ ├── serde_json v1.0.107 (*) -│ │ ├── static-iref v2.0.0 (proc-macro) -│ │ │ └── iref v2.2.3 (*) -│ │ ├── thiserror v1.0.50 -│ │ │ └── thiserror-impl v1.0.50 (proc-macro) (*) -│ │ ├── thiserror-no-std v2.0.2 -│ │ │ └── thiserror-impl-no-std v2.0.2 (proc-macro) -│ │ │ ├── proc-macro2 v1.0.69 (*) -│ │ │ ├── quote v1.0.33 (*) -│ │ │ └── syn v1.0.109 (*) +│ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── serde v1.0.203 +│ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-core-hashing v15.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ └── sp-crypto-hashing feature "default" +│ │ ├── sp-crypto-hashing v0.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ └── sp-crypto-hashing feature "std" +│ │ ├── sp-crypto-hashing v0.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── digest feature "std" +│ │ │ ├── digest v0.10.7 (*) +│ │ │ ├── digest feature "alloc" +│ │ │ │ └── digest v0.10.7 (*) +│ │ │ └── crypto-common feature "std" +│ │ │ └── crypto-common v0.1.6 (*) +│ │ ├── sha2 feature "std" +│ │ │ ├── sha2 v0.10.8 (*) +│ │ │ └── digest feature "std" (*) +│ │ ├── byteorder feature "std" +│ │ │ └── byteorder v1.5.0 +│ │ ├── blake2b_simd feature "std" +│ │ │ └── blake2b_simd v1.0.2 (*) +│ │ ├── sha3 feature "std" +│ │ │ ├── sha3 v0.10.8 (*) +│ │ │ └── digest feature "std" (*) +│ │ └── twox-hash feature "std" +│ │ ├── twox-hash v1.6.3 (*) +│ │ └── twox-hash feature "rand" +│ │ └── twox-hash v1.6.3 (*) +│ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── uuid v1.8.0 +│ │ └── serde v1.0.203 +│ ├── parity-scale-codec feature "derive" (*) +│ ├── scale-info feature "derive" (*) +│ ├── tracing feature "attributes" │ │ ├── tracing v0.1.40 (*) -│ │ ├── url v2.4.1 -│ │ │ ├── form_urlencoded v1.2.0 -│ │ │ │ └── percent-encoding v2.3.0 -│ │ │ ├── idna v0.4.0 -│ │ │ │ ├── unicode-bidi v0.3.13 -│ │ │ │ └── unicode-normalization v0.1.22 -│ │ │ │ └── tinyvec v1.6.0 -│ │ │ │ └── tinyvec_macros v0.1.1 -│ │ │ └── percent-encoding v2.3.0 -│ │ └── uuid v1.5.0 -│ │ └── serde v1.0.190 (*) -│ │ [build-dependencies] -│ │ ├── glob v0.3.1 -│ │ ├── lazy_static v1.4.0 -│ │ └── serde_json v1.0.107 (*) -│ ├── frame-support v24.0.0 (*) -│ ├── frame-system v24.0.0 (*) -│ ├── macro-attr-2018 v3.0.0 -│ ├── newtype-derive-2018 v0.2.1 (*) -│ ├── parity-scale-codec v3.6.5 (*) -│ ├── scale-info v2.10.0 (*) -│ ├── sp-std v11.0.0 -│ ├── tracing v0.1.40 (*) -│ └── uuid v1.5.0 (*) -├── pallet-grandpa v24.0.0 -│ ├── frame-support v24.0.0 (*) -│ ├── frame-system v24.0.0 (*) -│ ├── log v0.4.20 -│ ├── pallet-authorship v24.0.0 -│ │ ├── frame-support v24.0.0 (*) -│ │ ├── frame-system v24.0.0 (*) -│ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── scale-info v2.10.0 (*) -│ │ ├── sp-runtime v27.0.0 (*) -│ │ └── sp-std v11.0.0 -│ ├── pallet-session v24.0.0 -│ │ ├── frame-support v24.0.0 (*) -│ │ ├── frame-system v24.0.0 (*) -│ │ ├── impl-trait-for-tuples v0.2.2 (proc-macro) (*) -│ │ ├── log v0.4.20 -│ │ ├── pallet-timestamp v23.0.0 (*) -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── scale-info v2.10.0 (*) -│ │ ├── sp-core v24.0.0 (*) -│ │ ├── sp-io v26.0.0 (*) -│ │ ├── sp-runtime v27.0.0 (*) -│ │ ├── sp-session v23.0.0 -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── scale-info v2.10.0 (*) -│ │ │ ├── sp-api v22.0.0 (*) -│ │ │ ├── sp-core v24.0.0 (*) -│ │ │ ├── sp-staking v22.0.0 (*) -│ │ │ └── sp-std v11.0.0 -│ │ ├── sp-staking v22.0.0 (*) -│ │ ├── sp-state-machine v0.31.0 +│ │ └── tracing feature "tracing-attributes" +│ │ └── tracing v0.1.40 (*) +│ ├── common feature "parity-encoding" +│ │ ├── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) +│ │ │ ├── anyhow v1.0.86 +│ │ │ ├── futures v0.3.30 +│ │ │ │ ├── futures-core v0.3.30 +│ │ │ │ ├── futures-io v0.3.30 +│ │ │ │ ├── futures-sink v0.3.30 +│ │ │ │ ├── futures-task v0.3.30 +│ │ │ │ ├── futures-channel feature "sink" +│ │ │ │ │ ├── futures-channel v0.3.30 +│ │ │ │ │ │ ├── futures-core v0.3.30 +│ │ │ │ │ │ └── futures-sink v0.3.30 +│ │ │ │ │ └── futures-channel feature "futures-sink" +│ │ │ │ │ └── futures-channel v0.3.30 (*) +│ │ │ │ └── futures-util feature "sink" +│ │ │ │ ├── futures-util v0.3.30 +│ │ │ │ │ ├── futures-core v0.3.30 +│ │ │ │ │ ├── futures-sink v0.3.30 +│ │ │ │ │ ├── futures-task v0.3.30 +│ │ │ │ │ ├── pin-project-lite feature "default" (*) +│ │ │ │ │ └── pin-utils feature "default" +│ │ │ │ │ └── pin-utils v0.1.0 +│ │ │ │ └── futures-util feature "futures-sink" +│ │ │ │ └── futures-util v0.3.30 (*) +│ │ │ ├── serde_json v1.0.117 (*) +│ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ ├── parity-scale-codec feature "max-encoded-len" (*) +│ │ │ ├── scale-info feature "derive" (*) +│ │ │ ├── serde feature "derive" (*) +│ │ │ ├── serde feature "rc" +│ │ │ │ └── serde v1.0.203 +│ │ │ ├── hex feature "alloc" (*) +│ │ │ ├── tracing feature "attributes" (*) +│ │ │ ├── lazy_static feature "default" (*) +│ │ │ ├── chrono feature "alloc" +│ │ │ │ └── chrono v0.4.38 +│ │ │ │ ├── num-traits v0.2.19 (*) +│ │ │ │ └── serde v1.0.203 +│ │ │ ├── chrono feature "serde" +│ │ │ │ └── chrono v0.4.38 (*) +│ │ │ ├── iri-string feature "alloc" +│ │ │ │ └── iri-string v0.7.2 +│ │ │ ├── k256 feature "ecdsa" +│ │ │ │ ├── k256 v0.11.6 +│ │ │ │ │ ├── sha2 v0.10.8 (*) +│ │ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ │ ├── ecdsa feature "der" +│ │ │ │ │ │ └── ecdsa v0.14.8 +│ │ │ │ │ │ ├── der feature "default" +│ │ │ │ │ │ │ └── der v0.6.1 +│ │ │ │ │ │ │ ├── const-oid feature "default" (*) +│ │ │ │ │ │ │ ├── zeroize feature "alloc" (*) +│ │ │ │ │ │ │ └── pem-rfc7468 feature "default" +│ │ │ │ │ │ │ └── pem-rfc7468 v0.6.0 +│ │ │ │ │ │ │ └── base64ct feature "default" +│ │ │ │ │ │ │ └── base64ct v1.6.0 +│ │ │ │ │ │ ├── elliptic-curve feature "digest" +│ │ │ │ │ │ │ └── elliptic-curve v0.12.3 +│ │ │ │ │ │ │ ├── ff v0.12.1 +│ │ │ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ │ │ └── subtle feature "i128" (*) +│ │ │ │ │ │ │ ├── generic-array v0.14.7 (*) +│ │ │ │ │ │ │ ├── group v0.12.1 +│ │ │ │ │ │ │ │ ├── ff v0.12.1 (*) +│ │ │ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ │ │ └── subtle v2.5.0 +│ │ │ │ │ │ │ ├── pkcs8 v0.9.0 +│ │ │ │ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ │ │ │ ├── der feature "oid" +│ │ │ │ │ │ │ │ │ ├── der v0.6.1 (*) +│ │ │ │ │ │ │ │ │ └── der feature "const-oid" +│ │ │ │ │ │ │ │ │ └── der v0.6.1 (*) +│ │ │ │ │ │ │ │ └── spki feature "default" +│ │ │ │ │ │ │ │ └── spki v0.6.0 +│ │ │ │ │ │ │ │ ├── base64ct v1.6.0 +│ │ │ │ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ │ │ │ └── der feature "oid" (*) +│ │ │ │ │ │ │ ├── rand_core v0.6.4 (*) +│ │ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ ├── digest feature "default" (*) +│ │ │ │ │ │ │ ├── der feature "oid" (*) +│ │ │ │ │ │ │ ├── pem-rfc7468 feature "default" (*) +│ │ │ │ │ │ │ ├── base16ct feature "default" +│ │ │ │ │ │ │ │ └── base16ct v0.1.1 +│ │ │ │ │ │ │ ├── crypto-bigint feature "generic-array" +│ │ │ │ │ │ │ │ └── crypto-bigint v0.4.9 +│ │ │ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ │ ├── generic-array feature "default" (*) +│ │ │ │ │ │ │ │ └── rand_core feature "default" (*) +│ │ │ │ │ │ │ ├── crypto-bigint feature "rand_core" +│ │ │ │ │ │ │ │ └── crypto-bigint v0.4.9 (*) +│ │ │ │ │ │ │ ├── crypto-bigint feature "zeroize" +│ │ │ │ │ │ │ │ └── crypto-bigint v0.4.9 (*) +│ │ │ │ │ │ │ ├── sec1 feature "default" +│ │ │ │ │ │ │ │ ├── sec1 v0.3.0 +│ │ │ │ │ │ │ │ │ ├── base16ct v0.1.1 +│ │ │ │ │ │ │ │ │ ├── generic-array v0.14.7 (*) +│ │ │ │ │ │ │ │ │ ├── pkcs8 v0.9.0 (*) +│ │ │ │ │ │ │ │ │ ├── subtle v2.5.0 +│ │ │ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ │ │ ├── der feature "default" (*) +│ │ │ │ │ │ │ │ │ └── der feature "oid" (*) +│ │ │ │ │ │ │ │ ├── sec1 feature "der" +│ │ │ │ │ │ │ │ │ └── sec1 v0.3.0 (*) +│ │ │ │ │ │ │ │ └── sec1 feature "point" +│ │ │ │ │ │ │ │ ├── sec1 v0.3.0 (*) +│ │ │ │ │ │ │ │ ├── sec1 feature "base16ct" +│ │ │ │ │ │ │ │ │ └── sec1 v0.3.0 (*) +│ │ │ │ │ │ │ │ └── sec1 feature "generic-array" +│ │ │ │ │ │ │ │ └── sec1 v0.3.0 (*) +│ │ │ │ │ │ │ ├── sec1 feature "subtle" +│ │ │ │ │ │ │ │ └── sec1 v0.3.0 (*) +│ │ │ │ │ │ │ └── sec1 feature "zeroize" +│ │ │ │ │ │ │ └── sec1 v0.3.0 (*) +│ │ │ │ │ │ ├── elliptic-curve feature "sec1" +│ │ │ │ │ │ │ └── elliptic-curve v0.12.3 (*) +│ │ │ │ │ │ ├── rfc6979 feature "default" +│ │ │ │ │ │ │ └── rfc6979 v0.3.1 +│ │ │ │ │ │ │ ├── zeroize v1.8.1 +│ │ │ │ │ │ │ ├── hmac feature "reset" (*) +│ │ │ │ │ │ │ ├── crypto-bigint feature "generic-array" (*) +│ │ │ │ │ │ │ └── crypto-bigint feature "zeroize" (*) +│ │ │ │ │ │ ├── signature feature "hazmat-preview" +│ │ │ │ │ │ │ └── signature v1.6.4 +│ │ │ │ │ │ │ ├── digest v0.10.7 (*) +│ │ │ │ │ │ │ └── rand_core v0.6.4 (*) +│ │ │ │ │ │ └── signature feature "rand-preview" +│ │ │ │ │ │ ├── signature v1.6.4 (*) +│ │ │ │ │ │ └── signature feature "rand_core" +│ │ │ │ │ │ └── signature v1.6.4 (*) +│ │ │ │ │ ├── elliptic-curve feature "hazmat" +│ │ │ │ │ │ └── elliptic-curve v0.12.3 (*) +│ │ │ │ │ └── elliptic-curve feature "sec1" (*) +│ │ │ │ ├── k256 feature "arithmetic" +│ │ │ │ │ ├── k256 v0.11.6 (*) +│ │ │ │ │ └── elliptic-curve feature "arithmetic" +│ │ │ │ │ ├── elliptic-curve v0.12.3 (*) +│ │ │ │ │ ├── elliptic-curve feature "ff" +│ │ │ │ │ │ └── elliptic-curve v0.12.3 (*) +│ │ │ │ │ └── elliptic-curve feature "group" +│ │ │ │ │ └── elliptic-curve v0.12.3 (*) +│ │ │ │ ├── k256 feature "ecdsa-core" +│ │ │ │ │ └── k256 v0.11.6 (*) +│ │ │ │ ├── k256 feature "sha256" +│ │ │ │ │ ├── k256 v0.11.6 (*) +│ │ │ │ │ ├── k256 feature "digest" +│ │ │ │ │ │ ├── k256 v0.11.6 (*) +│ │ │ │ │ │ ├── k256 feature "ecdsa-core" (*) +│ │ │ │ │ │ ├── ecdsa feature "digest" +│ │ │ │ │ │ │ ├── ecdsa v0.14.8 (*) +│ │ │ │ │ │ │ └── signature feature "digest-preview" +│ │ │ │ │ │ │ ├── signature v1.6.4 (*) +│ │ │ │ │ │ │ └── signature feature "digest" +│ │ │ │ │ │ │ └── signature v1.6.4 (*) +│ │ │ │ │ │ └── ecdsa feature "hazmat" +│ │ │ │ │ │ └── ecdsa v0.14.8 (*) +│ │ │ │ │ └── k256 feature "sha2" +│ │ │ │ │ └── k256 v0.11.6 (*) +│ │ │ │ ├── ecdsa feature "sign" +│ │ │ │ │ ├── ecdsa v0.14.8 (*) +│ │ │ │ │ ├── ecdsa feature "arithmetic" +│ │ │ │ │ │ ├── ecdsa v0.14.8 (*) +│ │ │ │ │ │ └── elliptic-curve feature "arithmetic" (*) +│ │ │ │ │ ├── ecdsa feature "digest" (*) +│ │ │ │ │ ├── ecdsa feature "hazmat" (*) +│ │ │ │ │ └── ecdsa feature "rfc6979" +│ │ │ │ │ └── ecdsa v0.14.8 (*) +│ │ │ │ └── ecdsa feature "verify" +│ │ │ │ ├── ecdsa v0.14.8 (*) +│ │ │ │ ├── ecdsa feature "arithmetic" (*) +│ │ │ │ ├── ecdsa feature "digest" (*) +│ │ │ │ └── ecdsa feature "hazmat" (*) +│ │ │ ├── k256 feature "pkcs8" +│ │ │ │ ├── k256 v0.11.6 (*) +│ │ │ │ ├── k256 feature "ecdsa-core" (*) +│ │ │ │ ├── ecdsa feature "pkcs8" +│ │ │ │ │ ├── ecdsa v0.14.8 (*) +│ │ │ │ │ ├── ecdsa feature "der" (*) +│ │ │ │ │ └── elliptic-curve feature "pkcs8" +│ │ │ │ │ └── elliptic-curve v0.12.3 (*) +│ │ │ │ └── elliptic-curve feature "pkcs8" (*) +│ │ │ ├── macro-attr-2018 feature "default" +│ │ │ │ └── macro-attr-2018 v3.0.0 +│ │ │ ├── newtype-derive-2018 feature "default" +│ │ │ │ └── newtype-derive-2018 v0.2.3 +│ │ │ │ └── generics feature "default" +│ │ │ │ └── generics v0.5.3 +│ │ │ ├── percent-encoding feature "alloc" +│ │ │ │ └── percent-encoding v2.3.1 +│ │ │ ├── scale-decode feature "derive" +│ │ │ │ └── scale-decode v0.10.0 +│ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ ├── scale-info feature "bit-vec" +│ │ │ │ │ ├── scale-info v2.11.3 (*) +│ │ │ │ │ └── scale-info feature "bitvec" +│ │ │ │ │ └── scale-info v2.11.3 (*) +│ │ │ │ ├── smallvec feature "default" (*) +│ │ │ │ └── scale-bits feature "scale-info" +│ │ │ │ └── scale-bits v0.4.0 +│ │ │ │ ├── parity-scale-codec v3.6.12 (*) +│ │ │ │ └── scale-info v2.11.3 (*) +│ │ │ ├── scale-encode feature "bits" +│ │ │ │ └── scale-encode v0.5.0 +│ │ │ │ ├── primitive-types v0.12.2 (*) +│ │ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ │ ├── scale-info feature "bit-vec" (*) +│ │ │ │ ├── smallvec feature "default" (*) +│ │ │ │ └── scale-bits feature "scale-info" (*) +│ │ │ ├── scale-encode feature "derive" +│ │ │ │ └── scale-encode v0.5.0 (*) +│ │ │ ├── scale-encode feature "primitive-types" +│ │ │ │ └── scale-encode v0.5.0 (*) +│ │ │ ├── thiserror feature "default" +│ │ │ │ └── thiserror v1.0.61 +│ │ │ ├── thiserror-no-std feature "default" +│ │ │ │ └── thiserror-no-std v2.0.2 +│ │ │ └── uuid feature "serde" +│ │ │ └── uuid v1.8.0 (*) +│ │ │ [build-dependencies] +│ │ │ ├── serde_json v1.0.117 (*) +│ │ │ ├── lazy_static feature "default" (*) +│ │ │ └── glob feature "default" +│ │ │ └── glob v0.3.1 +│ │ ├── lazy_static feature "spin_no_std" +│ │ │ ├── lazy_static v1.4.0 (*) +│ │ │ └── lazy_static feature "spin" +│ │ │ └── lazy_static v1.4.0 (*) +│ │ ├── common feature "parity-scale-codec" +│ │ │ └── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) (*) +│ │ ├── common feature "scale-decode" +│ │ │ └── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) (*) +│ │ ├── common feature "scale-encode" +│ │ │ └── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) (*) +│ │ └── common feature "scale-info" +│ │ └── common v0.7.5 (/Users/ryan/code/chronicle/crates/common) (*) +│ ├── macro-attr-2018 feature "default" (*) +│ └── newtype-derive-2018 feature "default" (*) +├── pallet-grandpa v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── log v0.4.21 +│ ├── pallet-authorship v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── parity-scale-codec feature "derive" (*) +│ │ └── scale-info feature "derive" (*) +│ ├── pallet-session v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── log v0.4.21 +│ │ ├── pallet-timestamp v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-session v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-staking v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ └── scale-info feature "derive" (*) +│ │ ├── sp-state-machine v0.35.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) │ │ │ ├── hash-db v0.16.0 -│ │ │ ├── log v0.4.20 -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ ├── smallvec v1.11.1 -│ │ │ ├── sp-core v24.0.0 (*) -│ │ │ ├── sp-externalities v0.22.0 (*) -│ │ │ ├── sp-std v11.0.0 -│ │ │ ├── sp-trie v25.0.0 +│ │ │ ├── log v0.4.21 +│ │ │ ├── parity-scale-codec v3.6.12 (*) +│ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-externalities v0.25.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ │ ├── sp-trie v29.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) │ │ │ │ ├── hash-db v0.16.0 │ │ │ │ ├── memory-db v0.32.0 │ │ │ │ │ └── hash-db v0.16.0 -│ │ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ │ ├── scale-info v2.10.0 (*) -│ │ │ │ ├── sp-core v24.0.0 (*) -│ │ │ │ ├── sp-std v11.0.0 +│ │ │ │ ├── parity-scale-codec v3.6.12 (*) +│ │ │ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── sp-externalities v0.25.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ │ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) │ │ │ │ ├── trie-db v0.28.0 │ │ │ │ │ ├── hash-db v0.16.0 -│ │ │ │ │ ├── hashbrown v0.13.2 -│ │ │ │ │ │ └── ahash v0.8.6 -│ │ │ │ │ │ ├── cfg-if v1.0.0 -│ │ │ │ │ │ ├── once_cell v1.18.0 -│ │ │ │ │ │ └── zerocopy v0.7.20 -│ │ │ │ │ │ [build-dependencies] -│ │ │ │ │ │ └── version_check v0.9.4 -│ │ │ │ │ ├── log v0.4.20 -│ │ │ │ │ └── smallvec v1.11.1 -│ │ │ │ └── trie-root v0.18.0 -│ │ │ │ └── hash-db v0.16.0 -│ │ │ └── trie-db v0.28.0 (*) -│ │ └── sp-std v11.0.0 -│ ├── parity-scale-codec v3.6.5 (*) -│ ├── scale-info v2.10.0 (*) -│ ├── sp-application-crypto v26.0.0 (*) -│ ├── sp-consensus-grandpa v9.0.0 -│ │ ├── finality-grandpa v0.16.2 -│ │ │ ├── either v1.9.0 -│ │ │ ├── futures v0.3.29 (*) -│ │ │ ├── num-traits v0.2.17 (*) -│ │ │ ├── parity-scale-codec v3.6.5 (*) -│ │ │ └── scale-info v2.10.0 (*) -│ │ ├── log v0.4.20 -│ │ ├── parity-scale-codec v3.6.5 (*) -│ │ ├── scale-info v2.10.0 (*) -│ │ ├── serde v1.0.190 (*) -│ │ ├── sp-api v22.0.0 (*) -│ │ ├── sp-application-crypto v26.0.0 (*) -│ │ ├── sp-core v24.0.0 (*) -│ │ ├── sp-runtime v27.0.0 (*) -│ │ └── sp-std v11.0.0 -│ ├── sp-core v24.0.0 (*) -│ ├── sp-io v26.0.0 (*) -│ ├── sp-runtime v27.0.0 (*) -│ ├── sp-session v23.0.0 (*) -│ ├── sp-staking v22.0.0 (*) -│ └── sp-std v11.0.0 -├── pallet-sudo v24.0.0 -│ ├── docify v0.2.6 (*) -│ ├── frame-support v24.0.0 (*) -│ ├── frame-system v24.0.0 (*) -│ ├── parity-scale-codec v3.6.5 (*) -│ ├── scale-info v2.10.0 (*) -│ ├── sp-io v26.0.0 (*) -│ ├── sp-runtime v27.0.0 (*) -│ └── sp-std v11.0.0 -├── pallet-timestamp v23.0.0 (*) -├── pallet-transaction-payment v24.0.0 -│ ├── frame-support v24.0.0 (*) -│ ├── frame-system v24.0.0 (*) -│ ├── parity-scale-codec v3.6.5 (*) -│ ├── scale-info v2.10.0 (*) -│ ├── sp-core v24.0.0 (*) -│ ├── sp-io v26.0.0 (*) -│ ├── sp-runtime v27.0.0 (*) -│ └── sp-std v11.0.0 -├── pallet-transaction-payment-rpc-runtime-api v24.0.0 -│ ├── pallet-transaction-payment v24.0.0 (*) -│ ├── parity-scale-codec v3.6.5 (*) -│ ├── sp-api v22.0.0 (*) -│ ├── sp-runtime v27.0.0 (*) -│ └── sp-weights v23.0.0 (*) -├── parity-scale-codec v3.6.5 (*) -├── scale-info v2.10.0 (*) -├── sp-api v22.0.0 (*) -├── sp-block-builder v22.0.0 -│ ├── sp-api v22.0.0 (*) -│ ├── sp-inherents v22.0.0 (*) -│ ├── sp-runtime v27.0.0 (*) -│ └── sp-std v11.0.0 -├── sp-consensus-aura v0.28.0 (*) -├── sp-consensus-grandpa v9.0.0 (*) -├── sp-core v24.0.0 (*) -├── sp-inherents v22.0.0 (*) -├── sp-offchain v22.0.0 -│ ├── sp-api v22.0.0 (*) -│ ├── sp-core v24.0.0 (*) -│ └── sp-runtime v27.0.0 (*) -├── sp-runtime v27.0.0 (*) -├── sp-session v23.0.0 (*) -├── sp-std v11.0.0 -├── sp-transaction-pool v22.0.0 -│ ├── sp-api v22.0.0 (*) -│ └── sp-runtime v27.0.0 (*) -└── sp-version v25.0.0 (*) +│ │ │ │ │ ├── log feature "default" +│ │ │ │ │ │ └── log v0.4.21 +│ │ │ │ │ ├── smallvec feature "const_new" +│ │ │ │ │ │ ├── smallvec v1.13.2 +│ │ │ │ │ │ └── smallvec feature "const_generics" +│ │ │ │ │ │ └── smallvec v1.13.2 +│ │ │ │ │ ├── smallvec feature "default" (*) +│ │ │ │ │ ├── smallvec feature "union" +│ │ │ │ │ │ └── smallvec v1.13.2 +│ │ │ │ │ └── hashbrown feature "ahash" +│ │ │ │ │ └── hashbrown v0.13.2 +│ │ │ │ │ └── ahash v0.8.11 +│ │ │ │ │ ├── cfg-if feature "default" (*) +│ │ │ │ │ ├── once_cell feature "alloc" (*) +│ │ │ │ │ └── zerocopy feature "simd" +│ │ │ │ │ └── zerocopy v0.7.34 +│ │ │ │ │ [build-dependencies] +│ │ │ │ │ └── version_check feature "default" (*) +│ │ │ │ ├── trie-root v0.18.0 +│ │ │ │ │ └── hash-db v0.16.0 +│ │ │ │ └── scale-info feature "derive" (*) +│ │ │ ├── trie-db v0.28.0 (*) +│ │ │ └── smallvec feature "default" (*) +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── sp-trie v29.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── parity-scale-codec feature "derive" (*) +│ │ ├── scale-info feature "derive" (*) +│ │ ├── scale-info feature "serde" (*) +│ │ ├── sp-core feature "serde" (*) +│ │ ├── sp-runtime feature "serde" (*) +│ │ └── sp-staking feature "serde" +│ │ └── sp-staking v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-session v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── parity-scale-codec feature "derive" (*) +│ ├── scale-info feature "derive" (*) +│ ├── scale-info feature "serde" (*) +│ ├── sp-core feature "serde" (*) +│ ├── sp-runtime feature "serde" (*) +│ ├── sp-application-crypto feature "serde" (*) +│ ├── sp-staking feature "serde" (*) +│ └── sp-consensus-grandpa feature "serde" +│ ├── sp-consensus-grandpa v13.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── log v0.4.21 +│ │ ├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-application-crypto v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ │ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ │ ├── parity-scale-codec feature "derive" (*) +│ │ ├── scale-info feature "derive" (*) +│ │ ├── serde feature "alloc" (*) +│ │ ├── serde feature "derive" (*) +│ │ └── finality-grandpa feature "derive-codec" +│ │ ├── finality-grandpa v0.16.2 +│ │ │ ├── either v1.12.0 +│ │ │ ├── futures v0.3.30 (*) +│ │ │ ├── num-traits v0.2.19 (*) +│ │ │ ├── parity-scale-codec feature "derive" (*) +│ │ │ └── scale-info feature "derive" (*) +│ │ ├── finality-grandpa feature "parity-scale-codec" +│ │ │ └── finality-grandpa v0.16.2 (*) +│ │ └── finality-grandpa feature "scale-info" +│ │ └── finality-grandpa v0.16.2 (*) +│ ├── scale-info feature "serde" (*) +│ ├── sp-core feature "serde" (*) +│ ├── sp-runtime feature "serde" (*) +│ └── sp-application-crypto feature "serde" (*) +├── pallet-im-online v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── log v0.4.21 +│ ├── pallet-authorship v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── parity-scale-codec feature "derive" (*) +│ ├── scale-info feature "derive" (*) +│ ├── scale-info feature "serde" (*) +│ ├── sp-core feature "serde" (*) +│ ├── sp-runtime feature "serde" (*) +│ ├── sp-application-crypto feature "serde" (*) +│ └── sp-staking feature "serde" (*) +├── pallet-opa v0.7.5 (/Users/ryan/code/chronicle/crates/pallet-opa) +│ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── serde v1.0.203 +│ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-core-hashing v15.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── uuid v1.8.0 (*) +│ ├── parity-scale-codec feature "derive" (*) +│ ├── scale-info feature "derive" (*) +│ ├── serde_json feature "alloc" (*) +│ ├── tracing feature "attributes" (*) +│ ├── common feature "parity-encoding" (*) +│ ├── k256 feature "arithmetic" (*) +│ ├── k256 feature "ecdsa" (*) +│ ├── k256 feature "pem" +│ │ ├── k256 v0.11.6 (*) +│ │ ├── k256 feature "ecdsa-core" (*) +│ │ ├── k256 feature "pkcs8" (*) +│ │ ├── ecdsa feature "pem" +│ │ │ ├── ecdsa v0.14.8 (*) +│ │ │ ├── ecdsa feature "pkcs8" (*) +│ │ │ └── elliptic-curve feature "pem" +│ │ │ ├── elliptic-curve v0.12.3 (*) +│ │ │ ├── der feature "pem" +│ │ │ │ ├── der v0.6.1 (*) +│ │ │ │ ├── der feature "alloc" +│ │ │ │ │ └── der v0.6.1 (*) +│ │ │ │ ├── der feature "pem-rfc7468" +│ │ │ │ │ └── der v0.6.1 (*) +│ │ │ │ ├── der feature "zeroize" +│ │ │ │ │ └── der v0.6.1 (*) +│ │ │ │ └── pem-rfc7468 feature "alloc" +│ │ │ │ ├── pem-rfc7468 v0.6.0 (*) +│ │ │ │ └── base64ct feature "alloc" +│ │ │ │ └── base64ct v1.6.0 +│ │ │ ├── pem-rfc7468 feature "alloc" (*) +│ │ │ ├── elliptic-curve feature "alloc" +│ │ │ │ ├── elliptic-curve v0.12.3 (*) +│ │ │ │ ├── zeroize feature "alloc" (*) +│ │ │ │ ├── der feature "alloc" (*) +│ │ │ │ ├── elliptic-curve feature "sec1" (*) +│ │ │ │ ├── base16ct feature "alloc" +│ │ │ │ │ └── base16ct v0.1.1 +│ │ │ │ └── sec1 feature "alloc" +│ │ │ │ ├── sec1 v0.3.0 (*) +│ │ │ │ ├── zeroize feature "alloc" (*) +│ │ │ │ ├── der feature "alloc" (*) +│ │ │ │ ├── pkcs8 feature "alloc" +│ │ │ │ │ ├── pkcs8 v0.9.0 (*) +│ │ │ │ │ ├── der feature "alloc" (*) +│ │ │ │ │ ├── der feature "zeroize" (*) +│ │ │ │ │ └── spki feature "alloc" +│ │ │ │ │ ├── spki v0.6.0 (*) +│ │ │ │ │ ├── der feature "alloc" (*) +│ │ │ │ │ ├── base64ct feature "alloc" (*) +│ │ │ │ │ └── spki feature "base64ct" +│ │ │ │ │ └── spki v0.6.0 (*) +│ │ │ │ ├── sec1 feature "der" (*) +│ │ │ │ ├── sec1 feature "pkcs8" +│ │ │ │ │ └── sec1 v0.3.0 (*) +│ │ │ │ └── sec1 feature "zeroize" (*) +│ │ │ ├── elliptic-curve feature "arithmetic" (*) +│ │ │ ├── elliptic-curve feature "pem-rfc7468" +│ │ │ │ └── elliptic-curve v0.12.3 (*) +│ │ │ ├── elliptic-curve feature "pkcs8" (*) +│ │ │ ├── elliptic-curve feature "sec1" (*) +│ │ │ └── sec1 feature "pem" +│ │ │ ├── sec1 v0.3.0 (*) +│ │ │ ├── der feature "pem" (*) +│ │ │ ├── pkcs8 feature "pem" +│ │ │ │ ├── pkcs8 v0.9.0 (*) +│ │ │ │ ├── der feature "pem" (*) +│ │ │ │ ├── pkcs8 feature "alloc" (*) +│ │ │ │ └── spki feature "pem" +│ │ │ │ ├── spki v0.6.0 (*) +│ │ │ │ ├── der feature "pem" (*) +│ │ │ │ └── spki feature "alloc" (*) +│ │ │ ├── sec1 feature "alloc" (*) +│ │ │ ├── sec1 feature "der" (*) +│ │ │ └── sec1 feature "pkcs8" (*) +│ │ └── elliptic-curve feature "pem" (*) +│ ├── k256 feature "pkcs8" (*) +│ ├── macro-attr-2018 feature "default" (*) +│ └── newtype-derive-2018 feature "default" (*) +├── pallet-session v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── pallet-sudo v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── docify feature "default" (*) +│ ├── parity-scale-codec feature "derive" (*) +│ └── scale-info feature "derive" (*) +├── pallet-timestamp v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── runtime-api-chronicle v1.0.0 (/Users/ryan/code/chronicle/crates/runtime-api-chronicle) +│ ├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ └── common feature "parity-encoding" (*) +├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── sp-block-builder v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-inherents v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ └── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +├── sp-genesis-builder v0.7.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── sp-inherents v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── sp-offchain v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ └── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── sp-session v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +├── sp-transaction-pool v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ └── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── substrate-validator-set v1.1.0 (https://github.com/gautamdhameja/substrate-validator-set.git?tag=polkadot-v1.9.0#2c5e00ca) +│ ├── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── log v0.4.21 +│ ├── sp-core v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-io v30.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-staking v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── sp-std v14.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) +│ ├── sp-weights v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── parity-scale-codec feature "derive" (*) +│ ├── scale-info feature "derive" (*) +│ └── pallet-session feature "historical" +│ ├── pallet-session v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ └── pallet-session feature "sp-trie" +│ └── pallet-session v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── frame-support feature "experimental" +│ └── frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +├── parity-scale-codec feature "derive" (*) +├── scale-info feature "derive" (*) +├── sp-core feature "serde" (*) +├── sp-version feature "serde" (*) +├── sp-consensus-aura feature "serde" +│ ├── sp-consensus-aura v0.32.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ ├── scale-info feature "serde" (*) +│ ├── sp-runtime feature "serde" (*) +│ ├── sp-application-crypto feature "serde" (*) +│ └── sp-consensus-slots feature "serde" +│ ├── sp-consensus-slots v0.32.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce) (*) +│ └── scale-info feature "serde" (*) +└── sp-consensus-grandpa feature "serde" (*) diff --git a/terraform/chronicle-substrate/network.tf b/terraform/chronicle-substrate/network.tf index 1a5d00240..e515b6129 100644 --- a/terraform/chronicle-substrate/network.tf +++ b/terraform/chronicle-substrate/network.tf @@ -18,9 +18,6 @@ resource "helm_release" "bootnode" { node = { command = "node-chronicle" - tracing = { - enabled = true - } } }) ] @@ -43,9 +40,6 @@ resource "helm_release" "validators" { node = { command = "node-chronicle" - tracing = { - enabled = true - } } }) ] @@ -54,33 +48,28 @@ resource "helm_release" "validators" { } -resource "kubernetes_manifest" "bootnode_service_monitor" { - manifest = { - apiVersion = "monitoring.coreos.com/v1" - kind = "ServiceMonitor" - metadata = { - name = "bootnode-service-monitor" - namespace = var.kubernetes_namespace - labels = { - release = "prometheus-operator" - } - } - spec = { - selector = { - matchLabels = { - component = "substrate-node" - } - } - namespaceSelector = { - matchNames = [var.kubernetes_namespace] +resource "helm_release" "rpcnodes" { + name = "${var.helm_release_name}-rpc" + repository = "https://paritytech.github.io/helm-charts/" + chart = "node" + namespace = var.kubernetes_namespace + + values = [ + templatefile("templates/rpcnode.tmpl", { + helm_release_name = var.helm_release_name + + kubernetes_namespace = var.kubernetes_namespace + kubernetes_image_pull_secrets = var.kubernetes_image_pull_secrets + + chronicle_node_repository = var.chronicle-node-repository + + node = { + command = "node-chronicle" } - endpoints = [ - { - port = 9625 - interval = "30s" - } - ] - } - } + }) + ] + + depends_on = [helm_release.validators] } + diff --git a/terraform/chronicle-substrate/templates/bootnode.tmpl b/terraform/chronicle-substrate/templates/bootnode.tmpl index 874c3b11e..494421c25 100644 --- a/terraform/chronicle-substrate/templates/bootnode.tmpl +++ b/terraform/chronicle-substrate/templates/bootnode.tmpl @@ -1,11 +1,4 @@ fullnameOverride: bootnode -initContainers: - injectKeys: - debug: true -jaegerAgent: - collector: - url: 127.0.0.1 - port: 14250 image: repository: ${chronicle_node_repository} tag: local @@ -17,22 +10,21 @@ podAnnotations: vault.hashicorp.com/agent-inject-template-bootnode_key: '{{ with secret "kv/chronicle-substrate/bootnode_key" }}{{ .Data.data.key }}{{ end }}' vault.hashicorp.com/agent-inject-template-bootnode_peer: '{{ with secret "kv/chronicle-substrate/bootnode_peer" }}{{ .Data.data.peer_id }}{{ end }}' node: - chain: local - customChainspec: true # see extraInitContainers, chainspec-generator + chain: chronicle + customChainspec: true role: full replicas: 1 command: node-chronicle chainData: pruning: archive storageClass: "" - chainKeystore: - mountInMemory: - enabled: true perNodeServices: relayP2pService: enabled: true prometheus: enabled: true + enableSidecarReadinessProbe: false + enableSidecarLivenessProbe: false vault: enabled: true authRole: admin @@ -41,9 +33,27 @@ node: - name: aura type: aura scheme: sr25519 - vaultPath: kv/chronicle-substrate/aura # path at which the secret is located in Vault - vaultKey: secretSeed # key under which the secret value is stored in Vault - extraDerivation: "//$${HOSTNAME}//aura" # allows to have unique derived keys for each pod of the statefulset + vaultPath: kv/chronicle-substrate/aura + vaultKey: secretSeed + extraDerivation: "//$${HOSTNAME}//aura" + - name: root + type: acco + scheme: sr25519 + vaultPath: kv/chronicle-substrate/root + vaultKey: secretSeed + extraDerivation: "//$${HOSTNAME}//acco" + - name: online + type: onli + scheme: sr25519 + vaultPath: kv/chronicle-substrate/online + vaultKey: secretSeed + extraDerivation: "//$${HOSTNAME}//onli" + - name: gran + type: gran + scheme: ed25519 + vaultPath: kv/chronicle-substrate/grankey + vaultKey: secretSeed + extraDerivation: "//$${HOSTNAME}//gran" nodeKey: name: bootnode_key vaultKey: key @@ -55,28 +65,6 @@ node: - "--allow-private-ipv4" - "--discover-local" -ingress: - enabled: false - annotations: - kubernetes.io/ingress.class: TODO - external-dns.alpha.kubernetes.io/target: TODO - cert-manager.io/cluster-issuer: TODO - rules: - - host: chronicle-bootnode.paravela.io - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: bootnode - port: - number: 9944 - tls: - - secretName: chronicle-bootnode.paravela.io - hosts: - - chronicle-bootnode.paravela.io - # Generate chainspec, and expose it as url extraInitContainers: - name: chainspec-generator @@ -87,6 +75,7 @@ extraInitContainers: args: - -c - | + set -ex apt update && apt install -y jq && {{ .Values.node.command }} build-spec --chain {{ .Values.node.chain }} > base.json if [ ! -s base.json ]; then @@ -100,6 +89,7 @@ extraInitContainers: echo "plain.json is empty or malformed after jq processing." exit 1 fi + cat plain.json cut -c -256 plain.json {{ .Values.node.command }} build-spec --chain plain.json --raw > chainspec.json if [ ! -s chainspec.json ]; then @@ -110,6 +100,8 @@ extraInitContainers: volumeMounts: - mountPath: /chain-data name: chain-data + - mountPath: /keystore + name: chain-keystore env: - name: VAULT_LOG_LEVEL value: "debug" diff --git a/terraform/chronicle-substrate/templates/rpcnode.tmpl b/terraform/chronicle-substrate/templates/rpcnode.tmpl new file mode 100644 index 000000000..2cc15f52d --- /dev/null +++ b/terraform/chronicle-substrate/templates/rpcnode.tmpl @@ -0,0 +1,67 @@ +image: + repository: ${chronicle_node_repository} + tag: local + pullPolicy: IfNotPresent +podAnnotations: + sidecar.opentelemetry.io/inject: "true" + vault.hashicorp.com/ca-cert: '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' +node: + chain: chronicle + command: node-chronicle + customChainspecUrl: http://bootnode:8080/chainspec.json + forceDownloadChainspec: true + role: rpc + replicas: 2 + ingress: + enabled: true + host: chronicle-substrate-rpc + logLevels: + - debug + - wasmtime_cranelift=info + - wasmtime_jit=info + replicas: 3 + enabled: true + enableSidecarReadinessProbe: true + enableSidecarLivenessProbe: true + vault: + enabled: true + authRole: admin + authType: kubernetes + keys: + - name: aura + type: aura + scheme: sr25519 + vaultPath: kv/chronicle-substrate/aura + vaultKey: secretSeed + extraDerivation: "//$${HOSTNAME}//aura" + - name: root + type: acco + scheme: sr25519 + vaultPath: kv/chronicle-substrate/root + vaultKey: secretSeed + extraDerivation: "//$${HOSTNAME}//acco" + - name: online + type: onli + scheme: sr25519 + vaultPath: kv/chronicle-substrate/online + vaultKey: secretSeed + extraDerivation: "//$${HOSTNAME}//onli" + - name: gran + type: gran + scheme: ed25519 + vaultPath: kv/chronicle-substrate/grankey + vaultKey: secretSeed + extraDerivation: "//$${HOSTNAME}//gran" + nodeKey: + name: bootnode_key + vaultKey: key + vaultPath: kv/chronicle-substrate/bootnode_key + extraDerivation: "//$${HOSTNAME}//boot" # allows to have unique derived keys for each pod of the statefulset + chainData: + pruning: 1000 + storageClass: "" + chainKeystore: + storageClass: "" + flags: + - "--allow-private-ipv4" + - "--discover-local" diff --git a/terraform/chronicle-substrate/templates/validators.tmpl b/terraform/chronicle-substrate/templates/validators.tmpl index 9c08fc26e..ea3aecb52 100644 --- a/terraform/chronicle-substrate/templates/validators.tmpl +++ b/terraform/chronicle-substrate/templates/validators.tmpl @@ -2,14 +2,25 @@ image: repository: ${chronicle_node_repository} tag: local pullPolicy: IfNotPresent - +podAnnotations: + sidecar.opentelemetry.io/inject: "true" + vault.hashicorp.com/ca-cert: '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt' node: - chain: local + chain: chronicle command: node-chronicle customChainspecUrl: http://bootnode:8080/chainspec.json forceDownloadChainspec: true - role: authority - replicas: 2 + role: full + logLevels: + - debug + - wasmtime_cranelift=info + - wasmtime_jit=info + replicas: 3 + chainData: + pruning: 1000 + storageClass: "" + enableSidecarReadinessProbe: false + enableSidecarLivenessProbe: false vault: enabled: true authRole: admin @@ -18,21 +29,37 @@ node: - name: aura type: aura scheme: sr25519 - vaultPath: kv/chronicle-substrate/aura # path at which the secret is located in Vault - vaultKey: secretSeed # key under which the secret value is stored in Vault - extraDerivation: "//$${HOSTNAME}//aura" # allows to have unique derived keys for each pod of the statefulset - - name: grankey - type: grandpa + vaultPath: kv/chronicle-substrate/aura + vaultKey: secretSeed + extraDerivation: "//$${HOSTNAME}//aura" + - name: root + type: acco scheme: sr25519 + vaultPath: kv/chronicle-substrate/root + vaultKey: secretSeed + extraDerivation: "//$${HOSTNAME}//acco" + - name: online + type: onli + scheme: sr25519 + vaultPath: kv/chronicle-substrate/online + vaultKey: secretSeed + extraDerivation: "//$${HOSTNAME}//onli" + - name: gran + type: gran + scheme: ed25519 vaultPath: kv/chronicle-substrate/grankey vaultKey: secretSeed - extraDerivation: "//$${HOSTNAME}//gran" # allows to have unique derived keys for each pod of the statefulset + extraDerivation: "//$${HOSTNAME}//gran" + nodeKey: + name: bootnode_key + vaultKey: key + vaultPath: kv/chronicle-substrate/bootnode_key + extraDerivation: "//$${HOSTNAME}//boot" # allows to have unique derived keys for each pod of the statefulset chainData: pruning: 1000 storageClass: "" chainKeystore: storageClass: "" - keys: {} flags: - "--allow-private-ipv4" - "--discover-local" diff --git a/terraform/chronicle/chronicle.tf b/terraform/chronicle/chronicle.tf new file mode 100644 index 000000000..e69de29bb diff --git a/terraform/chronicle/variables.tf b/terraform/chronicle/variables.tf index 66808d1b1..dedf7cd83 100644 --- a/terraform/chronicle/variables.tf +++ b/terraform/chronicle/variables.tf @@ -460,3 +460,18 @@ variable "node_command" { type = string default = "node-chronicle" } + + +variable "helm_release_name" { + description = "Name of the helm release" + type = string + default = "chronicle" +} + + +variable "kubernetes_namespace" { + description = "Namespace for the helm release" + type = string + default = "chronicle-substrate" +} + diff --git a/terraform/vault-configuration/Makefile b/terraform/vault-configuration/Makefile index df4535c26..ef9e4b285 100644 --- a/terraform/vault-configuration/Makefile +++ b/terraform/vault-configuration/Makefile @@ -4,15 +4,27 @@ KEYGEN_TAG := local TF_VAR_aura_key := $(shell docker run $(KEYGEN_IMAGE):$(KEYGEN_TAG) node-chronicle key generate --network substrate --output-type json) export TF_VAR_aura_key -TF_VAR_grankey_key := $(shell docker run $(KEYGEN_IMAGE):$(KEYGEN_TAG) node-chronicle key generate --network substrate --output-type json) +TF_VAR_grankey_key := $(shell docker run $(KEYGEN_IMAGE):$(KEYGEN_TAG) node-chronicle key generate --network substrate --scheme ed25519 --output-type json) export TF_VAR_grankey_key +TF_VAR_root_key := $(shell docker run $(KEYGEN_IMAGE):$(KEYGEN_TAG) node-chronicle key generate --network substrate --output-type json) +export TF_VAR_root_key + +TF_VAR_online_key := $(shell docker run $(KEYGEN_IMAGE):$(KEYGEN_TAG) node-chronicle key generate --network substrate --output-type json) +export TF_VAR_online_key + TF_VAR_bootnode_key := $(shell docker run $(KEYGEN_IMAGE):$(KEYGEN_TAG) node-chronicle key generate-node-key) export TF_VAR_bootnode_key TF_VAR_bootnode_peer_id := $(shell echo $(TF_VAR_bootnode_key) | docker run -i $(KEYGEN_IMAGE):$(KEYGEN_TAG) node-chronicle key inspect-node-key) export TF_VAR_bootnode_peer_id +TF_VAR_chronicle_account_key := $(shell docker run $(KEYGEN_IMAGE):$(KEYGEN_TAG) node-chronicle key generate --network substrate --scheme ecdsa --output-type json) +export TF_VAR_chronicle_account_key + +TF_VAR_chronicle_identity_key := $(shell docker run $(KEYGEN_IMAGE):$(KEYGEN_TAG) node-chronicle key generate --network substrate --scheme ecdsa --output-type json) +export TF_VAR_chronicle_identity_key + TF_VAR_sa_jwt_token := $(shell kubectl get secret vault-auth-secret --namespace vault --output 'go-template={{ .data.token }}' | base64 --decode) export TF_VAR_sa_jwt_token diff --git a/terraform/vault-configuration/policies/bootnode.hcl b/terraform/vault-configuration/policies/bootnode.hcl deleted file mode 100644 index 13c870352..000000000 --- a/terraform/vault-configuration/policies/bootnode.hcl +++ /dev/null @@ -1,4 +0,0 @@ -path "kv/chronicle-substrate/*" -{ - capabilities = ["create", "read", "update", "delete", "list"] -} diff --git a/terraform/vault-configuration/policies/chronicle-substrate.hcl b/terraform/vault-configuration/policies/chronicle-substrate.hcl new file mode 100644 index 000000000..b13cf14ef --- /dev/null +++ b/terraform/vault-configuration/policies/chronicle-substrate.hcl @@ -0,0 +1,13 @@ +# Substrate needs access to its own account keys and chronicle's account keys +# Access could be reduced to only chronicle's public keys, but this involves additional configuration complexity +# as that must then be set via RPC rather than relying on the agent injector + +path "kv/chronicle-substrate/*" +{ + capabilities = ["create", "read", "update", "delete", "list"] +} + +path "kv/chronicle/*" +{ + capabilities = ["create", "read", "update", "delete", "list"] +} diff --git a/terraform/vault-configuration/variables.tf b/terraform/vault-configuration/variables.tf index 167dc1d1d..d5dc10a9c 100644 --- a/terraform/vault-configuration/variables.tf +++ b/terraform/vault-configuration/variables.tf @@ -12,19 +12,43 @@ variable "vault_token" { } variable "bootnode_key" { - description = "The bootnode key for the Chronicle Substrate node." + description = "The node key for the Chronicle Substrate." type = string sensitive = true } variable "aura_key" { - description = "The aura key for the Chronicle Substrate node." + description = "The AURA key for the Chronicle Substrate node." type = string sensitive = true } variable "grankey_key" { - description = "The grankey key for the Chronicle Substrate node." + description = "The GRANDPA key for the Chronicle Substrate node." + type = string + sensitive = true +} + +variable "root_key" { + description = "The root account key for the Chronicle Substrate node." + type = string + sensitive = true +} + +variable "online_key" { + description = "The i'm online account key for the Chronicle Substrate node." + type = string + sensitive = true +} + +variable "chronicle_account_key" { + description = "The chronicle account key." + type = string + sensitive = true +} + +variable "chronicle_identity_key" { + description = "The chronicle identity key." type = string sensitive = true } diff --git a/terraform/vault-configuration/vault.tf b/terraform/vault-configuration/vault.tf index a64a6ae7a..e0ac8f9ed 100644 --- a/terraform/vault-configuration/vault.tf +++ b/terraform/vault-configuration/vault.tf @@ -4,8 +4,8 @@ resource "vault_policy" "admin_policy" { } resource "vault_policy" "bootnode_policy" { - name = "bootnode" - policy = file("policies/bootnode.hcl") + name = "chronicle-substrate" + policy = file("policies/chronicle-substrate.hcl") } resource "vault_policy" "chronicle_policy" { @@ -88,6 +88,50 @@ resource "vault_kv_secret_v2" "grankey" { } } +resource "vault_kv_secret_v2" "rootkey" { + name = "root" + mount = vault_mount.chronicle_substrate.path + data_json = var.root_key + + #Once secrets are set, do not update + lifecycle { + ignore_changes = [data_json] + } +} + +resource "vault_kv_secret_v2" "onlinekey" { + name = "online" + mount = vault_mount.chronicle_substrate.path + data_json = var.online_key + + #Once secrets are set, do not update + lifecycle { + ignore_changes = [data_json] + } +} + +resource "vault_kv_secret_v2" "chronicle_account_key" { + name = "chronicle-account" + mount = vault_mount.chronicle.path + data_json = var.chronicle_account_key + + #Once secrets are set, do not update + lifecycle { + ignore_changes = [data_json] + } +} + +resource "vault_kv_secret_v2" "chronicle_identity_key" { + name = "chronicle-identity" + mount = vault_mount.chronicle.path + data_json = var.chronicle_identity_key + + #Once secrets are set, do not update + lifecycle { + ignore_changes = [data_json] + } +} + resource "vault_auth_backend" "kubernetes" { type = "kubernetes" } @@ -114,10 +158,10 @@ resource "vault_kubernetes_auth_backend_role" "admin" { depends_on = [vault_auth_backend.kubernetes] } -resource "vault_kubernetes_auth_backend_role" "bootnode" { +resource "vault_kubernetes_auth_backend_role" "chronicle-substrate" { backend = vault_auth_backend.kubernetes.id - role_name = "bootnode" + role_name = "chronicle-substrate" bound_service_account_names = ["*"] bound_service_account_namespaces = ["vault", "chronicle", "chronicle-substrate"] token_ttl = 3600