diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index b632ac0c..7ce70ad3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -23,7 +23,7 @@ jobs:
- uses: Swatinem/rust-cache@v2
- name: build
- run: cargo build --package cli --release --target aarch64-apple-darwin
+ run: cargo build --package helios-cli --release --target aarch64-apple-darwin
- name: archive
run: gtar -czvf "helios_darwin_arm64.tar.gz" -C ./target/aarch64-apple-darwin/release helios
@@ -62,7 +62,7 @@ jobs:
- uses: Swatinem/rust-cache@v2
- name: build
- run: cargo build --package cli --release --target x86_64-apple-darwin
+ run: cargo build --package helios-cli --release --target x86_64-apple-darwin
- name: archive
run: gtar -czvf "helios_darwin_amd64.tar.gz" -C ./target/x86_64-apple-darwin/release helios
@@ -107,7 +107,7 @@ jobs:
- uses: Swatinem/rust-cache@v2
- name: build
- run: cargo build --package cli --release --target aarch64-unknown-linux-gnu
+ run: cargo build --package helios-cli --release --target aarch64-unknown-linux-gnu
- name: archive
run: tar -czvf "helios_linux_arm64.tar.gz" -C ./target/aarch64-unknown-linux-gnu/release helios
@@ -146,7 +146,7 @@ jobs:
- uses: Swatinem/rust-cache@v2
- name: build
- run: cargo build --package cli --release --target x86_64-unknown-linux-gnu
+ run: cargo build --package helios-cli --release --target x86_64-unknown-linux-gnu
- name: archive
run: tar -czvf "helios_linux_amd64.tar.gz" -C ./target/x86_64-unknown-linux-gnu/release helios
@@ -194,7 +194,7 @@ jobs:
prefix-key: "fresh2"
- name: build
- run: cargo build --package cli --release --target armv7-unknown-linux-gnueabihf
+ run: cargo build --package helios-cli --release --target armv7-unknown-linux-gnueabihf
- name: archive
run: tar -czvf "helios_linux_armv7.tar.gz" -C ./target/armv7-unknown-linux-gnueabihf/release helios
@@ -239,7 +239,7 @@ jobs:
- uses: Swatinem/rust-cache@v2
- name: build
- run: cargo build --package cli --release --target riscv64gc-unknown-linux-gnu
+ run: cargo build --package helios-cli --release --target riscv64gc-unknown-linux-gnu
- name: archive
run: tar -czvf "helios_linux_riscv64gc.tar.gz" -C ./target/riscv64gc-unknown-linux-gnu/release helios
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index fe225c28..5a209709 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -5,6 +5,7 @@ on:
branches: ["master"]
pull_request:
branches: ["master"]
+ workflow_dispatch:
env:
MAINNET_EXECUTION_RPC: ${{ secrets.MAINNET_EXECUTION_RPC }}
diff --git a/Cargo.lock b/Cargo.lock
index 28067e16..696a1d8d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4,18 +4,53 @@ version = 3
[[package]]
name = "addr2line"
-version = "0.22.0"
+version = "0.24.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678"
+checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
dependencies = [
"gimli",
]
[[package]]
-name = "adler"
-version = "1.0.2"
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+
+[[package]]
+name = "aead"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
+dependencies = [
+ "crypto-common",
+ "generic-array",
+]
+
+[[package]]
+name = "aes"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures",
+]
+
+[[package]]
+name = "aes-gcm"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1"
+dependencies = [
+ "aead",
+ "aes",
+ "cipher",
+ "ctr",
+ "ghash",
+ "subtle",
+]
[[package]]
name = "ahash"
@@ -55,6 +90,7 @@ dependencies = [
"alloy-core",
"alloy-eips",
"alloy-genesis",
+ "alloy-json-rpc",
"alloy-network",
"alloy-provider",
"alloy-pubsub",
@@ -71,10 +107,11 @@ dependencies = [
[[package]]
name = "alloy-chains"
-version = "0.1.24"
+version = "0.1.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47ff94ce0f141c2671c23d02c7b88990dd432856639595c5d010663d017c2c58"
+checksum = "d4932d790c723181807738cf1ac68198ab581cd699545b155601332541ee47bd"
dependencies = [
+ "alloy-primitives 0.8.9",
"num_enum",
"strum",
]
@@ -86,7 +123,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04c309895995eaa4bfcc345f5515a39c7df9447798645cc8bf462b6c5bf1dc96"
dependencies = [
"alloy-eips",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-rlp",
"alloy-serde",
"c-kzg",
@@ -103,7 +140,7 @@ dependencies = [
"alloy-json-abi",
"alloy-network",
"alloy-network-primitives",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-provider",
"alloy-pubsub",
"alloy-rpc-types-eth",
@@ -122,7 +159,7 @@ checksum = "529fc6310dc1126c8de51c376cbc59c79c7f662bd742be7dc67055d5421a81b4"
dependencies = [
"alloy-dyn-abi",
"alloy-json-abi",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-rlp",
"alloy-sol-types",
]
@@ -134,14 +171,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "413902aa18a97569e60f679c23f46a18db1656d87ab4d4e49d0e1e52042f66df"
dependencies = [
"alloy-json-abi",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-sol-type-parser",
"alloy-sol-types",
"const-hex",
"itoa",
"serde",
"serde_json",
- "winnow 0.6.15",
+ "winnow",
]
[[package]]
@@ -150,11 +187,11 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9431c99a3b3fe606ede4b3d4043bdfbcb780c45b8d8d226c3804e2b75cfbe68"
dependencies = [
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-rlp",
"alloy-serde",
"c-kzg",
- "derive_more",
+ "derive_more 0.99.18",
"ethereum_ssz 0.5.4",
"ethereum_ssz_derive 0.5.4",
"k256",
@@ -169,7 +206,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79614dfe86144328da11098edcc7bc1a3f25ad8d3134a9eb9e857e06f0d9840d"
dependencies = [
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-serde",
"serde",
]
@@ -180,7 +217,7 @@ version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc05b04ac331a9f07e3a4036ef7926e49a8bf84a99a1ccfc7e2ab55a5fcbb372"
dependencies = [
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-sol-type-parser",
"serde",
"serde_json",
@@ -192,7 +229,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57e2865c4c3bb4cdad3f0d9ec1ab5c0c657ba69a375651bd35e32fb6c180ccc2"
dependencies = [
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-sol-types",
"serde",
"serde_json",
@@ -210,7 +247,7 @@ dependencies = [
"alloy-eips",
"alloy-json-rpc",
"alloy-network-primitives",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-rpc-types-eth",
"alloy-serde",
"alloy-signer",
@@ -227,7 +264,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec9d5a0f9170b10988b6774498a022845e13eda94318440d17709d50687f67f9"
dependencies = [
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-serde",
"serde",
]
@@ -242,7 +279,7 @@ dependencies = [
"bytes",
"cfg-if",
"const-hex",
- "derive_more",
+ "derive_more 0.99.18",
"ethereum_ssz 0.5.4",
"hex-literal",
"itoa",
@@ -255,6 +292,23 @@ dependencies = [
"tiny-keccak 2.0.2",
]
+[[package]]
+name = "alloy-primitives"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c71738eb20c42c5fb149571e76536a0f309d142f3957c28791662b96baf77a3d"
+dependencies = [
+ "bytes",
+ "cfg-if",
+ "const-hex",
+ "derive_more 1.0.0",
+ "hex-literal",
+ "itoa",
+ "paste",
+ "ruint",
+ "tiny-keccak 2.0.2",
+]
+
[[package]]
name = "alloy-provider"
version = "0.2.1"
@@ -267,7 +321,7 @@ dependencies = [
"alloy-json-rpc",
"alloy-network",
"alloy-network-primitives",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-pubsub",
"alloy-rpc-client",
"alloy-rpc-types-eth",
@@ -298,7 +352,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f5da2c55cbaf229bad3c5f8b00b5ab66c74ef093e5f3a753d874cfecf7d2281"
dependencies = [
"alloy-json-rpc",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-transport",
"bimap",
"futures",
@@ -306,30 +360,30 @@ dependencies = [
"serde_json",
"tokio",
"tokio-stream",
- "tower",
+ "tower 0.4.13",
"tracing",
]
[[package]]
name = "alloy-rlp"
-version = "0.3.7"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a43b18702501396fa9bcdeecd533bc85fac75150d308fc0f6800a01e6234a003"
+checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f"
dependencies = [
"alloy-rlp-derive",
- "arrayvec 0.7.4",
+ "arrayvec 0.7.6",
"bytes",
]
[[package]]
name = "alloy-rlp-derive"
-version = "0.3.7"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d83524c1f6162fcb5b0decf775498a125066c86dda6066ed609531b0e912f85a"
+checksum = "2b09cae092c27b6f1bde952653a22708691802e57bfef4a2973b80bea21efd3f"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -339,7 +393,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b38e3ffdb285df5d9f60cb988d336d9b8e3505acb78750c3bc60336a7af41d3"
dependencies = [
"alloy-json-rpc",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-pubsub",
"alloy-transport",
"alloy-transport-http",
@@ -352,7 +406,7 @@ dependencies = [
"serde_json",
"tokio",
"tokio-stream",
- "tower",
+ "tower 0.4.13",
"tracing",
"url",
]
@@ -377,7 +431,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8a24bcff4f9691d7a4971b43e5da46aa7b4ce22ed7789796612dc1eed220983"
dependencies = [
"alloy-eips",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-rpc-types-engine",
"ethereum_ssz 0.5.4",
"ethereum_ssz_derive 0.5.4",
@@ -394,7 +448,7 @@ checksum = "ff63f51b2fb2f547df5218527fd0653afb1947bf7fead5b3ce58c75d170b30f7"
dependencies = [
"alloy-consensus",
"alloy-eips",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-rlp",
"alloy-rpc-types-eth",
"alloy-serde",
@@ -415,7 +469,7 @@ dependencies = [
"alloy-consensus",
"alloy-eips",
"alloy-network-primitives",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-rlp",
"alloy-serde",
"alloy-sol-types",
@@ -431,7 +485,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e33feda6a53e6079895aed1d08dcb98a1377b000d80d16370fbbdb8155d547ef"
dependencies = [
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"serde",
"serde_json",
]
@@ -442,7 +496,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "740a25b92e849ed7b0fa013951fe2f64be9af1ad5abe805037b44fb7770c5c47"
dependencies = [
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"async-trait",
"auto_impl",
"elliptic-curve",
@@ -458,7 +512,7 @@ checksum = "1b0707d4f63e4356a110b30ef3add8732ab6d181dd7be4607bf79b8777105cee"
dependencies = [
"alloy-consensus",
"alloy-network",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-signer",
"async-trait",
"k256",
@@ -477,7 +531,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -490,11 +544,11 @@ dependencies = [
"alloy-sol-macro-input",
"const-hex",
"heck 0.5.0",
- "indexmap 2.2.6",
+ "indexmap 2.6.0",
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
"syn-solidity",
"tiny-keccak 2.0.2",
]
@@ -512,7 +566,7 @@ dependencies = [
"proc-macro2",
"quote",
"serde_json",
- "syn 2.0.72",
+ "syn 2.0.84",
"syn-solidity",
]
@@ -523,7 +577,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbcba3ca07cf7975f15d871b721fb18031eec8bce51103907f6dcce00b255d98"
dependencies = [
"serde",
- "winnow 0.6.15",
+ "winnow",
]
[[package]]
@@ -533,7 +587,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7"
dependencies = [
"alloy-json-abi",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"alloy-sol-macro",
"const-hex",
"serde",
@@ -553,7 +607,7 @@ dependencies = [
"serde_json",
"thiserror",
"tokio",
- "tower",
+ "tower 0.4.13",
"tracing",
"url",
]
@@ -568,7 +622,7 @@ dependencies = [
"alloy-transport",
"reqwest",
"serde_json",
- "tower",
+ "tower 0.4.13",
"tracing",
"url",
]
@@ -602,7 +656,7 @@ dependencies = [
"alloy-transport",
"futures",
"http 1.1.0",
- "rustls 0.23.12",
+ "rustls 0.23.15",
"serde_json",
"tokio",
"tokio-tungstenite",
@@ -633,9 +687,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
[[package]]
name = "anstream"
-version = "0.6.14"
+version = "0.6.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"
+checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
dependencies = [
"anstyle",
"anstyle-parse",
@@ -648,33 +702,33 @@ dependencies = [
[[package]]
name = "anstyle"
-version = "1.0.7"
+version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"
+checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
[[package]]
name = "anstyle-parse"
-version = "0.2.4"
+version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4"
+checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
-version = "1.1.0"
+version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391"
+checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "anstyle-wincon"
-version = "3.0.3"
+version = "3.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19"
+checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
dependencies = [
"anstyle",
"windows-sys 0.52.0",
@@ -682,9 +736,9 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.86"
+version = "1.0.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
+checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8"
[[package]]
name = "ark-ff"
@@ -720,7 +774,7 @@ dependencies = [
"num-bigint",
"num-traits",
"paste",
- "rustc_version 0.4.0",
+ "rustc_version 0.4.1",
"zeroize",
]
@@ -810,6 +864,12 @@ dependencies = [
"rand 0.8.5",
]
+[[package]]
+name = "arrayref"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
+
[[package]]
name = "arrayvec"
version = "0.5.2"
@@ -818,9 +878,73 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
[[package]]
name = "arrayvec"
-version = "0.7.4"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
+
+[[package]]
+name = "asn1-rs"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0"
+dependencies = [
+ "asn1-rs-derive",
+ "asn1-rs-impl",
+ "displaydoc",
+ "nom",
+ "num-traits",
+ "rusticata-macros",
+ "thiserror",
+ "time",
+]
+
+[[package]]
+name = "asn1-rs-derive"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "synstructure",
+]
+
+[[package]]
+name = "asn1-rs-impl"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "asn1_der"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "155a5a185e42c6b77ac7b88a15143d930a9e9727a5b7b77eed417404ab15c247"
+
+[[package]]
+name = "async-io"
+version = "2.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8"
+dependencies = [
+ "async-lock 3.4.0",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-io",
+ "futures-lite",
+ "parking",
+ "polling",
+ "rustix",
+ "slab",
+ "tracing",
+ "windows-sys 0.59.0",
+]
[[package]]
name = "async-lock"
@@ -828,14 +952,25 @@ version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
dependencies = [
- "event-listener",
+ "event-listener 2.5.3",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
+dependencies = [
+ "event-listener 5.3.1",
+ "event-listener-strategy",
+ "pin-project-lite",
]
[[package]]
name = "async-stream"
-version = "0.3.5"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"
+checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476"
dependencies = [
"async-stream-impl",
"futures-core",
@@ -844,24 +979,24 @@ dependencies = [
[[package]]
name = "async-stream-impl"
-version = "0.3.5"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
+checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
name = "async-trait"
-version = "0.1.81"
+version = "0.1.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
+checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -872,7 +1007,20 @@ checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c"
dependencies = [
"futures",
"pharos",
- "rustc_version 0.4.0",
+ "rustc_version 0.4.1",
+]
+
+[[package]]
+name = "asynchronous-codec"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4057f2c32adbb2fc158e22fb38433c8e9bbf76b75a4732c7c0cbaf695fb65568"
+dependencies = [
+ "bytes",
+ "futures-sink",
+ "futures-util",
+ "memchr",
+ "pin-project-lite",
]
[[package]]
@@ -908,30 +1056,91 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
name = "autocfg"
-version = "1.3.0"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+
+[[package]]
+name = "axum"
+version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae"
+dependencies = [
+ "async-trait",
+ "axum-core",
+ "bytes",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "http-body-util",
+ "hyper 1.5.0",
+ "hyper-util",
+ "itoa",
+ "matchit",
+ "memchr",
+ "mime",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustversion",
+ "serde",
+ "serde_json",
+ "serde_path_to_error",
+ "serde_urlencoded",
+ "sync_wrapper 1.0.1",
+ "tokio",
+ "tower 0.5.1",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "axum-core"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.1",
+ "http-body-util",
+ "mime",
+ "pin-project-lite",
+ "rustversion",
+ "sync_wrapper 1.0.1",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
[[package]]
name = "backtrace"
-version = "0.3.73"
+version = "0.3.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a"
+checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
dependencies = [
"addr2line",
- "cc",
"cfg-if",
"libc",
"miniz_oxide",
"object",
"rustc-demangle",
+ "windows-targets 0.52.6",
]
+[[package]]
+name = "base-x"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270"
+
[[package]]
name = "base16ct"
version = "0.2.0"
@@ -1030,6 +1239,15 @@ dependencies = [
"wyz",
]
+[[package]]
+name = "blake2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
+dependencies = [
+ "digest 0.10.7",
+]
+
[[package]]
name = "block-buffer"
version = "0.9.0"
@@ -1064,9 +1282,9 @@ dependencies = [
[[package]]
name = "blst"
-version = "0.3.12"
+version = "0.3.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62dc83a094a71d43eeadd254b1ec2d24cb6a0bb6cadce00df51f0db594711a32"
+checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874"
dependencies = [
"cc",
"glob",
@@ -1074,11 +1292,17 @@ dependencies = [
"zeroize",
]
+[[package]]
+name = "bs58"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3"
+
[[package]]
name = "bstr"
-version = "1.9.1"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706"
+checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c"
dependencies = [
"memchr",
"serde",
@@ -1104,9 +1328,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c"
[[package]]
name = "bytemuck"
-version = "1.16.1"
+version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e"
+checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d"
[[package]]
name = "byteorder"
@@ -1116,24 +1340,25 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
-version = "1.6.1"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952"
+checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da"
dependencies = [
"serde",
]
[[package]]
name = "c-kzg"
-version = "1.0.2"
+version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdf100c4cea8f207e883ff91ca886d621d8a166cb04971dfaa9bb8fd99ed95df"
+checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928"
dependencies = [
"blst",
"cc",
"glob",
"hex",
"libc",
+ "once_cell",
"serde",
]
@@ -1145,9 +1370,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
[[package]]
name = "cc"
-version = "1.1.6"
+version = "1.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f"
+checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f"
+dependencies = [
+ "shlex",
+]
[[package]]
name = "cfg-if"
@@ -1157,9 +1385,33 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "cfg_aliases"
-version = "0.1.1"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
+
+[[package]]
+name = "chacha20"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures",
+]
+
+[[package]]
+name = "chacha20poly1305"
+version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
+checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35"
+dependencies = [
+ "aead",
+ "chacha20",
+ "cipher",
+ "poly1305",
+ "zeroize",
+]
[[package]]
name = "chrono"
@@ -1203,11 +1455,22 @@ dependencies = [
"half",
]
+[[package]]
+name = "cipher"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
+dependencies = [
+ "crypto-common",
+ "inout",
+ "zeroize",
+]
+
[[package]]
name = "clap"
-version = "4.5.10"
+version = "4.5.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f6b81fb3c84f5563d509c59b5a48d935f689e993afa90fe39047f05adef9142"
+checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8"
dependencies = [
"clap_builder",
"clap_derive",
@@ -1215,9 +1478,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.5.10"
+version = "4.5.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ca6706fd5224857d9ac5eb9355f6683563cc0541c7cd9d014043b57cbec78ac"
+checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54"
dependencies = [
"anstream",
"anstyle",
@@ -1227,63 +1490,21 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.5.8"
+version = "4.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085"
+checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab"
dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
name = "clap_lex"
-version = "0.7.1"
+version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70"
-
-[[package]]
-name = "cli"
-version = "0.6.1"
-dependencies = [
- "alloy",
- "clap",
- "client",
- "common",
- "config",
- "consensus",
- "ctrlc",
- "dirs",
- "eyre",
- "futures",
- "tokio",
- "tracing",
- "tracing-subscriber",
-]
-
-[[package]]
-name = "client"
-version = "0.6.1"
-dependencies = [
- "alloy",
- "common",
- "config",
- "consensus",
- "execution",
- "eyre",
- "futures",
- "gloo-timers 0.3.0",
- "hex",
- "jsonrpsee",
- "parking_lot",
- "serde",
- "thiserror",
- "tokio",
- "tracing",
- "wasm-bindgen-futures",
- "zduny-wasm-timer",
-]
+checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
[[package]]
name = "color_quant"
@@ -1293,96 +1514,17 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
[[package]]
name = "colorchoice"
-version = "1.0.1"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422"
+checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
[[package]]
-name = "common"
-version = "0.6.1"
+name = "concurrent-queue"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
dependencies = [
- "alloy",
- "eyre",
- "hex",
- "serde",
- "serde_json",
- "superstruct",
- "thiserror",
- "tracing",
- "zduny-wasm-timer",
-]
-
-[[package]]
-name = "config"
-version = "0.6.1"
-dependencies = [
- "alloy",
- "common",
- "consensus-core",
- "dirs",
- "eyre",
- "figment",
- "futures",
- "hex",
- "reqwest",
- "retri",
- "serde",
- "serde_yaml",
- "strum",
- "thiserror",
- "tokio",
- "tracing",
-]
-
-[[package]]
-name = "consensus"
-version = "0.6.1"
-dependencies = [
- "alloy",
- "async-trait",
- "chrono",
- "common",
- "config",
- "consensus-core",
- "eyre",
- "futures",
- "getrandom 0.2.15",
- "hex",
- "openssl",
- "parking_lot",
- "reqwest",
- "retri",
- "serde",
- "serde_json",
- "superstruct",
- "thiserror",
- "tokio",
- "tracing",
- "tree_hash",
- "wasm-bindgen-futures",
- "zduny-wasm-timer",
-]
-
-[[package]]
-name = "consensus-core"
-version = "0.6.1"
-dependencies = [
- "alloy",
- "bls12_381",
- "ethereum_ssz 0.6.0",
- "ethereum_ssz_derive 0.6.0",
- "eyre",
- "getrandom 0.2.15",
- "serde",
- "sha2 0.9.9",
- "ssz_types",
- "superstruct",
- "thiserror",
- "tracing",
- "tree_hash",
- "tree_hash_derive",
- "typenum",
- "zduny-wasm-timer",
+ "crossbeam-utils",
]
[[package]]
@@ -1397,9 +1539,9 @@ dependencies = [
[[package]]
name = "const-hex"
-version = "1.12.0"
+version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6"
+checksum = "0121754e84117e65f9d90648ee6aa4882a6e63110307ab73967a4c5e7e69e586"
dependencies = [
"cfg-if",
"cpufeatures",
@@ -1432,9 +1574,9 @@ dependencies = [
[[package]]
name = "core-foundation-sys"
-version = "0.8.6"
+version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
[[package]]
name = "core-graphics"
@@ -1472,11 +1614,20 @@ dependencies = [
"libc",
]
+[[package]]
+name = "core2"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505"
+dependencies = [
+ "memchr",
+]
+
[[package]]
name = "cpufeatures"
-version = "0.2.12"
+version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0"
dependencies = [
"libc",
]
@@ -1578,27 +1729,77 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
"generic-array",
+ "rand_core 0.6.4",
"typenum",
]
[[package]]
-name = "cstr"
-version = "0.2.12"
+name = "crypto-mac"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68523903c8ae5aacfa32a0d9ae60cadeb764e1da14ee0d26b1f3089f13a54636"
+checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab"
dependencies = [
- "proc-macro2",
- "quote",
+ "generic-array",
+ "subtle",
+]
+
+[[package]]
+name = "ctr"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
+dependencies = [
+ "cipher",
]
[[package]]
name = "ctrlc"
-version = "3.4.4"
+version = "3.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "672465ae37dc1bc6380a6547a8883d5dd397b0f1faaad4f265726cc7042a5345"
+checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3"
dependencies = [
- "nix",
- "windows-sys 0.52.0",
+ "nix 0.29.0",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "curve25519-dalek"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61"
+dependencies = [
+ "byteorder",
+ "digest 0.9.0",
+ "rand_core 0.5.1",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "curve25519-dalek"
+version = "4.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "curve25519-dalek-derive",
+ "digest 0.10.7",
+ "fiat-crypto",
+ "rustc_version 0.4.1",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "curve25519-dalek-derive"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.84",
]
[[package]]
@@ -1646,7 +1847,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim 0.11.1",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -1668,7 +1869,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
dependencies = [
"darling_core 0.20.10",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -1681,7 +1882,7 @@ dependencies = [
"hashbrown 0.14.5",
"lock_api",
"once_cell",
- "parking_lot_core",
+ "parking_lot_core 0.9.10",
]
[[package]]
@@ -1690,6 +1891,36 @@ version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"
+[[package]]
+name = "data-encoding-macro"
+version = "0.1.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1559b6cba622276d6d63706db152618eeb15b89b3e4041446b05876e352e639"
+dependencies = [
+ "data-encoding",
+ "data-encoding-macro-internal",
+]
+
+[[package]]
+name = "data-encoding-macro-internal"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "332d754c0af53bc87c108fed664d121ecf59207ec4196041f04d6ab9002ad33f"
+dependencies = [
+ "data-encoding",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "delay_map"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4355c25cbf99edcb6b4a0e906f6bdc6956eda149e84455bea49696429b2f8e8"
+dependencies = [
+ "futures",
+ "tokio-util",
+]
+
[[package]]
name = "der"
version = "0.7.9"
@@ -1700,6 +1931,20 @@ dependencies = [
"zeroize",
]
+[[package]]
+name = "der-parser"
+version = "8.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e"
+dependencies = [
+ "asn1-rs",
+ "displaydoc",
+ "nom",
+ "num-bigint",
+ "num-traits",
+ "rusticata-macros",
+]
+
[[package]]
name = "deranged"
version = "0.3.11"
@@ -1730,8 +1975,29 @@ dependencies = [
"convert_case",
"proc-macro2",
"quote",
- "rustc_version 0.4.0",
- "syn 2.0.72",
+ "rustc_version 0.4.1",
+ "syn 2.0.84",
+]
+
+[[package]]
+name = "derive_more"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05"
+dependencies = [
+ "derive_more-impl",
+]
+
+[[package]]
+name = "derive_more-impl"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.84",
+ "unicode-xid",
]
[[package]]
@@ -1770,16 +2036,6 @@ dependencies = [
"dirs-sys",
]
-[[package]]
-name = "dirs-next"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
-dependencies = [
- "cfg-if",
- "dirs-sys-next",
-]
-
[[package]]
name = "dirs-sys"
version = "0.4.1"
@@ -1793,14 +2049,45 @@ dependencies = [
]
[[package]]
-name = "dirs-sys-next"
-version = "0.1.2"
+name = "discv5"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+checksum = "f569b8c367554666c8652305621e8bae3634a2ff5c6378081d5bd8c399c99f23"
dependencies = [
- "libc",
- "redox_users",
- "winapi",
+ "aes",
+ "aes-gcm",
+ "alloy-rlp",
+ "arrayvec 0.7.6",
+ "ctr",
+ "delay_map",
+ "enr",
+ "fnv",
+ "futures",
+ "hashlink",
+ "hex",
+ "hkdf",
+ "lazy_static",
+ "lru",
+ "more-asserts",
+ "parking_lot 0.11.2",
+ "rand 0.8.5",
+ "smallvec",
+ "socket2 0.4.10",
+ "tokio",
+ "tracing",
+ "uint 0.9.5",
+ "zeroize",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.84",
]
[[package]]
@@ -1824,17 +2111,23 @@ version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
+[[package]]
+name = "dtoa"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653"
+
[[package]]
name = "dunce"
-version = "1.0.4"
+version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
+checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
[[package]]
name = "dwrote"
-version = "0.11.0"
+version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b"
+checksum = "70182709525a3632b2ba96b6569225467b18ecb4a77f46d255f713a6bebf05fd"
dependencies = [
"lazy_static",
"libc",
@@ -1862,6 +2155,31 @@ dependencies = [
"spki",
]
+[[package]]
+name = "ed25519"
+version = "2.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"
+dependencies = [
+ "pkcs8",
+ "signature",
+]
+
+[[package]]
+name = "ed25519-dalek"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871"
+dependencies = [
+ "curve25519-dalek 4.1.3",
+ "ed25519",
+ "rand_core 0.6.4",
+ "serde",
+ "sha2 0.10.8",
+ "subtle",
+ "zeroize",
+]
+
[[package]]
name = "either"
version = "1.13.0"
@@ -1896,15 +2214,46 @@ dependencies = [
"cfg-if",
]
+[[package]]
+name = "enr"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "972070166c68827e64bd1ebc8159dd8e32d9bc2da7ebe8f20b61308f7974ad30"
+dependencies = [
+ "alloy-rlp",
+ "base64 0.21.7",
+ "bytes",
+ "ed25519-dalek",
+ "hex",
+ "k256",
+ "log",
+ "rand 0.8.5",
+ "serde",
+ "sha3",
+ "zeroize",
+]
+
+[[package]]
+name = "enum-as-inner"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
[[package]]
name = "enumn"
-version = "0.1.13"
+version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42"
+checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -1992,7 +2341,7 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c228a90f44b159ccc0c16da6c56da42d0a521b0388cca87e89919d1af1889b2"
dependencies = [
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"hex",
"serde",
"serde_derive",
@@ -2016,7 +2365,7 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "654bbebe60af1f6554e0e1216b8e336bc1a5ec483b7774d904e25e6e65a655c6"
dependencies = [
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"itertools 0.13.0",
"smallvec",
]
@@ -2042,7 +2391,7 @@ dependencies = [
"darling 0.20.10",
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -2052,26 +2401,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
[[package]]
-name = "execution"
-version = "0.6.1"
+name = "event-listener"
+version = "5.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba"
dependencies = [
- "alloy",
- "async-trait",
- "common",
- "consensus",
- "eyre",
- "futures",
- "hex",
- "openssl",
- "reqwest",
- "revm",
- "serde",
- "serde_json",
- "thiserror",
- "tokio",
- "tracing",
- "triehash-ethereum",
- "wasm-bindgen-futures",
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1"
+dependencies = [
+ "event-listener 5.3.1",
+ "pin-project-lite",
]
[[package]]
@@ -2086,9 +2433,9 @@ dependencies = [
[[package]]
name = "fastrand"
-version = "2.1.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
+checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
[[package]]
name = "fastrlp"
@@ -2096,16 +2443,16 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418"
dependencies = [
- "arrayvec 0.7.4",
+ "arrayvec 0.7.6",
"auto_impl",
"bytes",
]
[[package]]
name = "fdeflate"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645"
+checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab"
dependencies = [
"simd-adler32",
]
@@ -2121,6 +2468,12 @@ dependencies = [
"subtle",
]
+[[package]]
+name = "fiat-crypto"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
+
[[package]]
name = "figment"
version = "0.10.19"
@@ -2130,7 +2483,7 @@ dependencies = [
"atomic",
"pear",
"serde",
- "toml",
+ "toml 0.8.19",
"uncased",
"version_check",
]
@@ -2161,9 +2514,9 @@ dependencies = [
[[package]]
name = "flate2"
-version = "1.0.30"
+version = "1.0.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae"
+checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
dependencies = [
"crc32fast",
"miniz_oxide",
@@ -2181,18 +2534,24 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+[[package]]
+name = "foldhash"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2"
+
[[package]]
name = "font-kit"
-version = "0.13.2"
+version = "0.14.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2845a73bbd781e691ab7c2a028c579727cd254942e8ced57ff73e0eafd60de87"
+checksum = "b64b34f4efd515f905952d91bc185039863705592c0c53ae6d979805dd154520"
dependencies = [
"bitflags 2.6.0",
"byteorder",
"core-foundation",
"core-graphics",
"core-text",
- "dirs-next",
+ "dirs",
"dwrote",
"float-ord",
"freetype-sys",
@@ -2233,7 +2592,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -2276,9 +2635,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
[[package]]
name = "futures"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
dependencies = [
"futures-channel",
"futures-core",
@@ -2291,9 +2650,9 @@ dependencies = [
[[package]]
name = "futures-channel"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
dependencies = [
"futures-core",
"futures-sink",
@@ -2301,49 +2660,71 @@ dependencies = [
[[package]]
name = "futures-core"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
[[package]]
name = "futures-executor"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
dependencies = [
"futures-core",
"futures-task",
"futures-util",
+ "num_cpus",
]
[[package]]
name = "futures-io"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
+
+[[package]]
+name = "futures-lite"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+]
[[package]]
name = "futures-macro"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
+]
+
+[[package]]
+name = "futures-rustls"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd"
+dependencies = [
+ "futures-io",
+ "rustls 0.20.9",
+ "webpki",
]
[[package]]
name = "futures-sink"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
[[package]]
name = "futures-task"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
[[package]]
name = "futures-timer"
@@ -2357,9 +2738,9 @@ dependencies = [
[[package]]
name = "futures-util"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
dependencies = [
"futures-channel",
"futures-core",
@@ -2414,6 +2795,16 @@ dependencies = [
"wasm-bindgen",
]
+[[package]]
+name = "ghash"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1"
+dependencies = [
+ "opaque-debug",
+ "polyval",
+]
+
[[package]]
name = "gif"
version = "0.12.0"
@@ -2426,9 +2817,9 @@ dependencies = [
[[package]]
name = "gimli"
-version = "0.29.0"
+version = "0.31.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"
+checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
[[package]]
name = "glob"
@@ -2438,15 +2829,15 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
[[package]]
name = "globset"
-version = "0.4.14"
+version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
+checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19"
dependencies = [
"aho-corasick",
"bstr",
"log",
- "regex-automata 0.4.7",
- "regex-syntax 0.8.4",
+ "regex-automata 0.4.8",
+ "regex-syntax 0.8.5",
]
[[package]]
@@ -2528,7 +2919,7 @@ dependencies = [
"futures-sink",
"futures-util",
"http 0.2.12",
- "indexmap 2.2.6",
+ "indexmap 2.6.0",
"slab",
"tokio",
"tokio-util",
@@ -2537,9 +2928,9 @@ dependencies = [
[[package]]
name = "h2"
-version = "0.4.5"
+version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab"
+checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205"
dependencies = [
"atomic-waker",
"bytes",
@@ -2547,7 +2938,7 @@ dependencies = [
"futures-core",
"futures-sink",
"http 1.1.0",
- "indexmap 2.2.6",
+ "indexmap 2.6.0",
"slab",
"tokio",
"tokio-util",
@@ -2587,6 +2978,26 @@ dependencies = [
"serde",
]
+[[package]]
+name = "hashbrown"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb"
+dependencies = [
+ "allocator-api2",
+ "equivalent",
+ "foldhash",
+]
+
+[[package]]
+name = "hashlink"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
+dependencies = [
+ "hashbrown 0.14.5",
+]
+
[[package]]
name = "heck"
version = "0.4.1"
@@ -2601,19 +3012,15 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "helios"
-version = "0.6.1"
+version = "0.7.0"
dependencies = [
"alloy",
- "client",
- "common",
- "config",
- "consensus",
- "consensus-core",
"criterion",
"dirs",
"dotenv",
- "execution",
"eyre",
+ "helios-core",
+ "helios-ethereum",
"hex",
"plotters",
"pretty_assertions",
@@ -2626,18 +3033,160 @@ dependencies = [
"tracing-test",
]
+[[package]]
+name = "helios-cli"
+version = "0.7.0"
+dependencies = [
+ "alloy",
+ "clap",
+ "ctrlc",
+ "dirs",
+ "eyre",
+ "figment",
+ "futures",
+ "helios-core",
+ "helios-ethereum",
+ "helios-opstack",
+ "tokio",
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "helios-consensus-core"
+version = "0.7.0"
+dependencies = [
+ "alloy",
+ "alloy-rlp",
+ "bls12_381",
+ "ethereum_ssz 0.6.0",
+ "ethereum_ssz_derive 0.6.0",
+ "eyre",
+ "getrandom 0.2.15",
+ "serde",
+ "serde_yaml",
+ "sha2 0.9.9",
+ "snap",
+ "ssz_types",
+ "superstruct",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "tree_hash",
+ "tree_hash_derive",
+ "typenum",
+ "wasmtimer",
+ "zduny-wasm-timer",
+]
+
+[[package]]
+name = "helios-core"
+version = "0.7.0"
+dependencies = [
+ "alloy",
+ "async-trait",
+ "eyre",
+ "futures",
+ "gloo-timers 0.3.0",
+ "hex",
+ "jsonrpsee",
+ "openssl",
+ "parking_lot 0.12.3",
+ "reqwest",
+ "revm",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "triehash-ethereum",
+ "wasm-bindgen-futures",
+ "wasmtimer",
+]
+
+[[package]]
+name = "helios-ethereum"
+version = "0.7.0"
+dependencies = [
+ "alloy",
+ "async-trait",
+ "chrono",
+ "dirs",
+ "eyre",
+ "figment",
+ "futures",
+ "getrandom 0.2.15",
+ "helios-consensus-core",
+ "helios-core",
+ "hex",
+ "openssl",
+ "parking_lot 0.12.3",
+ "reqwest",
+ "retri",
+ "revm",
+ "serde",
+ "serde_json",
+ "serde_yaml",
+ "strum",
+ "superstruct",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "tree_hash",
+ "triehash-ethereum",
+ "typenum",
+ "wasm-bindgen-futures",
+]
+
+[[package]]
+name = "helios-opstack"
+version = "0.7.0"
+dependencies = [
+ "alloy",
+ "alloy-rlp",
+ "axum",
+ "clap",
+ "discv5",
+ "ethereum_ssz 0.6.0",
+ "ethereum_ssz_derive 0.6.0",
+ "eyre",
+ "figment",
+ "futures",
+ "getrandom 0.2.15",
+ "helios-core",
+ "hex",
+ "libp2p",
+ "libp2p-identity",
+ "op-alloy-consensus",
+ "op-alloy-network",
+ "op-alloy-rpc-types",
+ "parking_lot 0.12.3",
+ "reqwest",
+ "revm",
+ "serde",
+ "sha2 0.9.9",
+ "snap",
+ "ssz_types",
+ "tokio",
+ "tracing",
+ "tracing-subscriber",
+ "triehash-ethereum",
+ "typenum",
+ "unsigned-varint",
+ "url",
+ "wasm-bindgen-futures",
+]
+
[[package]]
name = "helios-ts"
version = "0.1.0"
dependencies = [
"alloy",
- "client",
- "common",
- "config",
- "consensus",
"console_error_panic_hook",
- "execution",
"eyre",
+ "helios-core",
+ "helios-ethereum",
+ "helios-opstack",
"hex",
"serde",
"serde-wasm-bindgen",
@@ -2654,6 +3203,12 @@ version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+[[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+
[[package]]
name = "hex"
version = "0.4.3"
@@ -2669,6 +3224,31 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46"
+[[package]]
+name = "hex_fmt"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f"
+
+[[package]]
+name = "hkdf"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
+dependencies = [
+ "hmac 0.12.1",
+]
+
+[[package]]
+name = "hmac"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840"
+dependencies = [
+ "crypto-mac",
+ "digest 0.9.0",
+]
+
[[package]]
name = "hmac"
version = "0.12.1"
@@ -2678,6 +3258,28 @@ dependencies = [
"digest 0.10.7",
]
+[[package]]
+name = "hmac-drbg"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1"
+dependencies = [
+ "digest 0.9.0",
+ "generic-array",
+ "hmac 0.8.1",
+]
+
+[[package]]
+name = "hostname"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
+dependencies = [
+ "libc",
+ "match_cfg",
+ "winapi",
+]
+
[[package]]
name = "http"
version = "0.2.12"
@@ -2736,9 +3338,9 @@ dependencies = [
[[package]]
name = "httparse"
-version = "1.9.4"
+version = "1.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"
+checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946"
[[package]]
name = "httpdate"
@@ -2748,9 +3350,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "hyper"
-version = "0.14.30"
+version = "0.14.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9"
+checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85"
dependencies = [
"bytes",
"futures-channel",
@@ -2763,7 +3365,7 @@ dependencies = [
"httpdate",
"itoa",
"pin-project-lite",
- "socket2",
+ "socket2 0.5.7",
"tokio",
"tower-service",
"tracing",
@@ -2772,17 +3374,18 @@ dependencies = [
[[package]]
name = "hyper"
-version = "1.4.1"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05"
+checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a"
dependencies = [
"bytes",
"futures-channel",
"futures-util",
- "h2 0.4.5",
+ "h2 0.4.6",
"http 1.1.0",
"http-body 1.0.1",
"httparse",
+ "httpdate",
"itoa",
"pin-project-lite",
"smallvec",
@@ -2798,7 +3401,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
dependencies = [
"futures-util",
"http 0.2.12",
- "hyper 0.14.30",
+ "hyper 0.14.31",
"log",
"rustls 0.21.12",
"rustls-native-certs",
@@ -2808,15 +3411,15 @@ dependencies = [
[[package]]
name = "hyper-rustls"
-version = "0.27.2"
+version = "0.27.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155"
+checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333"
dependencies = [
"futures-util",
"http 1.1.0",
- "hyper 1.4.1",
+ "hyper 1.5.0",
"hyper-util",
- "rustls 0.23.12",
+ "rustls 0.23.15",
"rustls-pki-types",
"tokio",
"tokio-rustls 0.26.0",
@@ -2831,7 +3434,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
dependencies = [
"bytes",
"http-body-util",
- "hyper 1.4.1",
+ "hyper 1.5.0",
"hyper-util",
"native-tls",
"tokio",
@@ -2841,36 +3444,35 @@ dependencies = [
[[package]]
name = "hyper-util"
-version = "0.1.6"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956"
+checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b"
dependencies = [
"bytes",
"futures-channel",
"futures-util",
"http 1.1.0",
"http-body 1.0.1",
- "hyper 1.4.1",
+ "hyper 1.5.0",
"pin-project-lite",
- "socket2",
+ "socket2 0.5.7",
"tokio",
- "tower",
"tower-service",
"tracing",
]
[[package]]
name = "iana-time-zone"
-version = "0.1.60"
+version = "0.1.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
"wasm-bindgen",
- "windows-core",
+ "windows-core 0.52.0",
]
[[package]]
@@ -2890,33 +3492,73 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]]
name = "idna"
-version = "0.5.0"
+version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
dependencies = [
+ "matches",
"unicode-bidi",
"unicode-normalization",
]
[[package]]
-name = "image"
-version = "0.24.9"
+name = "idna"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
dependencies = [
- "bytemuck",
- "byteorder",
- "color_quant",
- "jpeg-decoder",
- "num-traits",
- "png",
+ "unicode-bidi",
+ "unicode-normalization",
]
[[package]]
-name = "impl-codec"
-version = "0.4.2"
+name = "if-addrs"
+version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53"
+checksum = "cabb0019d51a643781ff15c9c8a3e5dedc365c47211270f4e8f82812fedd8f0a"
+dependencies = [
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "if-watch"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6b0422c86d7ce0e97169cc42e04ae643caf278874a7a3c87b8150a220dc7e1e"
+dependencies = [
+ "async-io",
+ "core-foundation",
+ "fnv",
+ "futures",
+ "if-addrs",
+ "ipnet",
+ "log",
+ "rtnetlink",
+ "system-configuration 0.5.1",
+ "tokio",
+ "windows",
+]
+
+[[package]]
+name = "image"
+version = "0.24.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+ "color_quant",
+ "jpeg-decoder",
+ "num-traits",
+ "png",
+]
+
+[[package]]
+name = "impl-codec"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53"
dependencies = [
"parity-scale-codec 1.3.7",
]
@@ -3005,12 +3647,12 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.2.6"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
dependencies = [
"equivalent",
- "hashbrown 0.14.5",
+ "hashbrown 0.15.0",
"serde",
]
@@ -3020,6 +3662,24 @@ version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb"
+[[package]]
+name = "inout"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
+dependencies = [
+ "cfg-if",
+]
+
[[package]]
name = "interprocess"
version = "2.2.1"
@@ -3035,28 +3695,40 @@ dependencies = [
"windows-sys 0.52.0",
]
+[[package]]
+name = "ipconfig"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f"
+dependencies = [
+ "socket2 0.5.7",
+ "widestring",
+ "windows-sys 0.48.0",
+ "winreg",
+]
+
[[package]]
name = "ipnet"
-version = "2.9.0"
+version = "2.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708"
[[package]]
name = "is-terminal"
-version = "0.4.12"
+version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"
+checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
dependencies = [
- "hermit-abi",
+ "hermit-abi 0.4.0",
"libc",
"windows-sys 0.52.0",
]
[[package]]
name = "is_terminal_polyfill"
-version = "1.70.0"
+version = "1.70.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
+checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
[[package]]
name = "itertools"
@@ -3090,9 +3762,9 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
[[package]]
name = "js-sys"
-version = "0.3.69"
+version = "0.3.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9"
dependencies = [
"wasm-bindgen",
]
@@ -3143,15 +3815,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aaa4c4d5fb801dcc316d81f76422db259809037a86b3194ae538dd026b05ed7"
dependencies = [
"anyhow",
- "async-lock",
+ "async-lock 2.8.0",
"async-trait",
"beef",
"futures-timer",
"futures-util",
"globset",
- "hyper 0.14.30",
+ "hyper 0.14.31",
"jsonrpsee-types",
- "parking_lot",
+ "parking_lot 0.12.3",
"rand 0.8.5",
"rustc-hash",
"serde",
@@ -3171,7 +3843,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa7165efcbfbc951d180162ff28fe91b657ed81925e37a35e4a396ce12109f96"
dependencies = [
"async-trait",
- "hyper 0.14.30",
+ "hyper 0.14.31",
"hyper-rustls 0.24.2",
"jsonrpsee-core",
"jsonrpsee-types",
@@ -3179,7 +3851,7 @@ dependencies = [
"serde_json",
"thiserror",
"tokio",
- "tower",
+ "tower 0.4.13",
"tracing",
]
@@ -3190,7 +3862,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21dc12b1d4f16a86e8c522823c4fab219c88c03eb7c924ec0501a64bf12e058b"
dependencies = [
"heck 0.4.1",
- "proc-macro-crate 1.3.1",
+ "proc-macro-crate 1.1.3",
"proc-macro2",
"quote",
"syn 1.0.109",
@@ -3203,7 +3875,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e79d78cfd5abd8394da10753723093c3ff64391602941c9c4b1d80a3414fd53"
dependencies = [
"futures-util",
- "hyper 0.14.30",
+ "hyper 0.14.31",
"jsonrpsee-core",
"jsonrpsee-types",
"serde",
@@ -3212,7 +3884,7 @@ dependencies = [
"tokio",
"tokio-stream",
"tokio-util",
- "tower",
+ "tower 0.4.13",
"tracing",
]
@@ -3261,8 +3933,8 @@ checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f"
dependencies = [
"base64 0.21.7",
"js-sys",
- "pem",
- "ring",
+ "pem 3.0.4",
+ "ring 0.17.8",
"serde",
"serde_json",
"simple_asn1",
@@ -3270,22 +3942,32 @@ dependencies = [
[[package]]
name = "k256"
-version = "0.13.3"
+version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b"
+checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b"
dependencies = [
"cfg-if",
"ecdsa",
"elliptic-curve",
"once_cell",
"sha2 0.10.8",
+ "signature",
+]
+
+[[package]]
+name = "keccak"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654"
+dependencies = [
+ "cpufeatures",
]
[[package]]
name = "keccak-asm"
-version = "0.1.1"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47a3633291834c4fbebf8673acbc1b04ec9d151418ff9b8e26dcd79129928758"
+checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6"
dependencies = [
"digest 0.10.7",
"sha3-asm",
@@ -3323,14 +4005,14 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
dependencies = [
- "spin",
+ "spin 0.9.8",
]
[[package]]
name = "libc"
-version = "0.2.155"
+version = "0.2.161"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
+checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1"
[[package]]
name = "libloading"
@@ -3348,6 +4030,334 @@ version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
+[[package]]
+name = "libp2p"
+version = "0.51.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f35eae38201a993ece6bdc823292d6abd1bffed1c4d0f4a3517d2bd8e1d917fe"
+dependencies = [
+ "bytes",
+ "futures",
+ "futures-timer",
+ "getrandom 0.2.15",
+ "instant",
+ "libp2p-allow-block-list",
+ "libp2p-connection-limits",
+ "libp2p-core",
+ "libp2p-dns",
+ "libp2p-gossipsub",
+ "libp2p-identity",
+ "libp2p-mdns",
+ "libp2p-metrics",
+ "libp2p-mplex",
+ "libp2p-noise",
+ "libp2p-ping",
+ "libp2p-quic",
+ "libp2p-swarm",
+ "libp2p-tcp",
+ "multiaddr",
+ "pin-project",
+]
+
+[[package]]
+name = "libp2p-allow-block-list"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "510daa05efbc25184458db837f6f9a5143888f1caa742426d92e1833ddd38a50"
+dependencies = [
+ "libp2p-core",
+ "libp2p-identity",
+ "libp2p-swarm",
+ "void",
+]
+
+[[package]]
+name = "libp2p-connection-limits"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4caa33f1d26ed664c4fe2cca81a08c8e07d4c1c04f2f4ac7655c2dd85467fda0"
+dependencies = [
+ "libp2p-core",
+ "libp2p-identity",
+ "libp2p-swarm",
+ "void",
+]
+
+[[package]]
+name = "libp2p-core"
+version = "0.39.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c1df63c0b582aa434fb09b2d86897fa2b419ffeccf934b36f87fcedc8e835c2"
+dependencies = [
+ "either",
+ "fnv",
+ "futures",
+ "futures-timer",
+ "instant",
+ "libp2p-identity",
+ "log",
+ "multiaddr",
+ "multihash",
+ "multistream-select",
+ "once_cell",
+ "parking_lot 0.12.3",
+ "pin-project",
+ "quick-protobuf",
+ "rand 0.8.5",
+ "rw-stream-sink",
+ "smallvec",
+ "thiserror",
+ "unsigned-varint",
+ "void",
+]
+
+[[package]]
+name = "libp2p-dns"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "146ff7034daae62077c415c2376b8057368042df6ab95f5432ad5e88568b1554"
+dependencies = [
+ "futures",
+ "libp2p-core",
+ "log",
+ "parking_lot 0.12.3",
+ "smallvec",
+ "trust-dns-resolver",
+]
+
+[[package]]
+name = "libp2p-gossipsub"
+version = "0.44.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70b34b6da8165c0bde35c82db8efda39b824776537e73973549e76cadb3a77c5"
+dependencies = [
+ "asynchronous-codec",
+ "base64 0.21.7",
+ "byteorder",
+ "bytes",
+ "either",
+ "fnv",
+ "futures",
+ "hex_fmt",
+ "instant",
+ "libp2p-core",
+ "libp2p-identity",
+ "libp2p-swarm",
+ "log",
+ "prometheus-client",
+ "quick-protobuf",
+ "quick-protobuf-codec",
+ "rand 0.8.5",
+ "regex",
+ "sha2 0.10.8",
+ "smallvec",
+ "thiserror",
+ "unsigned-varint",
+ "void",
+ "wasm-timer",
+]
+
+[[package]]
+name = "libp2p-identity"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce"
+dependencies = [
+ "asn1_der",
+ "bs58",
+ "ed25519-dalek",
+ "libsecp256k1",
+ "log",
+ "multiaddr",
+ "multihash",
+ "quick-protobuf",
+ "rand 0.8.5",
+ "sha2 0.10.8",
+ "thiserror",
+ "zeroize",
+]
+
+[[package]]
+name = "libp2p-mdns"
+version = "0.43.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19983e1f949f979a928f2c603de1cf180cc0dc23e4ac93a62651ccb18341460b"
+dependencies = [
+ "data-encoding",
+ "futures",
+ "if-watch",
+ "libp2p-core",
+ "libp2p-identity",
+ "libp2p-swarm",
+ "log",
+ "rand 0.8.5",
+ "smallvec",
+ "socket2 0.4.10",
+ "tokio",
+ "trust-dns-proto",
+ "void",
+]
+
+[[package]]
+name = "libp2p-metrics"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a42ec91e227d7d0dafa4ce88b333cdf5f277253873ab087555c92798db2ddd46"
+dependencies = [
+ "libp2p-core",
+ "libp2p-gossipsub",
+ "libp2p-ping",
+ "libp2p-swarm",
+ "prometheus-client",
+]
+
+[[package]]
+name = "libp2p-mplex"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d34780b514b159e6f3fd70ba3e72664ec89da28dca2d1e7856ee55e2c7031ba"
+dependencies = [
+ "asynchronous-codec",
+ "bytes",
+ "futures",
+ "libp2p-core",
+ "log",
+ "nohash-hasher",
+ "parking_lot 0.12.3",
+ "rand 0.8.5",
+ "smallvec",
+ "unsigned-varint",
+]
+
+[[package]]
+name = "libp2p-noise"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c3673da89d29936bc6435bafc638e2f184180d554ce844db65915113f86ec5e"
+dependencies = [
+ "bytes",
+ "curve25519-dalek 3.2.0",
+ "futures",
+ "libp2p-core",
+ "libp2p-identity",
+ "log",
+ "once_cell",
+ "quick-protobuf",
+ "rand 0.8.5",
+ "sha2 0.10.8",
+ "snow",
+ "static_assertions",
+ "thiserror",
+ "x25519-dalek",
+ "zeroize",
+]
+
+[[package]]
+name = "libp2p-ping"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e57759c19c28a73ef1eb3585ca410cefb72c1a709fcf6de1612a378e4219202"
+dependencies = [
+ "either",
+ "futures",
+ "futures-timer",
+ "instant",
+ "libp2p-core",
+ "libp2p-swarm",
+ "log",
+ "rand 0.8.5",
+ "void",
+]
+
+[[package]]
+name = "libp2p-quic"
+version = "0.7.0-alpha.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6b26abd81cd2398382a1edfe739b539775be8a90fa6914f39b2ab49571ec735"
+dependencies = [
+ "bytes",
+ "futures",
+ "futures-timer",
+ "if-watch",
+ "libp2p-core",
+ "libp2p-identity",
+ "libp2p-tls",
+ "log",
+ "parking_lot 0.12.3",
+ "quinn-proto",
+ "rand 0.8.5",
+ "rustls 0.20.9",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "libp2p-swarm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "903b3d592d7694e56204d211f29d31bc004be99386644ba8731fc3e3ef27b296"
+dependencies = [
+ "either",
+ "fnv",
+ "futures",
+ "futures-timer",
+ "instant",
+ "libp2p-core",
+ "libp2p-identity",
+ "libp2p-swarm-derive",
+ "log",
+ "rand 0.8.5",
+ "smallvec",
+ "tokio",
+ "void",
+]
+
+[[package]]
+name = "libp2p-swarm-derive"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fba456131824ab6acd4c7bf61e9c0f0a3014b5fc9868ccb8e10d344594cdc4f"
+dependencies = [
+ "heck 0.4.1",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "libp2p-tcp"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33d33698596d7722d85d3ab0c86c2c322254fce1241e91208e3679b4eb3026cf"
+dependencies = [
+ "futures",
+ "futures-timer",
+ "if-watch",
+ "libc",
+ "libp2p-core",
+ "log",
+ "socket2 0.4.10",
+ "tokio",
+]
+
+[[package]]
+name = "libp2p-tls"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff08d13d0dc66e5e9ba6279c1de417b84fa0d0adc3b03e5732928c180ec02781"
+dependencies = [
+ "futures",
+ "futures-rustls",
+ "libp2p-core",
+ "libp2p-identity",
+ "rcgen",
+ "ring 0.16.20",
+ "rustls 0.20.9",
+ "thiserror",
+ "webpki",
+ "x509-parser",
+ "yasna",
+]
+
[[package]]
name = "libredox"
version = "0.1.3"
@@ -3358,6 +4368,60 @@ dependencies = [
"libc",
]
+[[package]]
+name = "libsecp256k1"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1"
+dependencies = [
+ "arrayref",
+ "base64 0.13.1",
+ "digest 0.9.0",
+ "hmac-drbg",
+ "libsecp256k1-core",
+ "libsecp256k1-gen-ecmult",
+ "libsecp256k1-gen-genmult",
+ "rand 0.8.5",
+ "serde",
+ "sha2 0.9.9",
+ "typenum",
+]
+
+[[package]]
+name = "libsecp256k1-core"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451"
+dependencies = [
+ "crunchy",
+ "digest 0.9.0",
+ "subtle",
+]
+
+[[package]]
+name = "libsecp256k1-gen-ecmult"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809"
+dependencies = [
+ "libsecp256k1-core",
+]
+
+[[package]]
+name = "libsecp256k1-gen-genmult"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c"
+dependencies = [
+ "libsecp256k1-core",
+]
+
+[[package]]
+name = "linked-hash-map"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
+
[[package]]
name = "linux-raw-sys"
version = "0.4.14"
@@ -3382,13 +4446,28 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
[[package]]
name = "lru"
-version = "0.12.4"
+version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904"
+checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38"
dependencies = [
- "hashbrown 0.14.5",
+ "hashbrown 0.15.0",
]
+[[package]]
+name = "lru-cache"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
+dependencies = [
+ "linked-hash-map",
+]
+
+[[package]]
+name = "match_cfg"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
+
[[package]]
name = "matchers"
version = "0.1.0"
@@ -3398,6 +4477,18 @@ dependencies = [
"regex-automata 0.1.10",
]
+[[package]]
+name = "matches"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
+
+[[package]]
+name = "matchit"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
+
[[package]]
name = "memchr"
version = "2.7.4"
@@ -3410,28 +4501,119 @@ version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+[[package]]
+name = "minicov"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c71e683cd655513b99affab7d317deb690528255a0d5f717f1024093c12b169"
+dependencies = [
+ "cc",
+ "walkdir",
+]
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
[[package]]
name = "miniz_oxide"
-version = "0.7.4"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
+checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
dependencies = [
- "adler",
+ "adler2",
"simd-adler32",
]
[[package]]
name = "mio"
-version = "1.0.1"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4"
+checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
dependencies = [
- "hermit-abi",
+ "hermit-abi 0.3.9",
"libc",
"wasi 0.11.0+wasi-snapshot-preview1",
"windows-sys 0.52.0",
]
+[[package]]
+name = "more-asserts"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e"
+
+[[package]]
+name = "multiaddr"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b36f567c7099511fa8612bbbb52dda2419ce0bdbacf31714e3a5ffdb766d3bd"
+dependencies = [
+ "arrayref",
+ "byteorder",
+ "data-encoding",
+ "log",
+ "multibase",
+ "multihash",
+ "percent-encoding",
+ "serde",
+ "static_assertions",
+ "unsigned-varint",
+ "url",
+]
+
+[[package]]
+name = "multibase"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404"
+dependencies = [
+ "base-x",
+ "data-encoding",
+ "data-encoding-macro",
+]
+
+[[package]]
+name = "multihash"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "835d6ff01d610179fbce3de1694d007e500bf33a7f29689838941d6bf783ae40"
+dependencies = [
+ "core2",
+ "multihash-derive",
+ "unsigned-varint",
+]
+
+[[package]]
+name = "multihash-derive"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d6d4752e6230d8ef7adf7bd5d8c4b1f6561c1014c5ba9a37445ccefe18aa1db"
+dependencies = [
+ "proc-macro-crate 1.1.3",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "synstructure",
+]
+
+[[package]]
+name = "multistream-select"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8552ab875c1313b97b8d20cb857b9fd63e2d1d6a0a1b53ce9821e575405f27a"
+dependencies = [
+ "bytes",
+ "futures",
+ "log",
+ "pin-project",
+ "smallvec",
+ "unsigned-varint",
+]
+
[[package]]
name = "native-tls"
version = "0.2.12"
@@ -3449,11 +4631,88 @@ dependencies = [
"tempfile",
]
+[[package]]
+name = "netlink-packet-core"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297"
+dependencies = [
+ "anyhow",
+ "byteorder",
+ "libc",
+ "netlink-packet-utils",
+]
+
+[[package]]
+name = "netlink-packet-route"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaab"
+dependencies = [
+ "anyhow",
+ "bitflags 1.3.2",
+ "byteorder",
+ "libc",
+ "netlink-packet-core",
+ "netlink-packet-utils",
+]
+
+[[package]]
+name = "netlink-packet-utils"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34"
+dependencies = [
+ "anyhow",
+ "byteorder",
+ "paste",
+ "thiserror",
+]
+
+[[package]]
+name = "netlink-proto"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6"
+dependencies = [
+ "bytes",
+ "futures",
+ "log",
+ "netlink-packet-core",
+ "netlink-sys",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "netlink-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "416060d346fbaf1f23f9512963e3e878f1a78e707cb699ba9215761754244307"
+dependencies = [
+ "bytes",
+ "futures",
+ "libc",
+ "log",
+ "tokio",
+]
+
[[package]]
name = "nix"
-version = "0.28.0"
+version = "0.24.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
+checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069"
+dependencies = [
+ "bitflags 1.3.2",
+ "cfg-if",
+ "libc",
+]
+
+[[package]]
+name = "nix"
+version = "0.29.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [
"bitflags 2.6.0",
"cfg-if",
@@ -3461,6 +4720,22 @@ dependencies = [
"libc",
]
+[[package]]
+name = "nohash-hasher"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
[[package]]
name = "nu-ansi-term"
version = "0.46.0"
@@ -3557,50 +4832,100 @@ version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
dependencies = [
- "hermit-abi",
+ "hermit-abi 0.3.9",
"libc",
]
[[package]]
name = "num_enum"
-version = "0.7.2"
+version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845"
+checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179"
dependencies = [
"num_enum_derive",
]
[[package]]
name = "num_enum_derive"
-version = "0.7.2"
+version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b"
+checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
name = "object"
-version = "0.36.1"
+version = "0.36.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce"
+checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e"
dependencies = [
"memchr",
]
[[package]]
-name = "once_cell"
-version = "1.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
-
-[[package]]
-name = "oorandom"
-version = "11.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
+name = "oid-registry"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff"
+dependencies = [
+ "asn1-rs",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
+
+[[package]]
+name = "oorandom"
+version = "11.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
+
+[[package]]
+name = "op-alloy-consensus"
+version = "0.1.5"
+source = "git+https://github.com/alloy-rs/op-alloy?tag=v0.1.5#ce7f25c524f1eb8346ded160abd37eccfbdee2ac"
+dependencies = [
+ "alloy-consensus",
+ "alloy-eips",
+ "alloy-primitives 0.7.7",
+ "alloy-rlp",
+ "alloy-serde",
+ "derive_more 0.99.18",
+ "serde",
+]
+
+[[package]]
+name = "op-alloy-network"
+version = "0.1.5"
+source = "git+https://github.com/alloy-rs/op-alloy?tag=v0.1.5#ce7f25c524f1eb8346ded160abd37eccfbdee2ac"
+dependencies = [
+ "alloy-consensus",
+ "alloy-network",
+ "alloy-primitives 0.7.7",
+ "alloy-rpc-types-eth",
+ "op-alloy-consensus",
+ "op-alloy-rpc-types",
+]
+
+[[package]]
+name = "op-alloy-rpc-types"
+version = "0.1.5"
+source = "git+https://github.com/alloy-rs/op-alloy?tag=v0.1.5#ce7f25c524f1eb8346ded160abd37eccfbdee2ac"
+dependencies = [
+ "alloy-network",
+ "alloy-primitives 0.7.7",
+ "alloy-rpc-types-eth",
+ "alloy-serde",
+ "op-alloy-consensus",
+ "serde",
+ "serde_json",
+]
[[package]]
name = "opaque-debug"
@@ -3610,9 +4935,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
[[package]]
name = "openssl"
-version = "0.10.66"
+version = "0.10.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1"
+checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5"
dependencies = [
"bitflags 2.6.0",
"cfg-if",
@@ -3631,7 +4956,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -3642,18 +4967,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-src"
-version = "300.3.1+3.3.1"
+version = "300.4.0+3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91"
+checksum = "a709e02f2b4aca747929cca5ed248880847c650233cf8b8cdc48f40aaf4898a6"
dependencies = [
"cc",
]
[[package]]
name = "openssl-sys"
-version = "0.9.103"
+version = "0.9.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6"
+checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741"
dependencies = [
"cc",
"libc",
@@ -3701,7 +5026,7 @@ version = "3.6.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee"
dependencies = [
- "arrayvec 0.7.4",
+ "arrayvec 0.7.6",
"bitvec 1.0.1",
"byte-slice-cast 1.2.2",
"impl-trait-for-tuples",
@@ -3715,12 +5040,29 @@ version = "3.6.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c"
dependencies = [
- "proc-macro-crate 3.1.0",
+ "proc-macro-crate 3.2.0",
"proc-macro2",
"quote",
"syn 1.0.109",
]
+[[package]]
+name = "parking"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
+
+[[package]]
+name = "parking_lot"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
+dependencies = [
+ "instant",
+ "lock_api",
+ "parking_lot_core 0.8.6",
+]
+
[[package]]
name = "parking_lot"
version = "0.12.3"
@@ -3728,7 +5070,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
dependencies = [
"lock_api",
- "parking_lot_core",
+ "parking_lot_core 0.9.10",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
+dependencies = [
+ "cfg-if",
+ "instant",
+ "libc",
+ "redox_syscall 0.2.16",
+ "smallvec",
+ "winapi",
]
[[package]]
@@ -3739,7 +5095,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
dependencies = [
"cfg-if",
"libc",
- "redox_syscall",
+ "redox_syscall 0.5.7",
"smallvec",
"windows-targets 0.52.6",
]
@@ -3766,7 +5122,7 @@ version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5cf07ef4804cfa9aea3b04a7bbdd5a40031dbb6b4f2cbaf2b011666c80c5b4f2"
dependencies = [
- "rustc_version 0.4.0",
+ "rustc_version 0.4.1",
]
[[package]]
@@ -3777,7 +5133,7 @@ checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467"
dependencies = [
"inlinable_string",
"pear_codegen",
- "yansi 1.0.1",
+ "yansi",
]
[[package]]
@@ -3789,7 +5145,16 @@ dependencies = [
"proc-macro2",
"proc-macro2-diagnostics",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
+]
+
+[[package]]
+name = "pem"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8"
+dependencies = [
+ "base64 0.13.1",
]
[[package]]
@@ -3810,9 +5175,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "pest"
-version = "2.7.11"
+version = "2.7.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95"
+checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442"
dependencies = [
"memchr",
"thiserror",
@@ -3826,27 +5191,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414"
dependencies = [
"futures",
- "rustc_version 0.4.0",
+ "rustc_version 0.4.1",
]
[[package]]
name = "pin-project"
-version = "1.1.5"
+version = "1.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
+checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
-version = "1.1.5"
+version = "1.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
+checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -3873,9 +5238,9 @@ dependencies = [
[[package]]
name = "pkg-config"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
[[package]]
name = "plain_hasher"
@@ -3888,9 +5253,9 @@ dependencies = [
[[package]]
name = "plotters"
-version = "0.3.6"
+version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3"
+checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
dependencies = [
"chrono",
"font-kit",
@@ -3908,15 +5273,15 @@ dependencies = [
[[package]]
name = "plotters-backend"
-version = "0.3.6"
+version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7"
+checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
[[package]]
name = "plotters-bitmap"
-version = "0.3.6"
+version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7e7f6fb8302456d7c264a94dada86f76d76e1a03e2294ee86ca7da92983b0a6"
+checksum = "72ce181e3f6bf82d6c1dc569103ca7b1bd964c60ba03d7e6cdfbb3e3eb7f7405"
dependencies = [
"gif",
"image",
@@ -3925,18 +5290,18 @@ dependencies = [
[[package]]
name = "plotters-svg"
-version = "0.3.6"
+version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705"
+checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
dependencies = [
"plotters-backend",
]
[[package]]
name = "png"
-version = "0.17.13"
+version = "0.17.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
+checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0"
dependencies = [
"bitflags 1.3.2",
"crc32fast",
@@ -3945,6 +5310,44 @@ dependencies = [
"miniz_oxide",
]
+[[package]]
+name = "polling"
+version = "3.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "hermit-abi 0.4.0",
+ "pin-project-lite",
+ "rustix",
+ "tracing",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "poly1305"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf"
+dependencies = [
+ "cpufeatures",
+ "opaque-debug",
+ "universal-hash",
+]
+
+[[package]]
+name = "polyval"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "opaque-debug",
+ "universal-hash",
+]
+
[[package]]
name = "powerfmt"
version = "0.2.0"
@@ -3953,18 +5356,21 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "ppv-lite86"
-version = "0.2.17"
+version = "0.2.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy",
+]
[[package]]
name = "pretty_assertions"
-version = "1.4.0"
+version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
+checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d"
dependencies = [
"diff",
- "yansi 0.5.1",
+ "yansi",
]
[[package]]
@@ -3995,21 +5401,21 @@ dependencies = [
[[package]]
name = "proc-macro-crate"
-version = "1.3.1"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a"
dependencies = [
- "once_cell",
- "toml_edit 0.19.15",
+ "thiserror",
+ "toml 0.5.11",
]
[[package]]
name = "proc-macro-crate"
-version = "3.1.0"
+version = "3.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
+checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b"
dependencies = [
- "toml_edit 0.21.1",
+ "toml_edit",
]
[[package]]
@@ -4038,9 +5444,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.86"
+version = "1.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
dependencies = [
"unicode-ident",
]
@@ -4053,9 +5459,32 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
"version_check",
- "yansi 1.0.1",
+ "yansi",
+]
+
+[[package]]
+name = "prometheus-client"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d6fa99d535dd930d1249e6c79cb3c2915f9172a540fe2b02a4c8f9ca954721e"
+dependencies = [
+ "dtoa",
+ "itoa",
+ "parking_lot 0.12.3",
+ "prometheus-client-derive-encode",
+]
+
+[[package]]
+name = "prometheus-client-derive-encode"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.84",
]
[[package]]
@@ -4072,7 +5501,7 @@ dependencies = [
"rand 0.8.5",
"rand_chacha 0.3.1",
"rand_xorshift",
- "regex-syntax 0.8.4",
+ "regex-syntax 0.8.5",
"rusty-fork",
"tempfile",
"unarray",
@@ -4084,11 +5513,51 @@ version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+[[package]]
+name = "quick-protobuf"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "quick-protobuf-codec"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1693116345026436eb2f10b677806169c1a1260c1c60eaaffe3fb5a29ae23d8b"
+dependencies = [
+ "asynchronous-codec",
+ "bytes",
+ "quick-protobuf",
+ "thiserror",
+ "unsigned-varint",
+]
+
+[[package]]
+name = "quinn-proto"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94b0b33c13a79f669c85defaf4c275dc86a0c0372807d0ca3d78e0bb87274863"
+dependencies = [
+ "bytes",
+ "rand 0.8.5",
+ "ring 0.16.20",
+ "rustc-hash",
+ "rustls 0.20.9",
+ "slab",
+ "thiserror",
+ "tinyvec",
+ "tracing",
+ "webpki",
+]
+
[[package]]
name = "quote"
-version = "1.0.36"
+version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
dependencies = [
"proc-macro2",
]
@@ -4205,6 +5674,18 @@ dependencies = [
"crossbeam-utils",
]
+[[package]]
+name = "rcgen"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b"
+dependencies = [
+ "pem 1.1.1",
+ "ring 0.16.20",
+ "time",
+ "yasna",
+]
+
[[package]]
name = "recvmsg"
version = "1.0.0"
@@ -4213,18 +5694,27 @@ checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175"
[[package]]
name = "redox_syscall"
-version = "0.5.3"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
+checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f"
dependencies = [
"bitflags 2.6.0",
]
[[package]]
name = "redox_users"
-version = "0.4.5"
+version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
+checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
dependencies = [
"getrandom 0.2.15",
"libredox",
@@ -4233,14 +5723,14 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.10.5"
+version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
+checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8"
dependencies = [
"aho-corasick",
"memchr",
- "regex-automata 0.4.7",
- "regex-syntax 0.8.4",
+ "regex-automata 0.4.8",
+ "regex-syntax 0.8.5",
]
[[package]]
@@ -4254,13 +5744,13 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.4.7"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
dependencies = [
"aho-corasick",
"memchr",
- "regex-syntax 0.8.4",
+ "regex-syntax 0.8.5",
]
[[package]]
@@ -4271,27 +5761,27 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
[[package]]
name = "regex-syntax"
-version = "0.8.4"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "reqwest"
-version = "0.12.5"
+version = "0.12.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37"
+checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b"
dependencies = [
"base64 0.22.1",
"bytes",
"encoding_rs",
"futures-core",
"futures-util",
- "h2 0.4.5",
+ "h2 0.4.6",
"http 1.1.0",
"http-body 1.0.1",
"http-body-util",
- "hyper 1.4.1",
- "hyper-rustls 0.27.2",
+ "hyper 1.5.0",
+ "hyper-rustls 0.27.3",
"hyper-tls",
"hyper-util",
"ipnet",
@@ -4302,12 +5792,12 @@ dependencies = [
"once_cell",
"percent-encoding",
"pin-project-lite",
- "rustls-pemfile 2.1.2",
+ "rustls-pemfile 2.2.0",
"serde",
"serde_json",
"serde_urlencoded",
- "sync_wrapper",
- "system-configuration",
+ "sync_wrapper 1.0.1",
+ "system-configuration 0.6.1",
"tokio",
"tokio-native-tls",
"tower-service",
@@ -4315,7 +5805,17 @@ dependencies = [
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
- "winreg",
+ "windows-registry",
+]
+
+[[package]]
+name = "resolv-conf"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00"
+dependencies = [
+ "hostname",
+ "quick-error",
]
[[package]]
@@ -4377,7 +5877,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fc4311037ee093ec50ec734e1424fcb3e12d535c6cef683b75d1c064639630c"
dependencies = [
"alloy-eips",
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"auto_impl",
"bitflags 2.6.0",
"bitvec 1.0.1",
@@ -4397,10 +5897,25 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
dependencies = [
- "hmac",
+ "hmac 0.12.1",
"subtle",
]
+[[package]]
+name = "ring"
+version = "0.16.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
+dependencies = [
+ "cc",
+ "libc",
+ "once_cell",
+ "spin 0.5.2",
+ "untrusted 0.7.1",
+ "web-sys",
+ "winapi",
+]
+
[[package]]
name = "ring"
version = "0.17.8"
@@ -4411,8 +5926,8 @@ dependencies = [
"cfg-if",
"getrandom 0.2.15",
"libc",
- "spin",
- "untrusted",
+ "spin 0.9.8",
+ "untrusted 0.9.0",
"windows-sys 0.52.0",
]
@@ -4444,6 +5959,21 @@ dependencies = [
"rustc-hex",
]
+[[package]]
+name = "rtnetlink"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0"
+dependencies = [
+ "futures",
+ "log",
+ "netlink-packet-route",
+ "netlink-proto",
+ "nix 0.24.3",
+ "thiserror",
+ "tokio",
+]
+
[[package]]
name = "ruint"
version = "1.12.3"
@@ -4504,18 +6034,27 @@ dependencies = [
[[package]]
name = "rustc_version"
-version = "0.4.0"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
dependencies = [
"semver 1.0.23",
]
+[[package]]
+name = "rusticata-macros"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632"
+dependencies = [
+ "nom",
+]
+
[[package]]
name = "rustix"
-version = "0.38.34"
+version = "0.38.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
+checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
dependencies = [
"bitflags 2.6.0",
"errno",
@@ -4524,6 +6063,18 @@ dependencies = [
"windows-sys 0.52.0",
]
+[[package]]
+name = "rustls"
+version = "0.20.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99"
+dependencies = [
+ "log",
+ "ring 0.16.20",
+ "sct",
+ "webpki",
+]
+
[[package]]
name = "rustls"
version = "0.21.12"
@@ -4531,21 +6082,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e"
dependencies = [
"log",
- "ring",
+ "ring 0.17.8",
"rustls-webpki 0.101.7",
"sct",
]
[[package]]
name = "rustls"
-version = "0.23.12"
+version = "0.23.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044"
+checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993"
dependencies = [
"once_cell",
- "ring",
+ "ring 0.17.8",
"rustls-pki-types",
- "rustls-webpki 0.102.6",
+ "rustls-webpki 0.102.8",
"subtle",
"zeroize",
]
@@ -4573,19 +6124,18 @@ dependencies = [
[[package]]
name = "rustls-pemfile"
-version = "2.1.2"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d"
+checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
dependencies = [
- "base64 0.22.1",
"rustls-pki-types",
]
[[package]]
name = "rustls-pki-types"
-version = "1.7.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d"
+checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b"
[[package]]
name = "rustls-webpki"
@@ -4593,26 +6143,26 @@ version = "0.101.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
dependencies = [
- "ring",
- "untrusted",
+ "ring 0.17.8",
+ "untrusted 0.9.0",
]
[[package]]
name = "rustls-webpki"
-version = "0.102.6"
+version = "0.102.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e"
+checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"
dependencies = [
- "ring",
+ "ring 0.17.8",
"rustls-pki-types",
- "untrusted",
+ "untrusted 0.9.0",
]
[[package]]
name = "rustversion"
-version = "1.0.17"
+version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
+checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248"
[[package]]
name = "rusty-fork"
@@ -4626,6 +6176,17 @@ dependencies = [
"wait-timeout",
]
+[[package]]
+name = "rw-stream-sink"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26338f5e09bb721b85b135ea05af7767c90b52f6de4f087d4f4a3a9d64e7dc04"
+dependencies = [
+ "futures",
+ "pin-project",
+ "static_assertions",
+]
+
[[package]]
name = "ryu"
version = "1.0.18"
@@ -4643,11 +6204,11 @@ dependencies = [
[[package]]
name = "schannel"
-version = "0.1.23"
+version = "0.1.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
+checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1"
dependencies = [
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -4668,8 +6229,8 @@ version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
dependencies = [
- "ring",
- "untrusted",
+ "ring 0.17.8",
+ "untrusted 0.9.0",
]
[[package]]
@@ -4688,9 +6249,9 @@ dependencies = [
[[package]]
name = "secp256k1"
-version = "0.28.2"
+version = "0.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10"
+checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113"
dependencies = [
"rand 0.8.5",
"secp256k1-sys",
@@ -4698,9 +6259,9 @@ dependencies = [
[[package]]
name = "secp256k1-sys"
-version = "0.9.2"
+version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb"
+checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9"
dependencies = [
"cc",
]
@@ -4720,9 +6281,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
-version = "2.11.1"
+version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf"
+checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6"
dependencies = [
"core-foundation-sys",
"libc",
@@ -4766,9 +6327,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
[[package]]
name = "serde"
-version = "1.0.204"
+version = "1.0.213"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
+checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1"
dependencies = [
"serde_derive",
]
@@ -4786,32 +6347,43 @@ dependencies = [
[[package]]
name = "serde_derive"
-version = "1.0.204"
+version = "1.0.213"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
+checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
name = "serde_json"
-version = "1.0.120"
+version = "1.0.132"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
+checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03"
dependencies = [
- "indexmap 2.2.6",
+ "indexmap 2.6.0",
"itoa",
+ "memchr",
"ryu",
"serde",
]
+[[package]]
+name = "serde_path_to_error"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6"
+dependencies = [
+ "itoa",
+ "serde",
+]
+
[[package]]
name = "serde_spanned"
-version = "0.6.6"
+version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0"
+checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
dependencies = [
"serde",
]
@@ -4830,15 +6402,15 @@ dependencies = [
[[package]]
name = "serde_with"
-version = "3.9.0"
+version = "3.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857"
+checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817"
dependencies = [
"base64 0.22.1",
"chrono",
"hex",
"indexmap 1.9.3",
- "indexmap 2.2.6",
+ "indexmap 2.6.0",
"serde",
"serde_derive",
"serde_json",
@@ -4848,14 +6420,14 @@ dependencies = [
[[package]]
name = "serde_with_macros"
-version = "3.9.0"
+version = "3.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350"
+checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d"
dependencies = [
"darling 0.20.10",
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -4864,7 +6436,7 @@ version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
- "indexmap 2.2.6",
+ "indexmap 2.6.0",
"itoa",
"ryu",
"serde",
@@ -4919,11 +6491,21 @@ dependencies = [
"digest 0.10.7",
]
+[[package]]
+name = "sha3"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
+dependencies = [
+ "digest 0.10.7",
+ "keccak",
+]
+
[[package]]
name = "sha3-asm"
-version = "0.1.1"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9b57fd861253bff08bb1919e995f90ba8f4889de2726091c8876f3a4e823b40"
+checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46"
dependencies = [
"cc",
"cfg-if",
@@ -4938,6 +6520,12 @@ dependencies = [
"lazy_static",
]
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
[[package]]
name = "signal-hook-registry"
version = "1.4.2"
@@ -4988,7 +6576,40 @@ dependencies = [
name = "smallvec"
version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "snap"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b"
+
+[[package]]
+name = "snow"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "850948bee068e713b8ab860fe1adc4d109676ab4c3b621fd8147f06b261f2f85"
+dependencies = [
+ "aes-gcm",
+ "blake2",
+ "chacha20poly1305",
+ "curve25519-dalek 4.1.3",
+ "rand_core 0.6.4",
+ "ring 0.17.8",
+ "rustc_version 0.4.1",
+ "sha2 0.10.8",
+ "subtle",
+]
+
+[[package]]
+name = "socket2"
+version = "0.4.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
+dependencies = [
+ "libc",
+ "winapi",
+]
[[package]]
name = "socket2"
@@ -5016,6 +6637,12 @@ dependencies = [
"sha-1",
]
+[[package]]
+name = "spin"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+
[[package]]
name = "spin"
version = "0.9.8"
@@ -5086,7 +6713,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustversion",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -5135,9 +6762,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.72"
+version = "2.0.84"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
+checksum = "6a2c4efbc0b0670e3d41f388e3cb936ff364bf681703b4c92ae26ca509966111"
dependencies = [
"proc-macro2",
"quote",
@@ -5153,14 +6780,35 @@ dependencies = [
"paste",
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
+[[package]]
+name = "sync_wrapper"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+
[[package]]
name = "sync_wrapper"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.12.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "unicode-xid",
+]
[[package]]
name = "system-configuration"
@@ -5170,7 +6818,18 @@ checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
dependencies = [
"bitflags 1.3.2",
"core-foundation",
- "system-configuration-sys",
+ "system-configuration-sys 0.5.0",
+]
+
+[[package]]
+name = "system-configuration"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
+dependencies = [
+ "bitflags 2.6.0",
+ "core-foundation",
+ "system-configuration-sys 0.6.0",
]
[[package]]
@@ -5183,6 +6842,16 @@ dependencies = [
"libc",
]
+[[package]]
+name = "system-configuration-sys"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
[[package]]
name = "tap"
version = "1.0.1"
@@ -5191,34 +6860,35 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
[[package]]
name = "tempfile"
-version = "3.10.1"
+version = "3.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
+checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
dependencies = [
"cfg-if",
"fastrand",
+ "once_cell",
"rustix",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
]
[[package]]
name = "thiserror"
-version = "1.0.63"
+version = "1.0.65"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.63"
+version = "1.0.65"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -5316,18 +6986,18 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
-version = "1.39.1"
+version = "1.41.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d040ac2b29ab03b09d4129c2f5bbd012a3ac2f79d38ff506a4bf8dd34b0eac8a"
+checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb"
dependencies = [
"backtrace",
"bytes",
"libc",
"mio",
- "parking_lot",
+ "parking_lot 0.12.3",
"pin-project-lite",
"signal-hook-registry",
- "socket2",
+ "socket2 0.5.7",
"tokio-macros",
"windows-sys 0.52.0",
]
@@ -5340,7 +7010,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -5369,16 +7039,16 @@ version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
dependencies = [
- "rustls 0.23.12",
+ "rustls 0.23.15",
"rustls-pki-types",
"tokio",
]
[[package]]
name = "tokio-stream"
-version = "0.1.15"
+version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af"
+checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1"
dependencies = [
"futures-core",
"pin-project-lite",
@@ -5394,82 +7064,70 @@ checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd"
dependencies = [
"futures-util",
"log",
- "rustls 0.23.12",
+ "rustls 0.23.15",
"rustls-pki-types",
"tokio",
"tokio-rustls 0.26.0",
"tungstenite",
- "webpki-roots 0.26.3",
+ "webpki-roots 0.26.6",
]
[[package]]
name = "tokio-util"
-version = "0.7.11"
+version = "0.7.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1"
+checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a"
dependencies = [
"bytes",
"futures-core",
"futures-io",
"futures-sink",
"pin-project-lite",
+ "slab",
"tokio",
]
[[package]]
name = "toml"
-version = "0.8.15"
+version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
dependencies = [
"serde",
- "serde_spanned",
- "toml_datetime",
- "toml_edit 0.22.16",
]
[[package]]
-name = "toml_datetime"
-version = "0.6.6"
+name = "toml"
+version = "0.8.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"
+checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
dependencies = [
"serde",
-]
-
-[[package]]
-name = "toml_edit"
-version = "0.19.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
-dependencies = [
- "indexmap 2.2.6",
+ "serde_spanned",
"toml_datetime",
- "winnow 0.5.40",
+ "toml_edit",
]
[[package]]
-name = "toml_edit"
-version = "0.21.1"
+name = "toml_datetime"
+version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
dependencies = [
- "indexmap 2.2.6",
- "toml_datetime",
- "winnow 0.5.40",
+ "serde",
]
[[package]]
name = "toml_edit"
-version = "0.22.16"
+version = "0.22.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788"
+checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
dependencies = [
- "indexmap 2.2.6",
+ "indexmap 2.6.0",
"serde",
"serde_spanned",
"toml_datetime",
- "winnow 0.6.15",
+ "winnow",
]
[[package]]
@@ -5482,6 +7140,21 @@ dependencies = [
"futures-util",
"pin-project",
"pin-project-lite",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project-lite",
+ "sync_wrapper 0.1.2",
"tokio",
"tower-layer",
"tower-service",
@@ -5490,15 +7163,15 @@ dependencies = [
[[package]]
name = "tower-layer"
-version = "0.3.2"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
[[package]]
name = "tower-service"
-version = "0.3.2"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
[[package]]
name = "tracing"
@@ -5520,7 +7193,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -5580,7 +7253,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568"
dependencies = [
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -5589,7 +7262,7 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f113108f55d589941862727b5a74f75276a54c157060983611d99f7f7fa6368"
dependencies = [
- "alloy-primitives",
+ "alloy-primitives 0.7.7",
"ethereum_hashing",
"smallvec",
]
@@ -5603,7 +7276,7 @@ dependencies = [
"darling 0.20.10",
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -5626,6 +7299,52 @@ dependencies = [
"triehash",
]
+[[package]]
+name = "trust-dns-proto"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26"
+dependencies = [
+ "async-trait",
+ "cfg-if",
+ "data-encoding",
+ "enum-as-inner",
+ "futures-channel",
+ "futures-io",
+ "futures-util",
+ "idna 0.2.3",
+ "ipnet",
+ "lazy_static",
+ "rand 0.8.5",
+ "smallvec",
+ "socket2 0.4.10",
+ "thiserror",
+ "tinyvec",
+ "tokio",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "trust-dns-resolver"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfe"
+dependencies = [
+ "cfg-if",
+ "futures-util",
+ "ipconfig",
+ "lazy_static",
+ "lru-cache",
+ "parking_lot 0.12.3",
+ "resolv-conf",
+ "smallvec",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "trust-dns-proto",
+]
+
[[package]]
name = "try-lock"
version = "0.2.5"
@@ -5651,7 +7370,7 @@ dependencies = [
"httparse",
"log",
"rand 0.8.5",
- "rustls 0.23.12",
+ "rustls 0.23.15",
"rustls-pki-types",
"sha1",
"thiserror",
@@ -5666,9 +7385,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
[[package]]
name = "ucd-trie"
-version = "0.1.6"
+version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
+checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
[[package]]
name = "uint"
@@ -5711,31 +7430,63 @@ dependencies = [
[[package]]
name = "unicode-bidi"
-version = "0.3.15"
+version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893"
[[package]]
name = "unicode-ident"
-version = "1.0.12"
+version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
[[package]]
name = "unicode-normalization"
-version = "0.1.23"
+version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956"
dependencies = [
"tinyvec",
]
+[[package]]
+name = "unicode-xid"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
+
+[[package]]
+name = "universal-hash"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
+dependencies = [
+ "crypto-common",
+ "subtle",
+]
+
[[package]]
name = "unsafe-libyaml"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
+[[package]]
+name = "unsigned-varint"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105"
+dependencies = [
+ "asynchronous-codec",
+ "bytes",
+]
+
+[[package]]
+name = "untrusted"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+
[[package]]
name = "untrusted"
version = "0.9.0"
@@ -5749,8 +7500,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
dependencies = [
"form_urlencoded",
- "idna",
+ "idna 0.5.0",
"percent-encoding",
+ "serde",
]
[[package]]
@@ -5779,9 +7531,15 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "version_check"
-version = "0.9.4"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "void"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
[[package]]
name = "wait-timeout"
@@ -5825,34 +7583,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.92"
+version = "0.2.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e"
dependencies = [
"cfg-if",
+ "once_cell",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.92"
+version = "0.2.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358"
dependencies = [
"bumpalo",
"log",
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.42"
+version = "0.4.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
+checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b"
dependencies = [
"cfg-if",
"js-sys",
@@ -5862,9 +7621,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.92"
+version = "0.2.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -5872,31 +7631,32 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.92"
+version = "0.2.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.92"
+version = "0.2.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d"
[[package]]
name = "wasm-bindgen-test"
-version = "0.3.42"
+version = "0.3.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9bf62a58e0780af3e852044583deee40983e5886da43a271dd772379987667b"
+checksum = "68497a05fb21143a08a7d24fc81763384a3072ee43c44e86aad1744d6adef9d9"
dependencies = [
"console_error_panic_hook",
"js-sys",
+ "minicov",
"scoped-tls",
"wasm-bindgen",
"wasm-bindgen-futures",
@@ -5905,25 +7665,64 @@ dependencies = [
[[package]]
name = "wasm-bindgen-test-macro"
-version = "0.3.42"
+version = "0.3.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0"
+checksum = "4b8220be1fa9e4c889b30fd207d4906657e7e90b12e0e6b0c8b8d8709f5de021"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
+]
+
+[[package]]
+name = "wasm-timer"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f"
+dependencies = [
+ "futures",
+ "js-sys",
+ "parking_lot 0.11.2",
+ "pin-utils",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "wasmtimer"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f656cd8858a5164932d8a90f936700860976ec21eb00e0fe2aa8cab13f6b4cf"
+dependencies = [
+ "futures",
+ "js-sys",
+ "parking_lot 0.12.3",
+ "pin-utils",
+ "slab",
+ "wasm-bindgen",
]
[[package]]
name = "web-sys"
-version = "0.3.69"
+version = "0.3.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
+checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112"
dependencies = [
"js-sys",
"wasm-bindgen",
]
+[[package]]
+name = "webpki"
+version = "0.22.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53"
+dependencies = [
+ "ring 0.17.8",
+ "untrusted 0.9.0",
+]
+
[[package]]
name = "webpki-roots"
version = "0.24.0"
@@ -5935,9 +7734,9 @@ dependencies = [
[[package]]
name = "webpki-roots"
-version = "0.26.3"
+version = "0.26.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd"
+checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958"
dependencies = [
"rustls-pki-types",
]
@@ -5972,11 +7771,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.8"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
dependencies = [
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -5985,6 +7784,25 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+[[package]]
+name = "windows"
+version = "0.51.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9"
+dependencies = [
+ "windows-core 0.51.1",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.51.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
[[package]]
name = "windows-core"
version = "0.52.0"
@@ -5994,6 +7812,36 @@ dependencies = [
"windows-targets 0.52.6",
]
+[[package]]
+name = "windows-registry"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
+dependencies = [
+ "windows-result",
+ "windows-strings",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
+dependencies = [
+ "windows-result",
+ "windows-targets 0.52.6",
+]
+
[[package]]
name = "windows-sys"
version = "0.48.0"
@@ -6012,6 +7860,15 @@ dependencies = [
"windows-targets 0.52.6",
]
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
[[package]]
name = "windows-targets"
version = "0.48.5"
@@ -6135,27 +7992,18 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winnow"
-version = "0.5.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "winnow"
-version = "0.6.15"
+version = "0.6.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "557404e450152cd6795bb558bca69e43c585055f4606e3bcae5894fc6dac9ba0"
+checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b"
dependencies = [
"memchr",
]
[[package]]
name = "winreg"
-version = "0.52.0"
+version = "0.50.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
dependencies = [
"cfg-if",
"windows-sys 0.48.0",
@@ -6181,7 +8029,7 @@ dependencies = [
"js-sys",
"log",
"pharos",
- "rustc_version 0.4.0",
+ "rustc_version 0.4.1",
"send_wrapper 0.6.0",
"thiserror",
"wasm-bindgen",
@@ -6199,10 +8047,33 @@ dependencies = [
]
[[package]]
-name = "yansi"
-version = "0.5.1"
+name = "x25519-dalek"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a0c105152107e3b96f6a00a65e86ce82d9b125230e1c4302940eca58ff71f4f"
+dependencies = [
+ "curve25519-dalek 3.2.0",
+ "rand_core 0.5.1",
+ "zeroize",
+]
+
+[[package]]
+name = "x509-parser"
+version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8"
+dependencies = [
+ "asn1-rs",
+ "base64 0.13.1",
+ "data-encoding",
+ "der-parser",
+ "lazy_static",
+ "nom",
+ "oid-registry",
+ "rusticata-macros",
+ "thiserror",
+ "time",
+]
[[package]]
name = "yansi"
@@ -6210,13 +8081,21 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
+[[package]]
+name = "yasna"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd"
+dependencies = [
+ "time",
+]
+
[[package]]
name = "yeslogic-fontconfig-sys"
-version = "5.0.0"
+version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffb6b23999a8b1a997bf47c7bb4d19ad4029c3327bb3386ebe0a5ff584b33c7a"
+checksum = "503a066b4c037c440169d995b869046827dbc71263f6e8f3be6d77d4f3229dbd"
dependencies = [
- "cstr",
"dlib",
"once_cell",
"pkg-config",
@@ -6230,7 +8109,7 @@ checksum = "0f22d6a02cbc84ea1993b0b341833a55a0866a3378c3a76e0ca664bc2574e370"
dependencies = [
"futures",
"js-sys",
- "parking_lot",
+ "parking_lot 0.12.3",
"pin-utils",
"wasm-bindgen",
"wasm-bindgen-futures",
@@ -6243,6 +8122,7 @@ version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
dependencies = [
+ "byteorder",
"zerocopy-derive",
]
@@ -6254,7 +8134,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
[[package]]
@@ -6274,5 +8154,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.72",
+ "syn 2.0.84",
]
diff --git a/Cargo.toml b/Cargo.toml
index df97019c..2e0a2684 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "helios"
-version = "0.6.1"
+version = "0.7.0"
edition = "2021"
autobenches = false
exclude = ["benches"]
@@ -8,13 +8,11 @@ exclude = ["benches"]
[workspace]
members = [
"cli",
- "client",
- "common",
- "config",
- "consensus",
- "execution",
+ "core",
+ "ethereum",
+ "ethereum/consensus-core",
+ "opstack",
"helios-ts",
- "consensus-core",
]
default-members = ["cli"]
@@ -43,6 +41,8 @@ alloy = { version = "0.2.1", features = [
"sol-types",
"network",
"ssz",
+ "json-rpc",
+ "signers",
]}
revm = { version = "12.1.0", default-features = false, features = [
"std",
@@ -60,6 +60,7 @@ tokio = { version = "1", features = ["rt", "sync", "macros"] }
# io
reqwest = { version = "0.12.4", features = ["json"] }
+url = { version = "2.5.2", features = ["serde"] }
serde = { version = "1.0.143", features = ["derive"] }
serde_json = "1.0.85"
@@ -81,12 +82,8 @@ typenum = "1.17.0"
######################################
[dependencies]
-client = { path = "./client" }
-config = { path = "./config" }
-common = { path = "./common" }
-consensus = { path = "./consensus" }
-execution = { path = "./execution" }
-consensus-core = { path = "./consensus-core" }
+helios-core = { path = "./core" }
+helios-ethereum = { path = "./ethereum" }
[dev-dependencies]
tokio = { version = "1", features = ["full"] }
diff --git a/README.md b/README.md
index 79041a35..caabe255 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
[![build](https://github.com/a16z/helios/actions/workflows/test.yml/badge.svg)](https://github.com/a16z/helios/actions/workflows/test.yml) [![license: MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT) [![chat](https://img.shields.io/badge/chat-telegram-blue)](https://t.me/+IntDY_gZJSRkNTJj)
-Helios is a fully trustless, efficient, and portable Ethereum light client written in Rust.
+Helios is a trustless, efficient, and portable multichain light client written in Rust.
Helios converts an untrusted centralized RPC endpoint into a safe unmanipulable local RPC for its users. It syncs in seconds, requires no storage, and is lightweight enough to run on mobile devices.
@@ -19,11 +19,12 @@ curl https://raw.githubusercontent.com/a16z/helios/master/heliosup/install | bas
To install Helios, run `heliosup`.
## Usage
+### Ethereum
-To run Helios, run the below command, replacing `$ETH_RPC_URL` with an RPC provider URL such as Alchemy:
+To run Helios on Ethereum, run the command below, replacing `$ETH_RPC_URL` with an RPC provider URL such as Alchemy:
```
-helios --execution-rpc $ETH_RPC_URL
+helios ethereum --execution-rpc $ETH_RPC_URL
```
`$ETH_RPC_URL` must be a [supported Ethereum Execution API Provider](#supported-execution-api-providers) that provides the `eth_getProof` endpoint. Infura does not currently support this. We recommend using Alchemy.
@@ -32,11 +33,18 @@ Helios will now run a local RPC server at `http://127.0.0.1:8545`.
Helios also provides documentation of its supported RPC methods in the [rpc.md](./rpc.md) file.
-### Warning
-Helios is still experimental software. While we hope you try it out, we do not suggest adding it as your main RPC in wallets yet. Sending high-value transactions from a wallet connected to Helios is discouraged.
+### OP Stack
-### Additional CLI Options
+To run Helios on an OP Stack chain, run the command below, replacing `$ETH_RPC_URL` with an RPC provider URL such as Alchemy and `$NETWORK` with a supported OP Stack network:
+
+```
+helios opstack --network $NETWORK --execution-rpc $ETH_RPC_URL
+```
+
+Currently supported network values are `optimism` and `base`, with more to come soon.
+
+### Additional Ethereum CLI Options
`--consensus-rpc` or `-c` can be used to set a custom consensus layer rpc endpoint. This must be a consensus node that supports the light client beaconchain api. We recommend using Nimbus for this. If no consensus rpc is supplied, it defaults to `https://www.lightclientdata.org` which is run by us.
@@ -73,114 +81,26 @@ All configuration options can be set on a per-network level in `~/.helios/helios
```toml
[mainnet]
-consensus_rpc = "https://www.lightclientdata.org"
+consensus_rpc = "https://ethereum.operationsolarstorm.org"
execution_rpc = "https://eth-mainnet.g.alchemy.com/v2/XXXXX"
checkpoint = "0x85e6151a246e8fdba36db27a0c7678a575346272fe978c9281e13a8b26cdfa68"
-[holesky]
-consensus_rpc = "http://testing.holesky.beacon-api.nimbus.team"
-execution_rpc = "https://eth-holesky.g.alchemy.com/v2/XXXXX"
-checkpoint = "0xf682ab29d44b17c0b2682783c782caed3b8fd831641921e64bda5fb24c141f01"
+[optimism]
+consensus_rpc = "https://optimism.operationsolarstorm.org"
+execution_rpc = "https://opt-mainnet.g.alchemy.com/v2/XXXXX"
-[sepolia]
-consensus_rpc = "https://ethereum-sepolia-beacon-api.publicnode.com"
-execution_rpc = "https://eth-sepolia.g.alchemy.com/v2/XXXXX"
-checkpoint = "0x839ef44892477a9b72e774941f4ecb3cf6f0deac2f6715b40c5d4d5337a02dd0"
+[base]
+consensus_rpc = "https://base.operationsolarstorm.org"
+execution_rpc = "https://base-mainnet.g.alchemy.com/v2/XXXXX"
```
A comprehensive breakdown of config options is available in the [config.md](./config.md) file.
+### Using Helios as a library
-### Using Helios as a Library
-
-Helios can be imported into any Rust project.
-
-```rust
-use std::{path::PathBuf, str::FromStr, env};
-
-use helios::{client::ClientBuilder, config::networks::Network, types::BlockTag, prelude::*};
-use alloy::primitives::{utils, Address};
-use eyre::Result;
-
-#[tokio::main]
-async fn main() -> Result<()> {
- let untrusted_rpc_url = env::var("UNTRUSTED_RPC_URL")?;
-
- let mut client = ClientBuilder::new()
- .network(Network::MAINNET)
- .consensus_rpc("https://www.lightclientdata.org")
- .execution_rpc(&untrusted_rpc_url)
- .load_external_fallback()
- .data_dir(PathBuf::from("/tmp/helios"))
- .build()?;
-
- client.start().await?;
- client.wait_synced().await;
-
- let head_block_num = client.get_block_number().await?;
- let addr = Address::from_str("0x00000000219ab540356cBB839Cbe05303d7705Fa")?;
- let block = BlockTag::Latest;
- let balance = client.get_balance(addr, block).await?;
-
- println!("synced up to block: {}", head_block_num);
- println!("balance of deposit contract: {}", utils::format_ether(balance));
-
- Ok(())
-}
-```
-
-Below we demonstrate fetching checkpoints from the community-maintained list of checkpoint sync apis maintained by [ethPandaOps](https://github.com/ethpandaops/checkpoint-sync-health-checks/blob/master/_data/endpoints.yaml).
-
-> **Warning**
->
-> This is a community-maintained list and thus no security guarantees are provided. Attacks on your light client can occur if malicious checkpoints are set in the list. Please use the explicit `checkpoint` flag, environment variable, or config setting with an updated, and verified checkpoint.
-
-```rust
-use eyre::Result;
-use helios::config::{checkpoints, networks};
-
-#[tokio::main]
-async fn main() -> Result<()> {
- // Construct the checkpoint fallback services
- let cf = checkpoints::CheckpointFallback::new().build().await.unwrap();
-
- // Fetch the latest sepolia checkpoint
- let sepolia_checkpoint = cf.fetch_latest_checkpoint(&networks::Network::SEPOLIA).await.unwrap();
- println!("Fetched latest sepolia checkpoint: {}", sepolia_checkpoint);
+Examples of running Helios as a rust library can be seen in the [examples](./examples) directory.
- // Fetch the latest holesky checkpoint
- let holesky_checkpoint = cf.fetch_latest_checkpoint(&networks::Network::HOLESKY).await.unwrap();
- println!("Fetched latest holesky checkpoint: {}", holesky_checkpoint);
-
- // Fetch the latest mainnet checkpoint
- let mainnet_checkpoint = cf.fetch_latest_checkpoint(&networks::Network::MAINNET).await.unwrap();
- println!("Fetched latest mainnet checkpoint: {}", mainnet_checkpoint);
-
- Ok(())
-}
-```
-
-### Supported Ethereum Execution API Providers
-
-Ethereum Execution API provider JSON RPC endpoints used must support the `eth_getProof` endpoint. [Alchemy](https://www.alchemy.com) provides private endpoints that support the `eth_getProof` endpoint https://docs.alchemy.com/reference/eth-getproof but require you to obtain API keys. Alternatively, [All That Node](https://www.allthatnode.com/ethereum.dsrv) provides public JSON RPC endpoints that are rate limited and are not intended for dApp building. JSON RPC endpoints including associated API Keys if required should be added to your .env file.
-
-For example, the following cURL request should return a response `{"jsonrpc":"2.0","id":1,"result":{...}}` to demonstrate that the All That Node public JSON RPC endpoints on the Ethereum Holesky network and Mainnet support the `eth_getProof` endpoint.
-
-```sh
-curl https://ethereum-holesky.g.allthatnode.com \
--X POST \
--H "Content-Type: application/json" \
--d '{"jsonrpc":"2.0","method":"eth_getProof","params":["0x7F0d15C7FAae65896648C8273B6d7E43f58Fa842",["0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"],"latest"],"id":1}'
-```
-
-```sh
-curl https://ethereum-mainnet.g.allthatnode.com \
--X POST \
--H "Content-Type: application/json" \
--d '{"jsonrpc":"2.0","method":"eth_getProof","params":["0x7F0d15C7FAae65896648C8273B6d7E43f58Fa842",["0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"],"latest"],"id":1}'
-```
-
-### Supported Checkpoints
+### Supported Ethereum Checkpoints
A checkpoint is a Beacon Chain Consensus Layer block hash rather than a Execution Layer block hash. An example of an Execution Layer block hash for Holesky is shown at https://holesky.etherscan.io/blocks
@@ -194,7 +114,7 @@ For example, to obtain a recent checkpoint for Holesky Testnet go to https://hol
This latest checkpoint may be provided as an [Additional CLI Option](#additional-cli-options) at the command line to run a Helios Light Client node on Ethereum Holesky Testnet:
```bash
-helios \
+helios ethereum \
--network holesky \
--consensus-rpc http://testing.holesky.beacon-api.nimbus.team \
--execution-rpc https://ethereum-holesky.g.allthatnode.com \
@@ -205,7 +125,7 @@ For example, to obtain a recent checkpoint for Ethereum Mainnet go to https://be
This latest checkpoint may be provided as an [Additional CLI Option](#additional-cli-options) at the command line to run a Helios Light Client node on Ethereum Mainnet:
```bash
-helios \
+helios ethereum \
--network mainnet \
--consensus-rpc https://www.lightclientdata.org \
--execution-rpc https://ethereum-mainnet.g.allthatnode.com \
@@ -214,49 +134,6 @@ helios \
If you wish to use a [Configuration File](#configuration-files) instead of CLI arguments then you should replace the example checkpoints in the configuration file with the latest checkpoints obtained above.
-> **Warning**
->
-> Some configuration file values are not yet being interpreted. See https://github.com/a16z/helios/issues/261
->
-> If a provide checkpoint fails the fallback would normally kick in and automatically fetch a better checkpoint if that feature is working.
-
-## Architecture
-```mermaid
-graph LR
-
-Client ----> Rpc
-Client ----> Node
-Node ----> ConsensusClient
-Node ----> ExecutionClient
-ExecutionClient ----> ExecutionRpc
-ConsensusClient ----> ConsensusRpc
-Node ----> Evm
-Evm ----> ExecutionClient
-ExecutionRpc --> UntrustedExecutionRpc
-ConsensusRpc --> UntrustedConsensusRpc
-
-classDef node fill:#f9f,stroke:#333,stroke-width:4px, color:black;
-class Node,Client node
-classDef execution fill:#f0f,stroke:#333,stroke-width:4px;
-class ExecutionClient,ExecutionRpc execution
-classDef consensus fill:#ff0,stroke:#333,stroke-width:4px;
-class ConsensusClient,ConsensusRpc consensus
-classDef evm fill:#0ff,stroke:#333,stroke-width:4px;
-class Evm evm
-classDef providerC fill:#ffc
-class UntrustedConsensusRpc providerC
-classDef providerE fill:#fbf
-class UntrustedExecutionRpc providerE
-classDef rpc fill:#e10
-class Rpc rpc
-
-
-subgraph "External Network"
-UntrustedExecutionRpc
-UntrustedConsensusRpc
-end
-```
-
## Testing
To ensure that Helios works as expected, we have a comprehensive test suite that you can run. Before running the tests, make sure to create a `.env` file in the root of the project directory. You can copy the contents of the `.env.example` file and fill in your own secrets.
@@ -276,15 +153,6 @@ To run tests for an individual package, use this command, replacing
```
-## Benchmarks
-
-Benchmarks are defined in the [benches](./benches/) subdirectory. They are built using the [criterion](https://github.com/bheisler/criterion.rs) statistics-driven benchmarking library.
-
-To run all benchmarks, you can use `cargo bench`. To run a specific benchmark, you can use `cargo bench --bench `, where `` is one of the benchmarks defined in the [Cargo.toml](./Cargo.toml) file under a `[[bench]]` section.
-
-To learn more about [helios](https://github.com/a16z/helios) benchmarking and to view benchmark flamegraphs, view the [benchmark readme](./benches/README.md).
-
-
## Contributing
All contributions to Helios are welcome. Before opening a PR, please submit an issue detailing the bug or feature. When opening a PR, please ensure that your contribution builds, has been linted with `cargo fmt`, and contains tests when applicable.
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index d5a9abe1..a2b794f1 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -1,6 +1,6 @@
[package]
-name = "cli"
-version = "0.6.1"
+name = "helios-cli"
+version = "0.7.0"
edition = "2021"
[[bin]]
@@ -13,13 +13,13 @@ eyre.workspace = true
tracing.workspace = true
futures.workspace = true
alloy.workspace = true
+figment = { version = "0.10.7", features = ["toml", "env"] }
clap = { version = "4.5.4", features = ["derive", "env"] }
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
dirs = "5.0.1"
ctrlc = "3.2.3"
-client = { path = "../client" }
-config = { path = "../config" }
-consensus = { path = "../consensus" }
-common = { path = "../common" }
+helios-core = { path = "../core" }
+helios-ethereum = { path = "../ethereum" }
+helios-opstack = { path = "../opstack" }
diff --git a/cli/src/main.rs b/cli/src/main.rs
index b7b83f72..6263e1af 100644
--- a/cli/src/main.rs
+++ b/cli/src/main.rs
@@ -1,4 +1,5 @@
-use std::net::IpAddr;
+use std::collections::HashMap;
+use std::net::{IpAddr, SocketAddr};
use std::{
path::PathBuf,
process::exit,
@@ -7,20 +8,46 @@ use std::{
};
use alloy::primitives::B256;
-use clap::Parser;
+use clap::{Args, Parser, Subcommand};
use dirs::home_dir;
use eyre::Result;
+use figment::providers::Serialized;
+use figment::value::Value;
use futures::executor::block_on;
use tracing::{error, info};
use tracing_subscriber::filter::{EnvFilter, LevelFilter};
use tracing_subscriber::FmtSubscriber;
-use client::{Client, ClientBuilder};
-use config::{CliConfig, Config};
-use consensus::database::FileDB;
+use helios_core::client::Client;
+use helios_core::consensus::Consensus;
+use helios_core::network_spec::NetworkSpec;
+use helios_ethereum::config::{cli::CliConfig, Config as EthereumConfig};
+use helios_ethereum::database::FileDB;
+use helios_ethereum::{EthereumClient, EthereumClientBuilder};
+use helios_opstack::{config::Config as OpStackConfig, OpStackClient, OpStackClientBuilder};
#[tokio::main]
async fn main() -> Result<()> {
+ enable_tracer();
+
+ let cli = Cli::parse();
+ match cli.command {
+ Command::Ethereum(ethereum) => {
+ let mut client = ethereum.make_client();
+ start_client(&mut client).await;
+ register_shutdown_handler(client);
+ }
+ Command::OpStack(opstack) => {
+ let mut client = opstack.make_client();
+ start_client(&mut client).await;
+ register_shutdown_handler(client);
+ }
+ }
+
+ std::future::pending().await
+}
+
+fn enable_tracer() {
let env_filter = EnvFilter::builder()
.with_default_directive(LevelFilter::INFO.into())
.from_env()
@@ -31,26 +58,20 @@ async fn main() -> Result<()> {
.finish();
tracing::subscriber::set_global_default(subscriber).expect("subscriber set failed");
+}
- let config = get_config();
- let mut client = match ClientBuilder::new().config(config).build::() {
- Ok(client) => client,
- Err(err) => {
- error!(target: "helios::runner", error = %err);
- exit(1);
- }
- };
-
+async fn start_client>(
+ client: &mut Client,
+) {
if let Err(err) = client.start().await {
error!(target: "helios::runner", error = %err);
exit(1);
}
-
- register_shutdown_handler(client);
- std::future::pending().await
}
-fn register_shutdown_handler(client: Client) {
+fn register_shutdown_handler>(
+ client: Client,
+) {
let client = Arc::new(client);
let shutdown_counter = Arc::new(Mutex::new(0));
@@ -82,20 +103,24 @@ fn register_shutdown_handler(client: Client) {
.expect("could not register shutdown handler");
}
-fn get_config() -> Config {
- let cli = Cli::parse();
-
- let config_path = home_dir().unwrap().join(".helios/helios.toml");
-
- let cli_config = cli.as_cli_config();
-
- Config::from_file(&config_path, &cli.network, &cli_config)
-}
-
#[derive(Parser)]
#[clap(version, about)]
-/// Helios is a fast, secure, and portable light client for Ethereum
+/// Helios is a fast, secure, and portable multichain light client
struct Cli {
+ #[command(subcommand)]
+ command: Command,
+}
+
+#[derive(Subcommand)]
+enum Command {
+ #[clap(name = "ethereum")]
+ Ethereum(EthereumArgs),
+ #[clap(name = "opstack")]
+ OpStack(OpStackArgs),
+}
+
+#[derive(Args)]
+struct EthereumArgs {
#[clap(short, long, default_value = "mainnet")]
network: String,
#[clap(short = 'b', long, env)]
@@ -118,7 +143,24 @@ struct Cli {
strict_checkpoint_age: bool,
}
-impl Cli {
+impl EthereumArgs {
+ fn make_client(&self) -> EthereumClient {
+ let config_path = home_dir().unwrap().join(".helios/helios.toml");
+ let cli_config = self.as_cli_config();
+ let config = EthereumConfig::from_file(&config_path, &self.network, &cli_config);
+
+ match EthereumClientBuilder::new()
+ .config(config)
+ .build::()
+ {
+ Ok(client) => client,
+ Err(err) => {
+ error!(target: "helios::runner", error = %err);
+ exit(1);
+ }
+ }
+ }
+
fn as_cli_config(&self) -> CliConfig {
CliConfig {
checkpoint: self.checkpoint,
@@ -137,6 +179,63 @@ impl Cli {
}
}
+#[derive(Args, Debug)]
+struct OpStackArgs {
+ #[clap(short, long)]
+ network: String,
+ #[clap(short = 'b', long, env, default_value = "127.0.0.1")]
+ rpc_bind_ip: Option,
+ #[clap(short = 'p', long, env, default_value = "8545")]
+ rpc_port: Option,
+ #[clap(short, long, env)]
+ execution_rpc: Option,
+ #[clap(short, long, env)]
+ consensus_rpc: Option,
+}
+
+impl OpStackArgs {
+ fn make_client(&self) -> OpStackClient {
+ let config_path = home_dir().unwrap().join(".helios/helios.toml");
+ let cli_provider = self.as_provider();
+ let config = OpStackConfig::from_file(&config_path, &self.network, cli_provider);
+
+ match OpStackClientBuilder::new().config(config).build() {
+ Ok(client) => client,
+ Err(err) => {
+ error!(target: "helios::runner", error = %err);
+ exit(1);
+ }
+ }
+ }
+
+ fn as_provider(&self) -> Serialized> {
+ let mut user_dict = HashMap::new();
+
+ if let Some(rpc) = &self.execution_rpc {
+ user_dict.insert("execution_rpc", Value::from(rpc.clone()));
+ }
+
+ if let Some(rpc) = &self.consensus_rpc {
+ user_dict.insert("consensus_rpc", Value::from(rpc.clone()));
+ }
+
+ if self.rpc_bind_ip.is_some() && self.rpc_port.is_some() {
+ let rpc_socket = SocketAddr::new(self.rpc_bind_ip.unwrap(), self.rpc_port.unwrap());
+ user_dict.insert("rpc_socket", Value::from(rpc_socket.to_string()));
+ }
+
+ if let Some(ip) = self.rpc_bind_ip {
+ user_dict.insert("rpc_bind_ip", Value::from(ip.to_string()));
+ }
+
+ if let Some(port) = self.rpc_port {
+ user_dict.insert("rpc_port", Value::from(port));
+ }
+
+ Serialized::from(user_dict, &self.network)
+ }
+}
+
fn true_or_none(b: bool) -> Option {
if b {
Some(b)
diff --git a/client/Cargo.toml b/client/Cargo.toml
deleted file mode 100644
index 9d4ff319..00000000
--- a/client/Cargo.toml
+++ /dev/null
@@ -1,30 +0,0 @@
-[package]
-name = "client"
-version = "0.6.1"
-edition = "2021"
-
-[dependencies]
-alloy.workspace = true
-eyre.workspace = true
-serde.workspace = true
-hex.workspace = true
-futures.workspace = true
-tracing.workspace = true
-thiserror.workspace = true
-tokio.workspace = true
-zduny-wasm-timer.workspace = true
-
-consensus = { path = "../consensus" }
-execution = { path = "../execution" }
-config = { path = "../config" }
-common = { path = "../common" }
-
-[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
-jsonrpsee = { version = "0.19.0", features = ["full"] }
-
-[target.'cfg(target_arch = "wasm32")'.dependencies]
-gloo-timers = "0.3.0"
-wasm-bindgen-futures = "0.4.33"
-
-[target.wasm32-unknown-unknown.dependencies]
-parking_lot = { version = "0.12.2" }
diff --git a/client/src/errors.rs b/client/src/errors.rs
deleted file mode 100644
index 6b129f38..00000000
--- a/client/src/errors.rs
+++ /dev/null
@@ -1,64 +0,0 @@
-use eyre::Report;
-use thiserror::Error;
-
-use common::errors::BlockNotFoundError;
-use execution::errors::EvmError;
-
-/// Errors that can occur during Node calls
-#[derive(Debug, Error)]
-pub enum NodeError {
- #[error(transparent)]
- ExecutionEvmError(#[from] EvmError),
-
- #[error("execution error: {0}")]
- ExecutionError(Report),
-
- #[error("out of sync: {0} seconds behind")]
- OutOfSync(u64),
-
- #[error("consensus payload error: {0}")]
- ConsensusPayloadError(Report),
-
- #[error("execution payload error: {0}")]
- ExecutionPayloadError(Report),
-
- #[error("consensus client creation error: {0}")]
- ConsensusClientCreationError(Report),
-
- #[error("execution client creation error: {0}")]
- ExecutionClientCreationError(Report),
-
- #[error("consensus advance error: {0}")]
- ConsensusAdvanceError(Report),
-
- #[error("consensus sync error: {0}")]
- ConsensusSyncError(Report),
-
- #[error(transparent)]
- BlockNotFoundError(#[from] BlockNotFoundError),
-}
-
-#[cfg(not(target_arch = "wasm32"))]
-impl NodeError {
- pub fn to_json_rpsee_error(self) -> jsonrpsee::types::error::ErrorObjectOwned {
- match self {
- NodeError::ExecutionEvmError(evm_err) => match evm_err {
- EvmError::Revert(data) => {
- let mut msg = "execution reverted".to_string();
- if let Some(reason) = data.as_ref().and_then(EvmError::decode_revert_reason) {
- msg = format!("{msg}: {reason}")
- }
- jsonrpsee::types::error::ErrorObject::owned(
- 3,
- msg,
- data.map(|data| format!("0x{}", hex::encode(data))),
- )
- }
- _ => {
- jsonrpsee::types::error::ErrorObject::owned(1, evm_err.to_string(), None::<()>)
- }
- },
- _ => jsonrpsee::types::error::ErrorObject::owned(1, self.to_string(), None::<()>),
- }
- }
-}
diff --git a/client/src/lib.rs b/client/src/lib.rs
deleted file mode 100644
index a64fd91c..00000000
--- a/client/src/lib.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-mod client;
-pub use crate::client::*;
-
-pub mod errors;
-
-#[cfg(not(target_arch = "wasm32"))]
-pub mod rpc;
-
-pub mod node;
diff --git a/common/Cargo.toml b/common/Cargo.toml
deleted file mode 100644
index 5bb61ce9..00000000
--- a/common/Cargo.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-[package]
-name = "common"
-version = "0.6.1"
-edition = "2021"
-
-[dependencies]
-alloy = { version = "0.2.1", features = ["rpc-types"] }
-eyre.workspace = true
-serde.workspace = true
-hex.workspace = true
-serde_json.workspace = true
-superstruct.workspace = true
-thiserror.workspace = true
-tracing.workspace = true
-zduny-wasm-timer.workspace = true
diff --git a/common/src/errors.rs b/common/src/errors.rs
deleted file mode 100644
index 5ab5c971..00000000
--- a/common/src/errors.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-use alloy::primitives::B256;
-use thiserror::Error;
-
-use crate::types::BlockTag;
-
-#[derive(Debug, Error)]
-#[error("block not available: {block}")]
-pub struct BlockNotFoundError {
- block: BlockTag,
-}
-
-impl BlockNotFoundError {
- pub fn new(block: BlockTag) -> Self {
- Self { block }
- }
-}
-
-#[derive(Debug, Error)]
-#[error("slot not found: {slot:?}")]
-pub struct SlotNotFoundError {
- slot: B256,
-}
-
-impl SlotNotFoundError {
- pub fn new(slot: B256) -> Self {
- Self { slot }
- }
-}
-
-#[derive(Debug, Error)]
-#[error("rpc error on method: {method}, message: {error}")]
-pub struct RpcError {
- method: String,
- error: E,
-}
-
-impl RpcError {
- pub fn new(method: &str, err: E) -> Self {
- Self {
- method: method.to_string(),
- error: err,
- }
- }
-}
diff --git a/common/src/lib.rs b/common/src/lib.rs
deleted file mode 100644
index 422d6694..00000000
--- a/common/src/lib.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-pub mod errors;
-pub mod types;
diff --git a/config/Cargo.toml b/config/Cargo.toml
deleted file mode 100644
index 608d0abe..00000000
--- a/config/Cargo.toml
+++ /dev/null
@@ -1,26 +0,0 @@
-[package]
-name = "config"
-version = "0.6.1"
-edition = "2021"
-
-[dependencies]
-alloy.workspace = true
-eyre.workspace = true
-serde.workspace = true
-hex.workspace = true
-thiserror.workspace = true
-tracing.workspace = true
-reqwest.workspace = true
-futures.workspace = true
-retri.workspace = true
-
-figment = { version = "0.10.7", features = ["toml", "env"] }
-serde_yaml = "0.9.14"
-strum = { version = "0.26.2", features = ["derive"] }
-
-common = { path = "../common" }
-consensus-core = { path = "../consensus-core" }
-
-[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
-tokio.workspace = true
-dirs = "5.0.1"
diff --git a/config/src/lib.rs b/config/src/lib.rs
deleted file mode 100644
index 56d649e2..00000000
--- a/config/src/lib.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-/// Base Config
-pub mod base;
-pub use base::*;
-
-/// Core Config
-pub mod config;
-pub use crate::config::*;
-
-/// Checkpoint Config
-pub mod checkpoints;
-pub use checkpoints::*;
-
-/// Cli Config
-pub mod cli;
-pub use cli::*;
-
-/// Network Configuration
-pub mod networks;
-pub use networks::*;
-
-/// Generic Config Types
-pub mod types;
-pub use types::*;
diff --git a/consensus-core/src/consensus_core.rs b/consensus-core/src/consensus_core.rs
deleted file mode 100644
index 89b445c6..00000000
--- a/consensus-core/src/consensus_core.rs
+++ /dev/null
@@ -1,381 +0,0 @@
-use std::cmp;
-
-use alloy::primitives::B256;
-use eyre::Result;
-use ssz_types::BitVector;
-use tracing::{info, warn};
-use tree_hash::TreeHash;
-use zduny_wasm_timer::{SystemTime, UNIX_EPOCH};
-
-use crate::errors::ConsensusError;
-use crate::proof::{
- is_current_committee_proof_valid, is_execution_payload_proof_valid, is_finality_proof_valid,
- is_next_committee_proof_valid,
-};
-use crate::types::bls::{PublicKey, Signature};
-use crate::types::{
- BeaconBlockHeader, Bootstrap, ExecutionPayloadHeader, FinalityUpdate, Forks, GenericUpdate,
- LightClientHeader, LightClientStore, OptimisticUpdate, Update,
-};
-use crate::utils::{
- calculate_fork_version, compute_committee_sign_root, compute_fork_data_root,
- get_participating_keys,
-};
-
-pub fn verify_bootstrap(bootstrap: &Bootstrap, checkpoint: B256, forks: &Forks) -> Result<()> {
- if !is_valid_header(&bootstrap.header, forks) {
- return Err(ConsensusError::InvalidExecutionPayloadProof.into());
- }
-
- let committee_valid = is_current_committee_proof_valid(
- &bootstrap.header.beacon,
- &bootstrap.current_sync_committee,
- &bootstrap.current_sync_committee_branch,
- );
-
- let header_hash = bootstrap.header.beacon.tree_hash_root();
- let header_valid = header_hash == checkpoint;
-
- if !header_valid {
- return Err(ConsensusError::InvalidHeaderHash(checkpoint, header_hash).into());
- }
-
- if !committee_valid {
- return Err(ConsensusError::InvalidCurrentSyncCommitteeProof.into());
- }
-
- Ok(())
-}
-
-pub fn verify_update(
- update: &Update,
- expected_current_slot: u64,
- store: &LightClientStore,
- genesis_root: B256,
- forks: &Forks,
-) -> Result<()> {
- let update = GenericUpdate::from(update);
- verify_generic_update(&update, expected_current_slot, store, genesis_root, forks)
-}
-
-pub fn verify_finality_update(
- update: &FinalityUpdate,
- expected_current_slot: u64,
- store: &LightClientStore,
- genesis_root: B256,
- forks: &Forks,
-) -> Result<()> {
- let update = GenericUpdate::from(update);
- verify_generic_update(&update, expected_current_slot, store, genesis_root, forks)
-}
-
-pub fn verify_optimistic_update(
- update: &OptimisticUpdate,
- expected_current_slot: u64,
- store: &LightClientStore,
- genesis_root: B256,
- forks: &Forks,
-) -> Result<()> {
- let update = GenericUpdate::from(update);
- verify_generic_update(&update, expected_current_slot, store, genesis_root, forks)
-}
-
-pub fn apply_bootstrap(store: &mut LightClientStore, bootstrap: &Bootstrap) {
- *store = LightClientStore {
- finalized_header: bootstrap.header.clone(),
- current_sync_committee: bootstrap.current_sync_committee.clone(),
- next_sync_committee: None,
- optimistic_header: bootstrap.header.clone(),
- previous_max_active_participants: 0,
- current_max_active_participants: 0,
- };
-}
-
-pub fn apply_update(store: &mut LightClientStore, update: &Update) -> Option {
- let update = GenericUpdate::from(update);
- apply_generic_update(store, &update)
-}
-
-pub fn apply_finality_update(
- store: &mut LightClientStore,
- update: &FinalityUpdate,
-) -> Option {
- let update = GenericUpdate::from(update);
- apply_generic_update(store, &update)
-}
-
-pub fn apply_optimistic_update(
- store: &mut LightClientStore,
- update: &OptimisticUpdate,
-) -> Option {
- let update = GenericUpdate::from(update);
- apply_generic_update(store, &update)
-}
-
-// implements state changes from apply_light_client_update and process_light_client_update in
-// the specification
-/// Returns the new checkpoint if one is created, otherwise None
-fn apply_generic_update(store: &mut LightClientStore, update: &GenericUpdate) -> Option {
- let committee_bits = get_bits(&update.sync_aggregate.sync_committee_bits);
-
- store.current_max_active_participants =
- u64::max(store.current_max_active_participants, committee_bits);
-
- let should_update_optimistic = committee_bits > safety_threshold(store)
- && update.attested_header.beacon.slot > store.optimistic_header.beacon.slot;
-
- if should_update_optimistic {
- store.optimistic_header = update.attested_header.clone();
- }
-
- let update_attested_period = calc_sync_period(update.attested_header.beacon.slot);
-
- let update_finalized_slot = update
- .finalized_header
- .as_ref()
- .map(|h| h.beacon.slot)
- .unwrap_or(0);
-
- let update_finalized_period = calc_sync_period(update_finalized_slot);
-
- let update_has_finalized_next_committee = store.next_sync_committee.is_none()
- && has_sync_update(update)
- && has_finality_update(update)
- && update_finalized_period == update_attested_period;
-
- let should_apply_update = {
- let has_majority = committee_bits * 3 >= 512 * 2;
- if !has_majority {
- warn!("skipping block with low vote count");
- }
-
- let update_is_newer = update_finalized_slot > store.finalized_header.beacon.slot;
- let good_update = update_is_newer || update_has_finalized_next_committee;
-
- has_majority && good_update
- };
-
- if should_apply_update {
- let store_period = calc_sync_period(store.finalized_header.beacon.slot);
-
- if store.next_sync_committee.is_none() {
- if update_finalized_period != store_period {
- return None;
- }
- store
- .next_sync_committee
- .clone_from(&update.next_sync_committee);
- } else if update_finalized_period == store_period + 1 {
- info!(target: "helios::consensus", "sync committee updated");
- store.current_sync_committee = store.next_sync_committee.clone().unwrap();
- store
- .next_sync_committee
- .clone_from(&update.next_sync_committee);
- store.previous_max_active_participants = store.current_max_active_participants;
- store.current_max_active_participants = 0;
- }
-
- if update_finalized_slot > store.finalized_header.beacon.slot {
- store.finalized_header = update.finalized_header.clone().unwrap();
-
- if store.finalized_header.beacon.slot > store.optimistic_header.beacon.slot {
- store.optimistic_header = store.finalized_header.clone();
- }
-
- if store.finalized_header.beacon.slot % 32 == 0 {
- let checkpoint = store.finalized_header.beacon.tree_hash_root();
- return Some(checkpoint);
- }
- }
- }
-
- None
-}
-
-// implements checks from validate_light_client_update and process_light_client_update in the
-// specification
-fn verify_generic_update(
- update: &GenericUpdate,
- expected_current_slot: u64,
- store: &LightClientStore,
- genesis_root: B256,
- forks: &Forks,
-) -> Result<()> {
- let bits = get_bits(&update.sync_aggregate.sync_committee_bits);
- if bits == 0 {
- return Err(ConsensusError::InsufficientParticipation.into());
- }
-
- if !is_valid_header(&update.attested_header, forks) {
- return Err(ConsensusError::InvalidExecutionPayloadProof.into());
- }
-
- let update_finalized_slot = update
- .finalized_header
- .clone()
- .unwrap_or_default()
- .beacon
- .slot;
-
- let valid_time: bool = expected_current_slot >= update.signature_slot
- && update.signature_slot > update.attested_header.beacon.slot
- && update.attested_header.beacon.slot >= update_finalized_slot;
-
- if !valid_time {
- return Err(ConsensusError::InvalidTimestamp.into());
- }
-
- let store_period = calc_sync_period(store.finalized_header.beacon.slot);
- let update_sig_period = calc_sync_period(update.signature_slot);
- let valid_period = if store.next_sync_committee.is_some() {
- update_sig_period == store_period || update_sig_period == store_period + 1
- } else {
- update_sig_period == store_period
- };
-
- if !valid_period {
- return Err(ConsensusError::InvalidPeriod.into());
- }
-
- let update_attested_period = calc_sync_period(update.attested_header.beacon.slot);
- let update_has_next_committee = store.next_sync_committee.is_none()
- && update.next_sync_committee.is_some()
- && update_attested_period == store_period;
-
- if update.attested_header.beacon.slot <= store.finalized_header.beacon.slot
- && !update_has_next_committee
- {
- return Err(ConsensusError::NotRelevant.into());
- }
-
- if let Some(finalized_header) = &update.finalized_header {
- if let Some(finality_branch) = &update.finality_branch {
- if !is_valid_header(finalized_header, forks) {
- return Err(ConsensusError::InvalidExecutionPayloadProof.into());
- }
-
- let is_valid = is_finality_proof_valid(
- &update.attested_header.beacon,
- &finalized_header.beacon,
- finality_branch,
- );
-
- if !is_valid {
- return Err(ConsensusError::InvalidFinalityProof.into());
- }
- } else {
- return Err(ConsensusError::InvalidFinalityProof.into());
- }
- }
-
- if let Some(next_sync_committee) = &update.next_sync_committee {
- if let Some(next_sync_committee_branch) = &update.next_sync_committee_branch {
- let is_valid = is_next_committee_proof_valid(
- &update.attested_header.beacon,
- next_sync_committee,
- next_sync_committee_branch,
- );
-
- if !is_valid {
- return Err(ConsensusError::InvalidNextSyncCommitteeProof.into());
- }
- } else {
- return Err(ConsensusError::InvalidNextSyncCommitteeProof.into());
- }
- }
-
- let sync_committee = if update_sig_period == store_period {
- &store.current_sync_committee
- } else {
- store.next_sync_committee.as_ref().unwrap()
- };
-
- let pks = get_participating_keys(sync_committee, &update.sync_aggregate.sync_committee_bits)?;
-
- let fork_version = calculate_fork_version(forks, update.signature_slot.saturating_sub(1));
- let fork_data_root = compute_fork_data_root(fork_version, genesis_root);
- let is_valid_sig = verify_sync_committee_signture(
- &pks,
- &update.attested_header.beacon,
- &update.sync_aggregate.sync_committee_signature,
- fork_data_root,
- );
-
- if !is_valid_sig {
- return Err(ConsensusError::InvalidSignature.into());
- }
-
- Ok(())
-}
-
-pub fn expected_current_slot(now: SystemTime, genesis_time: u64) -> u64 {
- let now = now.duration_since(UNIX_EPOCH).unwrap();
- let since_genesis = now - std::time::Duration::from_secs(genesis_time);
-
- since_genesis.as_secs() / 12
-}
-
-pub fn calc_sync_period(slot: u64) -> u64 {
- // 32 slots per epoch
- let epoch = slot / 32;
- // 256 epochs per sync committee
- epoch / 256
-}
-
-pub fn get_bits(bitfield: &BitVector) -> u64 {
- bitfield.iter().filter(|v| *v).count() as u64
-}
-
-fn has_sync_update(update: &GenericUpdate) -> bool {
- update.next_sync_committee.is_some() && update.next_sync_committee_branch.is_some()
-}
-
-fn has_finality_update(update: &GenericUpdate) -> bool {
- update.finalized_header.is_some() && update.finality_branch.is_some()
-}
-
-fn verify_sync_committee_signture(
- pks: &[PublicKey],
- attested_header: &BeaconBlockHeader,
- signature: &Signature,
- fork_data_root: B256,
-) -> bool {
- let header_root = attested_header.tree_hash_root();
- let signing_root = compute_committee_sign_root(header_root, fork_data_root);
- signature.verify(signing_root.as_slice(), pks)
-}
-
-fn safety_threshold(store: &LightClientStore) -> u64 {
- cmp::max(
- store.current_max_active_participants,
- store.previous_max_active_participants,
- ) / 2
-}
-
-fn is_valid_header(header: &LightClientHeader, forks: &Forks) -> bool {
- let epoch = header.beacon.slot / 32;
-
- if epoch < forks.capella.epoch {
- header.execution.is_none() && header.execution_branch.is_none()
- } else if header.execution.is_some() && header.execution_branch.is_some() {
- let execution = header.execution.as_ref().unwrap();
- let execution_branch = header.execution_branch.as_ref().unwrap();
-
- let valid_execution_type = match execution {
- ExecutionPayloadHeader::Deneb(_) => epoch >= forks.deneb.epoch,
- ExecutionPayloadHeader::Capella(_) => {
- epoch >= forks.capella.epoch && epoch < forks.deneb.epoch
- }
- ExecutionPayloadHeader::Bellatrix(_) => {
- epoch >= forks.bellatrix.epoch && epoch < forks.altair.epoch
- }
- };
-
- let proof_valid =
- is_execution_payload_proof_valid(&header.beacon, execution, execution_branch);
-
- proof_valid && valid_execution_type
- } else {
- false
- }
-}
diff --git a/consensus/src/lib.rs b/consensus/src/lib.rs
deleted file mode 100644
index ba02993a..00000000
--- a/consensus/src/lib.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-pub mod database;
-pub mod rpc;
-
-mod consensus;
-pub use crate::consensus::*;
-
-pub mod constants;
diff --git a/consensus/src/rpc/mock_rpc.rs b/consensus/src/rpc/mock_rpc.rs
deleted file mode 100644
index b0a56ff7..00000000
--- a/consensus/src/rpc/mock_rpc.rs
+++ /dev/null
@@ -1,90 +0,0 @@
-use std::{fs::read_to_string, path::PathBuf};
-
-use alloy::primitives::B256;
-use async_trait::async_trait;
-use eyre::Result;
-
-use consensus_core::types::{BeaconBlock, Bootstrap, FinalityUpdate, OptimisticUpdate, Update};
-
-use super::ConsensusRpc;
-
-pub struct MockRpc {
- testdata: PathBuf,
-}
-
-#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
-#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
-impl ConsensusRpc for MockRpc {
- fn new(path: &str) -> Self {
- MockRpc {
- testdata: PathBuf::from(path),
- }
- }
-
- async fn get_bootstrap(&self, _block_root: B256) -> Result {
- let res = read_to_string(self.testdata.join("bootstrap.json"))?;
- let bootstrap: BootstrapResponse = serde_json::from_str(&res)?;
- Ok(bootstrap.data)
- }
-
- async fn get_updates(&self, _period: u64, _count: u8) -> Result> {
- let res = read_to_string(self.testdata.join("updates.json"))?;
- let updates: UpdateResponse = serde_json::from_str(&res)?;
- Ok(updates.into_iter().map(|update| update.data).collect())
- }
-
- async fn get_finality_update(&self) -> Result {
- let res = read_to_string(self.testdata.join("finality.json"))?;
- let finality: FinalityUpdateResponse = serde_json::from_str(&res)?;
- Ok(finality.data)
- }
-
- async fn get_optimistic_update(&self) -> Result {
- let res = read_to_string(self.testdata.join("optimistic.json"))?;
- let optimistic: OptimisticUpdateResponse = serde_json::from_str(&res)?;
- Ok(optimistic.data)
- }
-
- async fn get_block(&self, slot: u64) -> Result {
- let path = self.testdata.join(format!("blocks/{}.json", slot));
- let res = read_to_string(path)?;
- let block: BeaconBlockResponse = serde_json::from_str(&res)?;
- Ok(block.data.message)
- }
-
- async fn chain_id(&self) -> Result {
- eyre::bail!("not implemented")
- }
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct BeaconBlockResponse {
- data: BeaconBlockData,
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct BeaconBlockData {
- message: BeaconBlock,
-}
-
-type UpdateResponse = Vec;
-
-#[derive(serde::Deserialize, Debug)]
-struct UpdateData {
- data: Update,
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct FinalityUpdateResponse {
- data: FinalityUpdate,
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct OptimisticUpdateResponse {
- data: OptimisticUpdate,
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct BootstrapResponse {
- data: Bootstrap,
-}
diff --git a/consensus/src/rpc/nimbus_rpc.rs b/consensus/src/rpc/nimbus_rpc.rs
deleted file mode 100644
index 7ecfad81..00000000
--- a/consensus/src/rpc/nimbus_rpc.rs
+++ /dev/null
@@ -1,136 +0,0 @@
-use std::cmp;
-
-use alloy::primitives::B256;
-use async_trait::async_trait;
-use eyre::Result;
-use retri::{retry, BackoffSettings};
-use serde::de::DeserializeOwned;
-
-use super::ConsensusRpc;
-use crate::constants::MAX_REQUEST_LIGHT_CLIENT_UPDATES;
-use common::errors::RpcError;
-use consensus_core::types::{BeaconBlock, Bootstrap, FinalityUpdate, OptimisticUpdate, Update};
-
-#[derive(Debug)]
-pub struct NimbusRpc {
- rpc: String,
-}
-
-async fn get(req: &str) -> Result {
- let bytes = retry(
- || async { Ok::<_, eyre::Report>(reqwest::get(req).await?.bytes().await?) },
- BackoffSettings::default(),
- )
- .await?;
-
- Ok(serde_json::from_slice::(&bytes)?)
-}
-
-#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
-#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
-impl ConsensusRpc for NimbusRpc {
- fn new(rpc: &str) -> Self {
- NimbusRpc {
- rpc: rpc.to_string(),
- }
- }
-
- async fn get_bootstrap(&self, block_root: B256) -> Result {
- let root_hex = hex::encode(block_root);
- let req = format!(
- "{}/eth/v1/beacon/light_client/bootstrap/0x{}",
- self.rpc, root_hex
- );
-
- let res: BootstrapResponse = get(&req).await.map_err(|e| RpcError::new("bootstrap", e))?;
-
- Ok(res.data)
- }
-
- async fn get_updates(&self, period: u64, count: u8) -> Result> {
- let count = cmp::min(count, MAX_REQUEST_LIGHT_CLIENT_UPDATES);
- let req = format!(
- "{}/eth/v1/beacon/light_client/updates?start_period={}&count={}",
- self.rpc, period, count
- );
-
- let res: UpdateResponse = get(&req).await.map_err(|e| RpcError::new("updates", e))?;
-
- Ok(res.into_iter().map(|d| d.data).collect())
- }
-
- async fn get_finality_update(&self) -> Result {
- let req = format!("{}/eth/v1/beacon/light_client/finality_update", self.rpc);
- let res: FinalityUpdateResponse = get(&req)
- .await
- .map_err(|e| RpcError::new("finality_update", e))?;
-
- Ok(res.data)
- }
-
- async fn get_optimistic_update(&self) -> Result {
- let req = format!("{}/eth/v1/beacon/light_client/optimistic_update", self.rpc);
- let res: OptimisticUpdateResponse = get(&req)
- .await
- .map_err(|e| RpcError::new("optimistic_update", e))?;
-
- Ok(res.data)
- }
-
- async fn get_block(&self, slot: u64) -> Result {
- let req = format!("{}/eth/v2/beacon/blocks/{}", self.rpc, slot);
- let res: BeaconBlockResponse = get(&req).await.map_err(|e| RpcError::new("blocks", e))?;
-
- Ok(res.data.message)
- }
-
- async fn chain_id(&self) -> Result {
- let req = format!("{}/eth/v1/config/spec", self.rpc);
- let res: SpecResponse = get(&req).await.map_err(|e| RpcError::new("spec", e))?;
-
- Ok(res.data.chain_id)
- }
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct BeaconBlockResponse {
- data: BeaconBlockData,
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct BeaconBlockData {
- message: BeaconBlock,
-}
-
-type UpdateResponse = Vec;
-
-#[derive(serde::Deserialize, Debug)]
-struct UpdateData {
- data: Update,
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct FinalityUpdateResponse {
- data: FinalityUpdate,
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct OptimisticUpdateResponse {
- data: OptimisticUpdate,
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct BootstrapResponse {
- data: Bootstrap,
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct SpecResponse {
- data: Spec,
-}
-
-#[derive(serde::Deserialize, Debug)]
-struct Spec {
- #[serde(rename = "DEPOSIT_NETWORK_ID")]
- chain_id: u64,
-}
diff --git a/execution/Cargo.toml b/core/Cargo.toml
similarity index 72%
rename from execution/Cargo.toml
rename to core/Cargo.toml
index 99653327..c95b2441 100644
--- a/execution/Cargo.toml
+++ b/core/Cargo.toml
@@ -1,6 +1,6 @@
[package]
-name = "execution"
-version = "0.6.1"
+name = "helios-core"
+version = "0.7.0"
edition = "2021"
[dependencies]
@@ -24,13 +24,15 @@ eyre.workspace = true
hex.workspace = true
tracing.workspace = true
thiserror.workspace = true
-#hyper.workspace = true
-
-consensus = { path = "../consensus" }
-common = { path = "../common" }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
+jsonrpsee = { version = "0.19.0", features = ["full"] }
openssl.workspace = true
[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen-futures = "0.4.33"
+gloo-timers = "0.3.0"
+wasmtimer = "0.2.0"
+
+[target.wasm32-unknown-unknown.dependencies]
+parking_lot = { version = "0.12.2" }
diff --git a/core/src/client/mod.rs b/core/src/client/mod.rs
new file mode 100644
index 00000000..6d1a31f8
--- /dev/null
+++ b/core/src/client/mod.rs
@@ -0,0 +1,203 @@
+use std::net::SocketAddr;
+use std::sync::Arc;
+use std::time::Duration;
+
+use alloy::primitives::{Address, Bytes, B256, U256};
+use alloy::rpc::types::{Filter, Log, SyncStatus};
+use eyre::Result;
+use tracing::{info, warn};
+
+use crate::client::node::Node;
+#[cfg(not(target_arch = "wasm32"))]
+use crate::client::rpc::Rpc;
+use crate::consensus::Consensus;
+use crate::network_spec::NetworkSpec;
+use crate::time::interval;
+use crate::types::{Block, BlockTag};
+
+pub mod node;
+#[cfg(not(target_arch = "wasm32"))]
+pub mod rpc;
+
+pub struct Client> {
+ node: Arc>,
+ #[cfg(not(target_arch = "wasm32"))]
+ rpc: Option>,
+}
+
+impl> Client {
+ pub fn new(
+ execution_rpc: &str,
+ consensus: C,
+ #[cfg(not(target_arch = "wasm32"))] rpc_address: Option,
+ ) -> Result {
+ let node = Node::new(execution_rpc, consensus)?;
+ let node = Arc::new(node);
+
+ #[cfg(not(target_arch = "wasm32"))]
+ let mut rpc: Option> = None;
+
+ #[cfg(not(target_arch = "wasm32"))]
+ if let Some(rpc_address) = rpc_address {
+ rpc = Some(Rpc::new(node.clone(), rpc_address));
+ }
+
+ Ok(Client {
+ node,
+ #[cfg(not(target_arch = "wasm32"))]
+ rpc,
+ })
+ }
+
+ pub async fn start(&mut self) -> Result<()> {
+ #[cfg(not(target_arch = "wasm32"))]
+ if let Some(rpc) = &mut self.rpc {
+ rpc.start().await?;
+ }
+
+ Ok(())
+ }
+
+ pub async fn shutdown(&self) {
+ info!(target: "helios::client","shutting down");
+ if let Err(err) = self.node.consensus.shutdown() {
+ warn!(target: "helios::client", error = %err, "graceful shutdown failed");
+ }
+ }
+
+ pub async fn call(&self, tx: &N::TransactionRequest, block: BlockTag) -> Result {
+ self.node.call(tx, block).await.map_err(|err| err.into())
+ }
+
+ pub async fn estimate_gas(&self, tx: &N::TransactionRequest) -> Result {
+ self.node.estimate_gas(tx).await.map_err(|err| err.into())
+ }
+
+ pub async fn get_balance(&self, address: Address, block: BlockTag) -> Result {
+ self.node.get_balance(address, block).await
+ }
+
+ pub async fn get_nonce(&self, address: Address, block: BlockTag) -> Result {
+ self.node.get_nonce(address, block).await
+ }
+
+ pub async fn get_block_transaction_count_by_hash(&self, hash: B256) -> Result {
+ self.node.get_block_transaction_count_by_hash(hash).await
+ }
+
+ pub async fn get_block_transaction_count_by_number(&self, block: BlockTag) -> Result {
+ self.node.get_block_transaction_count_by_number(block).await
+ }
+
+ pub async fn get_code(&self, address: Address, block: BlockTag) -> Result {
+ self.node.get_code(address, block).await
+ }
+
+ pub async fn get_storage_at(
+ &self,
+ address: Address,
+ slot: B256,
+ block: BlockTag,
+ ) -> Result {
+ self.node.get_storage_at(address, slot, block).await
+ }
+
+ pub async fn send_raw_transaction(&self, bytes: &[u8]) -> Result {
+ self.node.send_raw_transaction(bytes).await
+ }
+
+ pub async fn get_transaction_receipt(
+ &self,
+ tx_hash: B256,
+ ) -> Result