From a3127742a9fad779c6f925affbaf9616ff1941ab Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Wed, 4 Dec 2024 03:44:36 +0000 Subject: [PATCH 001/101] safestake operator v2 --- .../{ci_lighthouse_5_3.yml => ci_dev-v2.yml} | 2 +- .gitmodules | 2 +- Cargo.lock | 3513 +++++--- Cargo.toml | 195 +- Dockerfile | 6 +- contract_config/SafeStakeNetwork.json | 1040 --- contract_config/SafeStakeOperatorConfig.json | 263 - contract_config/SafeStakeRegistry.json | 650 -- contract_config/configs.yml | 11 - docker-compose-boot.yml | 2 +- docker-compose-operator-mev.yml | 5 +- docker-compose-operator.yml | 5 +- lighthouse | 2 +- src/bin/dvf_key_tool.rs | 52 - src/bin/dvf_monitor_tool.rs | 98 - src/bin/dvf_network_tool.rs | 120 - src/bin/dvf_root_node.rs | 175 - src/boot_node/Cargo.lock | 7882 +++++++++++++++++ src/boot_node/Cargo.toml | 24 + src/boot_node/bootnode.proto | 17 + src/boot_node/build.rs | 8 + src/boot_node/src/boot_service.rs | 50 + src/boot_node/src/config.rs | 47 + src/boot_node/src/lib.rs | 155 + src/boot_node/src/proto.rs | 1 + src/lib.rs | 26 +- src/main.rs | 304 +- src/metrics.rs | 32 +- src/node/config.rs | 10 +- src/node/discovery.rs | 42 +- src/node/node.rs | 35 +- src/validation/validator_dir/share_builder.rs | 57 - 32 files changed, 10584 insertions(+), 4247 deletions(-) rename .github/workflows/{ci_lighthouse_5_3.yml => ci_dev-v2.yml} (98%) delete mode 100644 contract_config/SafeStakeNetwork.json delete mode 100644 contract_config/SafeStakeOperatorConfig.json delete mode 100644 contract_config/SafeStakeRegistry.json delete mode 100644 contract_config/configs.yml delete mode 100644 src/bin/dvf_key_tool.rs delete mode 100644 src/bin/dvf_monitor_tool.rs delete mode 100644 src/bin/dvf_network_tool.rs delete mode 100644 src/bin/dvf_root_node.rs create mode 100644 src/boot_node/Cargo.lock create mode 100644 src/boot_node/Cargo.toml create mode 100644 src/boot_node/bootnode.proto create mode 100644 src/boot_node/build.rs create mode 100644 src/boot_node/src/boot_service.rs create mode 100644 src/boot_node/src/config.rs create mode 100644 src/boot_node/src/lib.rs create mode 100644 src/boot_node/src/proto.rs diff --git a/.github/workflows/ci_lighthouse_5_3.yml b/.github/workflows/ci_dev-v2.yml similarity index 98% rename from .github/workflows/ci_lighthouse_5_3.yml rename to .github/workflows/ci_dev-v2.yml index df73eb05..a3d2f1e2 100644 --- a/.github/workflows/ci_lighthouse_5_3.yml +++ b/.github/workflows/ci_dev-v2.yml @@ -12,7 +12,7 @@ name: UnitTest & Publish Image on: push: branches: - - lighthouse-5.3 + - dev-v2 jobs: push_to_registry: diff --git a/.gitmodules b/.gitmodules index dc559006..a9358891 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "lighthouse"] path = lighthouse - url = https://github.com/sigp/lighthouse + url = https://github.com/ParaState/lighthouse diff --git a/Cargo.lock b/Cargo.lock index 7e401403..a8c9ca94 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,44 +2,21 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "account_manager" -version = "0.3.5" -dependencies = [ - "account_utils", - "bls", - "clap", - "clap_utils", - "directory", - "environment", - "eth2", - "eth2_keystore", - "eth2_network_config", - "eth2_wallet", - "eth2_wallet_manager", - "filesystem", - "safe_arith", - "sensitive_url", - "slashing_protection", - "slot_clock", - "tokio", - "types", - "validator_dir", -] - [[package]] name = "account_utils" version = "0.1.0" dependencies = [ "directory", "eth2_keystore", + "eth2_keystore_share", "eth2_wallet", "filesystem", - "rand 0.8.5", + "rand", "regex", "rpassword", + "safestake_crypto", "serde", - "serde_yaml 0.9.34+deprecated", + "serde_yaml", "slog", "types", "validator_dir", @@ -73,15 +50,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" -[[package]] -name = "aead" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" -dependencies = [ - "generic-array", -] - [[package]] name = "aead" version = "0.5.2" @@ -116,31 +84,17 @@ dependencies = [ "cpufeatures", ] -[[package]] -name = "aes-gcm" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc3be92e19a7ef47457b8e6f90707e12b6ac5d20c6f3866584fa3be0787d839f" -dependencies = [ - "aead 0.4.3", - "aes 0.7.5", - "cipher 0.3.0", - "ctr 0.7.0", - "ghash 0.4.4", - "subtle", -] - [[package]] name = "aes-gcm" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ - "aead 0.5.2", + "aead", "aes 0.8.4", "cipher 0.4.4", "ctr 0.9.2", - "ghash 0.5.1", + "ghash", "subtle", ] @@ -151,6 +105,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", + "getrandom", "once_cell", "version_check", "zerocopy", @@ -171,74 +126,504 @@ version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +[[package]] +name = "alloy-chains" +version = "0.1.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18c5c520273946ecf715c0010b4e3503d7eba9893cd9ce6b7fff5654c4a3c470" +dependencies = [ + "alloy-primitives", + "num_enum", + "strum 0.26.3", +] + [[package]] name = "alloy-consensus" -version = "0.2.1" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1" +dependencies = [ + "alloy-eips 0.3.6", + "alloy-primitives", + "alloy-rlp", + "c-kzg", +] + +[[package]] +name = "alloy-consensus" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae09ffd7c29062431dd86061deefe4e3c6f07fa0d674930095f8dcedb0baf02c" +dependencies = [ + "alloy-eips 0.6.4", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "c-kzg", + "derive_more 1.0.0", + "serde", +] + +[[package]] +name = "alloy-contract" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66430a72d5bf5edead101c8c2f0a24bada5ec9f3cf9909b3e08b6d6899b4803e" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-eth", + "alloy-sol-types", + "alloy-transport", + "futures", + "futures-util", + "thiserror", +] + +[[package]] +name = "alloy-dyn-abi" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80759b3f57b3b20fa7cd8fef6479930fc95461b58ff8adea6e87e618449c8a1d" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "const-hex", + "itoa", + "serde", + "serde_json", + "winnow 0.6.20", +] + +[[package]] +name = "alloy-eip2930" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04c309895995eaa4bfcc345f5515a39c7df9447798645cc8bf462b6c5bf1dc96" +checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" dependencies = [ - "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04" +dependencies = [ + "alloy-primitives", + "alloy-rlp", +] + +[[package]] +name = "alloy-eip7702" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more 1.0.0", + "serde", +] + +[[package]] +name = "alloy-eips" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702 0.1.1", "alloy-primitives", "alloy-rlp", "c-kzg", + "derive_more 1.0.0", + "once_cell", + "serde", + "sha2 0.10.8", ] [[package]] name = "alloy-eips" -version = "0.2.1" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b6aa3961694b30ba53d41006131a2fca3bdab22e4c344e46db2c639e7c2dfdd" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702 0.4.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "c-kzg", + "derive_more 1.0.0", + "once_cell", + "serde", + "sha2 0.10.8", +] + +[[package]] +name = "alloy-json-abi" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac4b22b3e51cac09fd2adfcc73b55f447b4df669f983c13f7894ec82b607c63f" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3694b7e480728c0b3e228384f223937f14c10caef5a4c766021190fc8f283d35" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea94b8ceb5c75d7df0a93ba0acc53b55a22b47b532b600a800a87ef04eb5b0b4" +dependencies = [ + "alloy-consensus 0.6.4", + "alloy-eips 0.6.4", + "alloy-json-rpc", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9f3e281005943944d15ee8491534a1c7b3cbf7a7de26f8c433b842b93eb5f9" +dependencies = [ + "alloy-consensus 0.6.4", + "alloy-eips 0.6.4", + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-primitives" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9db948902dfbae96a73c2fbf1f7abec62af034ab883e4c777c3fd29702bd6e2c" +dependencies = [ + "alloy-rlp", + "arbitrary", + "bytes", + "cfg-if", + "const-hex", + "derive_arbitrary", + "derive_more 1.0.0", + "foldhash", + "getrandom", + "hashbrown 0.15.2", + "hex-literal", + "indexmap 2.7.0", + "itoa", + "k256 0.13.3", + "keccak-asm", + "paste", + "proptest", + "proptest-derive", + "rand", + "ruint", + "rustc-hash 2.0.0", + "serde", + "sha3 0.10.8", + "tiny-keccak", +] + +[[package]] +name = "alloy-provider" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c1f9eede27bf4c13c099e8e64d54efd7ce80ef6ea47478aa75d5d74e2dba3b" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.6.4", + "alloy-eips 0.6.4", + "alloy-json-rpc", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-client", + "alloy-rpc-types-eth", + "alloy-transport", + "alloy-transport-http", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "futures", + "futures-utils-wasm", + "lru", + "parking_lot", + "pin-project", + "reqwest 0.12.9", + "schnellru", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b09cae092c27b6f1bde952653a22708691802e57bfef4a2973b80bea21efd3f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374dbe0dc3abdc2c964f36b3d3edf9cdb3db29d16bda34aa123f03d810bec1dd" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-transport", + "alloy-transport-http", + "futures", + "pin-project", + "reqwest 0.12.9", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.1", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-types" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c74832aa474b670309c20fffc2a869fa141edab7c79ff7963fad0a08de60bae1" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56294dce86af23ad6ee8df46cf8b0d292eb5d1ff67dc88a0886051e32b1faf" +dependencies = [ + "alloy-consensus 0.6.4", + "alloy-eips 0.6.4", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "derive_more 1.0.0", + "jsonwebtoken", + "rand", + "serde", + "strum 0.26.3", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8a477281940d82d29315846c7216db45b15e90bcd52309da9f54bcf7ad94a11" +dependencies = [ + "alloy-consensus 0.6.4", + "alloy-eips 0.6.4", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "derive_more 1.0.0", + "itertools 0.13.0", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-serde" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dfa4a7ccf15b2492bb68088692481fd6b2604ccbee1d0d6c44c21427ae4df83" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e10aec39d60dc27edcac447302c7803d2371946fb737245320a05b78eb2fafd" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "elliptic-curve 0.13.8", + "k256 0.13.3", + "thiserror", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bfd7853b65a2b4f49629ec975fee274faf6dff15ab8894c620943398ef283c0" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82ec42f342d9a9261699f8078e57a7a4fda8aaa73c1a212ed3987080e6a9cd13" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck 0.5.0", + "indexmap 2.7.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.87", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2c50e6a62ee2b4f7ab3c6d0366e5770a21cad426e109c2f40335a1b3aff3df" +dependencies = [ + "const-hex", + "dunce", + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.87", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9431c99a3b3fe606ede4b3d4043bdfbcb780c45b8d8d226c3804e2b75cfbe68" +checksum = "ac17c6e89a50fb4a758012e4b409d9a0ba575228e69b539fe37d7a1bd507ca4a" dependencies = [ - "alloy-primitives", - "alloy-rlp", - "c-kzg", - "once_cell", "serde", - "sha2 0.10.8", + "winnow 0.6.20", ] [[package]] -name = "alloy-primitives" -version = "0.7.7" +name = "alloy-sol-types" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" +checksum = "c9dc0fffe397aa17628160e16b89f704098bf3c9d74d5d369ebc239575936de5" dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", "const-hex", - "derive_more", - "hex-literal", - "itoa", - "k256 0.13.3", - "keccak-asm", - "proptest", - "rand 0.8.5", - "ruint", "serde", - "tiny-keccak", ] [[package]] -name = "alloy-rlp" -version = "0.3.8" +name = "alloy-transport" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +checksum = "f99acddb34000d104961897dbb0240298e8b775a7efffb9fda2a1a3efedd65b3" dependencies = [ - "alloy-rlp-derive", - "arrayvec", - "bytes", + "alloy-json-rpc", + "base64 0.22.1", + "futures-util", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror", + "tokio", + "tower 0.5.1", + "tracing", + "url", + "wasmtimer", ] [[package]] -name = "alloy-rlp-derive" -version = "0.3.8" +name = "alloy-transport-http" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" +checksum = "5dc013132e34eeadaa0add7e74164c1503988bfba8bae885b32e0918ba85a8a6" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.75", + "alloy-json-rpc", + "alloy-transport", + "reqwest 0.12.9", + "serde_json", + "tower 0.5.1", + "tracing", + "url", ] [[package]] @@ -446,7 +831,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ "num-traits", - "rand 0.8.5", + "rand", ] [[package]] @@ -456,7 +841,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand 0.8.5", + "rand", ] [[package]] @@ -501,8 +886,8 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", - "synstructure 0.13.1", + "syn 2.0.87", + "synstructure", ] [[package]] @@ -513,7 +898,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -563,17 +948,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-recursion" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7d78656ba01f1b93024b7c3a0467f1608e4be67d725749fdcd7d2c7678fd7a2" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "async-stream" version = "0.3.5" @@ -593,31 +967,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[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.75", -] - -[[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", + "syn 2.0.87", ] [[package]] @@ -652,7 +1013,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -661,6 +1022,51 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +[[package]] +name = "axum" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +dependencies = [ + "async-trait", + "axum-core", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.30", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 0.1.2", + "tower 0.4.13", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 0.2.12", + "http-body 0.4.6", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + [[package]] name = "backtrace" version = "0.3.73" @@ -722,6 +1128,7 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" name = "beacon_chain" version = "0.2.0" dependencies = [ + "alloy-primitives", "bitvec 1.0.1", "bls", "derivative", @@ -740,17 +1147,16 @@ dependencies = [ "int_to_bytes", "itertools 0.10.5", "kzg", - "lazy_static", - "lighthouse_metrics", "lighthouse_version", "logging", "lru", "merkle_proof", + "metrics", "oneshot_broadcast", "operation_pool", - "parking_lot 0.12.3", + "parking_lot", "proto_array", - "rand 0.8.5", + "rand", "rayon", "safe_arith", "sensitive_url", @@ -765,8 +1171,8 @@ dependencies = [ "smallvec", "ssz_types", "state_processing", - "store 0.2.0", - "strum", + "store", + "strum 0.24.1", "superstruct", "task_executor", "tempfile", @@ -778,33 +1184,20 @@ dependencies = [ ] [[package]] -name = "beacon_node" -version = "5.3.0" +name = "beacon_node_fallback" +version = "0.1.0" dependencies = [ - "beacon_chain", - "clap", - "clap_utils", - "client", - "directory", - "dirs", "environment", - "eth2_config", - "execution_layer", - "genesis", - "hex", - "http_api", - "hyper 1.4.1", - "lighthouse_network", - "monitoring_api", - "sensitive_url", - "serde_json", - "slasher", + "eth2", + "futures", + "itertools 0.10.5", + "serde", "slog", - "store 0.2.0", - "strum", - "task_executor", + "slot_clock", + "strum 0.24.1", + "tokio", "types", - "unused_port", + "validator_metrics", ] [[package]] @@ -814,19 +1207,18 @@ dependencies = [ "fnv", "futures", "itertools 0.10.5", - "lazy_static", - "lighthouse_metrics", "lighthouse_network", "logging", + "metrics", "num_cpus", - "parking_lot 0.12.3", + "parking_lot", "serde", "slog", "slot_clock", - "strum", + "strum 0.24.1", "task_executor", "tokio", - "tokio-util 0.7.11", + "tokio-util", "types", ] @@ -851,12 +1243,15 @@ dependencies = [ "itertools 0.12.1", "lazy_static", "lazycell", + "log", + "prettyplease", "proc-macro2", "quote", "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.75", + "syn 2.0.87", + "which", ] [[package]] @@ -874,11 +1269,21 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + [[package]] name = "bitcoin_hashes" -version = "0.11.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] [[package]] name = "bitflags" @@ -954,14 +1359,16 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" name = "bls" version = "0.2.0" dependencies = [ + "alloy-primitives", "arbitrary", "blst", - "ethereum-types 0.14.1", "ethereum_hashing", "ethereum_serde_utils", "ethereum_ssz", + "fixed_bytes", "hex", - "rand 0.8.5", + "rand", + "safe_arith", "serde", "tree_hash", "zeroize", @@ -979,34 +1386,45 @@ dependencies = [ "zeroize", ] +[[package]] +name = "blstrs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8a8ed6fefbeef4a8c7b460e4110e12c5e22a5b7cf32621aae6ad650c4dcf29" +dependencies = [ + "blst", + "byte-slice-cast", + "ff 0.13.0", + "group 0.13.0", + "pairing", + "rand_core", + "serde", + "subtle", +] + [[package]] name = "boot_node" -version = "5.3.0" +version = "0.1.0" dependencies = [ - "beacon_node", + "bincode", "clap", "clap_utils", - "eth2_network_config", - "ethereum_ssz", - "hex", + "directory", + "dirs", + "dvf_utils", "lighthouse_network", - "log", - "logging", + "prost", + "safestake_crypto", + "safestake_operator", "serde", + "slashing_protection", "slog", - "slog-async", - "slog-scope", - "slog-term", - "tokio", - "types", + "store", + "task_executor", + "tonic", + "tonic-build", ] -[[package]] -name = "bs58" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" - [[package]] name = "bs58" version = "0.5.1" @@ -1022,7 +1440,7 @@ version = "0.1.0" dependencies = [ "eth2", "lighthouse_version", - "reqwest", + "reqwest 0.11.27", "sensitive_url", "serde", ] @@ -1047,9 +1465,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" dependencies = [ "serde", ] @@ -1138,7 +1556,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" dependencies = [ - "aead 0.5.2", + "aead", "chacha20", "cipher 0.4.4", "poly1305", @@ -1222,7 +1640,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -1235,53 +1653,15 @@ checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" name = "clap_utils" version = "0.1.0" dependencies = [ + "alloy-primitives", "clap", "dirs", "eth2_network_config", - "ethereum-types 0.14.1", "ethereum_ssz", "hex", "serde", "serde_json", - "serde_yaml 0.9.34+deprecated", - "types", -] - -[[package]] -name = "client" -version = "0.2.0" -dependencies = [ - "beacon_chain", - "beacon_processor", - "directory", - "dirs", - "environment", - "error-chain", - "eth1", - "eth2", - "eth2_config", - "ethereum_ssz", - "execution_layer", - "futures", - "genesis", - "http_api", - "http_metrics", - "lazy_static", - "lighthouse_metrics", - "lighthouse_network", - "monitoring_api", - "network 0.2.0", - "sensitive_url", - "serde", - "slasher", - "slasher_service", - "slog", - "slot_clock", - "store 0.2.0", - "task_executor", - "time", - "timer", - "tokio", + "serde_yaml", "types", ] @@ -1324,34 +1704,11 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "consensus" -version = "0.1.0" -dependencies = [ - "async-recursion", - "async-trait", - "base64 0.13.1", - "bincode", - "bytes", - "crypto", - "ed25519-dalek", - "exit-future", - "futures", - "log", - "mempool", - "network 0.1.0", - "serde", - "store 0.1.0", - "thiserror", - "tokio", - "utils", -] - [[package]] name = "const-hex" -version = "1.12.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" dependencies = [ "cfg-if", "cpufeatures", @@ -1412,6 +1769,58 @@ dependencies = [ "libc", ] +[[package]] +name = "crate_crypto_internal_eth_kzg_bls12_381" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "319cb241b1ad37f8c376b2ebcd7233f53e033a50de6f0a9cf38e6cc545554de4" +dependencies = [ + "blst", + "blstrs", + "ff 0.13.0", + "group 0.13.0", + "pairing", + "subtle", +] + +[[package]] +name = "crate_crypto_internal_eth_kzg_erasure_codes" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abedcc3eb4d04655c53704a66880945f5a39c6d96b337f0ab4a086dda795c954" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", + "crate_crypto_internal_eth_kzg_polynomial", +] + +[[package]] +name = "crate_crypto_internal_eth_kzg_maybe_rayon" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db089718921ca28d137ed8b1a7406f10e6bfbc61794a2339bcd9c99d5ddefc6" + +[[package]] +name = "crate_crypto_internal_eth_kzg_polynomial" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "750e6dbe493d337d98502975137f055a52767021bcdb69aa8926ed8ee28c7980" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", +] + +[[package]] +name = "crate_crypto_kzg_multi_open_fk20" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3337262f48c7fee2999cf23bb9cb693299211671fe46b593ac81fcb218de68b" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", + "crate_crypto_internal_eth_kzg_maybe_rayon", + "crate_crypto_internal_eth_kzg_polynomial", + "hex", + "sha2 0.10.8", +] + [[package]] name = "crc32fast" version = "1.4.2" @@ -1461,18 +1870,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto" -version = "0.1.0" -dependencies = [ - "base64 0.13.1", - "ed25519-dalek", - "secp256k1 0.24.3", - "serde", - "tokio", - "zeroize", -] - [[package]] name = "crypto-bigint" version = "0.4.9" @@ -1480,7 +1877,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" dependencies = [ "generic-array", - "rand_core 0.6.4", + "rand_core", "subtle", "zeroize", ] @@ -1492,7 +1889,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core 0.6.4", + "rand_core", "subtle", "zeroize", ] @@ -1504,7 +1901,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core 0.6.4", + "rand_core", "typenum", ] @@ -1528,15 +1925,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "ctr" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a232f92a03f37dd7d7dd2adc67166c77e9cd88de5b019b9a9eecfaeaf7bfd481" -dependencies = [ - "cipher 0.3.0", -] - [[package]] name = "ctr" version = "0.8.0" @@ -1589,7 +1977,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -1598,8 +1986,18 @@ version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.13.4", + "darling_macro 0.13.4", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core 0.20.10", + "darling_macro 0.20.10", ] [[package]] @@ -1616,17 +2014,42 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.87", +] + [[package]] name = "darling_macro" version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ - "darling_core", + "darling_core 0.13.4", "quote", "syn 1.0.109", ] +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core 0.20.10", + "quote", + "syn 2.0.87", +] + [[package]] name = "darwin-libproc" version = "0.1.2" @@ -1653,6 +2076,20 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "data-encoding" version = "2.6.0" @@ -1679,23 +2116,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "database_manager" -version = "0.1.0" -dependencies = [ - "beacon_chain", - "beacon_node", - "clap", - "clap_utils", - "environment", - "hex", - "serde", - "slog", - "store 0.2.0", - "strum", - "types", -] - [[package]] name = "db-key" version = "0.0.5" @@ -1704,12 +2124,13 @@ checksum = "b72465f46d518f6015d9cf07f7f3013a95dd6b9c2747c3d65ae0cce43929d14f" [[package]] name = "delay_map" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4355c25cbf99edcb6b4a0e906f6bdc6956eda149e84455bea49696429b2f8e8" +checksum = "df941644b671f05f59433e481ba0d31ac10e3667de725236a4c0d587c496fba1" dependencies = [ "futures", - "tokio-util 0.7.11", + "tokio", + "tokio-util", ] [[package]] @@ -1719,7 +2140,7 @@ dependencies = [ "ethabi 16.0.0", "ethereum_ssz", "hex", - "reqwest", + "reqwest 0.11.27", "serde_json", "sha2 0.9.9", "tree_hash", @@ -1789,7 +2210,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -1802,7 +2223,28 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.0", - "syn 2.0.75", + "syn 2.0.87", +] + +[[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.87", + "unicode-xid", ] [[package]] @@ -1878,32 +2320,34 @@ dependencies = [ [[package]] name = "discv5" -version = "0.4.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac33cb3f99889a57e56a8c6ccb77aaf0cfc7787602b7af09783f736d77314e1" +checksum = "898d136ecb64116ec68aecf14d889bd30f8b1fe0c19e262953f7388dbe77052e" dependencies = [ - "aes 0.7.5", - "aes-gcm 0.9.2", + "aes 0.8.4", + "aes-gcm", + "alloy-rlp", "arrayvec", + "ctr 0.9.2", "delay_map", "enr", "fnv", "futures", - "hashlink 0.8.4", + "hashlink 0.9.1", "hex", "hkdf", "lazy_static", - "libp2p", + "libp2p-identity", "lru", "more-asserts", - "parking_lot 0.11.2", - "rand 0.8.5", - "rlp", + "multiaddr", + "parking_lot", + "rand", "smallvec", - "socket2 0.4.10", + "socket2", "tokio", "tracing", - "uint", + "uint 0.10.0", "zeroize", ] @@ -1915,14 +2359,23 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] -name = "downcast-rs" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +name = "doppelganger_service" +version = "0.1.0" +dependencies = [ + "beacon_node_fallback", + "environment", + "eth2", + "parking_lot", + "slog", + "slot_clock", + "task_executor", + "tokio", + "types", +] [[package]] name = "dtoa" @@ -1930,130 +2383,59 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dvf" -version = "1.1.0" +version = "1.4.0" dependencies = [ - "account_manager", "account_utils", - "aes-gcm 0.10.3", - "array-init", - "async-trait", - "base64 0.13.1", - "beacon_node", - "bincode", + "beacon_node_fallback", + "beacon_processor", "bls", - "blst", "boot_node", - "bytes", - "chrono", "clap", "clap_utils", - "consensus", - "crypto", - "database_manager", - "deposit_contract", "directory", - "dirs", - "downcast-rs", - "dvf_directory", - "dvf_version", - "env_logger", "environment", + "eth1", "eth2", - "eth2_keystore", "eth2_network_config", - "eth2_wallet", "ethereum_hashing", - "ethereum_serde_utils", - "exit-future", - "filesystem", "futures", - "hex", - "hotstuff_config", - "hyper 0.14.30", - "itertools 0.10.5", - "keccak-hash", - "lazy_static", - "libsecp256k1", - "lighthouse_metrics", + "initialized_validators", "lighthouse_network", "lighthouse_version", - "lockfile", - "log", "logging", "malloc_utils", - "mempool", - "miracl_core", - "monitoring_api", - "multiaddr 0.17.1", - "network 0.1.0", - "num-bigint", - "num-traits", - "parking_lot 0.12.3", - "pbkdf2 0.8.0", - "rand 0.8.5", - "rayon", - "regex", - "reqwest", - "ring 0.16.20", - "rpassword", - "rusqlite", - "safe_arith", - "scrypt", - "secp256k1 0.24.3", + "metrics", "sensitive_url", "serde", - "serde_derive", "serde_json", - "serde_yaml 0.8.26", - "sha2 0.9.9", - "sha256", + "serde_yaml", + "slasher", "slashing_protection", "slog", - "slot_clock", - "store 0.1.0", - "strum", - "subtle", - "sysinfo", - "system_health", "task_executor", "tempfile", "tokio", - "tokio-test", - "tokio-util 0.7.11", - "tracing", - "tracing-appender", - "tracing-core", - "tracing-log", - "tracing-subscriber", - "tracing-test", - "tree_hash", - "tree_hash_derive", "types", - "url", - "utils", + "unused_port", + "validator_client", "validator_dir", - "warp", - "warp_utils", - "web3", - "zeroize", ] [[package]] -name = "dvf_directory" +name = "dvf_utils" version = "0.1.0" dependencies = [ - "clap", - "directory", - "dirs", - "dvf_version", + "bls", ] -[[package]] -name = "dvf_version" -version = "0.1.0" - [[package]] name = "ecdsa" version = "0.14.8" @@ -2098,11 +2480,9 @@ checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ "curve25519-dalek", "ed25519", - "merlin", - "rand_core 0.6.4", + "rand_core", "serde", "sha2 0.10.8", - "signature 2.2.0", "subtle", "zeroize", ] @@ -2126,7 +2506,7 @@ dependencies = [ "ff 0.12.1", "generic-array", "group 0.12.1", - "rand_core 0.6.4", + "rand_core", "sec1 0.3.0", "subtle", "zeroize", @@ -2146,7 +2526,7 @@ dependencies = [ "group 0.13.0", "pem-rfc7468", "pkcs8 0.10.2", - "rand_core 0.6.4", + "rand_core", "sec1 0.7.3", "subtle", "zeroize", @@ -2163,18 +2543,18 @@ dependencies = [ [[package]] name = "enr" -version = "0.10.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" +checksum = "851bd664a3d3a3c175cff92b2f0df02df3c541b4895d0ae307611827aae46152" dependencies = [ - "base64 0.21.7", + "alloy-rlp", + "base64 0.22.1", "bytes", "ed25519-dalek", "hex", "k256 0.13.3", "log", - "rand 0.8.5", - "rlp", + "rand", "serde", "sha3 0.10.8", "zeroize", @@ -2189,30 +2569,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.75", -] - -[[package]] -name = "env_filter" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "humantime", - "log", + "syn 2.0.87", ] [[package]] @@ -2261,16 +2618,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "error-chain" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" -dependencies = [ - "backtrace", - "version_check", -] - [[package]] name = "eth1" version = "0.2.0" @@ -2280,10 +2627,10 @@ dependencies = [ "ethereum_ssz_derive", "execution_layer", "futures", - "lazy_static", - "lighthouse_metrics", + "logging", "merkle_proof", - "parking_lot 0.12.3", + "metrics", + "parking_lot", "sensitive_url", "serde", "slog", @@ -2301,6 +2648,7 @@ version = "0.1.0" dependencies = [ "account_utils", "bytes", + "derivative", "eth2_keystore", "ethereum_serde_utils", "ethereum_ssz", @@ -2314,14 +2662,14 @@ dependencies = [ "procfs", "proto_array", "psutil", - "reqwest", + "reqwest 0.11.27", "ring 0.16.20", "sensitive_url", "serde", "serde_json", "slashing_protection", "ssz_types", - "store 0.2.0", + "store", "types", ] @@ -2340,10 +2688,9 @@ dependencies = [ "bls", "ethereum_hashing", "hex", - "lazy_static", "num-bigint", "serde", - "serde_yaml 0.9.34+deprecated", + "serde_yaml", ] [[package]] @@ -2367,7 +2714,7 @@ dependencies = [ "hex", "hmac 0.11.0", "pbkdf2 0.8.0", - "rand 0.8.5", + "rand", "scrypt", "serde", "serde_json", @@ -2378,6 +2725,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "eth2_keystore_share" +version = "0.1.0" +dependencies = [ + "bls", + "eth2_keystore", + "serde", + "serde_json", +] + [[package]] name = "eth2_network_config" version = "0.2.0" @@ -2385,11 +2742,12 @@ dependencies = [ "bytes", "discv5", "eth2_config", + "kzg", "logging", "pretty_reqwest_error", - "reqwest", + "reqwest 0.11.27", "sensitive_url", - "serde_yaml 0.9.34+deprecated", + "serde_yaml", "sha2 0.9.9", "slog", "types", @@ -2403,7 +2761,7 @@ version = "0.1.0" dependencies = [ "eth2_key_derivation", "eth2_keystore", - "rand 0.8.5", + "rand", "serde", "serde_json", "serde_repr", @@ -2411,14 +2769,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "eth2_wallet_manager" -version = "0.1.0" -dependencies = [ - "eth2_wallet", - "lockfile", -] - [[package]] name = "ethabi" version = "16.0.0" @@ -2431,7 +2781,7 @@ dependencies = [ "serde_json", "sha3 0.9.1", "thiserror", - "uint", + "uint 0.9.5", ] [[package]] @@ -2448,7 +2798,7 @@ dependencies = [ "serde_json", "sha3 0.10.8", "thiserror", - "uint", + "uint 0.9.5", ] [[package]] @@ -2490,7 +2840,7 @@ dependencies = [ "impl-rlp", "impl-serde 0.3.2", "primitive-types 0.10.1", - "uint", + "uint 0.9.5", ] [[package]] @@ -2506,28 +2856,27 @@ dependencies = [ "impl-serde 0.4.0", "primitive-types 0.12.2", "scale-info", - "uint", + "uint 0.9.5", ] [[package]] name = "ethereum_hashing" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea7b408432c13f71af01197b1d3d0069c48a27bfcfbe72a81fc346e47f6defb" +checksum = "c853bd72c9e5787f8aafc3df2907c2ed03cff3150c3acd94e2e53a98ab70a8ab" dependencies = [ "cpufeatures", - "lazy_static", "ring 0.17.8", "sha2 0.10.8", ] [[package]] name = "ethereum_serde_utils" -version = "0.5.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de4d5951468846963c24e8744c133d44f39dff2cd3a233f6be22b370d08a524f" +checksum = "70cbccfccf81d67bff0ab36e591fa536c8a935b078a7b0e58c1d00d418332fc9" dependencies = [ - "ethereum-types 0.14.1", + "alloy-primitives", "hex", "serde", "serde_derive", @@ -2536,25 +2885,25 @@ dependencies = [ [[package]] name = "ethereum_ssz" -version = "0.5.4" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d3627f83d8b87b432a5fad9934b4565260722a141a2c40f371f8080adec9425" +checksum = "1e999563461faea0ab9bc0024e5e66adcee35881f3d5062f52f31a4070fe1522" dependencies = [ - "ethereum-types 0.14.1", - "itertools 0.10.5", + "alloy-primitives", + "itertools 0.13.0", "smallvec", ] [[package]] name = "ethereum_ssz_derive" -version = "0.5.4" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eccd5378ec34a07edd3d9b48088cbc63309d0367d14ba10b0cdb1d1791080ea" +checksum = "f3deae99c8e74829a00ba7a92d49055732b3c1f093f2ccfa3cbc621679b6fa91" dependencies = [ - "darling", + "darling 0.20.10", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.87", ] [[package]] @@ -2572,12 +2921,12 @@ dependencies = [ "hex", "k256 0.11.6", "open-fastrlp", - "rand 0.8.5", + "rand", "rlp", "rlp-derive", "serde", "serde_json", - "strum", + "strum 0.24.1", "thiserror", "tiny-keccak", "unicode-xid", @@ -2614,18 +2963,18 @@ dependencies = [ name = "execution_layer" version = "0.1.0" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.3.6", "alloy-primitives", "alloy-rlp", "arc-swap", "builder_client", "bytes", - "environment", "eth2", "eth2_network_config", "ethereum_serde_utils", "ethereum_ssz", "ethers-core", + "fixed_bytes", "fork_choice", "hash-db", "hash256-std-hasher", @@ -2633,22 +2982,23 @@ dependencies = [ "jsonwebtoken", "keccak-hash", "kzg", - "lazy_static", - "lighthouse_metrics", "lighthouse_version", + "logging", "lru", - "parking_lot 0.12.3", + "metrics", + "parking_lot", "pretty_reqwest_error", - "rand 0.8.5", - "reqwest", + "rand", + "reqwest 0.11.27", "sensitive_url", "serde", "serde_json", + "sha2 0.9.9", "slog", "slot_clock", "ssz_types", "state_processing", - "strum", + "strum 0.24.1", "superstruct", "task_executor", "tempfile", @@ -2662,15 +3012,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "exit-future" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e43f2f1833d64e33f15592464d6fdd70f349dda7b1a53088eb83cd94014008c5" -dependencies = [ - "futures", -] - [[package]] name = "fallible-iterator" version = "0.2.0" @@ -2700,13 +3041,23 @@ dependencies = [ "bytes", ] +[[package]] +name = "fdlimit" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182f7dbc2ef73d9ef67351c5fbbea084729c48362d3ce9dd44c28e32e277fe5" +dependencies = [ + "libc", + "thiserror", +] + [[package]] name = "ff" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -2716,7 +3067,8 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "rand_core 0.6.4", + "bitvec 1.0.1", + "rand_core", "subtle", ] @@ -2757,7 +3109,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" dependencies = [ "byteorder", - "rand 0.8.5", + "rand", "rustc-hex", "static_assertions", ] @@ -2768,13 +3120,26 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ - "arbitrary", "byteorder", - "rand 0.8.5", + "rand", "rustc-hex", "static_assertions", ] +[[package]] +name = "fixed_bytes" +version = "0.1.0" +dependencies = [ + "alloy-primitives", + "safe_arith", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flate2" version = "1.0.32" @@ -2792,6 +3157,12 @@ 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 = "foreign-types" version = "0.3.2" @@ -2813,6 +3184,7 @@ version = "0.1.0" dependencies = [ "ethereum_ssz", "ethereum_ssz_derive", + "metrics", "proto_array", "slog", "state_processing", @@ -2927,7 +3299,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -2988,6 +3360,12 @@ dependencies = [ "slab", ] +[[package]] +name = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + [[package]] name = "generic-array" version = "0.14.7" @@ -3018,17 +3396,6 @@ dependencies = [ "types", ] -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - [[package]] name = "getrandom" version = "0.2.15" @@ -3036,18 +3403,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "ghash" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" -dependencies = [ - "opaque-debug", - "polyval 0.5.3", + "wasi", + "wasm-bindgen", ] [[package]] @@ -3057,7 +3416,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" dependencies = [ "opaque-debug", - "polyval 0.6.2", + "polyval", ] [[package]] @@ -3083,7 +3442,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -3097,7 +3456,7 @@ name = "gossipsub" version = "0.5.0" dependencies = [ "async-channel", - "asynchronous-codec 0.7.0", + "asynchronous-codec", "base64 0.21.7", "byteorder", "bytes", @@ -3106,14 +3465,14 @@ dependencies = [ "futures", "futures-ticker", "futures-timer", - "getrandom 0.2.15", + "getrandom", "hashlink 0.9.1", "hex_fmt", "libp2p", "prometheus-client", "quick-protobuf", - "quick-protobuf-codec 0.3.1", - "rand 0.8.5", + "quick-protobuf-codec", + "rand", "regex", "sha2 0.10.8", "tracing", @@ -3121,6 +3480,16 @@ dependencies = [ "web-time", ] +[[package]] +name = "graffiti_file" +version = "0.1.0" +dependencies = [ + "bls", + "serde", + "slog", + "types", +] + [[package]] name = "group" version = "0.12.1" @@ -3128,7 +3497,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ "ff 0.12.1", - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -3139,7 +3508,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff 0.13.0", - "rand_core 0.6.4", + "rand", + "rand_core", + "rand_xorshift", "subtle", ] @@ -3155,10 +3526,10 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.4.0", + "indexmap 2.7.0", "slab", "tokio", - "tokio-util 0.7.11", + "tokio-util", "tracing", ] @@ -3183,6 +3554,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" + [[package]] name = "hashbrown" version = "0.14.5" @@ -3193,6 +3570,16 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "foldhash", + "serde", +] + [[package]] name = "hashlink" version = "0.8.4" @@ -3264,6 +3651,18 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] [[package]] name = "hex-literal" @@ -3293,8 +3692,8 @@ dependencies = [ "idna 0.4.0", "ipnet", "once_cell", - "rand 0.8.5", - "socket2 0.5.7", + "rand", + "socket2", "thiserror", "tinyvec", "tokio", @@ -3314,8 +3713,8 @@ dependencies = [ "ipconfig", "lru-cache", "once_cell", - "parking_lot 0.12.3", - "rand 0.8.5", + "parking_lot", + "rand", "resolv-conf", "smallvec", "thiserror", @@ -3372,6 +3771,15 @@ dependencies = [ "hmac 0.8.1", ] +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "hostname" version = "0.3.1" @@ -3383,22 +3791,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "hotstuff_config" -version = "0.1.0" -dependencies = [ - "bincode", - "consensus", - "crypto", - "hex", - "mempool", - "rand 0.7.3", - "serde", - "serde_json", - "thiserror", - "zeroize", -] - [[package]] name = "http" version = "0.2.12" @@ -3443,63 +3835,16 @@ dependencies = [ ] [[package]] -name = "http_api" -version = "0.1.0" +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ - "beacon_chain", - "beacon_processor", - "bs58 0.4.0", "bytes", - "directory", - "eth1", - "eth2", - "ethereum_serde_utils", - "ethereum_ssz", - "execution_layer", - "futures", - "hex", - "lazy_static", - "lighthouse_metrics", - "lighthouse_network", - "lighthouse_version", - "logging", - "lru", - "network 0.2.0", - "operation_pool", - "parking_lot 0.12.3", - "safe_arith", - "sensitive_url", - "serde", - "slog", - "slot_clock", - "state_processing", - "store 0.2.0", - "sysinfo", - "system_health", - "task_executor", - "tokio", - "tokio-stream", - "tree_hash", - "types", - "warp", - "warp_utils", -] - -[[package]] -name = "http_metrics" -version = "0.1.0" -dependencies = [ - "beacon_chain", - "lighthouse_metrics", - "lighthouse_network", - "lighthouse_version", - "malloc_utils", - "serde", - "slog", - "slot_clock", - "store 0.2.0", - "warp", - "warp_utils", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "pin-project-lite", ] [[package]] @@ -3514,12 +3859,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - [[package]] name = "hyper" version = "0.14.30" @@ -3537,7 +3876,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower-service", "tracing", @@ -3551,9 +3890,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", + "futures-channel", + "futures-util", "http 1.1.0", "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", "tokio", + "want", ] [[package]] @@ -3570,6 +3916,18 @@ dependencies = [ "tokio-rustls 0.24.1", ] +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper 0.14.30", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + [[package]] name = "hyper-tls" version = "0.5.0" @@ -3583,6 +3941,41 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.4.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.4.1", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + [[package]] name = "iana-time-zone" version = "0.1.60" @@ -3674,7 +4067,7 @@ dependencies = [ "http 0.2.12", "hyper 0.14.30", "log", - "rand 0.8.5", + "rand", "tokio", "url", "xmltree", @@ -3748,12 +4141,41 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.4.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ + "arbitrary", "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.2", + "serde", +] + +[[package]] +name = "initialized_validators" +version = "0.1.0" +dependencies = [ + "account_utils", + "bincode", + "bls", + "eth2_keystore", + "eth2_keystore_share", + "filesystem", + "lockfile", + "metrics", + "parking_lot", + "rand", + "reqwest 0.11.27", + "safestake_operator", + "serde", + "serde_json", + "signing_method", + "slog", + "tokio", + "types", + "url", + "validator_dir", + "validator_metrics", ] [[package]] @@ -3807,7 +4229,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.7", + "socket2", "widestring 1.1.0", "windows-sys 0.48.0", "winreg", @@ -3854,6 +4276,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -3878,30 +4309,16 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "jsonrpc-core" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" -dependencies = [ - "futures", - "futures-executor", - "futures-util", - "log", - "serde", - "serde_derive", - "serde_json", -] - [[package]] name = "jsonwebtoken" -version = "8.3.0" +version = "9.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" dependencies = [ "base64 0.21.7", - "pem 1.1.1", - "ring 0.16.20", + "js-sys", + "pem", + "ring 0.17.8", "serde", "serde_json", "simple_asn1", @@ -3975,7 +4392,9 @@ dependencies = [ "ethereum_ssz", "ethereum_ssz_derive", "hex", + "rust_eth_kzg", "serde", + "serde_json", "tree_hash", ] @@ -4063,18 +4482,32 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +[[package]] +name = "libmdbx" +version = "0.1.4" +source = "git+https://github.com/sigp/libmdbx-rs?rev=e6ff4b9377c1619bcf0bfdf52bee5a980a432a1a#e6ff4b9377c1619bcf0bfdf52bee5a980a432a1a" +dependencies = [ + "bitflags 1.3.2", + "byteorder", + "derive_more 0.99.18", + "indexmap 1.9.3", + "libc", + "mdbx-sys", + "parking_lot", + "thiserror", +] + [[package]] name = "libp2p" -version = "0.53.2" +version = "0.54.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681fb3f183edfbedd7a57d32ebe5dcdc0b9f94061185acf3c30249349cc6fc99" +checksum = "bbbe80f9c7e00526cd6b838075b9c171919404a4732cb2fa8ece0a093223bfc4" dependencies = [ "bytes", "either", "futures", "futures-timer", - "getrandom 0.2.15", - "instant", + "getrandom", "libp2p-allow-block-list", "libp2p-connection-limits", "libp2p-core", @@ -4090,7 +4523,7 @@ dependencies = [ "libp2p-tcp", "libp2p-upnp", "libp2p-yamux", - "multiaddr 0.18.1", + "multiaddr", "pin-project", "rw-stream-sink", "thiserror", @@ -4098,9 +4531,9 @@ dependencies = [ [[package]] name = "libp2p-allow-block-list" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107b238b794cb83ab53b74ad5dcf7cca3200899b72fe662840cfb52f5b0a32e6" +checksum = "d1027ccf8d70320ed77e984f273bc8ce952f623762cb9bf2d126df73caef8041" dependencies = [ "libp2p-core", "libp2p-identity", @@ -4110,9 +4543,9 @@ dependencies = [ [[package]] name = "libp2p-connection-limits" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7cd50a78ccfada14de94cbacd3ce4b0138157f376870f13d3a8422cd075b4fd" +checksum = "8d003540ee8baef0d254f7b6bfd79bac3ddf774662ca0abf69186d517ef82ad8" dependencies = [ "libp2p-core", "libp2p-identity", @@ -4122,23 +4555,23 @@ dependencies = [ [[package]] name = "libp2p-core" -version = "0.41.3" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5a8920cbd8540059a01950c1e5c96ea8d89eb50c51cd366fc18bdf540a6e48f" +checksum = "a61f26c83ed111104cd820fe9bc3aaabbac5f1652a1d213ed6e900b7918a1298" dependencies = [ "either", "fnv", "futures", "futures-timer", "libp2p-identity", - "multiaddr 0.18.1", - "multihash 0.19.1", + "multiaddr", + "multihash", "multistream-select", "once_cell", - "parking_lot 0.12.3", + "parking_lot", "pin-project", "quick-protobuf", - "rand 0.8.5", + "rand", "rw-stream-sink", "smallvec", "thiserror", @@ -4150,27 +4583,27 @@ dependencies = [ [[package]] name = "libp2p-dns" -version = "0.41.1" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d17cbcf7160ff35c3e8e560de4a068fe9d6cb777ea72840e48eb76ff9576c4b6" +checksum = "97f37f30d5c7275db282ecd86e54f29dd2176bd3ac656f06abf43bedb21eb8bd" dependencies = [ "async-trait", "futures", "hickory-resolver", "libp2p-core", "libp2p-identity", - "parking_lot 0.12.3", + "parking_lot", "smallvec", "tracing", ] [[package]] name = "libp2p-identify" -version = "0.44.2" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5d635ebea5ca0c3c3e77d414ae9b67eccf2a822be06091b9c1a0d13029a1e2f" +checksum = "1711b004a273be4f30202778856368683bd9a83c4c7dcc8f848847606831a4e3" dependencies = [ - "asynchronous-codec 0.7.0", + "asynchronous-codec", "either", "futures", "futures-bounded", @@ -4180,7 +4613,7 @@ dependencies = [ "libp2p-swarm", "lru", "quick-protobuf", - "quick-protobuf-codec 0.3.1", + "quick-protobuf-codec", "smallvec", "thiserror", "tracing", @@ -4194,14 +4627,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8" dependencies = [ "asn1_der", - "bs58 0.5.1", + "bs58", "ed25519-dalek", "hkdf", "libsecp256k1", - "multihash 0.19.1", + "multihash", "p256", "quick-protobuf", - "rand 0.8.5", + "rand", "sec1 0.7.3", "sha2 0.10.8", "thiserror", @@ -4212,9 +4645,9 @@ dependencies = [ [[package]] name = "libp2p-mdns" -version = "0.45.1" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49007d9a339b3e1d7eeebc4d67c05dbf23d300b7d091193ec2d3f26802d7faf2" +checksum = "14b8546b6644032565eb29046b42744aee1e9f261ed99671b2c93fb140dba417" dependencies = [ "data-encoding", "futures", @@ -4223,9 +4656,9 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm", - "rand 0.8.5", + "rand", "smallvec", - "socket2 0.5.7", + "socket2", "tokio", "tracing", "void", @@ -4233,56 +4666,56 @@ dependencies = [ [[package]] name = "libp2p-metrics" -version = "0.14.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdac91ae4f291046a3b2660c039a2830c931f84df2ee227989af92f7692d3357" +checksum = "77ebafa94a717c8442d8db8d3ae5d1c6a15e30f2d347e0cd31d057ca72e42566" dependencies = [ "futures", - "instant", "libp2p-core", "libp2p-identify", "libp2p-identity", "libp2p-swarm", "pin-project", "prometheus-client", + "web-time", ] [[package]] name = "libp2p-mplex" -version = "0.41.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e895765e27e30217b25f7cb7ac4686dad1ff80bf2fdeffd1d898566900a924" +checksum = "41187ab8f6c835ad864edf94224f666f636ee2d270601422c1441f739e0abccc" dependencies = [ - "asynchronous-codec 0.6.2", + "asynchronous-codec", "bytes", "futures", "libp2p-core", "libp2p-identity", "nohash-hasher", - "parking_lot 0.12.3", - "rand 0.8.5", + "parking_lot", + "rand", "smallvec", "tracing", - "unsigned-varint 0.7.2", + "unsigned-varint 0.8.0", ] [[package]] name = "libp2p-noise" -version = "0.44.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecd0545ce077f6ea5434bcb76e8d0fe942693b4380aaad0d34a358c2bd05793" +checksum = "36b137cb1ae86ee39f8e5d6245a296518912014eaa87427d24e6ff58cfc1b28c" dependencies = [ - "asynchronous-codec 0.7.0", + "asynchronous-codec", "bytes", "curve25519-dalek", "futures", "libp2p-core", "libp2p-identity", - "multiaddr 0.18.1", - "multihash 0.19.1", + "multiaddr", + "multihash", "once_cell", "quick-protobuf", - "rand 0.8.5", + "rand", "sha2 0.10.8", "snow", "static_assertions", @@ -4294,25 +4727,25 @@ dependencies = [ [[package]] name = "libp2p-plaintext" -version = "0.41.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67330af40b67217e746d42551913cfb7ad04c74fa300fb329660a56318590b3f" +checksum = "5b63d926c6be56a2489e0e7316b17fe95a70bc5c4f3e85740bb3e67c0f3c6a44" dependencies = [ - "asynchronous-codec 0.6.2", + "asynchronous-codec", "bytes", "futures", "libp2p-core", "libp2p-identity", "quick-protobuf", - "quick-protobuf-codec 0.2.0", + "quick-protobuf-codec", "tracing", ] [[package]] name = "libp2p-quic" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c67296ad4e092e23f92aea3d2bdb6f24eab79c0929ed816dfb460ea2f4567d2b" +checksum = "46352ac5cd040c70e88e7ff8257a2ae2f891a4076abad2c439584a31c15fd24e" dependencies = [ "bytes", "futures", @@ -4321,12 +4754,12 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-tls", - "parking_lot 0.12.3", + "parking_lot", "quinn", - "rand 0.8.5", + "rand", "ring 0.17.8", "rustls 0.23.12", - "socket2 0.5.7", + "socket2", "thiserror", "tokio", "tracing", @@ -4334,45 +4767,45 @@ dependencies = [ [[package]] name = "libp2p-swarm" -version = "0.44.2" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80cae6cb75f89dbca53862f9ebe0b9f463aa7b302762fcfaafb9e51dcc9b0f7e" +checksum = "d7dd6741793d2c1fb2088f67f82cf07261f25272ebe3c0b0c311e0c6b50e851a" dependencies = [ "either", "fnv", "futures", "futures-timer", - "instant", "libp2p-core", "libp2p-identity", "libp2p-swarm-derive", "lru", "multistream-select", "once_cell", - "rand 0.8.5", + "rand", "smallvec", "tokio", "tracing", "void", + "web-time", ] [[package]] name = "libp2p-swarm-derive" -version = "0.34.2" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5daceb9dd908417b6dfcfe8e94098bc4aac54500c282e78120b885dadc09b999" +checksum = "206e0aa0ebe004d778d79fb0966aa0de996c19894e2c0605ba2f8524dd4443d8" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] name = "libp2p-tcp" -version = "0.41.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b2460fc2748919adff99ecbc1aab296e4579e41f374fb164149bd2c9e529d4c" +checksum = "ad964f312c59dcfcac840acd8c555de8403e295d39edf96f5240048b5fcaa314" dependencies = [ "futures", "futures-timer", @@ -4380,16 +4813,16 @@ dependencies = [ "libc", "libp2p-core", "libp2p-identity", - "socket2 0.5.7", + "socket2", "tokio", "tracing", ] [[package]] name = "libp2p-tls" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b7b831e55ce2aa6c354e6861a85fdd4dd0a2b97d5e276fabac0e4810a71776" +checksum = "47b23dddc2b9c355f73c1e36eb0c3ae86f7dc964a3715f0731cfad352db4d847" dependencies = [ "futures", "futures-rustls", @@ -4406,9 +4839,9 @@ dependencies = [ [[package]] name = "libp2p-upnp" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccf04b0e3ff3de52d07d5fd6c3b061d0e7f908ffc683c32d9638caedce86fc8" +checksum = "01bf2d1b772bd3abca049214a3304615e6a36fa6ffc742bdd1ba774486200b8f" dependencies = [ "futures", "futures-timer", @@ -4422,9 +4855,9 @@ dependencies = [ [[package]] name = "libp2p-yamux" -version = "0.45.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd5265f6b80f94d48a3963541aad183cc598a645755d2f1805a373e41e0716b" +checksum = "788b61c80789dba9760d8c669a5bedb642c8267555c803fabd8396e4ca5c5882" dependencies = [ "either", "futures", @@ -4445,22 +4878,6 @@ dependencies = [ "libc", ] -[[package]] -name = "librocksdb-sys" -version = "0.16.0+8.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce3d60bc059831dc1c83903fb45c103f75db65c5a7bf22272764d9cc683e348c" -dependencies = [ - "bindgen", - "bzip2-sys", - "cc", - "glob", - "libc", - "libz-sys", - "lz4-sys", - "zstd-sys", -] - [[package]] name = "libsecp256k1" version = "0.7.1" @@ -4474,7 +4891,7 @@ dependencies = [ "libsecp256k1-core", "libsecp256k1-gen-ecmult", "libsecp256k1-gen-genmult", - "rand 0.8.5", + "rand", "serde", "sha2 0.9.9", "typenum", @@ -4531,24 +4948,18 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "lighthouse_metrics" -version = "0.2.0" -dependencies = [ - "prometheus", -] - [[package]] name = "lighthouse_network" version = "0.2.0" dependencies = [ + "alloy-primitives", + "alloy-rlp", "bytes", "delay_map", "directory", "dirs", "discv5", "either", - "error-chain", "ethereum_ssz", "ethereum_ssz_derive", "fnv", @@ -4556,16 +4967,15 @@ dependencies = [ "gossipsub", "hex", "itertools 0.10.5", - "lazy_static", "libp2p", "libp2p-mplex", - "lighthouse_metrics", "lighthouse_version", "lru", "lru_cache", - "parking_lot 0.12.3", + "metrics", + "parking_lot", "prometheus-client", - "rand 0.8.5", + "rand", "regex", "serde", "sha2 0.9.9", @@ -4573,13 +4983,13 @@ dependencies = [ "smallvec", "snap", "ssz_types", - "strum", + "strum 0.24.1", "superstruct", "task_executor", "tiny-keccak", "tokio", "tokio-io-timeout", - "tokio-util 0.7.11", + "tokio-util", "types", "unsigned-varint 0.8.0", "unused_port", @@ -4612,6 +5022,27 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "lmdb-rkv" +version = "0.14.0" +source = "git+https://github.com/sigp/lmdb-rs?rev=f33845c6469b94265319aac0ed5085597862c27e#f33845c6469b94265319aac0ed5085597862c27e" +dependencies = [ + "bitflags 1.3.2", + "byteorder", + "libc", + "lmdb-rkv-sys", +] + +[[package]] +name = "lmdb-rkv-sys" +version = "0.11.2" +source = "git+https://github.com/sigp/lmdb-rs?rev=f33845c6469b94265319aac0ed5085597862c27e#f33845c6469b94265319aac0ed5085597862c27e" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + [[package]] name = "lock_api" version = "0.4.12" @@ -4640,9 +5071,8 @@ name = "logging" version = "0.2.0" dependencies = [ "chrono", - "lazy_static", - "lighthouse_metrics", - "parking_lot 0.12.3", + "metrics", + "parking_lot", "serde", "serde_json", "slog", @@ -4682,16 +5112,6 @@ dependencies = [ "fnv", ] -[[package]] -name = "lz4-sys" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "mach2" version = "0.4.2" @@ -4705,10 +5125,11 @@ dependencies = [ name = "malloc_utils" version = "0.1.0" dependencies = [ - "lazy_static", "libc", - "lighthouse_metrics", - "parking_lot 0.12.3", + "metrics", + "parking_lot", + "tikv-jemalloc-ctl", + "tikv-jemallocator", ] [[package]] @@ -4732,6 +5153,23 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "mdbx-sys" +version = "0.11.6-4" +source = "git+https://github.com/sigp/libmdbx-rs?rev=e6ff4b9377c1619bcf0bfdf52bee5a980a432a1a#e6ff4b9377c1619bcf0bfdf52bee5a980a432a1a" +dependencies = [ + "bindgen", + "cc", + "cmake", + "libc", +] + [[package]] name = "mediatype" version = "0.19.18" @@ -4753,47 +5191,16 @@ dependencies = [ "autocfg", ] -[[package]] -name = "mempool" -version = "0.1.0" -dependencies = [ - "async-trait", - "bincode", - "bytes", - "crypto", - "ed25519-dalek", - "exit-future", - "futures", - "log", - "network 0.1.0", - "serde", - "store 0.1.0", - "tokio", - "utils", -] - [[package]] name = "merkle_proof" version = "0.2.0" dependencies = [ - "ethereum-types 0.14.1", + "alloy-primitives", "ethereum_hashing", - "lazy_static", + "fixed_bytes", "safe_arith", ] -[[package]] -name = "merlin" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" -dependencies = [ - "byteorder", - "keccak", - "rand_core 0.6.4", - "zeroize", -] - [[package]] name = "metastruct" version = "0.1.2" @@ -4809,7 +5216,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c3a991d4536c933306e52f0e8ab303757185ec13a09d1f3e1cbde5a0d8410bf" dependencies = [ - "darling", + "darling 0.13.4", "itertools 0.10.5", "proc-macro2", "quote", @@ -4817,20 +5224,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "metrics" +version = "0.2.0" +dependencies = [ + "prometheus", +] + [[package]] name = "milhouse" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3826d3602a3674b07e080ce1982350e454ec253d73f156bd927ac1b652293f4d" +checksum = "f68e33f98199224d1073f7c1468ea6abfea30736306fb79c7181a881e97ea32f" dependencies = [ + "alloy-primitives", "arbitrary", "derivative", - "ethereum-types 0.14.1", "ethereum_hashing", "ethereum_ssz", "ethereum_ssz_derive", - "itertools 0.10.5", - "parking_lot 0.12.3", + "itertools 0.13.0", + "parking_lot", "rayon", "serde", "smallvec", @@ -4888,7 +5302,7 @@ checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ "hermit-abi 0.3.9", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.52.0", ] @@ -4903,16 +5317,15 @@ name = "monitoring_api" version = "0.1.0" dependencies = [ "eth2", - "lazy_static", - "lighthouse_metrics", "lighthouse_version", + "metrics", "regex", - "reqwest", + "reqwest 0.11.27", "sensitive_url", "serde", "serde_json", "slog", - "store 0.2.0", + "store", "task_executor", "tokio", ] @@ -4923,25 +5336,6 @@ 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 0.17.0", - "percent-encoding", - "serde", - "static_assertions", - "unsigned-varint 0.7.2", - "url", -] - [[package]] name = "multiaddr" version = "0.18.1" @@ -4953,7 +5347,7 @@ dependencies = [ "data-encoding", "libp2p-identity", "multibase", - "multihash 0.19.1", + "multihash", "percent-encoding", "serde", "static_assertions", @@ -4972,17 +5366,6 @@ dependencies = [ "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 0.7.2", -] - [[package]] name = "multihash" version = "0.19.1" @@ -4994,18 +5377,10 @@ dependencies = [ ] [[package]] -name = "multihash-derive" -version = "0.8.1" +name = "multimap" +version = "0.10.0" 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 0.12.6", -] +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" [[package]] name = "multistream-select" @@ -5104,64 +5479,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "network" -version = "0.1.0" -dependencies = [ - "async-trait", - "bincode", - "bytes", - "dvf_version", - "exit-future", - "futures", - "log", - "rand 0.7.3", - "serde", - "thiserror", - "tokio", - "tokio-util 0.6.10", - "utils", -] - -[[package]] -name = "network" -version = "0.2.0" -dependencies = [ - "anyhow", - "async-channel", - "beacon_chain", - "beacon_processor", - "delay_map", - "derivative", - "error-chain", - "ethereum_ssz", - "execution_layer", - "fnv", - "futures", - "hex", - "igd-next", - "itertools 0.10.5", - "lazy_static", - "lighthouse_metrics", - "lighthouse_network", - "logging", - "lru_cache", - "operation_pool", - "parking_lot 0.12.3", - "rand 0.8.5", - "rlp", - "slog", - "slot_clock", - "smallvec", - "ssz_types", - "store 0.2.0", - "strum", - "task_executor", - "tokio", - "tokio-stream", - "types", -] - [[package]] name = "nix" version = "0.24.3" @@ -5228,7 +5545,7 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", - "rand 0.8.5", + "rand", ] [[package]] @@ -5243,7 +5560,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.5", + "rand", "serde", "smallvec", "zeroize", @@ -5295,6 +5612,26 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "object" version = "0.36.3" @@ -5323,7 +5660,7 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" name = "oneshot_broadcast" version = "0.1.0" dependencies = [ - "parking_lot 0.12.3", + "parking_lot", ] [[package]] @@ -5380,7 +5717,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -5420,14 +5757,13 @@ dependencies = [ "ethereum_ssz", "ethereum_ssz_derive", "itertools 0.10.5", - "lazy_static", - "lighthouse_metrics", - "parking_lot 0.12.3", - "rand 0.8.5", + "metrics", + "parking_lot", + "rand", "rayon", "serde", "state_processing", - "store 0.2.0", + "store", "types", ] @@ -5449,6 +5785,15 @@ dependencies = [ "sha2 0.10.8", ] +[[package]] +name = "pairing" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +dependencies = [ + "group 0.13.0", +] + [[package]] name = "parity-scale-codec" version = "2.3.1" @@ -5507,17 +5852,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" -[[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" @@ -5525,21 +5859,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "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", + "parking_lot_core", ] [[package]] @@ -5550,7 +5870,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall", "smallvec", "windows-targets 0.52.6", ] @@ -5562,7 +5882,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -5593,15 +5913,6 @@ dependencies = [ "sha2 0.10.8", ] -[[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]] name = "pem" version = "3.0.4" @@ -5638,6 +5949,16 @@ dependencies = [ "ucd-trie", ] +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.7.0", +] + [[package]] name = "pin-project" version = "1.1.5" @@ -5655,7 +5976,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -5725,19 +6046,7 @@ checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ "cpufeatures", "opaque-debug", - "universal-hash 0.5.1", -] - -[[package]] -name = "polyval" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" -dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug", - "universal-hash 0.4.0", + "universal-hash", ] [[package]] @@ -5749,7 +6058,7 @@ dependencies = [ "cfg-if", "cpufeatures", "opaque-debug", - "universal-hash 0.5.1", + "universal-hash", ] [[package]] @@ -5771,10 +6080,20 @@ dependencies = [ name = "pretty_reqwest_error" version = "0.1.0" dependencies = [ - "reqwest", + "reqwest 0.11.27", "sensitive_url", ] +[[package]] +name = "prettyplease" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.87", +] + [[package]] name = "primeorder" version = "0.13.6" @@ -5794,7 +6113,7 @@ dependencies = [ "impl-codec 0.5.1", "impl-rlp", "impl-serde 0.3.2", - "uint", + "uint 0.9.5", ] [[package]] @@ -5808,7 +6127,7 @@ dependencies = [ "impl-rlp", "impl-serde 0.4.0", "scale-info", - "uint", + "uint 0.9.5", ] [[package]] @@ -5831,27 +6150,25 @@ dependencies = [ ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro-error-attr2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" dependencies = [ - "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.109", - "version_check", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-error2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ + "proc-macro-error-attr2", "proc-macro2", "quote", - "version_check", + "syn 2.0.87", ] [[package]] @@ -5888,7 +6205,7 @@ dependencies = [ "fnv", "lazy_static", "memchr", - "parking_lot 0.12.3", + "parking_lot", "protobuf", "thiserror", ] @@ -5901,7 +6218,7 @@ checksum = "504ee9ff529add891127c4827eb481bd69dc0ebc72e9a682e187db4caa60c3ca" dependencies = [ "dtoa", "itoa", - "parking_lot 0.12.3", + "parking_lot", "prometheus-client-derive-encode", ] @@ -5913,7 +6230,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -5927,8 +6244,8 @@ dependencies = [ "bitflags 2.6.0", "lazy_static", "num-traits", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand", + "rand_chacha", "rand_xorshift", "regex-syntax 0.8.4", "rusty-fork", @@ -5936,6 +6253,70 @@ dependencies = [ "unarray", ] +[[package]] +name = "proptest-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "prost" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" +dependencies = [ + "bytes", + "heck 0.5.0", + "itertools 0.12.1", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn 2.0.87", + "tempfile", +] + +[[package]] +name = "prost-derive" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +dependencies = [ + "anyhow", + "itertools 0.12.1", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "prost-types" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" +dependencies = [ + "prost", +] + [[package]] name = "proto_array" version = "0.2.0" @@ -5944,7 +6325,7 @@ dependencies = [ "ethereum_ssz_derive", "safe_arith", "serde", - "serde_yaml 0.9.34+deprecated", + "serde_yaml", "superstruct", "types", ] @@ -5963,7 +6344,7 @@ checksum = "5e617cc9058daa5e1fe5a0d23ed745773a5ee354111dad1ec0235b0cc16b6730" dependencies = [ "cfg-if", "darwin-libproc", - "derive_more", + "derive_more 0.99.18", "glob", "mach2", "nix 0.24.3", @@ -5989,26 +6370,13 @@ dependencies = [ "byteorder", ] -[[package]] -name = "quick-protobuf-codec" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ededb1cd78531627244d51dd0c7139fbe736c7d57af0092a76f0ffb2f56e98" -dependencies = [ - "asynchronous-codec 0.6.2", - "bytes", - "quick-protobuf", - "thiserror", - "unsigned-varint 0.7.2", -] - [[package]] name = "quick-protobuf-codec" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15a0580ab32b169745d7a39db2ba969226ca16738931be152a3209b409de2474" dependencies = [ - "asynchronous-codec 0.7.0", + "asynchronous-codec", "bytes", "quick-protobuf", "thiserror", @@ -6028,7 +6396,7 @@ dependencies = [ "quinn-udp", "rustc-hash 2.0.0", "rustls 0.23.12", - "socket2 0.5.7", + "socket2", "thiserror", "tokio", "tracing", @@ -6041,7 +6409,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" dependencies = [ "bytes", - "rand 0.8.5", + "rand", "ring 0.17.8", "rustc-hash 2.0.0", "rustls 0.23.12", @@ -6059,7 +6427,7 @@ checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" dependencies = [ "libc", "once_cell", - "socket2 0.5.7", + "socket2", "tracing", "windows-sys 0.52.0", ] @@ -6080,7 +6448,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93" dependencies = [ "log", - "parking_lot 0.12.3", + "parking_lot", "scheduled-thread-pool", ] @@ -6106,20 +6474,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", - "rand_pcg", -] - [[package]] name = "rand" version = "0.8.5" @@ -6127,18 +6481,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "rand_chacha", + "rand_core", + "serde", ] [[package]] @@ -6148,16 +6493,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", + "rand_core", ] [[package]] @@ -6166,25 +6502,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", + "getrandom", ] [[package]] @@ -6193,7 +6511,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core 0.6.4", + "rand_core", ] [[package]] @@ -6222,19 +6540,19 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52c4f3084aa3bc7dfbba4eff4fab2a54db4324965d8872ab933565e6fbd83bc6" dependencies = [ - "pem 3.0.4", + "pem", "ring 0.16.20", "time", "yasna", ] [[package]] -name = "redox_syscall" -version = "0.2.16" +name = "redb" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "84b1de48a7cf7ba193e81e078d17ee2b786236eed1d3f7c60f8a09545efc4925" dependencies = [ - "bitflags 1.3.2", + "libc", ] [[package]] @@ -6252,7 +6570,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.15", + "getrandom", "libredox", "thiserror", ] @@ -6317,7 +6635,7 @@ dependencies = [ "http-body 0.4.6", "hyper 0.14.30", "hyper-rustls", - "hyper-tls", + "hyper-tls 0.5.0", "ipnet", "js-sys", "log", @@ -6331,12 +6649,12 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 0.1.2", "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls 0.24.1", - "tokio-util 0.7.11", + "tokio-util", "tower-service", "url", "wasm-bindgen", @@ -6347,6 +6665,45 @@ dependencies = [ "winreg", ] +[[package]] +name = "reqwest" +version = "0.12.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-tls 0.6.0", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 2.1.3", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", +] + [[package]] name = "resolv-conf" version = "0.7.0" @@ -6401,7 +6758,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom", "libc", "spin 0.9.8", "untrusted 0.9.0", @@ -6435,16 +6792,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "rocksdb" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bd13e55d6d7b8cd0ea569161127567cd587676c99f4472f779a0279aa60a7a7" -dependencies = [ - "libc", - "librocksdb-sys", -] - [[package]] name = "rpassword" version = "5.0.1" @@ -6486,6 +6833,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" dependencies = [ "alloy-rlp", + "arbitrary", "ark-ff 0.3.0", "ark-ff 0.4.2", "bytes", @@ -6495,7 +6843,7 @@ dependencies = [ "parity-scale-codec 3.6.12", "primitive-types 0.12.2", "proptest", - "rand 0.8.5", + "rand", "rlp", "ruint-macro", "serde", @@ -6523,6 +6871,20 @@ dependencies = [ "smallvec", ] +[[package]] +name = "rust_eth_kzg" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3291fd0d9c629a56537d74bbc1e7bcaf5be610f2f7b55af85c4fea843c6aeca3" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", + "crate_crypto_internal_eth_kzg_erasure_codes", + "crate_crypto_kzg_multi_open_fk20", + "hex", + "serde", + "serde_json", +] + [[package]] name = "rustc-demangle" version = "0.1.24" @@ -6726,6 +7088,111 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" name = "safe_arith" version = "0.1.0" +[[package]] +name = "safestake_crypto" +version = "0.1.0" +dependencies = [ + "aes-gcm", + "array-init", + "base64 0.22.1", + "bls", + "blst", + "bytes", + "dvf_utils", + "hex", + "lazy_static", + "miracl_core", + "num-bigint", + "num-traits", + "rand", + "secp256k1", + "serde", + "serde_json", + "sha256", + "slog", + "types", +] + +[[package]] +name = "safestake_operator" +version = "0.1.0" +dependencies = [ + "account_utils", + "alloy-primitives", + "async-trait", + "bincode", + "bls", + "chrono", + "dvf_utils", + "filesystem", + "futures", + "hex", + "keccak-hash", + "lazy_static", + "prost", + "r2d2", + "r2d2_sqlite", + "reqwest 0.11.27", + "rusqlite", + "safestake_crypto", + "serde", + "serde_json", + "serde_yaml", + "slashing_protection", + "slog", + "store", + "task_executor", + "tokio", + "tonic", + "tonic-build", + "types", + "url", + "validator_metrics", +] + +[[package]] +name = "safestake_service" +version = "0.1.0" +dependencies = [ + "account_utils", + "alloy-contract", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types", + "alloy-sol-macro", + "alloy-sol-types", + "alloy-transport-http", + "bincode", + "bls", + "directory", + "dirs", + "dvf_utils", + "eth2_keystore", + "eth2_keystore_share", + "hex", + "keccak-hash", + "lighthouse_network", + "parking_lot", + "rand", + "reqwest 0.11.27", + "safestake_crypto", + "safestake_operator", + "serde", + "serde_json", + "serde_yaml", + "signing_method", + "slashing_protection", + "slog", + "slot_clock", + "store", + "task_executor", + "tokio", + "tonic", + "types", + "validator_dir", + "validator_store", +] + [[package]] name = "salsa20" version = "0.8.1" @@ -6742,7 +7209,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" dependencies = [ "cfg-if", - "derive_more", + "derive_more 0.99.18", "parity-scale-codec 3.6.12", "scale-info-derive", ] @@ -6774,7 +7241,18 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" dependencies = [ - "parking_lot 0.12.3", + "parking_lot", +] + +[[package]] +name = "schnellru" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +dependencies = [ + "ahash", + "cfg-if", + "hashbrown 0.13.2", ] [[package]] @@ -6841,39 +7319,20 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.24.3" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" dependencies = [ "bitcoin_hashes", - "rand 0.8.5", - "secp256k1-sys 0.6.1", - "serde", -] - -[[package]] -name = "secp256k1" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" -dependencies = [ - "secp256k1-sys 0.8.1", -] - -[[package]] -name = "secp256k1-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" -dependencies = [ - "cc", + "rand", + "secp256k1-sys", ] [[package]] name = "secp256k1-sys" -version = "0.8.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" dependencies = [ "cc", ] @@ -6960,7 +7419,7 @@ checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -6983,31 +7442,19 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", + "syn 2.0.87", ] [[package]] -name = "serde_yaml" -version = "0.8.26" +name = "serde_urlencoded" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ - "indexmap 1.9.3", + "form_urlencoded", + "itoa", "ryu", "serde", - "yaml-rust", ] [[package]] @@ -7016,26 +7463,13 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.7.0", "itoa", "ryu", "serde", "unsafe-libyaml", ] -[[package]] -name = "sha-1" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - [[package]] name = "sha1" version = "0.10.6" @@ -7147,7 +7581,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" dependencies = [ "digest 0.10.7", - "rand_core 0.6.4", + "rand_core", ] [[package]] @@ -7157,7 +7591,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core 0.6.4", + "rand_core", +] + +[[package]] +name = "signing_method" +version = "0.1.0" +dependencies = [ + "chrono", + "eth2_keystore", + "eth2_keystore_share", + "ethereum_serde_utils", + "lockfile", + "parking_lot", + "reqwest 0.11.27", + "safestake_operator", + "serde", + "serde_json", + "slog", + "task_executor", + "tokio", + "types", + "url", + "validator_metrics", ] [[package]] @@ -7192,38 +7648,24 @@ dependencies = [ "ethereum_ssz_derive", "filesystem", "flate2", - "lazy_static", - "lighthouse_metrics", + "libmdbx", + "lmdb-rkv", + "lmdb-rkv-sys", "lru", - "parking_lot 0.12.3", - "rand 0.8.5", + "metrics", + "parking_lot", + "rand", + "redb", "safe_arith", "serde", "slog", "ssz_types", - "strum", + "strum 0.24.1", "tree_hash", "tree_hash_derive", "types", ] -[[package]] -name = "slasher_service" -version = "0.1.0" -dependencies = [ - "beacon_chain", - "directory", - "lighthouse_network", - "network 0.2.0", - "slasher", - "slog", - "slot_clock", - "state_processing", - "task_executor", - "tokio", - "types", -] - [[package]] name = "slashing_protection" version = "0.1.0" @@ -7346,9 +7788,8 @@ dependencies = [ name = "slot_clock" version = "0.2.0" dependencies = [ - "lazy_static", - "lighthouse_metrics", - "parking_lot 0.12.3", + "metrics", + "parking_lot", "types", ] @@ -7373,27 +7814,17 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "850948bee068e713b8ab860fe1adc4d109676ab4c3b621fd8147f06b261f2f85" dependencies = [ - "aes-gcm 0.10.3", + "aes-gcm", "blake2", "chacha20poly1305", "curve25519-dalek", - "rand_core 0.6.4", + "rand_core", "ring 0.17.8", "rustc_version 0.4.0", "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" version = "0.5.7" @@ -7404,21 +7835,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "soketto" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" -dependencies = [ - "base64 0.13.1", - "bytes", - "futures", - "httparse", - "log", - "rand 0.8.5", - "sha-1", -] - [[package]] name = "spin" version = "0.5.2" @@ -7453,15 +7869,15 @@ dependencies = [ [[package]] name = "ssz_types" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625b20de2d4b3891e6972f4ce5061cb11bd52b3479270c4b177c134b571194a9" +checksum = "35e0719d2b86ac738a55ae71a8429f52aa2741da988f1fd0975b4cc610fd1e08" dependencies = [ "arbitrary", "derivative", "ethereum_serde_utils", "ethereum_ssz", - "itertools 0.10.5", + "itertools 0.13.0", "serde", "serde_derive", "smallvec", @@ -7488,10 +7904,9 @@ dependencies = [ "int_to_bytes", "integer-sqrt", "itertools 0.10.5", - "lazy_static", - "lighthouse_metrics", "merkle_proof", - "rand 0.8.5", + "metrics", + "rand", "rayon", "safe_arith", "smallvec", @@ -7507,36 +7922,32 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "store" -version = "0.1.0" -dependencies = [ - "log", - "rocksdb", - "tokio", - "utils", -] - [[package]] name = "store" version = "0.2.0" dependencies = [ + "bls", "db-key", "directory", "ethereum_ssz", "ethereum_ssz_derive", "itertools 0.10.5", - "lazy_static", "leveldb", - "lighthouse_metrics", + "logging", "lru", - "parking_lot 0.12.3", + "metrics", + "parking_lot", + "safe_arith", "serde", "slog", "sloggers", + "smallvec", "state_processing", - "strum", + "strum 0.24.1", + "superstruct", "types", + "xdelta3", + "zstd 0.13.2", ] [[package]] @@ -7557,7 +7968,16 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" dependencies = [ - "strum_macros", + "strum_macros 0.24.3", +] + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros 0.26.4", ] [[package]] @@ -7573,6 +7993,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.87", +] + [[package]] name = "subtle" version = "2.6.1" @@ -7585,7 +8018,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf0f31f730ad9e579364950e10d6172b4a9bd04b447edf5988b066a860cc340e" dependencies = [ - "darling", + "darling 0.13.4", "itertools 0.10.5", "proc-macro2", "quote", @@ -7597,8 +8030,9 @@ dependencies = [ name = "swap_or_not_shuffle" version = "0.2.0" dependencies = [ - "ethereum-types 0.14.1", + "alloy-primitives", "ethereum_hashing", + "fixed_bytes", ] [[package]] @@ -7614,15 +8048,27 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.75" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6af063034fc1935ede7be0122941bafa9bacb949334d090b77ca98b5817c7d9" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "syn-solidity" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0523f59468a2696391f2a772edc089342aacd53c3caa2ac3264e598edf119b" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "sync_wrapper" version = "0.1.2" @@ -7630,15 +8076,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] -name = "synstructure" -version = "0.12.6" +name = "sync_wrapper" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "unicode-xid", + "futures-core", ] [[package]] @@ -7649,7 +8092,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -7693,7 +8136,7 @@ name = "system_health" version = "0.1.0" dependencies = [ "lighthouse_network", - "parking_lot 0.12.3", + "parking_lot", "serde", "sysinfo", "types", @@ -7723,9 +8166,8 @@ version = "0.1.0" dependencies = [ "async-channel", "futures", - "lazy_static", - "lighthouse_metrics", "logging", + "metrics", "slog", "sloggers", "tokio", @@ -7790,7 +8232,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -7812,6 +8254,37 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "tikv-jemalloc-ctl" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f21f216790c8df74ce3ab25b534e0718da5a1916719771d3fec23315c99e468b" +dependencies = [ + "libc", + "paste", + "tikv-jemalloc-sys", +] + +[[package]] +name = "tikv-jemalloc-sys" +version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + [[package]] name = "time" version = "0.3.36" @@ -7843,17 +8316,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "timer" -version = "0.2.0" -dependencies = [ - "beacon_chain", - "slog", - "slot_clock", - "task_executor", - "tokio", -] - [[package]] name = "tiny-bip39" version = "1.0.0" @@ -7864,7 +8326,7 @@ dependencies = [ "hmac 0.12.1", "once_cell", "pbkdf2 0.11.0", - "rand 0.8.5", + "rand", "rustc-hash 1.1.0", "sha2 0.10.8", "thiserror", @@ -7907,12 +8369,10 @@ dependencies = [ "bytes", "libc", "mio", - "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "socket2", "tokio-macros", - "tracing", "windows-sys 0.52.0", ] @@ -7934,7 +8394,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -7977,34 +8437,7 @@ dependencies = [ "futures-core", "pin-project-lite", "tokio", - "tokio-util 0.7.11", -] - -[[package]] -name = "tokio-test" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2468baabc3311435b55dd935f702f42cd1b8abb7e754fb7dfb16bd36aa88f9f7" -dependencies = [ - "async-stream", - "bytes", - "futures-core", - "tokio", - "tokio-stream", -] - -[[package]] -name = "tokio-util" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", + "tokio-util", ] [[package]] @@ -8043,11 +8476,91 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.7.0", "toml_datetime", - "winnow", + "winnow 0.5.40", +] + +[[package]] +name = "tonic" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.21.7", + "bytes", + "h2", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.30", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "tokio", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-build" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand", + "slab", + "tokio", + "tokio-util", + "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", + "tower-layer", + "tower-service", ] +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" @@ -8086,7 +8599,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -8122,31 +8635,10 @@ dependencies = [ "regex", "sharded-slab", "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "tracing-test" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "557b891436fe0d5e0e363427fc7f217abf9ccd510d5136549847bdcbcd011d68" -dependencies = [ - "tracing-core", - "tracing-subscriber", - "tracing-test-macro", -] - -[[package]] -name = "tracing-test-macro" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" -dependencies = [ - "quote", - "syn 2.0.75", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", ] [[package]] @@ -8170,24 +8662,25 @@ dependencies = [ [[package]] name = "tree_hash" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134d6b24a5b829f30b5ee7de05ba7384557f5f6b00e29409cdf2392f93201bfa" +checksum = "373495c23db675a5192de8b610395e1bec324d596f9e6111192ce903dc11403a" dependencies = [ - "ethereum-types 0.14.1", + "alloy-primitives", "ethereum_hashing", "smallvec", ] [[package]] name = "tree_hash_derive" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce7bccc538359a213436af7bc95804bdbf1c2a21d80e22953cbe9e096837ff1" +checksum = "b0857056ca4eb5de8c417309be42bcff6017b47e86fbaddde609b4633f66061e" dependencies = [ - "darling", + "darling 0.20.10", + "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.87", ] [[package]] @@ -8234,23 +8727,22 @@ dependencies = [ "compare_fields_derive", "derivative", "eth2_interop_keypairs", - "ethereum-types 0.14.1", "ethereum_hashing", "ethereum_serde_utils", "ethereum_ssz", "ethereum_ssz_derive", + "fixed_bytes", "hex", "int_to_bytes", "itertools 0.10.5", "kzg", - "lazy_static", "log", "maplit", "merkle_proof", "metastruct", "milhouse", - "parking_lot 0.12.3", - "rand 0.8.5", + "parking_lot", + "rand", "rand_xorshift", "rayon", "regex", @@ -8259,7 +8751,7 @@ dependencies = [ "safe_arith", "serde", "serde_json", - "serde_yaml 0.9.34+deprecated", + "serde_yaml", "slog", "smallvec", "ssz_types", @@ -8283,7 +8775,18 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" dependencies = [ - "arbitrary", + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ "byteorder", "crunchy", "hex", @@ -8338,16 +8841,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" -[[package]] -name = "universal-hash" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" -dependencies = [ - "generic-array", - "subtle", -] - [[package]] name = "universal-hash" version = "0.5.1" @@ -8369,10 +8862,6 @@ name = "unsigned-varint" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" -dependencies = [ - "asynchronous-codec 0.6.2", - "bytes", -] [[package]] name = "unsigned-varint" @@ -8380,8 +8869,9 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" dependencies = [ + "asynchronous-codec", "bytes", - "tokio-util 0.7.11", + "tokio-util", ] [[package]] @@ -8400,9 +8890,8 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" name = "unused_port" version = "0.1.0" dependencies = [ - "lazy_static", "lru_cache", - "parking_lot 0.12.3", + "parking_lot", ] [[package]] @@ -8422,23 +8911,54 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" -[[package]] -name = "utils" -version = "0.1.0" -dependencies = [ - "exit-future", - "log", - "tokio", -] - [[package]] name = "uuid" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.15", + "getrandom", + "serde", +] + +[[package]] +name = "validator_client" +version = "0.3.5" +dependencies = [ + "account_utils", + "beacon_node_fallback", + "clap", + "clap_utils", + "directory", + "dirs", + "doppelganger_service", + "dvf_utils", + "environment", + "eth2", + "fdlimit", + "graffiti_file", + "hyper 1.4.1", + "initialized_validators", + "metrics", + "monitoring_api", + "parking_lot", + "reqwest 0.11.27", + "safestake_crypto", + "safestake_operator", + "safestake_service", + "sensitive_url", "serde", + "slashing_protection", + "slog", + "slot_clock", + "store", + "tokio", + "types", + "validator_http_api", + "validator_http_metrics", + "validator_metrics", + "validator_services", + "validator_store", ] [[package]] @@ -8450,12 +8970,122 @@ dependencies = [ "derivative", "directory", "eth2_keystore", + "eth2_keystore_share", "filesystem", "hex", "lockfile", - "rand 0.8.5", + "rand", + "tree_hash", + "types", +] + +[[package]] +name = "validator_http_api" +version = "0.1.0" +dependencies = [ + "account_utils", + "beacon_node_fallback", + "bls", + "deposit_contract", + "doppelganger_service", + "eth2", + "eth2_keystore", + "ethereum_serde_utils", + "filesystem", + "graffiti_file", + "initialized_validators", + "lighthouse_version", + "logging", + "parking_lot", + "rand", + "sensitive_url", + "serde", + "signing_method", + "slashing_protection", + "slog", + "slot_clock", + "sysinfo", + "system_health", + "task_executor", + "tempfile", + "tokio", + "tokio-stream", + "types", + "url", + "validator_dir", + "validator_services", + "validator_store", + "warp", + "warp_utils", +] + +[[package]] +name = "validator_http_metrics" +version = "0.1.0" +dependencies = [ + "lighthouse_version", + "malloc_utils", + "metrics", + "parking_lot", + "serde", + "slog", + "slot_clock", + "types", + "validator_metrics", + "validator_services", + "validator_store", + "warp", + "warp_utils", +] + +[[package]] +name = "validator_metrics" +version = "0.1.0" +dependencies = [ + "metrics", +] + +[[package]] +name = "validator_services" +version = "0.1.0" +dependencies = [ + "beacon_node_fallback", + "bls", + "doppelganger_service", + "environment", + "eth2", + "futures", + "graffiti_file", + "parking_lot", + "safe_arith", + "safestake_operator", + "signing_method", + "slog", + "slot_clock", + "tokio", "tree_hash", "types", + "validator_metrics", + "validator_store", +] + +[[package]] +name = "validator_store" +version = "0.1.0" +dependencies = [ + "account_utils", + "doppelganger_service", + "initialized_validators", + "parking_lot", + "safestake_crypto", + "serde", + "signing_method", + "slashing_protection", + "slog", + "slot_clock", + "task_executor", + "types", + "validator_metrics", ] [[package]] @@ -8530,7 +9160,7 @@ dependencies = [ "serde_urlencoded", "tokio", "tokio-rustls 0.25.0", - "tokio-util 0.7.11", + "tokio-util", "tower-service", "tracing", ] @@ -8543,8 +9173,7 @@ dependencies = [ "bytes", "eth2", "headers", - "lazy_static", - "lighthouse_metrics", + "metrics", "safe_arith", "serde", "serde_array_query", @@ -8555,12 +9184,6 @@ dependencies = [ "warp", ] -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -8589,7 +9212,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -8623,7 +9246,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -8647,6 +9270,20 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasmtimer" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + [[package]] name = "web-sys" version = "0.3.70" @@ -8668,59 +9305,23 @@ dependencies = [ ] [[package]] -name = "web3" -version = "0.19.0" +name = "webpki-roots" +version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5388522c899d1e1c96a4c307e3797e0f697ba7c77dd8e0e625ecba9dd0342937" -dependencies = [ - "arrayvec", - "base64 0.21.7", - "bytes", - "derive_more", - "ethabi 18.0.0", - "ethereum-types 0.14.1", - "futures", - "futures-timer", - "headers", - "hex", - "idna 0.4.0", - "jsonrpc-core", - "log", - "once_cell", - "parking_lot 0.12.3", - "pin-project", - "reqwest", - "rlp", - "secp256k1 0.27.0", - "serde", - "serde_json", - "soketto", - "tiny-keccak", - "tokio", - "tokio-stream", - "tokio-util 0.7.11", - "url", - "web3-async-native-tls", -] +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] -name = "web3-async-native-tls" -version = "0.4.0" +name = "which" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f6d8d1636b2627fe63518d5a9b38a569405d9c9bc665c43c9c341de57227ebb" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ - "native-tls", - "thiserror", - "tokio", - "url", + "either", + "home", + "once_cell", + "rustix 0.38.34", ] -[[package]] -name = "webpki-roots" -version = "0.25.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" - [[package]] name = "widestring" version = "0.4.3" @@ -8795,6 +9396,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.45.0" @@ -9018,6 +9649,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.50.0" @@ -9050,7 +9690,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ "curve25519-dalek", - "rand_core 0.6.4", + "rand_core", "serde", "zeroize", ] @@ -9072,6 +9712,20 @@ dependencies = [ "time", ] +[[package]] +name = "xdelta3" +version = "0.1.5" +source = "git+http://github.com/sigp/xdelta3-rs?rev=50d63cdf1878e5cf3538e9aae5eed34a22c64e4a#50d63cdf1878e5cf3538e9aae5eed34a22c64e4a" +dependencies = [ + "bindgen", + "cc", + "futures-io", + "futures-util", + "libc", + "log", + "rand", +] + [[package]] name = "xml-rs" version = "0.8.21" @@ -9087,15 +9741,6 @@ dependencies = [ "xml-rs", ] -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] - [[package]] name = "yamux" version = "0.12.1" @@ -9105,9 +9750,9 @@ dependencies = [ "futures", "log", "nohash-hasher", - "parking_lot 0.12.3", + "parking_lot", "pin-project", - "rand 0.8.5", + "rand", "static_assertions", ] @@ -9120,9 +9765,9 @@ dependencies = [ "futures", "log", "nohash-hasher", - "parking_lot 0.12.3", + "parking_lot", "pin-project", - "rand 0.8.5", + "rand", "static_assertions", "web-time", ] @@ -9154,7 +9799,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -9174,7 +9819,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -9194,7 +9839,7 @@ dependencies = [ "pbkdf2 0.11.0", "sha1", "time", - "zstd", + "zstd 0.11.2+zstd.1.5.2", ] [[package]] @@ -9203,7 +9848,16 @@ version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" dependencies = [ - "zstd-safe", + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +dependencies = [ + "zstd-safe 7.2.1", ] [[package]] @@ -9216,6 +9870,15 @@ dependencies = [ "zstd-sys", ] +[[package]] +name = "zstd-safe" +version = "7.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +dependencies = [ + "zstd-sys", +] + [[package]] name = "zstd-sys" version = "2.0.13+zstd.1.5.6" diff --git a/Cargo.toml b/Cargo.toml index f9153ce2..a809b697 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,150 +1,79 @@ [package] name = "dvf" -version = "1.1.0" -authors = ["Zico "] edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[features] +default = ["slasher-lmdb"] +# Compiles the BLS crypto code so that the binary is portable across machines. +portable = ["bls/supranational-portable"] +# Compiles BLST so that it always uses ADX instructions. +modern = ["bls/supranational-force-adx"] +# Support minimal spec (used for testing only). +spec-minimal = [] +# Support Gnosis spec and Gnosis Beacon Chain. +gnosis = [] +# Support slasher MDBX backend. +slasher-mdbx = ["slasher/mdbx"] +# Support slasher LMDB backend. +slasher-lmdb = ["slasher/lmdb"] +# Support slasher redb backend. +slasher-redb = ["slasher/redb"] +# Deprecated. This is now enabled by default on non windows targets. +jemalloc = [] -[dependencies] -aes-gcm = "0.10.3" -array-init = "2.0.0" -async-trait = "0.1.51" -base64 = "0.13.0" -bincode = "1.3.1" -blst = "0.3.3" -bytes = "1.7.1" -chrono = "0.4.20" -clap = { version = "4.5.4", features = ["cargo", "wrap_help"] } -dirs = "3.0.1" -downcast-rs = "1.2.0" -env_logger = "0.11.5" -ethereum_hashing = "0.6.0" -ethereum_serde_utils = "0.5.2" -exit-future = "0.2.0" -futures = "0.3.28" -hex = "0.4.2" -hyper = "0.14.4" -itertools = "0.10.0" -keccak-hash = "0.10.0" -lazy_static = "1.4.0" -libsecp256k1 = "0.7.0" -log = "0.4.0" -miracl_core = { version = "2.7.0", features = ["bls12381"] } -multiaddr = { version = "0.17.1" } -num-bigint = { version = "0.4.0", features = ["rand"] } -num-traits = "0.2.8" -parking_lot = { version = "0.12.0", features = ["send_guard"] } -pbkdf2 = { version = "0.8.0", default-features = false } -rand = { version = "0.8.5", features = ["small_rng"] } -rayon = "1.4.1" -regex = "1.5.5" -reqwest = { version = "0.11.0", features = ["json", "stream"] } -ring = "0.16.19" -rpassword = "5.0.0" -rusqlite = "0.28.0" -scrypt = { version = "0.7.0", default-features = false } -secp256k1 = { version = "0.24.0", features = ["alloc", "rand", "serde"] } -serde = "1.0.116" -serde_derive = "1.0.116" -serde_json = "1.0.58" -serde_yaml = "0.8.13" -sha2 = "0.9.2" -sha256 = "1.0.3" -slog = { version = "2.5.2", features = ["max_level_trace", "release_max_level_trace"] } -subtle = "2.5" -strum = { version = "0.24", features = ["derive"] } -tempfile = "3.1.0" -tokio = { version = "1.26.0", features = ["time", "rt-multi-thread", "tracing"] } -tokio-util = { version = "0.7.7", features = ["codec"] } -tracing = "0.1" -tracing-appender = "0.2" -tracing-core = "0.1" -tracing-log = "0.2" -tracing-subscriber = { version = "0.3", features = ["env-filter"] } -tracing-test = "0.2.4" -tree_hash = "0.6" -tree_hash_derive = "0.6" -url = "2.2.2" -warp = { version = "0.3.7", default-features = false, features = ["tls"] } -web3 = "0.19.0" -zeroize = { version = "1.4.2", features = ["zeroize_derive"] } +[target.'cfg(not(target_os = "windows"))'.dependencies] +malloc_utils = { path = "lighthouse/common/malloc_utils", features = ["jemalloc"] } -# Local crates. -account_manager = { "path" = "lighthouse/account_manager" } -account_utils = { path = "lighthouse/common/account_utils" } -beacon_node = { path = "lighthouse/beacon_node" } +[target.'cfg(target_os = "windows")'.dependencies] +malloc_utils = { path = "lighthouse/common/malloc_utils" } + +[dependencies] +slog = { version = "2", features = ["max_level_debug", "release_max_level_debug", "nested-values"] } +types = { path = "lighthouse/consensus/types" } bls = { path = "lighthouse/crypto/bls" } -boot_node = { path = "lighthouse/boot_node" } -clap_utils = { path = "lighthouse/common/clap_utils" } -database_manager = { path = "lighthouse/database_manager" } -deposit_contract = { path = "lighthouse/common/deposit_contract" } -directory = { path = "lighthouse/common/directory" } -dvf_directory = { path = "common/dvf_directory" } -dvf_version = { path = "common/dvf_version" } +ethereum_hashing = "0.7.0" +clap = { version = "4.5.4", features = ["derive", "cargo", "wrap_help"] } environment = { path = "lighthouse/lighthouse/environment" } -eth2 = { path = "lighthouse/common/eth2" } -eth2_keystore = { path = "lighthouse/crypto/eth2_keystore" } +futures = "0.3" +validator_client = { path = "lighthouse/validator_client" } +clap_utils = { path = "lighthouse/common/clap_utils" } eth2_network_config = { path = "lighthouse/common/eth2_network_config" } -eth2_wallet = { path = "lighthouse/crypto/eth2_wallet" } -filesystem = { path = "lighthouse/common/filesystem" } -lighthouse_metrics = { path = "lighthouse/common/lighthouse_metrics" } -lighthouse_network = { path = "lighthouse/beacon_node/lighthouse_network"} lighthouse_version = { path = "lighthouse/common/lighthouse_version" } -lockfile = { path = "lighthouse/common/lockfile" } -malloc_utils = { path = "lighthouse/common/malloc_utils" } -monitoring_api = { path = "lighthouse/common/monitoring_api" } -safe_arith = { path = "lighthouse/consensus/safe_arith" } -sensitive_url = { path = "lighthouse/common/sensitive_url" } -slashing_protection = { path = "lighthouse/validator_client/slashing_protection" } -slot_clock = { path = "lighthouse/common/slot_clock" } +account_utils = { path = "lighthouse/common/account_utils" } +metrics = { path = "lighthouse/common/metrics" } +serde = { version = "1", features = ["derive"] } +serde_json = "1" +serde_yaml = "0.9" task_executor = { path = "lighthouse/common/task_executor" } -types = { path = "lighthouse/consensus/types" } -validator_dir = { path = "lighthouse/common/validator_dir", features = ["insecure_keys"] } -warp_utils = { path = "lighthouse/common/warp_utils" } +malloc_utils = { path = "lighthouse/common/malloc_utils" } +directory = { path = "lighthouse/common/directory" } +unused_port = { path = "lighthouse/common/unused_port" } +slasher = { path = "lighthouse/slasher", default-features = false } logging = { path = "lighthouse/common/logging" } -system_health = { path = "lighthouse/common/system_health" } -consensus = { path = "hotstuff/consensus" } -hsconfig = { path = "hotstuff/config", package = "hotstuff_config" } -hscrypto = { path = "hotstuff/crypto", package = "crypto" } -hsutils = { path = "hotstuff/utils", package = "utils" } -mempool = { path = "hotstuff/mempool" } -network = { path = "hotstuff/network" } -store = { path = "hotstuff/store" } -sysinfo = "0.26" - -[patch] -[patch.crates-io] -# fixed-hash = { git = "https://github.com/paritytech/parity-common", rev = "df638ab0885293d21d656dc300d39236b69ce57d" } -# warp = { git = "https://github.com/macladson/warp", rev = "7e75acc368229a46a236a8c991bf251fe7fe50ef" } -# eth2_ssz = { path = "lighthouse/consensus/ssz" } -# eth2_ssz_derive = { path = "lighthouse/consensus/ssz_derive" } -# eth2_ssz_types = { path = "lighthouse/consensus/ssz_types" } -# eth2_hashing = { path = "lighthouse/crypto/eth2_hashing" } -# tree_hash = { path = "lighthouse/consensus/tree_hash" } -# tree_hash_derive = { path = "lighthouse/consensus/tree_hash_derive" } -# eth2_serde_utils = { path = "lighthouse/consensus/serde_utils" } -# arbitrary = { git = "https://github.com/michaelsproul/arbitrary", rev = "a572fd8743012a4f1ada5ee5968b1b3619c427ba" } - -# [patch."https://github.com/ralexstokes/mev-rs"] -# mev-rs = { git = "https://github.com/ralexstokes//mev-rs", rev = "7813d4a4a564e0754e9aaab2d95520ba437c3889" } -# [patch."https://github.com/ralexstokes/ethereum-consensus"] -# ethereum-consensus = { git = "https://github.com/ralexstokes//ethereum-consensus", rev = "9b0ee0a8a45b968c8df5e7e64ea1c094e16f053d" } -# [patch."https://github.com/ralexstokes/ssz-rs"] -# ssz-rs = { git = "https://github.com/ralexstokes//ssz-rs", rev = "adf1a0b14cef90b9536f28ef89da1fab316465e1" } +boot_node = { path = "src/boot_node" } +tokio = { version = "1", features = ["rt-multi-thread", "sync", "signal", "macros"] } +[dev-dependencies] +tempfile = "3" +validator_dir = { path = "lighthouse/common/validator_dir" } +slashing_protection = { path = "lighthouse/validator_client/slashing_protection" } +lighthouse_network = { path = "lighthouse/beacon_node/lighthouse_network" } +sensitive_url = { path = "lighthouse/common/sensitive_url" } +eth1 = { path = "lighthouse/beacon_node/eth1" } +eth2 = { path = "lighthouse/common/eth2" } +beacon_processor = { path = "lighthouse/beacon_node/beacon_processor" } +beacon_node_fallback = { path = "lighthouse/validator_client/beacon_node_fallback" } +initialized_validators = { path = "lighthouse/validator_client/initialized_validators" } -[features] -default = ["hotstuff_committee"] -fake_committee = [] -hotstuff_committee = [] -spec-minimal = [] -gnosis = [] -jemalloc = [] -# Compiles the BLS crypto code so that the binary is portable across machines. -portable = ["bls/supranational-portable"] -modern = ["bls/supranational-force-adx"] -[dev-dependencies] -tokio-test = "*" +[[test]] +name = "lighthouse_tests" +path = "tests/main.rs" +# Prevent cargo-udeps from flagging the dummy package `target_check`, which exists only +# to assert properties of the compilation target. +[package.metadata.cargo-udeps.ignore] +normal = ["target_check"] diff --git a/Dockerfile b/Dockerfile index b8c4ceb4..f9fa79cf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.77.0 AS builder +FROM rust:1.82.0 AS builder RUN apt-get update && apt-get -y upgrade \ && apt-get install -y cmake libclang-dev protobuf-compiler @@ -29,9 +29,5 @@ RUN apt-get update && apt-get -y upgrade && apt-get install -y --no-install-reco && apt-get clean \ && rm -rf /var/lib/apt/lists/* WORKDIR /app -COPY --from=builder /app/target/release/dvf_key_tool /usr/local/bin/dvf_key_tool -COPY --from=builder /app/target/release/dvf_root_node /usr/local/bin/dvf_root_node -COPY --from=builder /app/target/release/dvf_network_tool /usr/local/bin/dvf_network_tool -COPY --from=builder /app/contract_config /app/contract_config COPY --from=builder /app/boot_config /app/boot_config COPY --from=builder /app/target/release/dvf /usr/local/bin/dvf \ No newline at end of file diff --git a/contract_config/SafeStakeNetwork.json b/contract_config/SafeStakeNetwork.json deleted file mode 100644 index dfb1f528..00000000 --- a/contract_config/SafeStakeNetwork.json +++ /dev/null @@ -1,1040 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "SafeStakeNetworkV3", - "sourceName": "contracts/SafeStakeNetworkV3.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint32[]", - "name": "operatorIds", - "type": "uint32[]" - }, - { - "indexed": false, - "internalType": "uint32[]", - "name": "performance", - "type": "uint32[]" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "claimValue", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "lastClaimBlockNumber", - "type": "uint256[]" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "claimBlockNumber", - "type": "uint256" - } - ], - "name": "AccountClaim", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "senderAddress", - "type": "address" - } - ], - "name": "FundsDeposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "ownerAddress", - "type": "address" - } - ], - "name": "FundsWithdrawal", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "oldFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newFee", - "type": "uint256" - } - ], - "name": "NetworkFeeUpdate", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "recipient", - "type": "address" - } - ], - "name": "NetworkFeesWithdrawal", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint32", - "name": "id", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - } - ], - "name": "OperatorRegistration", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint32", - "name": "operatorId", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "endBlockNumber", - "type": "uint256" - } - ], - "name": "OperatorTaskDetail", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint32[]", - "name": "operatorIds", - "type": "uint32[]" - }, - { - "indexed": false, - "internalType": "bytes[]", - "name": "sharesPublicKeys", - "type": "bytes[]" - }, - { - "indexed": false, - "internalType": "bytes[]", - "name": "encryptedKeys", - "type": "bytes[]" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paidBlockNumber", - "type": "uint256" - } - ], - "name": "ValidatorRegistration", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - } - ], - "name": "ValidatorRemoval", - "type": "event" - }, - { - "inputs": [], - "name": "ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MANAGING_OPERATORS_PER_ACCOUNT_LIMIT", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "NODE_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SIGNER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_SafeStakeRegistryContract", - "outputs": [ - { - "internalType": "contract ISafeStakeRegistryV3", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32[]", - "name": "operatorIds", - "type": "uint32[]" - }, - { - "internalType": "uint256", - "name": "tokenAmount", - "type": "uint256" - } - ], - "name": "_checkDepositAmount", - "outputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "_claimNonce", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "_disbaledOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_minimumBlocksValidatorPay", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "_operatorInDatas", - "outputs": [ - { - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "indexInData", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "_operatorInUse", - "outputs": [ - { - "internalType": "uint32", - "name": "operatorId", - "type": "uint32" - }, - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "_operatorWorkDetail", - "outputs": [ - { - "internalType": "uint256", - "name": "earnings", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastBlockNumber", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_token", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "_validatorDatas", - "outputs": [ - { - "internalType": "uint256", - "name": "startBlockNumber", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "endBlockNumber", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastOperatorFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "enable", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint32[]", - "name": "operatorIds", - "type": "uint32[]" - }, - { - "internalType": "uint32[]", - "name": "performances", - "type": "uint32[]" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } - ], - "name": "accountClaimFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes[]", - "name": "publicKeys", - "type": "bytes[]" - }, - { - "internalType": "uint32[]", - "name": "operatorIds", - "type": "uint32[]" - }, - { - "internalType": "bytes[][]", - "name": "sharesPublicKeys", - "type": "bytes[][]" - }, - { - "internalType": "bytes[][]", - "name": "sharesEncrypteds", - "type": "bytes[][]" - }, - { - "internalType": "uint32", - "name": "validatorCount", - "type": "uint32" - }, - { - "internalType": "uint256", - "name": "eachAmount", - "type": "uint256" - } - ], - "name": "batchRegisterValidator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "checkRole", - "outputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes[]", - "name": "publicKeys", - "type": "bytes[]" - }, - { - "internalType": "uint256[]", - "name": "eachAmounts", - "type": "uint256[]" - }, - { - "internalType": "uint256", - "name": "totalAmount", - "type": "uint256" - } - ], - "name": "deposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "operatorId", - "type": "uint32" - } - ], - "name": "getOperatorEarningsById", - "outputs": [ - { - "internalType": "uint256", - "name": "earnings", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "getOperatorEarningsByOwner", - "outputs": [ - { - "internalType": "uint256", - "name": "earnings", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "operatorId", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - } - ], - "name": "getOperatorEarningsByPublicKey", - "outputs": [ - { - "internalType": "uint256", - "name": "earnings", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract ISafeStakeRegistryV3", - "name": "registryAddress_", - "type": "address" - }, - { - "internalType": "contract IERC20", - "name": "token_", - "type": "address" - }, - { - "internalType": "uint64", - "name": "minimumBlocksValidatorPay_", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "_operatorFee", - "type": "uint64" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "withNetworkFee", - "type": "bool" - } - ], - "name": "operatorFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - } - ], - "name": "registerOperator", - "outputs": [ - { - "internalType": "uint32", - "name": "operatorId", - "type": "uint32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - }, - { - "internalType": "uint32[]", - "name": "operatorIds", - "type": "uint32[]" - }, - { - "internalType": "bytes[]", - "name": "sharesPublicKeys", - "type": "bytes[]" - }, - { - "internalType": "bytes[]", - "name": "sharesEncrypted", - "type": "bytes[]" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "registerValidator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes[]", - "name": "publicKeys", - "type": "bytes[]" - } - ], - "name": "removeValidator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "self", - "outputs": [ - { - "internalType": "uint256", - "name": "networkFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "networkEarnings", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "networkClaimed", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "networkPenalty", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_addr", - "type": "address" - } - ], - "name": "setWhiteAddress", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "sig", - "type": "bytes" - } - ], - "name": "splitSignature", - "outputs": [ - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "newMinimumBlocksValidatorPay", - "type": "uint64" - } - ], - "name": "updateMinimumBlocksValidatorPay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "fee", - "type": "uint256" - } - ], - "name": "updateNetworkFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "whitelist", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "withdrawNetworkEarnings", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50613816806100206000396000f3fe608060405234801561001057600080fd5b50600436106102ad5760003560e01c80638ad868cb1161017b578063cd1b0d07116100d8578063e2f7cb301161008c578063ecd0c0c311610071578063ecd0c0c31461073f578063ef5d6bbb14610752578063fb8957331461076557600080fd5b8063e2f7cb3014610719578063e40cb19d1461072c57600080fd5b8063d2231741116100bd578063d2231741146106e2578063d547741f146106f3578063dcf311421461070657600080fd5b8063cd1b0d07146106bc578063cfa2e8b2146106cf57600080fd5b80639f794d751161012f578063a7bb580311610114578063a7bb58031461061f578063c0cfe6b914610651578063c5b95190146106a957600080fd5b80639f794d75146105e5578063a1ebf35d146105f857600080fd5b806393e59dc11161016057806393e59dc1146105845780639b4400dd146105af5780639d02ae27146105c257600080fd5b80638ad868cb146104d557806391d148541461054b57600080fd5b806342a61122116102295780637104ddb2116101dd578063822145aa116101c2578063822145aa1461048057806385f79d611461049357806388a774a2146104a657600080fd5b80637104ddb21461042357806375b238fc1461045957600080fd5b806354fd4d501161020e57806354fd4d50146103b55780635c5831e9146103ce5780636fa79f4f146103ef57600080fd5b806342a611221461036f5780634bcbb4b01461038257600080fd5b806327104a7b11610280578063325dee9a11610265578063325dee9a146103415780633927fb6a146103545780633ccfd60b1461036757600080fd5b806327104a7b146103135780632f2ff15d1461032e57600080fd5b806307c9a50e146102b25780630f864923146102c75780631a82aa30146102da5780631f1f9fd514610300575b600080fd5b6102c56102c036600461288e565b61078c565b005b6102c56102d5366004612919565b6107f9565b6102ed6102e8366004612a05565b6108d0565b6040519081526020015b60405180910390f35b6102c561030e366004612a22565b6109d5565b61031b603281565b60405161ffff90911681526020016102f7565b6102c561033c366004612a50565b610a05565b6102ed61034f366004612a80565b610a6e565b6102c5610362366004612be3565b610b8f565b6102c5610c0a565b6102ed61037d366004612cc0565b610cb1565b6103a5610390366004612cc0565b60066020526000908152604090205460ff1681565b60405190151581526020016102f7565b614e205b60405163ffffffff90911681526020016102f7565b6103e16103dc366004612cdd565b610d48565b6040516102f7929190612d59565b60095461040a90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102f7565b600b54600c54600d54600e546104399392919084565b6040805194855260208501939093529183015260608201526080016102f7565b6102ed7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b76081565b6102c561048e366004612d7b565b610e11565b6103b96104a1366004612e6d565b611330565b6104b96104b4366004612ed9565b61145a565b6040805163ffffffff90931683526020830191909152016102f7565b6105216104e3366004612ef7565b805160208183018101805160028083529383019290940191909120929052815460018301549183015460038401546005909401549193909160ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016102f7565b6103a5610559366004612a50565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600a54610597906001600160a01b031681565b6040516001600160a01b0390911681526020016102f7565b6102c56105bd366004612f34565b61149d565b6103a56105d0366004612a22565b60076020526000908152604090205460ff1681565b6102c56105f3366004612cc0565b611679565b6102ed7f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f7281565b61063261062d366004612ef7565b6116d3565b6040805160ff90941684526020840192909252908201526060016102f7565b61069461065f366004612f8c565b600360209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015482565b604080519283526020830191909152016102f7565b6102c56106b7366004612a22565b611702565b6102ed6106ca366004612f8c565b611728565b6102c56106dd366004612fdc565b6118bc565b6102c56106f0366004612a22565b50565b6102c5610701366004612a50565b61194a565b6102c561071436600461301e565b6119af565b600854610597906001600160a01b031681565b6102c561073a3660046130be565b611a17565b600954610597906001600160a01b031681565b6102c5610760366004612a50565b611a3e565b6102ed7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911181565b7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b7606107b681611702565b506009805467ffffffffffffffff909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6108123361080d63ffffffff8516846131a0565b611a9e565b60005b8263ffffffff168163ffffffff1610156108c3576108b3338c8c8463ffffffff16818110610845576108456131b7565b905060200281019061085791906131cd565b8c8c8c8c8863ffffffff16818110610871576108716131b7565b90506020028101906108839190613214565b8c8c8a63ffffffff1681811061089b5761089b6131b7565b90506020028101906108ad9190613214565b8b611b81565b6108bc8161325e565b9050610815565b5050505050505050505050565b6000811561095957600b546008546040805163d479ad0560e01b815290516001600160a01b039092169163d479ad05916004808201926020929091908290030181865afa158015610925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109499190613281565b610953919061329a565b92915050565b600860009054906101000a90046001600160a01b03166001600160a01b031663d479ad056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109539190613281565b919050565b7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b7606109ff81611702565b50600b55565b3360009081527f331bba8513ee4dd5811afc38fa48458378fe9b930e1c5bd9a2e37d456ee8c897602052604090205460ff16610a6a5760008281526001602081815260408084206001600160a01b0386168552909152909120805460ff191690911790555b5050565b6000805b63ffffffff8084166000908152600560205260409020549082161015610b8957610b6b83600560008663ffffffff1663ffffffff1681526020019081526020016000208363ffffffff1681548110610acc57610acc6131b7565b90600052602060002090600202016000018054610ae8906132ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610b14906132ad565b8015610b615780601f10610b3657610100808354040283529160200191610b61565b820191906000526020600020905b815481529060010190602001808311610b4457829003601f168201915b5050505050611728565b610b75908361329a565b915080610b818161325e565b915050610a72565b50919050565b610b993382611a9e565b60005b83518163ffffffff161015610c0457610bf3848263ffffffff1681518110610bc657610bc66131b7565b6020026020010151848363ffffffff1681518110610be657610be66131b7565b6020026020010151612024565b50610bfd8161325e565b9050610b9c565b50505050565b6008546040516303cf703160e01b81523360048201526001600160a01b03909116906303cf7031906024016020604051808303816000875af1158015610c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7891906132e1565b15610caf5760405162461bcd60e51b8152602060048201526002602482015261463160f01b60448201526064015b60405180910390fd5b565b6000805b6001600160a01b03831660009081526004602052604090205463ffffffff82161015610b89576001600160a01b03831660009081526004602052604090208054610d2c919063ffffffff8416908110610d1057610d106131b7565b600091825260209091206002909102015463ffffffff16610a6e565b610d36908361329a565b9150610d418161325e565b9050610cb5565b60056020528160005260406000208181548110610d6457600080fd5b906000526020600020906002020160009150915050806000018054610d88906132ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610db4906132ad565b8015610e015780601f10610dd657610100808354040283529160200191610e01565b820191906000526020600020905b815481529060010190602001808311610de457829003601f168201915b5050505050908060010154905082565b600082815260076020526040902054829060ff1615610e575760405162461bcd60e51b8152602060048201526002602482015261453160f01b6044820152606401610ca6565b6000610ed7898989898989604051602001610e7796959493929190613344565b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b90506000610ee5828561225f565b6001600160a01b03811660009081527f427c45ac74610ad1057fc3524fc3fecaa3416dd8aa9baf907541659f889ee436602052604090205490915060ff16610f545760405162461bcd60e51b8152602060048201526002602482015261473160f01b6044820152606401610ca6565b60008060005b63ffffffff81168b11156112475760008c8c8363ffffffff16818110610f8257610f826131b7565b9050602002016020810190610f979190612a80565b905060648b8b8463ffffffff16818110610fb357610fb36131b7565b9050602002016020810190610fc89190612a80565b63ffffffff1611156110015760405162461bcd60e51b8152602060048201526002602482015261239960f11b6044820152606401610ca6565b6000805b63ffffffff80841660009081526005602052604090205490821610156111c3576000600560008563ffffffff1663ffffffff1681526020019081526020016000208263ffffffff168154811061105d5761105d6131b7565b90600052602060002090600202016000018054611079906132ad565b80601f01602080910402602001604051908101604052809291908181526020018280546110a5906132ad565b80156110f25780601f106110c7576101008083540402835291602001916110f2565b820191906000526020600020905b8154815290600101906020018083116110d557829003601f168201915b50505050509050600060028260405161110b919061338e565b908152604080516020928190038301812063ffffffff89166000908152600390945291832091935061113e90859061338e565b90815260200160405180910390209050600043836001015411156111625743611168565b82600101545b82546002850154855492935060009261118190856133aa565b61118b91906131a0565b611195919061329a565b6000845543600185015590506111ab818861329a565b96505050505050806111bc9061325e565b9050611005565b50600060648d8d8663ffffffff168181106111e0576111e06131b7565b90506020020160208101906111f59190612a80565b6112059063ffffffff16846131a0565b61120f91906133d3565b905061121b81836133aa565b611225908661329a565b9450611231818761329a565b9550505050806112409061325e565b9050610f5a565b5080600b600301600082825461125d919061329a565b909155505060095460405163a9059cbb60e01b81526001600160a01b038e81166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af11580156112b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d991906132e1565b61130a5760405162461bcd60e51b8152602060048201526002602482015261473360f01b6044820152606401610ca6565b5050506000938452505060076020525060409020805460ff191660011790555050505050565b600854604051631940d38760e01b81526000916001600160a01b031690631940d387906113699088908890339089908990600401613410565b6020604051808303816000875af1158015611388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ac9190613452565b3360008181526004602081815260408084208151808301835263ffffffff8881168083529585528254828601818152600180830186559489529590972091516002909702909101805463ffffffff19169690911695909517855591519390910192909255905192935090917fa837adf7db87879179d994c48f4275ae84c6ea7ba2ff625b1e121b5a6f42317d9061144a90899089908990899061346f565b60405180910390a3949350505050565b6004602052816000526040600020818154811061147657600080fd5b60009182526020909120600290910201805460019091015463ffffffff9091169250905082565b60006114a960016122de565b905080156114c1576000805461ff0019166101001790555b6114c9612340565b6008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0387811691909117909155600980549186167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117600160a01b67ffffffffffffffff861602179055604080516080810190915280606461155285600a6134a1565b61155c91906134cd565b67ffffffffffffffff1681526000602080830182905260408084018390526060938401929092528351600b55830151600c55820151600d550151600e556008546001600160a01b031663da35a26f83336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815267ffffffffffffffff90921660048301526001600160a01b03166024820152604401600060405180830381600087803b15801561161457600080fd5b505af1158015611628573d6000803e3d6000fd5b505050508015611672576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b7606116a381611702565b50600a805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080600083516041146116e657600080fd5b5050506020810151604082015160609092015160001a92909190565b600081815260016020908152604080832033845290915290205460ff166106f057600080fd5b60008060028360405161173b919061338e565b90815260200160405180910390206040518060c001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482018054806020026020016040519081016040528092919081815260200182805480156117f757602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116117ba5790505b50505091835250506005919091015460ff16151560209182015263ffffffff86166000908152600390915260408082209051929350909161183990869061338e565b90815260200160405180910390206040518060400160405290816000820154815260200160018201548152505090506000438360200151111561187c5743611882565b82602001515b90508160000151836040015183602001518361189e91906133aa565b6118a891906131a0565b6118b2919061329a565b9695505050505050565b60005b63ffffffff8116821115611945576119353384848463ffffffff168181106118e9576118e96131b7565b90506020028101906118fb91906131cd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123f492505050565b61193e8161325e565b90506118bf565b505050565b3360009081527f331bba8513ee4dd5811afc38fa48458378fe9b930e1c5bd9a2e37d456ee8c897602052604090205460ff1615610a6a5760008281526001602090815260408083206001600160a01b03851684529091529020805460ff191690555050565b6119b960016108d0565b82516009546119d99190600160a01b900467ffffffffffffffff166131a0565b6119e391906131a0565b811015610a6a5760405162461bcd60e51b8152602060048201526002602482015261433160f01b6044820152606401610ca6565b611a213382611a9e565b611a33338a8a8a8a8a8a8a8a8a611b81565b505050505050505050565b81611a4881611702565b6001600160a01b038216611a5b57600080fd5b506000918252600160208181526040808520338652909152808420805460ff199081169091556001600160a01b0393909316845290922080549091169091179055565b60008111611ad35760405162461bcd60e51b8152602060048201526002602482015261443160f01b6044820152606401610ca6565b6009546040516323b872dd60e01b81526001600160a01b03848116600483015230602483015260448201849052909116906323b872dd906064016020604051808303816000875af1158015611b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5091906132e1565b610a6a5760405162461bcd60e51b8152602060048201526002602482015261221960f11b6044820152606401610ca6565b6001600160a01b038a1660009081526006602052604090205460ff1615611bcf5760405162461bcd60e51b8152602060048201526002602482015261041360f41b6044820152606401610ca6565b60028989604051611be19291906134f4565b9081526040519081900360200190206005015460ff1615611c295760405162461bcd60e51b8152602060048201526002602482015261413160f01b6044820152606401610ca6565b60048614611c3657600080fd5b600a546001600160a01b031615611ce457600a5460405163a348c28960e01b81523360048201526001600160a01b039091169063a348c28990602401602060405180830381865afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb391906132e1565b611ce45760405162461bcd60e51b8152602060048201526002602482015261209960f11b6044820152606401610ca6565b6040518060c00160405280600081526020016000815260200160008152602001600081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506001602090910152604051600290611d5c908c908c906134f4565b9081526020016040518091039020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004019080519060200190611dae9291906127b2565b5060a091909101516005909101805460ff191691151591909117905560005b63ffffffff8116871115611f0e57600088888363ffffffff16818110611df557611df56131b7565b9050602002016020810190611e0a9190612a80565b6040805180820182526000808252602080830182905263ffffffff8516825260039052829020915192935091611e43908e908e906134f4565b908152604080519182900360209081018320845181559381015160019094019390935563ffffffff84166000908152600584528190206060601f8f018590049094028301840182529082018d815290928291908f908f9081908501838280828437600092018290525093855250505063ffffffff85168152600560209081526040822054928101929092528354600181018555938152208151919260020201908190611eef9082613552565b506020820151816001015550505080611f079061325e565b9050611dcd565b50600854604051639b4ddb5d60e01b81526001600160a01b0390911690639b4ddb5d90611f4f908d908d908d908d908d908d908d908d908d906004016136a4565b600060405180830381600087803b158015611f6957600080fd5b505af1158015611f7d573d6000803e3d6000fd5b505050506000611fc48a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250612024915050565b90508a6001600160a01b03167f610eb3c1fafe229af536e91b7e00486902d54d54d8d3f0de283a467ac8f985bf8b8b8b8b8b8b8b8b8a60405161200f99989796959493929190613714565b60405180910390a25050505050505050505050565b600080600284604051612037919061338e565b908152602001604051809103902090506000816004018054905061205b60016108d0565b61206591906131a0565b61206f90856133d3565b6004830154600b549192509061208590836131a0565b61208f91906131a0565b600c80546000906120a190849061329a565b90915550506004820154600b546120b890836131a0565b6120c291906131a0565b6120cc90856133aa565b8260030160008282546120df919061329a565b90915550600090505b600483015463ffffffff82161015612206576000836004018263ffffffff1681548110612117576121176131b7565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168083526003909152604080832090519193509061215a908a9061338e565b908152602001604051809103902090506000612176838a611728565b90508082600001600082825461218c919061329a565b90915550504360018301556003860180548291906000906121ae9084906133aa565b909155505060018601546040517fd699389eec7b3216dc5c9fa741af9f2020fcaea48cefed14654d82474e7b0782916121ea9186918d9161377c565b60405180910390a1505050806121ff9061325e565b90506120e8565b50438083556001830154101561222a57612220814361329a565b6001830155612244565b8082600101600082825461223e919061329a565b90915550505b61224e60006108d0565b600283015550600101549392505050565b60008060008061226e856116d3565b6040805160008152602081018083528b905260ff8516918101919091526060810183905260808101829052929550909350915060019060a0016020604051602081039080840390855afa1580156122c9573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60008054610100900460ff1615612312578160ff1660011480156123015750303b155b61230a57600080fd5b506000919050565b60005460ff80841691161061232657600080fd5b506000805460ff191660ff92909216919091179055600190565b600054610100900460ff1661235457600080fd5b3360009081527f331bba8513ee4dd5811afc38fa48458378fe9b930e1c5bd9a2e37d456ee8c897602090815260408083208054600160ff1991821681179092557f911c709b9be4f1ae2b9f62542e6578f826afdf6fa62cd1aac81cae683df0add2845282852080548216831790557f427c45ac74610ad1057fc3524fc3fecaa3416dd8aa9baf907541659f889ee436909352922080549091169091179055565b60085460405163c0e1e15960e01b81526001600160a01b039091169063c0e1e1599061242690859085906004016137ab565b6020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246991906132e1565b151560011461249f5760405162461bcd60e51b8152602060048201526002602482015261423160f01b6044820152606401610ca6565b60006002826040516124b1919061338e565b908152604051908190036020019020600581015490915060ff1615156001146125015760405162461bcd60e51b8152602060048201526002602482015261211960f11b6044820152606401610ca6565b61250c826000612024565b5060005b600482015463ffffffff82161015612623576000826004018263ffffffff168154811061253f5761253f6131b7565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168083526003909152604080832090519193509061258290879061338e565b90815260200160405180910390209050600043856001015411156125a657436125ac565b84600101545b9050600085600201548360010154836125c591906133aa565b6125cf91906131a0565b9050808360000160008282546125e5919061329a565b90915550504360018401556003860180548291906000906126079084906133aa565b92505081905550505050508061261c9061325e565b9050612510565b506003810154156126e357600954600382015460405163a9059cbb60e01b81526001600160a01b038681166004830152602482019290925291169063a9059cbb906044016020604051808303816000875af1158015612686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126aa91906132e1565b6126db5760405162461bcd60e51b8152602060048201526002602482015261423360f01b6044820152606401610ca6565b600060038201555b6126ed60006108d0565b60028201554360018201819055815560085460405163b2f569c560e01b81526001600160a01b039091169063b2f569c59061272c9085906004016137cd565b600060405180830381600087803b15801561274657600080fd5b505af115801561275a573d6000803e3d6000fd5b50505060058201805460ff19169055506040516001600160a01b038416907f671ada3835502b9498e4a3116c344293ec3a4ef43f90bb42283d7d66a3f772b2906127a59085906137cd565b60405180910390a2505050565b828054828255906000526020600020906007016008900481019282156128515791602002820160005b8382111561281f57835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026127db565b801561284f5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261281f565b505b5061285d929150612861565b5090565b5b8082111561285d5760008155600101612862565b803567ffffffffffffffff811681146109d057600080fd5b6000602082840312156128a057600080fd5b6128a982612876565b9392505050565b60008083601f8401126128c257600080fd5b50813567ffffffffffffffff8111156128da57600080fd5b6020830191508360208260051b85010111156128f557600080fd5b9250929050565b63ffffffff811681146106f057600080fd5b80356109d0816128fc565b60008060008060008060008060008060c08b8d03121561293857600080fd5b8a3567ffffffffffffffff8082111561295057600080fd5b61295c8e838f016128b0565b909c509a5060208d013591508082111561297557600080fd5b6129818e838f016128b0565b909a50985060408d013591508082111561299a57600080fd5b6129a68e838f016128b0565b909850965060608d01359150808211156129bf57600080fd5b506129cc8d828e016128b0565b90955093506129df905060808c0161290e565b915060a08b013590509295989b9194979a5092959850565b80151581146106f057600080fd5b600060208284031215612a1757600080fd5b81356128a9816129f7565b600060208284031215612a3457600080fd5b5035919050565b6001600160a01b03811681146106f057600080fd5b60008060408385031215612a6357600080fd5b823591506020830135612a7581612a3b565b809150509250929050565b600060208284031215612a9257600080fd5b81356128a9816128fc565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612adc57612adc612a9d565b604052919050565b600067ffffffffffffffff821115612afe57612afe612a9d565b5060051b60200190565b600082601f830112612b1957600080fd5b813567ffffffffffffffff811115612b3357612b33612a9d565b612b46601f8201601f1916602001612ab3565b818152846020838601011115612b5b57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112612b8957600080fd5b81356020612b9e612b9983612ae4565b612ab3565b82815260059290921b84018101918181019086841115612bbd57600080fd5b8286015b84811015612bd85780358352918301918301612bc1565b509695505050505050565b600080600060608486031215612bf857600080fd5b833567ffffffffffffffff80821115612c1057600080fd5b818601915086601f830112612c2457600080fd5b81356020612c34612b9983612ae4565b82815260059290921b8401810191818101908a841115612c5357600080fd5b8286015b84811015612c8b57803586811115612c6f5760008081fd5b612c7d8d86838b0101612b08565b845250918301918301612c57565b5097505087013592505080821115612ca257600080fd5b50612caf86828701612b78565b925050604084013590509250925092565b600060208284031215612cd257600080fd5b81356128a981612a3b565b60008060408385031215612cf057600080fd5b8235612cfb816128fc565b946020939093013593505050565b60005b83811015612d24578181015183820152602001612d0c565b50506000910152565b60008151808452612d45816020860160208601612d09565b601f01601f19169290920160200192915050565b604081526000612d6c6040830185612d2d565b90508260208301529392505050565b600080600080600080600060a0888a031215612d9657600080fd5b8735612da181612a3b565b9650602088013567ffffffffffffffff80821115612dbe57600080fd5b612dca8b838c016128b0565b909850965060408a0135915080821115612de357600080fd5b612def8b838c016128b0565b909650945060608a0135935060808a0135915080821115612e0f57600080fd5b50612e1c8a828b01612b08565b91505092959891949750929550565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208285010111156128f557600080fd5b60008060008060408587031215612e8357600080fd5b843567ffffffffffffffff80821115612e9b57600080fd5b612ea788838901612e2b565b90965094506020870135915080821115612ec057600080fd5b50612ecd87828801612e2b565b95989497509550505050565b60008060408385031215612eec57600080fd5b8235612cfb81612a3b565b600060208284031215612f0957600080fd5b813567ffffffffffffffff811115612f2057600080fd5b612f2c84828501612b08565b949350505050565b60008060008060808587031215612f4a57600080fd5b8435612f5581612a3b565b93506020850135612f6581612a3b565b9250612f7360408601612876565b9150612f8160608601612876565b905092959194509250565b60008060408385031215612f9f57600080fd5b8235612faa816128fc565b9150602083013567ffffffffffffffff811115612fc657600080fd5b612fd285828601612b08565b9150509250929050565b60008060208385031215612fef57600080fd5b823567ffffffffffffffff81111561300657600080fd5b613012858286016128b0565b90969095509350505050565b6000806040838503121561303157600080fd5b823567ffffffffffffffff81111561304857600080fd5b8301601f8101851361305957600080fd5b80356020613069612b9983612ae4565b82815260059290921b8301810191818101908884111561308857600080fd5b938201935b838510156130af5784356130a0816128fc565b8252938201939082019061308d565b98969091013596505050505050565b600080600080600080600080600060a08a8c0312156130dc57600080fd5b893567ffffffffffffffff808211156130f457600080fd5b6131008d838e01612e2b565b909b50995060208c013591508082111561311957600080fd5b6131258d838e016128b0565b909950975060408c013591508082111561313e57600080fd5b61314a8d838e016128b0565b909750955060608c013591508082111561316357600080fd5b506131708c828d016128b0565b9a9d999c50979a9699959894979660800135949350505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109535761095361318a565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126131e457600080fd5b83018035915067ffffffffffffffff8211156131ff57600080fd5b6020019150368190038213156128f557600080fd5b6000808335601e1984360301811261322b57600080fd5b83018035915067ffffffffffffffff82111561324657600080fd5b6020019150600581901b36038213156128f557600080fd5b600063ffffffff8083168181036132775761327761318a565b6001019392505050565b60006020828403121561329357600080fd5b5051919050565b808201808211156109535761095361318a565b600181811c908216806132c157607f821691505b602082108103610b8957634e487b7160e01b600052602260045260246000fd5b6000602082840312156132f357600080fd5b81516128a9816129f7565b8183526000602080850194508260005b85811015613339578135613321816128fc565b63ffffffff168752958201959082019060010161330e565b509495945050505050565b6001600160a01b03871681526080602082015260006133676080830187896132fe565b828103604084015261337a8186886132fe565b915050826060830152979650505050505050565b600082516133a0818460208701612d09565b9190910192915050565b818103818111156109535761095361318a565b634e487b7160e01b600052601260045260246000fd5b6000826133e2576133e26133bd565b500490565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006134246060830187896133e7565b6001600160a01b038616602084015282810360408401526134468185876133e7565b98975050505050505050565b60006020828403121561346457600080fd5b81516128a9816128fc565b6040815260006134836040830186886133e7565b82810360208401526134968185876133e7565b979650505050505050565b67ffffffffffffffff8181168382160280821691908281146134c5576134c561318a565b505092915050565b600067ffffffffffffffff808416806134e8576134e86133bd565b92169190910492915050565b8183823760009101908152919050565b601f82111561194557600081815260208120601f850160051c8101602086101561352b5750805b601f850160051c820191505b8181101561354a57828155600101613537565b505050505050565b815167ffffffffffffffff81111561356c5761356c612a9d565b6135808161357a84546132ad565b84613504565b602080601f8311600181146135b5576000841561359d5750858301515b600019600386901b1c1916600185901b17855561354a565b600085815260208120601f198616915b828110156135e4578886015182559484019460019091019084016135c5565b50858210156136025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81835260006020808501808196508560051b810191508460005b878110156136975782840389528135601e1988360301811261364d57600080fd5b8701858101903567ffffffffffffffff81111561366957600080fd5b80360382131561367857600080fd5b6136838682846133e7565b9a87019a955050509084019060010161362c565b5091979650505050505050565b6001600160a01b038a16815260a0602082015260006136c760a083018a8c6133e7565b82810360408401526136da81898b6132fe565b905082810360608401526136ef818789613612565b90508281036080840152613704818587613612565b9c9b505050505050505050505050565b60a08152600061372860a083018b8d6133e7565b828103602084015261373b818a8c6132fe565b9050828103604084015261375081888a613612565b90508281036060840152613765818688613612565b9150508260808301529a9950505050505050505050565b63ffffffff8416815260606020820152600061379b6060830185612d2d565b9050826040830152949350505050565b6001600160a01b0383168152604060208201526000612f2c6040830184612d2d565b6020815260006128a96020830184612d2d56fea2646970667358221220c6862c48f8af003c6f3951d025cf8539f4635ad711c740f5249def8ccdc6ea1864736f6c63430008130033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102ad5760003560e01c80638ad868cb1161017b578063cd1b0d07116100d8578063e2f7cb301161008c578063ecd0c0c311610071578063ecd0c0c31461073f578063ef5d6bbb14610752578063fb8957331461076557600080fd5b8063e2f7cb3014610719578063e40cb19d1461072c57600080fd5b8063d2231741116100bd578063d2231741146106e2578063d547741f146106f3578063dcf311421461070657600080fd5b8063cd1b0d07146106bc578063cfa2e8b2146106cf57600080fd5b80639f794d751161012f578063a7bb580311610114578063a7bb58031461061f578063c0cfe6b914610651578063c5b95190146106a957600080fd5b80639f794d75146105e5578063a1ebf35d146105f857600080fd5b806393e59dc11161016057806393e59dc1146105845780639b4400dd146105af5780639d02ae27146105c257600080fd5b80638ad868cb146104d557806391d148541461054b57600080fd5b806342a61122116102295780637104ddb2116101dd578063822145aa116101c2578063822145aa1461048057806385f79d611461049357806388a774a2146104a657600080fd5b80637104ddb21461042357806375b238fc1461045957600080fd5b806354fd4d501161020e57806354fd4d50146103b55780635c5831e9146103ce5780636fa79f4f146103ef57600080fd5b806342a611221461036f5780634bcbb4b01461038257600080fd5b806327104a7b11610280578063325dee9a11610265578063325dee9a146103415780633927fb6a146103545780633ccfd60b1461036757600080fd5b806327104a7b146103135780632f2ff15d1461032e57600080fd5b806307c9a50e146102b25780630f864923146102c75780631a82aa30146102da5780631f1f9fd514610300575b600080fd5b6102c56102c036600461288e565b61078c565b005b6102c56102d5366004612919565b6107f9565b6102ed6102e8366004612a05565b6108d0565b6040519081526020015b60405180910390f35b6102c561030e366004612a22565b6109d5565b61031b603281565b60405161ffff90911681526020016102f7565b6102c561033c366004612a50565b610a05565b6102ed61034f366004612a80565b610a6e565b6102c5610362366004612be3565b610b8f565b6102c5610c0a565b6102ed61037d366004612cc0565b610cb1565b6103a5610390366004612cc0565b60066020526000908152604090205460ff1681565b60405190151581526020016102f7565b614e205b60405163ffffffff90911681526020016102f7565b6103e16103dc366004612cdd565b610d48565b6040516102f7929190612d59565b60095461040a90600160a01b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102f7565b600b54600c54600d54600e546104399392919084565b6040805194855260208501939093529183015260608201526080016102f7565b6102ed7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b76081565b6102c561048e366004612d7b565b610e11565b6103b96104a1366004612e6d565b611330565b6104b96104b4366004612ed9565b61145a565b6040805163ffffffff90931683526020830191909152016102f7565b6105216104e3366004612ef7565b805160208183018101805160028083529383019290940191909120929052815460018301549183015460038401546005909401549193909160ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016102f7565b6103a5610559366004612a50565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600a54610597906001600160a01b031681565b6040516001600160a01b0390911681526020016102f7565b6102c56105bd366004612f34565b61149d565b6103a56105d0366004612a22565b60076020526000908152604090205460ff1681565b6102c56105f3366004612cc0565b611679565b6102ed7f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f7281565b61063261062d366004612ef7565b6116d3565b6040805160ff90941684526020840192909252908201526060016102f7565b61069461065f366004612f8c565b600360209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015482565b604080519283526020830191909152016102f7565b6102c56106b7366004612a22565b611702565b6102ed6106ca366004612f8c565b611728565b6102c56106dd366004612fdc565b6118bc565b6102c56106f0366004612a22565b50565b6102c5610701366004612a50565b61194a565b6102c561071436600461301e565b6119af565b600854610597906001600160a01b031681565b6102c561073a3660046130be565b611a17565b600954610597906001600160a01b031681565b6102c5610760366004612a50565b611a3e565b6102ed7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911181565b7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b7606107b681611702565b506009805467ffffffffffffffff909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6108123361080d63ffffffff8516846131a0565b611a9e565b60005b8263ffffffff168163ffffffff1610156108c3576108b3338c8c8463ffffffff16818110610845576108456131b7565b905060200281019061085791906131cd565b8c8c8c8c8863ffffffff16818110610871576108716131b7565b90506020028101906108839190613214565b8c8c8a63ffffffff1681811061089b5761089b6131b7565b90506020028101906108ad9190613214565b8b611b81565b6108bc8161325e565b9050610815565b5050505050505050505050565b6000811561095957600b546008546040805163d479ad0560e01b815290516001600160a01b039092169163d479ad05916004808201926020929091908290030181865afa158015610925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109499190613281565b610953919061329a565b92915050565b600860009054906101000a90046001600160a01b03166001600160a01b031663d479ad056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109539190613281565b919050565b7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b7606109ff81611702565b50600b55565b3360009081527f331bba8513ee4dd5811afc38fa48458378fe9b930e1c5bd9a2e37d456ee8c897602052604090205460ff16610a6a5760008281526001602081815260408084206001600160a01b0386168552909152909120805460ff191690911790555b5050565b6000805b63ffffffff8084166000908152600560205260409020549082161015610b8957610b6b83600560008663ffffffff1663ffffffff1681526020019081526020016000208363ffffffff1681548110610acc57610acc6131b7565b90600052602060002090600202016000018054610ae8906132ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610b14906132ad565b8015610b615780601f10610b3657610100808354040283529160200191610b61565b820191906000526020600020905b815481529060010190602001808311610b4457829003601f168201915b5050505050611728565b610b75908361329a565b915080610b818161325e565b915050610a72565b50919050565b610b993382611a9e565b60005b83518163ffffffff161015610c0457610bf3848263ffffffff1681518110610bc657610bc66131b7565b6020026020010151848363ffffffff1681518110610be657610be66131b7565b6020026020010151612024565b50610bfd8161325e565b9050610b9c565b50505050565b6008546040516303cf703160e01b81523360048201526001600160a01b03909116906303cf7031906024016020604051808303816000875af1158015610c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7891906132e1565b15610caf5760405162461bcd60e51b8152602060048201526002602482015261463160f01b60448201526064015b60405180910390fd5b565b6000805b6001600160a01b03831660009081526004602052604090205463ffffffff82161015610b89576001600160a01b03831660009081526004602052604090208054610d2c919063ffffffff8416908110610d1057610d106131b7565b600091825260209091206002909102015463ffffffff16610a6e565b610d36908361329a565b9150610d418161325e565b9050610cb5565b60056020528160005260406000208181548110610d6457600080fd5b906000526020600020906002020160009150915050806000018054610d88906132ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610db4906132ad565b8015610e015780601f10610dd657610100808354040283529160200191610e01565b820191906000526020600020905b815481529060010190602001808311610de457829003601f168201915b5050505050908060010154905082565b600082815260076020526040902054829060ff1615610e575760405162461bcd60e51b8152602060048201526002602482015261453160f01b6044820152606401610ca6565b6000610ed7898989898989604051602001610e7796959493929190613344565b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b90506000610ee5828561225f565b6001600160a01b03811660009081527f427c45ac74610ad1057fc3524fc3fecaa3416dd8aa9baf907541659f889ee436602052604090205490915060ff16610f545760405162461bcd60e51b8152602060048201526002602482015261473160f01b6044820152606401610ca6565b60008060005b63ffffffff81168b11156112475760008c8c8363ffffffff16818110610f8257610f826131b7565b9050602002016020810190610f979190612a80565b905060648b8b8463ffffffff16818110610fb357610fb36131b7565b9050602002016020810190610fc89190612a80565b63ffffffff1611156110015760405162461bcd60e51b8152602060048201526002602482015261239960f11b6044820152606401610ca6565b6000805b63ffffffff80841660009081526005602052604090205490821610156111c3576000600560008563ffffffff1663ffffffff1681526020019081526020016000208263ffffffff168154811061105d5761105d6131b7565b90600052602060002090600202016000018054611079906132ad565b80601f01602080910402602001604051908101604052809291908181526020018280546110a5906132ad565b80156110f25780601f106110c7576101008083540402835291602001916110f2565b820191906000526020600020905b8154815290600101906020018083116110d557829003601f168201915b50505050509050600060028260405161110b919061338e565b908152604080516020928190038301812063ffffffff89166000908152600390945291832091935061113e90859061338e565b90815260200160405180910390209050600043836001015411156111625743611168565b82600101545b82546002850154855492935060009261118190856133aa565b61118b91906131a0565b611195919061329a565b6000845543600185015590506111ab818861329a565b96505050505050806111bc9061325e565b9050611005565b50600060648d8d8663ffffffff168181106111e0576111e06131b7565b90506020020160208101906111f59190612a80565b6112059063ffffffff16846131a0565b61120f91906133d3565b905061121b81836133aa565b611225908661329a565b9450611231818761329a565b9550505050806112409061325e565b9050610f5a565b5080600b600301600082825461125d919061329a565b909155505060095460405163a9059cbb60e01b81526001600160a01b038e81166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af11580156112b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d991906132e1565b61130a5760405162461bcd60e51b8152602060048201526002602482015261473360f01b6044820152606401610ca6565b5050506000938452505060076020525060409020805460ff191660011790555050505050565b600854604051631940d38760e01b81526000916001600160a01b031690631940d387906113699088908890339089908990600401613410565b6020604051808303816000875af1158015611388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ac9190613452565b3360008181526004602081815260408084208151808301835263ffffffff8881168083529585528254828601818152600180830186559489529590972091516002909702909101805463ffffffff19169690911695909517855591519390910192909255905192935090917fa837adf7db87879179d994c48f4275ae84c6ea7ba2ff625b1e121b5a6f42317d9061144a90899089908990899061346f565b60405180910390a3949350505050565b6004602052816000526040600020818154811061147657600080fd5b60009182526020909120600290910201805460019091015463ffffffff9091169250905082565b60006114a960016122de565b905080156114c1576000805461ff0019166101001790555b6114c9612340565b6008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0387811691909117909155600980549186167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117600160a01b67ffffffffffffffff861602179055604080516080810190915280606461155285600a6134a1565b61155c91906134cd565b67ffffffffffffffff1681526000602080830182905260408084018390526060938401929092528351600b55830151600c55820151600d550151600e556008546001600160a01b031663da35a26f83336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815267ffffffffffffffff90921660048301526001600160a01b03166024820152604401600060405180830381600087803b15801561161457600080fd5b505af1158015611628573d6000803e3d6000fd5b505050508015611672576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b7606116a381611702565b50600a805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080600083516041146116e657600080fd5b5050506020810151604082015160609092015160001a92909190565b600081815260016020908152604080832033845290915290205460ff166106f057600080fd5b60008060028360405161173b919061338e565b90815260200160405180910390206040518060c001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482018054806020026020016040519081016040528092919081815260200182805480156117f757602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116117ba5790505b50505091835250506005919091015460ff16151560209182015263ffffffff86166000908152600390915260408082209051929350909161183990869061338e565b90815260200160405180910390206040518060400160405290816000820154815260200160018201548152505090506000438360200151111561187c5743611882565b82602001515b90508160000151836040015183602001518361189e91906133aa565b6118a891906131a0565b6118b2919061329a565b9695505050505050565b60005b63ffffffff8116821115611945576119353384848463ffffffff168181106118e9576118e96131b7565b90506020028101906118fb91906131cd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123f492505050565b61193e8161325e565b90506118bf565b505050565b3360009081527f331bba8513ee4dd5811afc38fa48458378fe9b930e1c5bd9a2e37d456ee8c897602052604090205460ff1615610a6a5760008281526001602090815260408083206001600160a01b03851684529091529020805460ff191690555050565b6119b960016108d0565b82516009546119d99190600160a01b900467ffffffffffffffff166131a0565b6119e391906131a0565b811015610a6a5760405162461bcd60e51b8152602060048201526002602482015261433160f01b6044820152606401610ca6565b611a213382611a9e565b611a33338a8a8a8a8a8a8a8a8a611b81565b505050505050505050565b81611a4881611702565b6001600160a01b038216611a5b57600080fd5b506000918252600160208181526040808520338652909152808420805460ff199081169091556001600160a01b0393909316845290922080549091169091179055565b60008111611ad35760405162461bcd60e51b8152602060048201526002602482015261443160f01b6044820152606401610ca6565b6009546040516323b872dd60e01b81526001600160a01b03848116600483015230602483015260448201849052909116906323b872dd906064016020604051808303816000875af1158015611b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5091906132e1565b610a6a5760405162461bcd60e51b8152602060048201526002602482015261221960f11b6044820152606401610ca6565b6001600160a01b038a1660009081526006602052604090205460ff1615611bcf5760405162461bcd60e51b8152602060048201526002602482015261041360f41b6044820152606401610ca6565b60028989604051611be19291906134f4565b9081526040519081900360200190206005015460ff1615611c295760405162461bcd60e51b8152602060048201526002602482015261413160f01b6044820152606401610ca6565b60048614611c3657600080fd5b600a546001600160a01b031615611ce457600a5460405163a348c28960e01b81523360048201526001600160a01b039091169063a348c28990602401602060405180830381865afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb391906132e1565b611ce45760405162461bcd60e51b8152602060048201526002602482015261209960f11b6044820152606401610ca6565b6040518060c00160405280600081526020016000815260200160008152602001600081526020018888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506001602090910152604051600290611d5c908c908c906134f4565b9081526020016040518091039020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004019080519060200190611dae9291906127b2565b5060a091909101516005909101805460ff191691151591909117905560005b63ffffffff8116871115611f0e57600088888363ffffffff16818110611df557611df56131b7565b9050602002016020810190611e0a9190612a80565b6040805180820182526000808252602080830182905263ffffffff8516825260039052829020915192935091611e43908e908e906134f4565b908152604080519182900360209081018320845181559381015160019094019390935563ffffffff84166000908152600584528190206060601f8f018590049094028301840182529082018d815290928291908f908f9081908501838280828437600092018290525093855250505063ffffffff85168152600560209081526040822054928101929092528354600181018555938152208151919260020201908190611eef9082613552565b506020820151816001015550505080611f079061325e565b9050611dcd565b50600854604051639b4ddb5d60e01b81526001600160a01b0390911690639b4ddb5d90611f4f908d908d908d908d908d908d908d908d908d906004016136a4565b600060405180830381600087803b158015611f6957600080fd5b505af1158015611f7d573d6000803e3d6000fd5b505050506000611fc48a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869250612024915050565b90508a6001600160a01b03167f610eb3c1fafe229af536e91b7e00486902d54d54d8d3f0de283a467ac8f985bf8b8b8b8b8b8b8b8b8a60405161200f99989796959493929190613714565b60405180910390a25050505050505050505050565b600080600284604051612037919061338e565b908152602001604051809103902090506000816004018054905061205b60016108d0565b61206591906131a0565b61206f90856133d3565b6004830154600b549192509061208590836131a0565b61208f91906131a0565b600c80546000906120a190849061329a565b90915550506004820154600b546120b890836131a0565b6120c291906131a0565b6120cc90856133aa565b8260030160008282546120df919061329a565b90915550600090505b600483015463ffffffff82161015612206576000836004018263ffffffff1681548110612117576121176131b7565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168083526003909152604080832090519193509061215a908a9061338e565b908152602001604051809103902090506000612176838a611728565b90508082600001600082825461218c919061329a565b90915550504360018301556003860180548291906000906121ae9084906133aa565b909155505060018601546040517fd699389eec7b3216dc5c9fa741af9f2020fcaea48cefed14654d82474e7b0782916121ea9186918d9161377c565b60405180910390a1505050806121ff9061325e565b90506120e8565b50438083556001830154101561222a57612220814361329a565b6001830155612244565b8082600101600082825461223e919061329a565b90915550505b61224e60006108d0565b600283015550600101549392505050565b60008060008061226e856116d3565b6040805160008152602081018083528b905260ff8516918101919091526060810183905260808101829052929550909350915060019060a0016020604051602081039080840390855afa1580156122c9573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60008054610100900460ff1615612312578160ff1660011480156123015750303b155b61230a57600080fd5b506000919050565b60005460ff80841691161061232657600080fd5b506000805460ff191660ff92909216919091179055600190565b600054610100900460ff1661235457600080fd5b3360009081527f331bba8513ee4dd5811afc38fa48458378fe9b930e1c5bd9a2e37d456ee8c897602090815260408083208054600160ff1991821681179092557f911c709b9be4f1ae2b9f62542e6578f826afdf6fa62cd1aac81cae683df0add2845282852080548216831790557f427c45ac74610ad1057fc3524fc3fecaa3416dd8aa9baf907541659f889ee436909352922080549091169091179055565b60085460405163c0e1e15960e01b81526001600160a01b039091169063c0e1e1599061242690859085906004016137ab565b6020604051808303816000875af1158015612445573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246991906132e1565b151560011461249f5760405162461bcd60e51b8152602060048201526002602482015261423160f01b6044820152606401610ca6565b60006002826040516124b1919061338e565b908152604051908190036020019020600581015490915060ff1615156001146125015760405162461bcd60e51b8152602060048201526002602482015261211960f11b6044820152606401610ca6565b61250c826000612024565b5060005b600482015463ffffffff82161015612623576000826004018263ffffffff168154811061253f5761253f6131b7565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff168083526003909152604080832090519193509061258290879061338e565b90815260200160405180910390209050600043856001015411156125a657436125ac565b84600101545b9050600085600201548360010154836125c591906133aa565b6125cf91906131a0565b9050808360000160008282546125e5919061329a565b90915550504360018401556003860180548291906000906126079084906133aa565b92505081905550505050508061261c9061325e565b9050612510565b506003810154156126e357600954600382015460405163a9059cbb60e01b81526001600160a01b038681166004830152602482019290925291169063a9059cbb906044016020604051808303816000875af1158015612686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126aa91906132e1565b6126db5760405162461bcd60e51b8152602060048201526002602482015261423360f01b6044820152606401610ca6565b600060038201555b6126ed60006108d0565b60028201554360018201819055815560085460405163b2f569c560e01b81526001600160a01b039091169063b2f569c59061272c9085906004016137cd565b600060405180830381600087803b15801561274657600080fd5b505af115801561275a573d6000803e3d6000fd5b50505060058201805460ff19169055506040516001600160a01b038416907f671ada3835502b9498e4a3116c344293ec3a4ef43f90bb42283d7d66a3f772b2906127a59085906137cd565b60405180910390a2505050565b828054828255906000526020600020906007016008900481019282156128515791602002820160005b8382111561281f57835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026127db565b801561284f5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261281f565b505b5061285d929150612861565b5090565b5b8082111561285d5760008155600101612862565b803567ffffffffffffffff811681146109d057600080fd5b6000602082840312156128a057600080fd5b6128a982612876565b9392505050565b60008083601f8401126128c257600080fd5b50813567ffffffffffffffff8111156128da57600080fd5b6020830191508360208260051b85010111156128f557600080fd5b9250929050565b63ffffffff811681146106f057600080fd5b80356109d0816128fc565b60008060008060008060008060008060c08b8d03121561293857600080fd5b8a3567ffffffffffffffff8082111561295057600080fd5b61295c8e838f016128b0565b909c509a5060208d013591508082111561297557600080fd5b6129818e838f016128b0565b909a50985060408d013591508082111561299a57600080fd5b6129a68e838f016128b0565b909850965060608d01359150808211156129bf57600080fd5b506129cc8d828e016128b0565b90955093506129df905060808c0161290e565b915060a08b013590509295989b9194979a5092959850565b80151581146106f057600080fd5b600060208284031215612a1757600080fd5b81356128a9816129f7565b600060208284031215612a3457600080fd5b5035919050565b6001600160a01b03811681146106f057600080fd5b60008060408385031215612a6357600080fd5b823591506020830135612a7581612a3b565b809150509250929050565b600060208284031215612a9257600080fd5b81356128a9816128fc565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612adc57612adc612a9d565b604052919050565b600067ffffffffffffffff821115612afe57612afe612a9d565b5060051b60200190565b600082601f830112612b1957600080fd5b813567ffffffffffffffff811115612b3357612b33612a9d565b612b46601f8201601f1916602001612ab3565b818152846020838601011115612b5b57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112612b8957600080fd5b81356020612b9e612b9983612ae4565b612ab3565b82815260059290921b84018101918181019086841115612bbd57600080fd5b8286015b84811015612bd85780358352918301918301612bc1565b509695505050505050565b600080600060608486031215612bf857600080fd5b833567ffffffffffffffff80821115612c1057600080fd5b818601915086601f830112612c2457600080fd5b81356020612c34612b9983612ae4565b82815260059290921b8401810191818101908a841115612c5357600080fd5b8286015b84811015612c8b57803586811115612c6f5760008081fd5b612c7d8d86838b0101612b08565b845250918301918301612c57565b5097505087013592505080821115612ca257600080fd5b50612caf86828701612b78565b925050604084013590509250925092565b600060208284031215612cd257600080fd5b81356128a981612a3b565b60008060408385031215612cf057600080fd5b8235612cfb816128fc565b946020939093013593505050565b60005b83811015612d24578181015183820152602001612d0c565b50506000910152565b60008151808452612d45816020860160208601612d09565b601f01601f19169290920160200192915050565b604081526000612d6c6040830185612d2d565b90508260208301529392505050565b600080600080600080600060a0888a031215612d9657600080fd5b8735612da181612a3b565b9650602088013567ffffffffffffffff80821115612dbe57600080fd5b612dca8b838c016128b0565b909850965060408a0135915080821115612de357600080fd5b612def8b838c016128b0565b909650945060608a0135935060808a0135915080821115612e0f57600080fd5b50612e1c8a828b01612b08565b91505092959891949750929550565b60008083601f840112612e3d57600080fd5b50813567ffffffffffffffff811115612e5557600080fd5b6020830191508360208285010111156128f557600080fd5b60008060008060408587031215612e8357600080fd5b843567ffffffffffffffff80821115612e9b57600080fd5b612ea788838901612e2b565b90965094506020870135915080821115612ec057600080fd5b50612ecd87828801612e2b565b95989497509550505050565b60008060408385031215612eec57600080fd5b8235612cfb81612a3b565b600060208284031215612f0957600080fd5b813567ffffffffffffffff811115612f2057600080fd5b612f2c84828501612b08565b949350505050565b60008060008060808587031215612f4a57600080fd5b8435612f5581612a3b565b93506020850135612f6581612a3b565b9250612f7360408601612876565b9150612f8160608601612876565b905092959194509250565b60008060408385031215612f9f57600080fd5b8235612faa816128fc565b9150602083013567ffffffffffffffff811115612fc657600080fd5b612fd285828601612b08565b9150509250929050565b60008060208385031215612fef57600080fd5b823567ffffffffffffffff81111561300657600080fd5b613012858286016128b0565b90969095509350505050565b6000806040838503121561303157600080fd5b823567ffffffffffffffff81111561304857600080fd5b8301601f8101851361305957600080fd5b80356020613069612b9983612ae4565b82815260059290921b8301810191818101908884111561308857600080fd5b938201935b838510156130af5784356130a0816128fc565b8252938201939082019061308d565b98969091013596505050505050565b600080600080600080600080600060a08a8c0312156130dc57600080fd5b893567ffffffffffffffff808211156130f457600080fd5b6131008d838e01612e2b565b909b50995060208c013591508082111561311957600080fd5b6131258d838e016128b0565b909950975060408c013591508082111561313e57600080fd5b61314a8d838e016128b0565b909750955060608c013591508082111561316357600080fd5b506131708c828d016128b0565b9a9d999c50979a9699959894979660800135949350505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109535761095361318a565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126131e457600080fd5b83018035915067ffffffffffffffff8211156131ff57600080fd5b6020019150368190038213156128f557600080fd5b6000808335601e1984360301811261322b57600080fd5b83018035915067ffffffffffffffff82111561324657600080fd5b6020019150600581901b36038213156128f557600080fd5b600063ffffffff8083168181036132775761327761318a565b6001019392505050565b60006020828403121561329357600080fd5b5051919050565b808201808211156109535761095361318a565b600181811c908216806132c157607f821691505b602082108103610b8957634e487b7160e01b600052602260045260246000fd5b6000602082840312156132f357600080fd5b81516128a9816129f7565b8183526000602080850194508260005b85811015613339578135613321816128fc565b63ffffffff168752958201959082019060010161330e565b509495945050505050565b6001600160a01b03871681526080602082015260006133676080830187896132fe565b828103604084015261337a8186886132fe565b915050826060830152979650505050505050565b600082516133a0818460208701612d09565b9190910192915050565b818103818111156109535761095361318a565b634e487b7160e01b600052601260045260246000fd5b6000826133e2576133e26133bd565b500490565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006134246060830187896133e7565b6001600160a01b038616602084015282810360408401526134468185876133e7565b98975050505050505050565b60006020828403121561346457600080fd5b81516128a9816128fc565b6040815260006134836040830186886133e7565b82810360208401526134968185876133e7565b979650505050505050565b67ffffffffffffffff8181168382160280821691908281146134c5576134c561318a565b505092915050565b600067ffffffffffffffff808416806134e8576134e86133bd565b92169190910492915050565b8183823760009101908152919050565b601f82111561194557600081815260208120601f850160051c8101602086101561352b5750805b601f850160051c820191505b8181101561354a57828155600101613537565b505050505050565b815167ffffffffffffffff81111561356c5761356c612a9d565b6135808161357a84546132ad565b84613504565b602080601f8311600181146135b5576000841561359d5750858301515b600019600386901b1c1916600185901b17855561354a565b600085815260208120601f198616915b828110156135e4578886015182559484019460019091019084016135c5565b50858210156136025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81835260006020808501808196508560051b810191508460005b878110156136975782840389528135601e1988360301811261364d57600080fd5b8701858101903567ffffffffffffffff81111561366957600080fd5b80360382131561367857600080fd5b6136838682846133e7565b9a87019a955050509084019060010161362c565b5091979650505050505050565b6001600160a01b038a16815260a0602082015260006136c760a083018a8c6133e7565b82810360408401526136da81898b6132fe565b905082810360608401526136ef818789613612565b90508281036080840152613704818587613612565b9c9b505050505050505050505050565b60a08152600061372860a083018b8d6133e7565b828103602084015261373b818a8c6132fe565b9050828103604084015261375081888a613612565b90508281036060840152613765818688613612565b9150508260808301529a9950505050505050505050565b63ffffffff8416815260606020820152600061379b6060830185612d2d565b9050826040830152949350505050565b6001600160a01b0383168152604060208201526000612f2c6040830184612d2d565b6020815260006128a96020830184612d2d56fea2646970667358221220c6862c48f8af003c6f3951d025cf8539f4635ad711c740f5249def8ccdc6ea1864736f6c63430008130033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contract_config/SafeStakeOperatorConfig.json b/contract_config/SafeStakeOperatorConfig.json deleted file mode 100644 index 217e02c9..00000000 --- a/contract_config/SafeStakeOperatorConfig.json +++ /dev/null @@ -1,263 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "SafeStakeOperatorConfig", - "sourceName": "contracts/SafeStakeOperatorConfig.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAddress", - "type": "address" - } - ], - "name": "FeeRecipientAddressChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "inputs": [], - "name": "ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "NODE_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SIGNER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_storage", - "outputs": [ - { - "internalType": "contract ISafeStakeStorage", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "checkRole", - "outputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "generate_storage_key", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "getFeeRecipientAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "storageAddress", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - } - ], - "name": "setFeeRecipientAddress", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_storageAddress", - "type": "address" - } - ], - "name": "setStorageAddress", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610a72806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063c3fb90d61161008c578063d547741f11610066578063d547741f1461028e578063dbcdc2cc146102a1578063ef5d6bbb146102b4578063fb895733146102c757600080fd5b8063c3fb90d614610255578063c4d66de814610268578063c5b951901461027b57600080fd5b80636088089e116100c85780636088089e1461014757806375b238fc146101be57806391d14854146101e5578063a1ebf35d1461022e57600080fd5b80632f2ff15d146100ef57806354892f021461010457806359b910d614610134575b600080fd5b6101026100fd3660046109b9565b6102ee565b005b6101176101123660046109e9565b61037e565b6040516001600160a01b0390911681526020015b60405180910390f35b6101026101423660046109e9565b610455565b6101b06101553660046109e9565b6040516bffffffffffffffffffffffff19606083901b16602082015272466565526563697069656e744164647265737360681b6034820152600090604701604051602081830303815290604052805190602001209050919050565b60405190815260200161012b565b6101b07f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b76081565b61021e6101f33660046109b9565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b604051901515815260200161012b565b6101b07f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f7281565b600254610117906001600160a01b031681565b6101026102763660046109e9565b6104af565b610102610289366004610a06565b61054e565b61010261029c3660046109b9565b61058c565b6101026102af3660046109e9565b610614565b6101026102c23660046109b9565b610711565b6101b07f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911181565b6103187f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760336101f3565b61034e5760405162461bcd60e51b8152602060048201526002602482015261583160f01b60448201526064015b60405180910390fd5b60009182526001602081815260408085206001600160a01b0390941685529290529120805460ff19169091179055565b6000806103e0836040516bffffffffffffffffffffffff19606083901b16602082015272466565526563697069656e744164647265737360681b6034820152600090604701604051602081830303815290604052805190602001209050919050565b6002546040516321f8a72160e01b8152600481018390529192506001600160a01b0316906321f8a72190602401602060405180830381865afa15801561042a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044e9190610a1f565b9392505050565b7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b76061047f8161054e565b506002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60006104bb6001610771565b905080156104d3576000805461ff0019166101001790555b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416179055610503610887565b801561054a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b61055881336101f3565b6105895760405162461bcd60e51b8152602060048201526002602482015261058360f41b6044820152606401610345565b50565b6105b67f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760336101f3565b6105e75760405162461bcd60e51b81526020600482015260026024820152612c1960f11b6044820152606401610345565b60009182526001602090815260408084206001600160a01b0390931684529190529020805460ff19169055565b604080513360601b6bffffffffffffffffffffffff191660208083019190915272466565526563697069656e744164647265737360681b6034830152825160278184030181526047909201909252805191012060009060025460405163ca446dd960e01b8152600481018390526001600160a01b03858116602483015292935091169063ca446dd990604401600060405180830381600087803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b5050604080513381526001600160a01b03861660208201527f05d899f2c039ff7edfb413f1f4fe82889c2efaace7f08d7ac5aebad905b27ced9350019050610541565b8161071b8161054e565b6001600160a01b03821661072e57600080fd5b506000918252600160208181526040808520338652909152808420805460ff199081169091556001600160a01b0393909316845290922080549091169091179055565b60008054610100900460ff16156107ff578160ff1660011480156107945750303b155b6107f75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610345565b506000919050565b60005460ff80841691161061086d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610345565b506000805460ff191660ff92909216919091179055600190565b600054610100900460ff166109045760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610345565b3360009081527f331bba8513ee4dd5811afc38fa48458378fe9b930e1c5bd9a2e37d456ee8c897602090815260408083208054600160ff1991821681179092557f911c709b9be4f1ae2b9f62542e6578f826afdf6fa62cd1aac81cae683df0add2845282852080548216831790557f427c45ac74610ad1057fc3524fc3fecaa3416dd8aa9baf907541659f889ee436909352922080549091169091179055565b6001600160a01b038116811461058957600080fd5b600080604083850312156109cc57600080fd5b8235915060208301356109de816109a4565b809150509250929050565b6000602082840312156109fb57600080fd5b813561044e816109a4565b600060208284031215610a1857600080fd5b5035919050565b600060208284031215610a3157600080fd5b815161044e816109a456fea2646970667358221220df8a267b97a47fb672406d4352b538f48dbdc28002ce5d838ddfbd494e7469c464736f6c63430008130033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063c3fb90d61161008c578063d547741f11610066578063d547741f1461028e578063dbcdc2cc146102a1578063ef5d6bbb146102b4578063fb895733146102c757600080fd5b8063c3fb90d614610255578063c4d66de814610268578063c5b951901461027b57600080fd5b80636088089e116100c85780636088089e1461014757806375b238fc146101be57806391d14854146101e5578063a1ebf35d1461022e57600080fd5b80632f2ff15d146100ef57806354892f021461010457806359b910d614610134575b600080fd5b6101026100fd3660046109b9565b6102ee565b005b6101176101123660046109e9565b61037e565b6040516001600160a01b0390911681526020015b60405180910390f35b6101026101423660046109e9565b610455565b6101b06101553660046109e9565b6040516bffffffffffffffffffffffff19606083901b16602082015272466565526563697069656e744164647265737360681b6034820152600090604701604051602081830303815290604052805190602001209050919050565b60405190815260200161012b565b6101b07f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b76081565b61021e6101f33660046109b9565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b604051901515815260200161012b565b6101b07f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f7281565b600254610117906001600160a01b031681565b6101026102763660046109e9565b6104af565b610102610289366004610a06565b61054e565b61010261029c3660046109b9565b61058c565b6101026102af3660046109e9565b610614565b6101026102c23660046109b9565b610711565b6101b07f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911181565b6103187f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760336101f3565b61034e5760405162461bcd60e51b8152602060048201526002602482015261583160f01b60448201526064015b60405180910390fd5b60009182526001602081815260408085206001600160a01b0390941685529290529120805460ff19169091179055565b6000806103e0836040516bffffffffffffffffffffffff19606083901b16602082015272466565526563697069656e744164647265737360681b6034820152600090604701604051602081830303815290604052805190602001209050919050565b6002546040516321f8a72160e01b8152600481018390529192506001600160a01b0316906321f8a72190602401602060405180830381865afa15801561042a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044e9190610a1f565b9392505050565b7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b76061047f8161054e565b506002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60006104bb6001610771565b905080156104d3576000805461ff0019166101001790555b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416179055610503610887565b801561054a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b61055881336101f3565b6105895760405162461bcd60e51b8152602060048201526002602482015261058360f41b6044820152606401610345565b50565b6105b67f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b760336101f3565b6105e75760405162461bcd60e51b81526020600482015260026024820152612c1960f11b6044820152606401610345565b60009182526001602090815260408084206001600160a01b0390931684529190529020805460ff19169055565b604080513360601b6bffffffffffffffffffffffff191660208083019190915272466565526563697069656e744164647265737360681b6034830152825160278184030181526047909201909252805191012060009060025460405163ca446dd960e01b8152600481018390526001600160a01b03858116602483015292935091169063ca446dd990604401600060405180830381600087803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b5050604080513381526001600160a01b03861660208201527f05d899f2c039ff7edfb413f1f4fe82889c2efaace7f08d7ac5aebad905b27ced9350019050610541565b8161071b8161054e565b6001600160a01b03821661072e57600080fd5b506000918252600160208181526040808520338652909152808420805460ff199081169091556001600160a01b0393909316845290922080549091169091179055565b60008054610100900460ff16156107ff578160ff1660011480156107945750303b155b6107f75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610345565b506000919050565b60005460ff80841691161061086d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610345565b506000805460ff191660ff92909216919091179055600190565b600054610100900460ff166109045760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610345565b3360009081527f331bba8513ee4dd5811afc38fa48458378fe9b930e1c5bd9a2e37d456ee8c897602090815260408083208054600160ff1991821681179092557f911c709b9be4f1ae2b9f62542e6578f826afdf6fa62cd1aac81cae683df0add2845282852080548216831790557f427c45ac74610ad1057fc3524fc3fecaa3416dd8aa9baf907541659f889ee436909352922080549091169091179055565b6001600160a01b038116811461058957600080fd5b600080604083850312156109cc57600080fd5b8235915060208301356109de816109a4565b809150509250929050565b6000602082840312156109fb57600080fd5b813561044e816109a4565b600060208284031215610a1857600080fd5b5035919050565b600060208284031215610a3157600080fd5b815161044e816109a456fea2646970667358221220df8a267b97a47fb672406d4352b538f48dbdc28002ce5d838ddfbd494e7469c464736f6c63430008130033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contract_config/SafeStakeRegistry.json b/contract_config/SafeStakeRegistry.json deleted file mode 100644 index ca5ff7a9..00000000 --- a/contract_config/SafeStakeRegistry.json +++ /dev/null @@ -1,650 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "SafeStakeRegistryV3", - "sourceName": "contracts/SafeStakeRegistryV3.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint32", - "name": "operatorId", - "type": "uint32" - }, - { - "indexed": true, - "internalType": "address", - "name": "ownerAddress", - "type": "address" - } - ], - "name": "OperatorRemoval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "fromDao", - "type": "bool" - }, - { - "indexed": false, - "internalType": "bool", - "name": "verified", - "type": "bool" - } - ], - "name": "OperatorVerified", - "type": "event" - }, - { - "inputs": [], - "name": "ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "NODE_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "REGISTERED_OPERATORS_PER_ACCOUNT_LIMIT", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SIGNER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "VALIDATORS_PER_OPERATOR_LIMIT", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_activeValidatorCount", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_lastInitiatorId", - "outputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_lastOperatorId", - "outputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_operatorFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "name": "_operators", - "outputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - }, - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "internalType": "uint32", - "name": "indexInOwner", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "validatorCount", - "type": "uint32" - }, - { - "internalType": "bool", - "name": "active", - "type": "bool" - }, - { - "internalType": "bool", - "name": "fromParaStateDao", - "type": "bool" - }, - { - "internalType": "bool", - "name": "verified", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "_operatorsByOwnerAddress", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "_owners", - "outputs": [ - { - "internalType": "uint32", - "name": "activeValidatorCount", - "type": "uint32" - }, - { - "internalType": "bool", - "name": "validatorsDisabled", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "_validators", - "outputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "internalType": "uint32", - "name": "indexInOwner", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "checkRole", - "outputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - } - ], - "name": "disableOwnerValidators", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - } - ], - "name": "enableOwnerValidators", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "operatorFee", - "type": "uint256" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - } - ], - "name": "isAccountRegisteredOperator", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - } - ], - "name": "isAccountRegisteredValidator", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - } - ], - "name": "isValidatorOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - } - ], - "name": "registerOperator", - "outputs": [ - { - "internalType": "uint32", - "name": "operatorId", - "type": "uint32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "ownerAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - }, - { - "internalType": "uint32[]", - "name": "operatorIds", - "type": "uint32[]" - }, - { - "internalType": "bytes[]", - "name": "sharesPublicKeys", - "type": "bytes[]" - }, - { - "internalType": "bytes[]", - "name": "sharesEncrypted", - "type": "bytes[]" - } - ], - "name": "registerValidator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "operatorId", - "type": "uint32" - } - ], - "name": "removeOperator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "publicKey", - "type": "bytes" - } - ], - "name": "removeValidator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "fee", - "type": "uint64" - } - ], - "name": "updateOperatorFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "bool", - "name": "fromDao", - "type": "bool" - }, - { - "internalType": "bool", - "name": "verified", - "type": "bool" - } - ], - "name": "verifyOperator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50612ad3806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806391d148541161010f578063c5b95190116100a2578063da35a26f11610071578063da35a26f146104aa578063ef5d6bbb146104bd578063fb895733146104d0578063fbff6382146104f757600080fd5b8063c5b951901461044d578063d24ff60314610460578063d479ad051461048e578063d547741f1461049757600080fd5b8063a76af3bb116100de578063a76af3bb146103c5578063b2f569c5146103d8578063bf3a5c02146103eb578063c0e1e1591461043a57600080fd5b806391d14854146103655780639b4ddb5d146103785780639fb54b761461038b578063a1ebf35d1461039e57600080fd5b80632f2ff15d116101875780635d5dbffe116101565780635d5dbffe146102eb57806375202e2614610312578063759356951461033457806375b238fc1461033e57600080fd5b80632f2ff15d146102ab57806341d2c0cd146102be57806345413bf4146102d157806354fd4d50146102e457600080fd5b806303cf7031116101c357806303cf7031146102355780631940d3871461027057806327467a18146102835780632e1d2f051461029857600080fd5b806301a11927146101ea57806301e72bd71461020d57806302a4df0e14610225575b600080fd5b6101f36107d081565b60405163ffffffff90911681526020015b60405180910390f35b6002546102179081565b604051908152602001610204565b6008546101f39063ffffffff1681565b6102606102433660046120e4565b6001600160a01b0316600090815260066020526040902054151590565b6040519015158152602001610204565b6101f361027e36600461214f565b6104ff565b6102966102913660046120e4565b610a59565b005b6102966102a63660046121d3565b610baa565b6102966102b93660046121f9565b610e5a565b6102966102cc366004612225565b610ebb565b6102966102df3660046120e4565b610ef5565b60016101f3565b6102fe6102f93660046121d3565b610fee565b604051610204989796959493929190612295565b61032561032036600461231a565b611164565b604051610204939291906123cb565b6003546102179081565b6102177f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b76081565b6102606103733660046121f9565b61122b565b610296610386366004612447565b611258565b6101f361039936600461251e565b6116cf565b6102177f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f7281565b6102966103d3366004612558565b611718565b6102966103e636600461259b565b61191e565b61041e6103f93660046120e4565b60076020526000908152604090205463ffffffff811690640100000000900460ff1682565b6040805163ffffffff9093168352901515602083015201610204565b6102606104483660046125dd565b611c2b565b61029661045b366004612630565b611c6c565b61026061046e3660046120e4565b6001600160a01b0316600090815260076020526040902060010154151590565b61021760095481565b6102966104a53660046121f9565b611c82565b6102966104b83660046121f9565b611cdf565b6102966104cb3660046121f9565b611d5c565b6102177f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911181565b6101f3600a81565b60007f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911161052b81611c6c565b6001600160a01b038516600090815260066020526040902054600a101561057e5760405162461bcd60e51b8152602060048201526002602482015261041360f41b60448201526064015b60405180910390fd5b6001600160a01b038516600090815260076020526040902060010154156105cc5760405162461bcd60e51b8152602060048201526002602482015261413160f01b6044820152606401610575565b6105da600280546001019055565b6002546001600160a01b03861660009081526006602052604081205491935090819015610816576001600160a01b038716600090815260066020526040812080546004918391829061062e5761062e612649565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020019081526020016000206040518061010001604052908160008201805461068a9061265f565b80601f01602080910402602001604051908101604052809291908181526020018280546106b69061265f565b80156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050815260200160018201805461071c9061265f565b80601f01602080910402602001604051908101604052809291908181526020018280546107489061265f565b80156107955780601f1061076a57610100808354040283529160200191610795565b820191906000526020600020905b81548152906001019060200180831161077857829003601f168201915b5050509183525050600291909101546001600160a01b038116602083015263ffffffff600160a01b820481166040840152600160c01b820416606083015260ff600160e01b8204811615156080840152600160e81b82048116151560a0840152600160f01b90910416151560c09182015281015160e0909101519093509150505b6040518061010001604052808a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201829052509385525050506001600160a01b038a1660208084018290529082526006815260408083205463ffffffff90811682860152606085018490526001608086015287151560a086015286151560c09095019490945292881682526004905220815181906108fa90826126e7565b506020820151600182019061090f90826126e7565b5060408281015160029290920180546060850151608086015160a087015160c088015160e0909801516001600160a01b039788167fffffffffffffffff00000000000000000000000000000000000000000000000090951694909417600160a01b63ffffffff94851602177fffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b9284169290920260ff60e01b191691909117600160e01b911515919091021761ffff60e81b1916600160e81b961515969096027fff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695909517600160f01b91151591909102179055981660009081526006602090815298812080546001810182559082529890206008890401805460079099166004026101000a80830219909916918616989098021790965550909695505050505050565b7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a69111610a8381611c6c565b6001600160a01b038216600090815260076020526040902054640100000000900460ff1615610ad95760405162461bcd60e51b8152602060048201526002602482015261473160f01b6044820152606401610575565b6001600160a01b03821660009081526007602052604090205463ffffffff16610b295760405162461bcd60e51b8152602060048201526002602482015261239960f11b6044820152606401610575565b6001600160a01b0382166000908152600760205260408120546008805463ffffffff928316939192610b5d918591166127bd565b825463ffffffff9182166101009390930a928302919092021990911617905550506001600160a01b03166000908152600760205260409020805464ff000000001916640100000000179055565b63ffffffff811660009081526004602052604090206002810154600160e01b900460ff16610bff5760405162461bcd60e51b8152602060048201526002602482015261042360f41b6044820152606401610575565b60028101546001600160a01b03163314610c405760405162461bcd60e51b8152602060048201526002602482015261423160f01b6044820152606401610575565b6002810154600160c01b900463ffffffff1615610c845760405162461bcd60e51b8152602060048201526002602482015261211960f11b6044820152606401610575565b60028101805460ff60e01b1981169091556001600160a01b031660009081526006602052604081208054610cba906001906127e1565b81548110610cca57610cca612649565b6000918252602080832060088304015460028601546001600160a01b038116855260069092526040909320805460079093166004026101000a90930463ffffffff9081169450849392600160a01b90920416908110610d2b57610d2b612649565b6000918252602080832060088304018054600790931660049081026101000a63ffffffff8181021990951696851602959095179055600286810180548785168652958352604080862090920180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b978890049095169096029390931790945590546001600160a01b031682526006905220805480610dd257610dd26127f4565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a0219169055905560028201546040516001600160a01b03909116907f10b90e3d042178ee9b3e99a849224b4bf4145b9855274073c0c6bca9c5113b7b90610e4d90869063ffffffff91909116815260200190565b60405180910390a2505050565b610e847f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b7603361122b565b610eb75760008281526001602081815260408084206001600160a01b0386168552909152909120805460ff191690911790555b5050565b7f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f72610ee581611c6c565b5067ffffffffffffffff16600955565b7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a69111610f1f81611c6c565b6001600160a01b038216600090815260076020526040902054640100000000900460ff16610f745760405162461bcd60e51b8152602060048201526002602482015261463160f01b6044820152606401610575565b6001600160a01b0382166000908152600760205260408120546008805463ffffffff928316939192610fa89185911661280a565b825463ffffffff9182166101009390930a928302919092021990911617905550506001600160a01b03166000908152600760205260409020805464ff0000000019169055565b6004602052600090815260409020805481906110099061265f565b80601f01602080910402602001604051908101604052809291908181526020018280546110359061265f565b80156110825780601f1061105757610100808354040283529160200191611082565b820191906000526020600020905b81548152906001019060200180831161106557829003601f168201915b5050505050908060010180546110979061265f565b80601f01602080910402602001604051908101604052809291908181526020018280546110c39061265f565b80156111105780601f106110e557610100808354040283529160200191611110565b820191906000526020600020905b8154815290600101906020018083116110f357829003601f168201915b505050600290930154919250506001600160a01b0381169063ffffffff600160a01b8204811691600160c01b81049091169060ff600160e01b8204811691600160e81b8104821691600160f01b9091041688565b80516020818301810180516005825292820191909301209152805460028201546003830180546001600160a01b039093169363ffffffff909216926111a89061265f565b80601f01602080910402602001604051908101604052809291908181526020018280546111d49061265f565b80156112215780601f106111f657610100808354040283529160200191611221565b820191906000526020600020905b81548152906001019060200180831161120457829003601f168201915b5050505050905083565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff165b92915050565b7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911161128281611c6c565b6112928989898989898989611dbc565b60006001600160a01b031660058a8a6040516112af929190612827565b908152604051908190036020019020546001600160a01b0316146112fa5760405162461bcd60e51b8152602060048201526002602482015261453160f01b6044820152606401610575565b6001600160a01b038a16600090815260066020526040902054156113455760405162461bcd60e51b8152602060048201526002602482015261229960f11b6044820152606401610575565b60005b63ffffffff81168711156114b957600088888363ffffffff1681811061137057611370612649565b905060200201602081019061138591906121d3565b90506113998989838563ffffffff16611e3e565b6113ca5760405162461bcd60e51b8152602060048201526002602482015261453360f01b6044820152606401610575565b63ffffffff8116600090815260046020526040902060020154600160e01b900460ff1661141e5760405162461bcd60e51b8152602060048201526002602482015261114d60f21b6044820152606401610575565b63ffffffff818116600090815260046020526040902060020180546107d09260189161145291600160c01b90910416612837565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1611156114a85760405162461bcd60e51b8152602060048201526002602482015261453560f01b6044820152606401610575565b506114b281612837565b9050611348565b5060405180608001604052808b6001600160a01b0316815260200188888080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050506001600160a01b038d168152600760209081526040918290206001015463ffffffff16818401528151601f8d0182900482028101820183528c815291909201918c908c90819084018382808284376000920191909152505050915250604051600590611578908c908c90612827565b908152604051602091819003820190208251815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390911617815582820151805191926115cb92600185019290910190611fae565b50604082015160028201805463ffffffff191663ffffffff9092169190911790556060820151600382019061160090826126e7565b5050506001600160a01b038a16600090815260076020908152604082206001908101805491820181558352912001611639898b8361285a565b506001600160a01b038a16600090815260076020526040812080546001929061166990849063ffffffff1661280a565b92506101000a81548163ffffffff021916908363ffffffff1602179055506008600081819054906101000a900463ffffffff166116a590612837565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050505050505050565b600660205281600052604060002081815481106116eb57600080fd5b9060005260206000209060089182820401919006600402915091509054906101000a900463ffffffff1681565b7f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f7261174281611c6c565b6001600160a01b038416600090815260066020526040812080546004918391829061176f5761176f612649565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff16835282019290925260400190206002810154909150600160e01b900460ff166117e45760405162461bcd60e51b8152602060048201526002602482015261433160f01b6044820152606401610575565b60005b60028201546001600160a01b031660009081526006602052604090205463ffffffff821610156118cb5760028201546001600160a01b03166000908152600660205260408120805463ffffffff841690811061184557611845612649565b60009182526020808320600883040154600790921660049081026101000a90920463ffffffff1683525260409020600201805461ffff60e81b1916600160f01b871515027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1617600160e81b8815150217905550806118c381612837565b9150506117e7565b50604080516001600160a01b038716815285151560208201528415158183015290517f11382736e2f1156c2de7ec46b5d4b6ff3fa2af3a812e633907b3c0c08d348b559181900360600190a15050505050565b7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911161194881611c6c565b60006005848460405161195c929190612827565b9081526020016040518091039020905060005b600182015463ffffffff82161015611a1f576000826001018263ffffffff168154811061199e5761199e612649565b6000918252602080832060088304015463ffffffff6004600790941684026101000a90910481168085529290915260409092206002018054919350916018916119ef91600160c01b9091041661291b565b91906101000a81548163ffffffff021916908363ffffffff1602179055505080611a1890612837565b905061196f565b5080546001600160a01b031660009081526007602052604090206001818101805490918291611a4e91906127e1565b81548110611a5e57611a5e612649565b90600052602060002001818460020160009054906101000a900463ffffffff1663ffffffff1681548110611a9457611a94612649565b906000526020600020019081611aaa919061293b565b506002830154815463ffffffff90911690600590839083908110611ad057611ad0612649565b90600052602060002001604051611ae79190612a0e565b908152602001604051809103902060020160006101000a81548163ffffffff021916908363ffffffff16021790555080805480611b2657611b266127f4565b600190038181906000526020600020016000611b42919061205d565b905581546001908390600090611b5f90849063ffffffff166127bd565b92506101000a81548163ffffffff021916908363ffffffff1602179055506008600081819054906101000a900463ffffffff16611b9b9061291b565b91906101000a81548163ffffffff021916908363ffffffff16021790555060058686604051611bcb929190612827565b908152604051908190036020019020805473ffffffffffffffffffffffffffffffffffffffff191681556000611c046001830182612097565b60028201805463ffffffff19169055611c2160038301600061205d565b5050505050505050565b6000836001600160a01b031660058484604051611c49929190612827565b908152604051908190036020019020546001600160a01b03161490509392505050565b611c76813361122b565b611c7f57600080fd5b50565b611cac7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b7603361122b565b15610eb75760008281526001602090815260408083206001600160a01b03851684529091529020805460ff191690555050565b6000611ceb6001611eb5565b90508015611d03576000805461ff0019166101001790555b6009839055611d1182611f1c565b8015611d57576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b81611d6681611c6c565b6001600160a01b038216611d7957600080fd5b506000918252600160208181526040808520338652909152808420805460ff199081169091556001600160a01b0393909316845290922080549091169091179055565b60308714611df15760405162461bcd60e51b8152602060048201526002602482015261443160f01b6044820152606401610575565b8483141580611e005750848114155b80611e0c575060048514155b15611c215760405162461bcd60e51b8152602060048201526002602482015261221960f11b6044820152606401610575565b600081611e4a81612a84565b9250505b83821015611ea9578263ffffffff16858584818110611e6f57611e6f612649565b9050602002016020810190611e8491906121d3565b63ffffffff1603611e9757506000611ead565b81611ea181612a84565b925050611e4e565b5060015b949350505050565b60008054610100900460ff1615611ee9578160ff166001148015611ed85750303b155b611ee157600080fd5b506000919050565b60005460ff808416911610611efd57600080fd5b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff16611f3057600080fd5b611f5a7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911133610e5a565b611f847f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f7282610e5a565b611c7f7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b76082610e5a565b8280548282559060005260206000209060070160089004810192821561204d5791602002820160005b8382111561201b57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302611fd7565b801561204b5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261201b565b505b506120599291506120b8565b5090565b5080546120699061265f565b6000825580601f10612079575050565b601f016020900490600052602060002090810190611c7f91906120b8565b508054600082556007016008900490600052602060002090810190611c7f91905b5b8082111561205957600081556001016120b9565b80356001600160a01b0381168114611f1757600080fd5b6000602082840312156120f657600080fd5b6120ff826120cd565b9392505050565b60008083601f84011261211857600080fd5b50813567ffffffffffffffff81111561213057600080fd5b60208301915083602082850101111561214857600080fd5b9250929050565b60008060008060006060868803121561216757600080fd5b853567ffffffffffffffff8082111561217f57600080fd5b61218b89838a01612106565b909750955085915061219f602089016120cd565b945060408801359150808211156121b557600080fd5b506121c288828901612106565b969995985093965092949392505050565b6000602082840312156121e557600080fd5b813563ffffffff811681146120ff57600080fd5b6000806040838503121561220c57600080fd5b8235915061221c602084016120cd565b90509250929050565b60006020828403121561223757600080fd5b813567ffffffffffffffff811681146120ff57600080fd5b6000815180845260005b8181101561227557602081850181015186830182015201612259565b506000602082860101526020601f19601f83011685010191505092915050565b60006101008083526122a98184018c61224f565b905082810360208401526122bd818b61224f565b6001600160a01b03999099166040840152505063ffffffff958616606082015293909416608084015290151560a0830152151560c082015290151560e09091015292915050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561232c57600080fd5b813567ffffffffffffffff8082111561234457600080fd5b818401915084601f83011261235857600080fd5b81358181111561236a5761236a612304565b604051601f8201601f19908116603f0116810190838211818310171561239257612392612304565b816040528281528760208487010111156123ab57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b038416815263ffffffff831660208201526060604082015260006123f9606083018461224f565b95945050505050565b60008083601f84011261241457600080fd5b50813567ffffffffffffffff81111561242c57600080fd5b6020830191508360208260051b850101111561214857600080fd5b600080600080600080600080600060a08a8c03121561246557600080fd5b61246e8a6120cd565b985060208a013567ffffffffffffffff8082111561248b57600080fd5b6124978d838e01612106565b909a50985060408c01359150808211156124b057600080fd5b6124bc8d838e01612402565b909850965060608c01359150808211156124d557600080fd5b6124e18d838e01612402565b909650945060808c01359150808211156124fa57600080fd5b506125078c828d01612402565b915080935050809150509295985092959850929598565b6000806040838503121561253157600080fd5b61253a836120cd565b946020939093013593505050565b80358015158114611f1757600080fd5b60008060006060848603121561256d57600080fd5b612576846120cd565b925061258460208501612548565b915061259260408501612548565b90509250925092565b600080602083850312156125ae57600080fd5b823567ffffffffffffffff8111156125c557600080fd5b6125d185828601612106565b90969095509350505050565b6000806000604084860312156125f257600080fd5b6125fb846120cd565b9250602084013567ffffffffffffffff81111561261757600080fd5b61262386828701612106565b9497909650939450505050565b60006020828403121561264257600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061267357607f821691505b60208210810361269357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611d5757600081815260208120601f850160051c810160208610156126c05750805b601f850160051c820191505b818110156126df578281556001016126cc565b505050505050565b815167ffffffffffffffff81111561270157612701612304565b6127158161270f845461265f565b84612699565b602080601f83116001811461274a57600084156127325750858301515b600019600386901b1c1916600185901b1785556126df565b600085815260208120601f198616915b828110156127795788860151825594840194600190910190840161275a565b50858210156127975787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8281168282160390808211156127da576127da6127a7565b5092915050565b81810381811115611252576112526127a7565b634e487b7160e01b600052603160045260246000fd5b63ffffffff8181168382160190808211156127da576127da6127a7565b8183823760009101908152919050565b600063ffffffff808316818103612850576128506127a7565b6001019392505050565b67ffffffffffffffff83111561287257612872612304565b61288683612880835461265f565b83612699565b6000601f8411600181146128ba57600085156128a25750838201355b600019600387901b1c1916600186901b178355612914565b600083815260209020601f19861690835b828110156128eb57868501358255602094850194600190920191016128cb565b50868210156129085760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600063ffffffff821680612931576129316127a7565b6000190192915050565b818103612946575050565b612950825461265f565b67ffffffffffffffff81111561296857612968612304565b6129768161270f845461265f565b6000601f8211600181146129aa57600083156129925750848201545b600019600385901b1c1916600184901b178455612914565b600085815260209020601f19841690600086815260209020845b838110156129e457828601548255600195860195909101906020016129c4565b50858310156127975793015460001960f8600387901b161c19169092555050600190811b01905550565b6000808354612a1c8161265f565b60018281168015612a345760018114612a4957612a78565b60ff1984168752821515830287019450612a78565b8760005260208060002060005b85811015612a6f5781548a820152908401908201612a56565b50505082870194505b50929695505050505050565b600060018201612a9657612a966127a7565b506001019056fea26469706673582212203fad58dd35cc71a2a3932207278fcce252272499d493f3b9e8bd9d7a32b64f7164736f6c63430008130033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c806391d148541161010f578063c5b95190116100a2578063da35a26f11610071578063da35a26f146104aa578063ef5d6bbb146104bd578063fb895733146104d0578063fbff6382146104f757600080fd5b8063c5b951901461044d578063d24ff60314610460578063d479ad051461048e578063d547741f1461049757600080fd5b8063a76af3bb116100de578063a76af3bb146103c5578063b2f569c5146103d8578063bf3a5c02146103eb578063c0e1e1591461043a57600080fd5b806391d14854146103655780639b4ddb5d146103785780639fb54b761461038b578063a1ebf35d1461039e57600080fd5b80632f2ff15d116101875780635d5dbffe116101565780635d5dbffe146102eb57806375202e2614610312578063759356951461033457806375b238fc1461033e57600080fd5b80632f2ff15d146102ab57806341d2c0cd146102be57806345413bf4146102d157806354fd4d50146102e457600080fd5b806303cf7031116101c357806303cf7031146102355780631940d3871461027057806327467a18146102835780632e1d2f051461029857600080fd5b806301a11927146101ea57806301e72bd71461020d57806302a4df0e14610225575b600080fd5b6101f36107d081565b60405163ffffffff90911681526020015b60405180910390f35b6002546102179081565b604051908152602001610204565b6008546101f39063ffffffff1681565b6102606102433660046120e4565b6001600160a01b0316600090815260066020526040902054151590565b6040519015158152602001610204565b6101f361027e36600461214f565b6104ff565b6102966102913660046120e4565b610a59565b005b6102966102a63660046121d3565b610baa565b6102966102b93660046121f9565b610e5a565b6102966102cc366004612225565b610ebb565b6102966102df3660046120e4565b610ef5565b60016101f3565b6102fe6102f93660046121d3565b610fee565b604051610204989796959493929190612295565b61032561032036600461231a565b611164565b604051610204939291906123cb565b6003546102179081565b6102177f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b76081565b6102606103733660046121f9565b61122b565b610296610386366004612447565b611258565b6101f361039936600461251e565b6116cf565b6102177f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f7281565b6102966103d3366004612558565b611718565b6102966103e636600461259b565b61191e565b61041e6103f93660046120e4565b60076020526000908152604090205463ffffffff811690640100000000900460ff1682565b6040805163ffffffff9093168352901515602083015201610204565b6102606104483660046125dd565b611c2b565b61029661045b366004612630565b611c6c565b61026061046e3660046120e4565b6001600160a01b0316600090815260076020526040902060010154151590565b61021760095481565b6102966104a53660046121f9565b611c82565b6102966104b83660046121f9565b611cdf565b6102966104cb3660046121f9565b611d5c565b6102177f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911181565b6101f3600a81565b60007f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911161052b81611c6c565b6001600160a01b038516600090815260066020526040902054600a101561057e5760405162461bcd60e51b8152602060048201526002602482015261041360f41b60448201526064015b60405180910390fd5b6001600160a01b038516600090815260076020526040902060010154156105cc5760405162461bcd60e51b8152602060048201526002602482015261413160f01b6044820152606401610575565b6105da600280546001019055565b6002546001600160a01b03861660009081526006602052604081205491935090819015610816576001600160a01b038716600090815260066020526040812080546004918391829061062e5761062e612649565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020019081526020016000206040518061010001604052908160008201805461068a9061265f565b80601f01602080910402602001604051908101604052809291908181526020018280546106b69061265f565b80156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050815260200160018201805461071c9061265f565b80601f01602080910402602001604051908101604052809291908181526020018280546107489061265f565b80156107955780601f1061076a57610100808354040283529160200191610795565b820191906000526020600020905b81548152906001019060200180831161077857829003601f168201915b5050509183525050600291909101546001600160a01b038116602083015263ffffffff600160a01b820481166040840152600160c01b820416606083015260ff600160e01b8204811615156080840152600160e81b82048116151560a0840152600160f01b90910416151560c09182015281015160e0909101519093509150505b6040518061010001604052808a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8a018190048102820181019092528881529181019190899089908190840183828082843760009201829052509385525050506001600160a01b038a1660208084018290529082526006815260408083205463ffffffff90811682860152606085018490526001608086015287151560a086015286151560c09095019490945292881682526004905220815181906108fa90826126e7565b506020820151600182019061090f90826126e7565b5060408281015160029290920180546060850151608086015160a087015160c088015160e0909801516001600160a01b039788167fffffffffffffffff00000000000000000000000000000000000000000000000090951694909417600160a01b63ffffffff94851602177fffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b9284169290920260ff60e01b191691909117600160e01b911515919091021761ffff60e81b1916600160e81b961515969096027fff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695909517600160f01b91151591909102179055981660009081526006602090815298812080546001810182559082529890206008890401805460079099166004026101000a80830219909916918616989098021790965550909695505050505050565b7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a69111610a8381611c6c565b6001600160a01b038216600090815260076020526040902054640100000000900460ff1615610ad95760405162461bcd60e51b8152602060048201526002602482015261473160f01b6044820152606401610575565b6001600160a01b03821660009081526007602052604090205463ffffffff16610b295760405162461bcd60e51b8152602060048201526002602482015261239960f11b6044820152606401610575565b6001600160a01b0382166000908152600760205260408120546008805463ffffffff928316939192610b5d918591166127bd565b825463ffffffff9182166101009390930a928302919092021990911617905550506001600160a01b03166000908152600760205260409020805464ff000000001916640100000000179055565b63ffffffff811660009081526004602052604090206002810154600160e01b900460ff16610bff5760405162461bcd60e51b8152602060048201526002602482015261042360f41b6044820152606401610575565b60028101546001600160a01b03163314610c405760405162461bcd60e51b8152602060048201526002602482015261423160f01b6044820152606401610575565b6002810154600160c01b900463ffffffff1615610c845760405162461bcd60e51b8152602060048201526002602482015261211960f11b6044820152606401610575565b60028101805460ff60e01b1981169091556001600160a01b031660009081526006602052604081208054610cba906001906127e1565b81548110610cca57610cca612649565b6000918252602080832060088304015460028601546001600160a01b038116855260069092526040909320805460079093166004026101000a90930463ffffffff9081169450849392600160a01b90920416908110610d2b57610d2b612649565b6000918252602080832060088304018054600790931660049081026101000a63ffffffff8181021990951696851602959095179055600286810180548785168652958352604080862090920180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b978890049095169096029390931790945590546001600160a01b031682526006905220805480610dd257610dd26127f4565b600082815260209020600860001990920191820401805463ffffffff600460078516026101000a0219169055905560028201546040516001600160a01b03909116907f10b90e3d042178ee9b3e99a849224b4bf4145b9855274073c0c6bca9c5113b7b90610e4d90869063ffffffff91909116815260200190565b60405180910390a2505050565b610e847f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b7603361122b565b610eb75760008281526001602081815260408084206001600160a01b0386168552909152909120805460ff191690911790555b5050565b7f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f72610ee581611c6c565b5067ffffffffffffffff16600955565b7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a69111610f1f81611c6c565b6001600160a01b038216600090815260076020526040902054640100000000900460ff16610f745760405162461bcd60e51b8152602060048201526002602482015261463160f01b6044820152606401610575565b6001600160a01b0382166000908152600760205260408120546008805463ffffffff928316939192610fa89185911661280a565b825463ffffffff9182166101009390930a928302919092021990911617905550506001600160a01b03166000908152600760205260409020805464ff0000000019169055565b6004602052600090815260409020805481906110099061265f565b80601f01602080910402602001604051908101604052809291908181526020018280546110359061265f565b80156110825780601f1061105757610100808354040283529160200191611082565b820191906000526020600020905b81548152906001019060200180831161106557829003601f168201915b5050505050908060010180546110979061265f565b80601f01602080910402602001604051908101604052809291908181526020018280546110c39061265f565b80156111105780601f106110e557610100808354040283529160200191611110565b820191906000526020600020905b8154815290600101906020018083116110f357829003601f168201915b505050600290930154919250506001600160a01b0381169063ffffffff600160a01b8204811691600160c01b81049091169060ff600160e01b8204811691600160e81b8104821691600160f01b9091041688565b80516020818301810180516005825292820191909301209152805460028201546003830180546001600160a01b039093169363ffffffff909216926111a89061265f565b80601f01602080910402602001604051908101604052809291908181526020018280546111d49061265f565b80156112215780601f106111f657610100808354040283529160200191611221565b820191906000526020600020905b81548152906001019060200180831161120457829003601f168201915b5050505050905083565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff165b92915050565b7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911161128281611c6c565b6112928989898989898989611dbc565b60006001600160a01b031660058a8a6040516112af929190612827565b908152604051908190036020019020546001600160a01b0316146112fa5760405162461bcd60e51b8152602060048201526002602482015261453160f01b6044820152606401610575565b6001600160a01b038a16600090815260066020526040902054156113455760405162461bcd60e51b8152602060048201526002602482015261229960f11b6044820152606401610575565b60005b63ffffffff81168711156114b957600088888363ffffffff1681811061137057611370612649565b905060200201602081019061138591906121d3565b90506113998989838563ffffffff16611e3e565b6113ca5760405162461bcd60e51b8152602060048201526002602482015261453360f01b6044820152606401610575565b63ffffffff8116600090815260046020526040902060020154600160e01b900460ff1661141e5760405162461bcd60e51b8152602060048201526002602482015261114d60f21b6044820152606401610575565b63ffffffff818116600090815260046020526040902060020180546107d09260189161145291600160c01b90910416612837565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1611156114a85760405162461bcd60e51b8152602060048201526002602482015261453560f01b6044820152606401610575565b506114b281612837565b9050611348565b5060405180608001604052808b6001600160a01b0316815260200188888080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050506001600160a01b038d168152600760209081526040918290206001015463ffffffff16818401528151601f8d0182900482028101820183528c815291909201918c908c90819084018382808284376000920191909152505050915250604051600590611578908c908c90612827565b908152604051602091819003820190208251815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390911617815582820151805191926115cb92600185019290910190611fae565b50604082015160028201805463ffffffff191663ffffffff9092169190911790556060820151600382019061160090826126e7565b5050506001600160a01b038a16600090815260076020908152604082206001908101805491820181558352912001611639898b8361285a565b506001600160a01b038a16600090815260076020526040812080546001929061166990849063ffffffff1661280a565b92506101000a81548163ffffffff021916908363ffffffff1602179055506008600081819054906101000a900463ffffffff166116a590612837565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050505050505050565b600660205281600052604060002081815481106116eb57600080fd5b9060005260206000209060089182820401919006600402915091509054906101000a900463ffffffff1681565b7f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f7261174281611c6c565b6001600160a01b038416600090815260066020526040812080546004918391829061176f5761176f612649565b6000918252602080832060088304015460079092166004026101000a90910463ffffffff16835282019290925260400190206002810154909150600160e01b900460ff166117e45760405162461bcd60e51b8152602060048201526002602482015261433160f01b6044820152606401610575565b60005b60028201546001600160a01b031660009081526006602052604090205463ffffffff821610156118cb5760028201546001600160a01b03166000908152600660205260408120805463ffffffff841690811061184557611845612649565b60009182526020808320600883040154600790921660049081026101000a90920463ffffffff1683525260409020600201805461ffff60e81b1916600160f01b871515027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1617600160e81b8815150217905550806118c381612837565b9150506117e7565b50604080516001600160a01b038716815285151560208201528415158183015290517f11382736e2f1156c2de7ec46b5d4b6ff3fa2af3a812e633907b3c0c08d348b559181900360600190a15050505050565b7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911161194881611c6c565b60006005848460405161195c929190612827565b9081526020016040518091039020905060005b600182015463ffffffff82161015611a1f576000826001018263ffffffff168154811061199e5761199e612649565b6000918252602080832060088304015463ffffffff6004600790941684026101000a90910481168085529290915260409092206002018054919350916018916119ef91600160c01b9091041661291b565b91906101000a81548163ffffffff021916908363ffffffff1602179055505080611a1890612837565b905061196f565b5080546001600160a01b031660009081526007602052604090206001818101805490918291611a4e91906127e1565b81548110611a5e57611a5e612649565b90600052602060002001818460020160009054906101000a900463ffffffff1663ffffffff1681548110611a9457611a94612649565b906000526020600020019081611aaa919061293b565b506002830154815463ffffffff90911690600590839083908110611ad057611ad0612649565b90600052602060002001604051611ae79190612a0e565b908152602001604051809103902060020160006101000a81548163ffffffff021916908363ffffffff16021790555080805480611b2657611b266127f4565b600190038181906000526020600020016000611b42919061205d565b905581546001908390600090611b5f90849063ffffffff166127bd565b92506101000a81548163ffffffff021916908363ffffffff1602179055506008600081819054906101000a900463ffffffff16611b9b9061291b565b91906101000a81548163ffffffff021916908363ffffffff16021790555060058686604051611bcb929190612827565b908152604051908190036020019020805473ffffffffffffffffffffffffffffffffffffffff191681556000611c046001830182612097565b60028201805463ffffffff19169055611c2160038301600061205d565b5050505050505050565b6000836001600160a01b031660058484604051611c49929190612827565b908152604051908190036020019020546001600160a01b03161490509392505050565b611c76813361122b565b611c7f57600080fd5b50565b611cac7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b7603361122b565b15610eb75760008281526001602090815260408083206001600160a01b03851684529091529020805460ff191690555050565b6000611ceb6001611eb5565b90508015611d03576000805461ff0019166101001790555b6009839055611d1182611f1c565b8015611d57576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b81611d6681611c6c565b6001600160a01b038216611d7957600080fd5b506000918252600160208181526040808520338652909152808420805460ff199081169091556001600160a01b0393909316845290922080549091169091179055565b60308714611df15760405162461bcd60e51b8152602060048201526002602482015261443160f01b6044820152606401610575565b8483141580611e005750848114155b80611e0c575060048514155b15611c215760405162461bcd60e51b8152602060048201526002602482015261221960f11b6044820152606401610575565b600081611e4a81612a84565b9250505b83821015611ea9578263ffffffff16858584818110611e6f57611e6f612649565b9050602002016020810190611e8491906121d3565b63ffffffff1603611e9757506000611ead565b81611ea181612a84565b925050611e4e565b5060015b949350505050565b60008054610100900460ff1615611ee9578160ff166001148015611ed85750303b155b611ee157600080fd5b506000919050565b60005460ff808416911610611efd57600080fd5b506000805460ff191660ff92909216919091179055600190565b919050565b600054610100900460ff16611f3057600080fd5b611f5a7f1f675bff07515f5df96737194ea945c36c41e7b4fcef307b7cd4d0e602a6911133610e5a565b611f847f017e667f4b8c174291d1543c466717566e206df1bfd6f30271055ddafdb18f7282610e5a565b611c7f7f03783fac2efed8fbc9ad443e592ee30e61d65f471140c10ca155e937b435b76082610e5a565b8280548282559060005260206000209060070160089004810192821561204d5791602002820160005b8382111561201b57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302611fd7565b801561204b5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261201b565b505b506120599291506120b8565b5090565b5080546120699061265f565b6000825580601f10612079575050565b601f016020900490600052602060002090810190611c7f91906120b8565b508054600082556007016008900490600052602060002090810190611c7f91905b5b8082111561205957600081556001016120b9565b80356001600160a01b0381168114611f1757600080fd5b6000602082840312156120f657600080fd5b6120ff826120cd565b9392505050565b60008083601f84011261211857600080fd5b50813567ffffffffffffffff81111561213057600080fd5b60208301915083602082850101111561214857600080fd5b9250929050565b60008060008060006060868803121561216757600080fd5b853567ffffffffffffffff8082111561217f57600080fd5b61218b89838a01612106565b909750955085915061219f602089016120cd565b945060408801359150808211156121b557600080fd5b506121c288828901612106565b969995985093965092949392505050565b6000602082840312156121e557600080fd5b813563ffffffff811681146120ff57600080fd5b6000806040838503121561220c57600080fd5b8235915061221c602084016120cd565b90509250929050565b60006020828403121561223757600080fd5b813567ffffffffffffffff811681146120ff57600080fd5b6000815180845260005b8181101561227557602081850181015186830182015201612259565b506000602082860101526020601f19601f83011685010191505092915050565b60006101008083526122a98184018c61224f565b905082810360208401526122bd818b61224f565b6001600160a01b03999099166040840152505063ffffffff958616606082015293909416608084015290151560a0830152151560c082015290151560e09091015292915050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561232c57600080fd5b813567ffffffffffffffff8082111561234457600080fd5b818401915084601f83011261235857600080fd5b81358181111561236a5761236a612304565b604051601f8201601f19908116603f0116810190838211818310171561239257612392612304565b816040528281528760208487010111156123ab57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6001600160a01b038416815263ffffffff831660208201526060604082015260006123f9606083018461224f565b95945050505050565b60008083601f84011261241457600080fd5b50813567ffffffffffffffff81111561242c57600080fd5b6020830191508360208260051b850101111561214857600080fd5b600080600080600080600080600060a08a8c03121561246557600080fd5b61246e8a6120cd565b985060208a013567ffffffffffffffff8082111561248b57600080fd5b6124978d838e01612106565b909a50985060408c01359150808211156124b057600080fd5b6124bc8d838e01612402565b909850965060608c01359150808211156124d557600080fd5b6124e18d838e01612402565b909650945060808c01359150808211156124fa57600080fd5b506125078c828d01612402565b915080935050809150509295985092959850929598565b6000806040838503121561253157600080fd5b61253a836120cd565b946020939093013593505050565b80358015158114611f1757600080fd5b60008060006060848603121561256d57600080fd5b612576846120cd565b925061258460208501612548565b915061259260408501612548565b90509250925092565b600080602083850312156125ae57600080fd5b823567ffffffffffffffff8111156125c557600080fd5b6125d185828601612106565b90969095509350505050565b6000806000604084860312156125f257600080fd5b6125fb846120cd565b9250602084013567ffffffffffffffff81111561261757600080fd5b61262386828701612106565b9497909650939450505050565b60006020828403121561264257600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061267357607f821691505b60208210810361269357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611d5757600081815260208120601f850160051c810160208610156126c05750805b601f850160051c820191505b818110156126df578281556001016126cc565b505050505050565b815167ffffffffffffffff81111561270157612701612304565b6127158161270f845461265f565b84612699565b602080601f83116001811461274a57600084156127325750858301515b600019600386901b1c1916600185901b1785556126df565b600085815260208120601f198616915b828110156127795788860151825594840194600190910190840161275a565b50858210156127975787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8281168282160390808211156127da576127da6127a7565b5092915050565b81810381811115611252576112526127a7565b634e487b7160e01b600052603160045260246000fd5b63ffffffff8181168382160190808211156127da576127da6127a7565b8183823760009101908152919050565b600063ffffffff808316818103612850576128506127a7565b6001019392505050565b67ffffffffffffffff83111561287257612872612304565b61288683612880835461265f565b83612699565b6000601f8411600181146128ba57600085156128a25750838201355b600019600387901b1c1916600186901b178355612914565b600083815260209020601f19861690835b828110156128eb57868501358255602094850194600190920191016128cb565b50868210156129085760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b600063ffffffff821680612931576129316127a7565b6000190192915050565b818103612946575050565b612950825461265f565b67ffffffffffffffff81111561296857612968612304565b6129768161270f845461265f565b6000601f8211600181146129aa57600083156129925750848201545b600019600385901b1c1916600184901b178455612914565b600085815260209020601f19841690600086815260209020845b838110156129e457828601548255600195860195909101906020016129c4565b50858310156127975793015460001960f8600387901b161c19169092555050600190811b01905550565b6000808354612a1c8161265f565b60018281168015612a345760018114612a4957612a78565b60ff1984168752821515830287019450612a78565b8760005260208060002060005b85811015612a6f5781548a820152908401908201612a56565b50505082870194505b50929695505050505050565b600060018201612a9657612a966127a7565b506001019056fea26469706673582212203fad58dd35cc71a2a3932207278fcce252272499d493f3b9e8bd9d7a32b64f7164736f6c63430008130033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contract_config/configs.yml b/contract_config/configs.yml deleted file mode 100644 index 6f43f53b..00000000 --- a/contract_config/configs.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -validator_registration_topic: 610eb3c1fafe229af536e91b7e00486902d54d54d8d3f0de283a467ac8f985bf -validator_removal_topic: 671ada3835502b9498e4a3116c344293ec3a4ef43f90bb42283d7d66a3f772b2 -initiator_registration_topic: 3ed0a993c042af686c0f93773269df3a1874729d2b4fc3f71fdaa684bb2d6755 -initiator_minipool_created_topic: d37d31a5a66d534ce3b071e3ee6cf8b7d36a6dd20aa4f08e9cec322b27bd7704 -initiator_minipool_ready_topic: c474edb44e2d7e6c7f20261d61afed24712bcbd6a0799ae5b0786626c47da63c -initiator_removal_topic: 34ecedfa430a18df6cda4bc2313d74d224c6742df8e6a98eca2fda96b69a050d -fee_recipient_set_topic: 05d899f2c039ff7edfb413f1f4fe82889c2efaace7f08d7ac5aebad905b27ced -safestake_network_abi_path: contract_config/SafeStakeNetwork.json -safestake_registry_abi_path: contract_config/SafeStakeRegistry.json -safestake_config_abi_path: contract_config/SafeStakeOperatorConfig.json \ No newline at end of file diff --git a/docker-compose-boot.yml b/docker-compose-boot.yml index c0e7fdee..8ca4149d 100644 --- a/docker-compose-boot.yml +++ b/docker-compose-boot.yml @@ -9,7 +9,7 @@ services: - -c - | node_ip=$$(curl -s ifconfig.me) - dvf_root_node ${OPERATOR_NETWORK} $$node_ip 9005 2>&1 + dvf boot_node --ip $node_ip --port 9005 2>&1 expose: - "9005" volumes: diff --git a/docker-compose-operator-mev.yml b/docker-compose-operator-mev.yml index 04587edd..9f43d64d 100644 --- a/docker-compose-operator-mev.yml +++ b/docker-compose-operator-mev.yml @@ -89,12 +89,9 @@ services: - /bin/sh - -c - | - dvf validator_client --builder-proposals --metrics --debug-level=info --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --ws-url=${WS_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --base-port=26000 2>&1 + dvf validator_client --builder-proposals --metrics --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${WS_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CONFIG_CLUSTER_ADDRESS} --base-port=26000 2>&1 expose: - "26000" - - "26001" - - "26002" - - "26003" - "26004" - "26005" - "5064" diff --git a/docker-compose-operator.yml b/docker-compose-operator.yml index 26efde82..028cdca5 100644 --- a/docker-compose-operator.yml +++ b/docker-compose-operator.yml @@ -80,12 +80,9 @@ services: - /bin/sh - -c - | - dvf validator_client --metrics --debug-level=info --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --ws-url=${WS_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --base-port=26000 2>&1 + dvf validator_client --metrics --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${WS_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CONFIG_CLUSTER_ADDRESS} --base-port=26000 2>&1 expose: - "26000" - - "26001" - - "26002" - - "26003" - "26004" - "26005" - "5064" diff --git a/lighthouse b/lighthouse index d6ba8c39..612547f0 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit d6ba8c397557f5c977b70f0d822a9228e98ca214 +Subproject commit 612547f031663cd03e8bb9dfaa97ed9ad142f36e diff --git a/src/bin/dvf_key_tool.rs b/src/bin/dvf_key_tool.rs deleted file mode 100644 index b3831227..00000000 --- a/src/bin/dvf_key_tool.rs +++ /dev/null @@ -1,52 +0,0 @@ -use std::fs; - -use dvf_version::ROOT_VERSION; -use hsconfig::Export as _; -use hsconfig::Secret; -use log::{error, info}; - -pub const DEFAULT_SECRET_DIR: &str = "node_key.json"; -pub const DEFAULT_ROOT_DIR: &str = ".lighthouse"; - -#[tokio::main] -async fn main() { - // tracing_subscriber::fmt().json().init(); - let mut logger = - env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")); - logger.format_timestamp_millis(); - logger.init(); - log::info!("------dvf_key_tool------"); - - let network = std::env::args() - .nth(1) - .expect("ERROR: there is no valid network argument"); - let base_dir = dirs::home_dir() - .expect("ERROR: home dir is valid") - .join(DEFAULT_ROOT_DIR) - .join(format!("v{}", ROOT_VERSION)) - .join(&network); - let secret_dir = base_dir.join(DEFAULT_SECRET_DIR); - - //generate secret key if not exists - if secret_dir.exists() { - info!( - "INFO: secret file has been generated, path: {}", - &secret_dir.to_str().unwrap() - ); - let secret = Secret::read(secret_dir.to_str().unwrap()) - .expect("ERROR: can't read secret file, unexpect error happened."); - info!("INFO: node public key {}", secret.name.encode_base64()); - } else { - let secret = Secret::new(); - if !base_dir.exists() { - fs::create_dir_all(&base_dir).unwrap_or_else(|why| { - error!("ERROR: can't create dir {:?}", why.kind()); - return; - }); - } - secret - .write(secret_dir.to_str().unwrap()) - .expect("ERROR: Can't write to file"); - info!("INFO: node public key {}", secret.name.encode_base64()); - } -} diff --git a/src/bin/dvf_monitor_tool.rs b/src/bin/dvf_monitor_tool.rs deleted file mode 100644 index 12caa812..00000000 --- a/src/bin/dvf_monitor_tool.rs +++ /dev/null @@ -1,98 +0,0 @@ -use network::{DvfMessage, ReliableSender}; -use dvf_version::VERSION; -use std::fs::File; -use dvf::node::config::{BOOT_ENRS_CONFIG_FILE, base_to_signature_addr, base_to_duties_addr, base_to_active_addr}; -use lighthouse_network::discv5::enr::{Enr, CombinedKey}; -use std::net::{IpAddr, SocketAddr}; -use bytes::Bytes; -use log::{error, info}; -use std::net::TcpStream; - -fn all_equal(array: &[T]) -> bool { - if let Some(first) = array.first() { - array.iter().all(|x| x == first) - } else { - true - } -} - -async fn query_socket_address_from_boot(enrs: Vec>, op_pk: Vec) -> Vec { - // query socket address of the operator - let dvf_message = DvfMessage { - version: VERSION, - validator_id: 0, - message: op_pk.clone(), - }; - let serialized_msg = bincode::serialize(&dvf_message).unwrap(); - let boot_socketaddrs: Vec = enrs.iter().map(|e| { - SocketAddr::new( - IpAddr::V4(e.ip4().expect("boot enr ip should not be empty")), - e.udp4().expect("boot enr port should not be empty")) - }).collect(); - let network_sender = ReliableSender::new(); - let mut result = Vec::new(); - for addr in boot_socketaddrs { - match network_sender - .send(addr, Bytes::from(serialized_msg.clone())) - .await.await { - Ok(data) => { - let op_base_socketaddr = bincode::deserialize::(&data).unwrap(); - result.push(op_base_socketaddr); - }, - Err(e) => { - error!("failed to query op socket addr from boot {}", e) - } - } - } - result -} - -fn check_all_ports(base_addr: SocketAddr) -> bool { - TcpStream::connect(base_to_signature_addr(base_addr)).is_ok() && - TcpStream::connect(base_to_duties_addr(base_addr)).is_ok() && - TcpStream::connect(base_to_active_addr(base_addr)).is_ok() -} - -#[tokio::main] -async fn main() { - let mut logger = - env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")); - logger.format_timestamp_millis(); - logger.init(); - log::info!("------dvf_monitor_tool------"); - - let op_pk_str = std::env::args() - .nth(1) - .expect("ERROR: there is no valid operator public key argument"); - - let op_pk = hex::decode(&op_pk_str[2..]).expect("decode failed, op pk should be in hex format"); - - let file = File::options() - .read(true) - .write(false) - .create(false) - .open(BOOT_ENRS_CONFIG_FILE) - .expect( - format!( - "Unable to open the boot enrs config file: {:?}", - BOOT_ENRS_CONFIG_FILE - ) - .as_str(), - ); - let boot_enrs: Vec> = - serde_yaml::from_reader(file).expect("Unable to parse boot enr"); - - let op_addrs = query_socket_address_from_boot(boot_enrs, op_pk).await; - info!("node addre {:?}", op_addrs); - if op_addrs.is_empty() { - panic!("failed to query op socket address from boot node"); - } - if !all_equal(&op_addrs) { - panic!("the op addresses from different boot nodes are not same {:?}", op_addrs) - } - let base_addr = op_addrs.first().unwrap(); - if !check_all_ports(base_addr.clone()) { - panic!("ports checking failed") - } - info!("op {} is ready", op_pk_str); -} \ No newline at end of file diff --git a/src/bin/dvf_network_tool.rs b/src/bin/dvf_network_tool.rs deleted file mode 100644 index 192d2833..00000000 --- a/src/bin/dvf_network_tool.rs +++ /dev/null @@ -1,120 +0,0 @@ -use hsconfig::Export as _; -use hsconfig::Secret; -use lighthouse_network::discv5::{ - enr::{CombinedKey, Enr}, - ConfigBuilder, Discv5, ListenConfig, -}; -use log::{error, info}; -use std::net::IpAddr; -pub const DISCOVERY_PORT_OFFSET: u16 = 4; -pub const DEFAULT_DISCOVERY_PORT: u16 = 26004; -pub const DEFAULT_SECRET_DIR: &str = "node_key.json"; -pub const DEFAULT_ROOT_DIR: &str = ".lighthouse"; -use dvf_version::ROOT_VERSION; -#[tokio::main] -async fn main() { - let mut logger = - env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")); - logger.format_timestamp_millis(); - logger.init(); - log::info!("------dvf_network_tool------"); - - let network = std::env::args() - .nth(1) - .expect("ERROR: there is no valid network argument"); - let base_dir = dirs::home_dir() - .expect("ERROR: home dir is valid") - .join(DEFAULT_ROOT_DIR) - .join(format!("v{}", ROOT_VERSION)) - .join(&network); - let secret_dir = base_dir.join(DEFAULT_SECRET_DIR); - - let ip = std::env::args() - .nth(2) - .expect("ERROR: there is no valid network argument"); - - let port: u16 = std::env::args() - .nth(3) - .expect("ERROR: there is no valid port argument") - .parse() - .unwrap(); - - let udp_port = port + DISCOVERY_PORT_OFFSET; - let ip_addr = IpAddr::V4(ip.parse().unwrap()); - let mut secret = { - if secret_dir.exists() { - let secret = Secret::read(secret_dir.to_str().unwrap()) - .expect("ERROR: can't read secret file, unexpect error happened."); - info!("INFO: node public key {}", secret.name.encode_base64()); - secret - } else { - let secret = Secret::new(); - info!("INFO: node public key {}", secret.name.encode_base64()); - secret - } - }; - let enr_key = CombinedKey::secp256k1_from_bytes(&mut secret.secret.0).unwrap(); - let file = std::fs::File::options() - .read(true) - .write(false) - .create(false) - .open("boot_config/boot_enrs.yaml") - .expect( - format!( - "Unable to open the boot enrs config file: {:?}", - "boot_config/boot_enrs.yaml" - ) - .as_str(), - ); - - let boot_enrs: Vec> = - serde_yaml::from_reader(file).expect("Unable to parse boot enr"); - - let config = ConfigBuilder::new(ListenConfig::Ipv4 { - ip: "0.0.0.0".parse().unwrap(), - port: udp_port, - }) - .build(); - - let local_enr = { - let mut builder = Enr::builder(); - builder.ip(ip_addr); - if udp_port != DEFAULT_DISCOVERY_PORT { - builder.udp4(udp_port); - } - builder.seq(1); - builder.build(&enr_key).unwrap() - }; - - let mut discv5: Discv5 = Discv5::new(local_enr.clone(), enr_key, config).unwrap(); - - for boot_enr in &boot_enrs { - if let Err(e) = discv5.add_enr(boot_enr.clone()) { - panic!("Boot ENR was not added: {}", e); - } - info!("Added boot enr: {:?}", boot_enr.to_base64()); - } - - match discv5.start().await { - Ok(_) => { - for boot_enr in &boot_enrs { - let res = discv5.find_node(boot_enr.node_id()).await; - match res { - Ok(nodes) => { - if nodes.len() == 0 { - error!("Can't connect to boot node"); - } else { - info!("Successfully connected to boot node, you can run your operator") - } - } - Err(e) => { - error!("Can't connect to boot and run query: {}", e); - } - } - } - } - Err(e) => { - error!("Can't start discv5: {}", e); - } - } -} diff --git a/src/bin/dvf_root_node.rs b/src/bin/dvf_root_node.rs deleted file mode 100644 index 635ed91f..00000000 --- a/src/bin/dvf_root_node.rs +++ /dev/null @@ -1,175 +0,0 @@ -use async_trait::async_trait; -use bytes::Bytes; -use dvf::node::discovery::Discovery; -use futures::prelude::*; -use hsconfig::Export as _; -use hsconfig::Secret; -use lighthouse_network::discv5::{ - enr::{CombinedKey, Enr}, - ConfigBuilder, Discv5, Event, ListenConfig, -}; -use log::{error, info}; -use network::{MessageHandler, Receiver as NetworkReceiver, Writer as NetworkWriter}; -use std::collections::HashMap; -use std::error::Error; -use std::fs; -use std::net::{Ipv4Addr, SocketAddr}; -use std::path::PathBuf; -use std::sync::Arc; -use store::Store; -use tokio::sync::RwLock; -pub const DEFAULT_SECRET_DIR: &str = "node_key.json"; -pub const DEFAULT_STORE_DIR: &str = "boot_store"; -pub const DEFAULT_ROOT_DIR: &str = ".lighthouse"; -pub const DEFAULT_PORT: u16 = 9005; -pub const DISCOVERY_PORT_OFFSET: u16 = 4; - -#[derive(Clone)] -pub struct IpQueryReceiverHandler { - store: Store, -} - -#[async_trait] -impl MessageHandler for IpQueryReceiverHandler { - async fn dispatch( - &self, - writer: &mut NetworkWriter, - message: Bytes, - ) -> Result<(), Box> { - let msg: Vec = message.slice(..).to_vec(); - // message contains the public key - match self.store.read(msg).await { - Ok(value) => match value { - Some(data) => { - let _ = writer.send(Bytes::from(data)).await; - } - None => { - let _ = writer - .send(Bytes::from("can't find address, please wait")) - .await; - } - }, - Err(e) => { - let _ = writer - .send(Bytes::from("can't read database, please wait")) - .await; - error!("can't read database, {}", e) - } - } - Ok(()) - } -} - -#[tokio::main] -async fn main() -> Result<(), Box> { - // tracing_subscriber::fmt().json().init(); - let mut logger = - env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")); - logger.format_timestamp_millis(); - logger.init(); - - let network = std::env::args() - .nth(1) - .expect("ERRPR: there is no valid network argument"); - let base_dir = dirs::home_dir() - .unwrap_or_else(|| PathBuf::from(".")) - .join(DEFAULT_ROOT_DIR) - .join(&network); - let store_dir = base_dir.join(DEFAULT_STORE_DIR); - let store = Store::new(store_dir.to_str().unwrap()).unwrap(); - let secret_dir = base_dir.join(DEFAULT_SECRET_DIR); - - let ip = std::env::args() - .nth(2) - .map(|addr| addr.parse::().unwrap()) - .unwrap(); - - let port = { - if let Some(udp_port) = std::env::args().nth(3) { - udp_port.parse().unwrap_or(DEFAULT_PORT) - } else { - DEFAULT_PORT - } - }; - - let secret = if secret_dir.exists() { - info!("Loading secret file: {}", &secret_dir.to_str().unwrap()); - Secret::read(secret_dir.to_str().unwrap()).unwrap() - } else { - info!("Generating secret file: {}", &secret_dir.to_str().unwrap()); - let secret = Secret::new(); - if !base_dir.exists() { - fs::create_dir_all(&base_dir).unwrap_or_else(|why| { - panic!("can't create dir {:?}", why.kind()); - }); - } - secret.write(secret_dir.to_str().unwrap()).unwrap(); - secret - }; - let mut secret_key = secret.secret.0[..].to_vec(); - let enr_key = CombinedKey::secp256k1_from_bytes(&mut secret_key).unwrap(); - - // construct a local ENR - let local_enr = { - let mut builder = Enr::builder(); - builder.ip(ip.into()); - builder.udp4(port); - builder.build(&enr_key).unwrap() - }; - - info!("Boot node ENR ip: {}, port: {}", ip, port); - info!("Boot node public key: {}", secret.name.encode_base64()); - info!( - "Boot node id: {}", - base64::encode(local_enr.node_id().raw()) - ); - info!("Boot node ENR: {:?}", local_enr.to_base64()); - - let config = ConfigBuilder::new(ListenConfig::Ipv4 { - ip: "0.0.0.0".parse().unwrap(), - port: port, - }) - .build(); - - // construct the discv5 server - let mut discv5: Discv5 = Discv5::new(local_enr.clone(), enr_key, config).unwrap(); - - // start the discv5 service - let listen_addr = SocketAddr::new("0.0.0.0".parse().expect("valid ip"), port); - let _ = discv5.start().await; - - let mut event_stream = discv5.event_stream().await.unwrap(); - let mut handler_map: HashMap = HashMap::new(); - handler_map.insert( - 0, - IpQueryReceiverHandler { - store: store.clone(), - }, - ); - - let handler_map = Arc::new(RwLock::new(handler_map)); - - NetworkReceiver::spawn(listen_addr, handler_map, "boot node"); - - loop { - tokio::select! { - Some(event) = event_stream.recv() => { - match event { - Event::Discovered(enr) => { - Discovery::process_enr(&store, enr).await; - }, - Event::SessionEstablished(enr, _addr) => { - Discovery::process_enr(&store, enr).await; - }, - Event::SocketUpdated(addr) => { - info!("Event::SocketUpdated: local ENR IP address has been updated, addr:{}", addr); - // zico: Is there any way to broadcast this news? - }, - Event::EnrAdded { .. } - | Event::NodeInserted { .. } - | Event::TalkRequest(_) => {}, // Ignore all other discv5 server events - }; - } - } - } -} diff --git a/src/boot_node/Cargo.lock b/src/boot_node/Cargo.lock new file mode 100644 index 00000000..e3b1fca4 --- /dev/null +++ b/src/boot_node/Cargo.lock @@ -0,0 +1,7882 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "account_utils" +version = "0.1.0" +dependencies = [ + "directory", + "eth2_keystore", + "eth2_keystore_share", + "eth2_wallet", + "filesystem", + "rand", + "regex", + "rpassword", + "safestake_crypto", + "serde", + "serde_yaml", + "slog", + "types", + "validator_dir", + "zeroize", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[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.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if", + "cipher 0.3.0", + "cpufeatures", + "ctr 0.8.0", + "opaque-debug", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher 0.4.4", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes 0.8.4", + "cipher 0.4.4", + "ctr 0.9.2", + "ghash", + "subtle", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy-primitives" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9db948902dfbae96a73c2fbf1f7abec62af034ab883e4c777c3fd29702bd6e2c" +dependencies = [ + "alloy-rlp", + "arbitrary", + "bytes", + "cfg-if", + "const-hex", + "derive_arbitrary", + "derive_more", + "foldhash", + "getrandom", + "hashbrown 0.15.2", + "hex-literal", + "indexmap 2.7.0", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "proptest-derive", + "rand", + "ruint", + "rustc-hash 2.1.0", + "serde", + "sha3 0.10.8", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0822426598f95e45dd1ea32a738dac057529a709ee645fcc516ffa4cbde08f" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b09cae092c27b6f1bde952653a22708691802e57bfef4a2973b80bea21efd3f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +dependencies = [ + "anstyle", + "windows-sys 0.59.0", +] + +[[package]] +name = "anyhow" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" + +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + +[[package]] +name = "archery" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a8da9bc4c4053ee067669762bcaeea6e241841295a2b6c948312dad6ef4cc02" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "array-init" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "asn1-rs" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror 1.0.69", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "asn1_der" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "155a5a185e42c6b77ac7b88a15143d930a9e9727a5b7b77eed417404ab15c247" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-io" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "async-trait" +version = "0.1.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "asynchronous-codec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a860072022177f903e59730004fb5dc13db9275b79bb2aef7ba8ce831956c233" +dependencies = [ + "bytes", + "futures-sink", + "futures-util", + "memchr", + "pin-project-lite", +] + +[[package]] +name = "attohttpc" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9a9bf8b79a749ee0b911b91b671cc2b6c670bdbc7e3dfd537576ddc94bb2a2" +dependencies = [ + "http", + "log", + "url", +] + +[[package]] +name = "auto_impl" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "axum" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +dependencies = [ + "async-trait", + "axum-core", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bindgen" +version = "0.69.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.10.5", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.90", + "which", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitvec" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +dependencies = [ + "funty 1.1.0", + "radium 0.6.2", + "tap", + "wyz 0.2.0", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty 2.0.0", + "radium 0.7.0", + "tap", + "wyz 0.5.1", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "block-padding", + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-padding" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" + +[[package]] +name = "bls" +version = "0.2.0" +dependencies = [ + "alloy-primitives", + "arbitrary", + "blst", + "ethereum_hashing", + "ethereum_serde_utils", + "ethereum_ssz", + "fixed_bytes", + "hex", + "rand", + "safe_arith", + "serde", + "tree_hash", + "zeroize", +] + +[[package]] +name = "blst" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "blstrs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8a8ed6fefbeef4a8c7b460e4110e12c5e22a5b7cf32621aae6ad650c4dcf29" +dependencies = [ + "blst", + "byte-slice-cast", + "ff", + "group", + "pairing", + "rand_core", + "serde", + "subtle", +] + +[[package]] +name = "boot_node" +version = "0.1.0" +dependencies = [ + "bincode", + "clap", + "clap_utils", + "directory", + "dirs", + "dvf_utils", + "lighthouse_network", + "prost", + "safestake_crypto", + "safestake_operator", + "serde", + "slashing_protection", + "slog", + "store", + "task_executor", + "tonic", + "tonic-build", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "c-kzg" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", +] + +[[package]] +name = "cc" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +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 0.4.4", + "cpufeatures", +] + +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead", + "chacha20", + "cipher 0.4.4", + "poly1305", + "zeroize", +] + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets 0.52.6", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array", +] + +[[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 = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim 0.11.1", + "terminal_size", +] + +[[package]] +name = "clap_derive" +version = "4.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "clap_lex" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" + +[[package]] +name = "clap_utils" +version = "0.1.0" +dependencies = [ + "alloy-primitives", + "clap", + "dirs", + "eth2_network_config", + "ethereum_ssz", + "hex", + "serde", + "serde_json", + "serde_yaml", + "types", +] + +[[package]] +name = "cmake" +version = "0.1.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e" +dependencies = [ + "cc", +] + +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "compare_fields" +version = "0.2.0" +dependencies = [ + "itertools 0.10.5", +] + +[[package]] +name = "compare_fields_derive" +version = "0.2.0" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const-hex" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[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.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +dependencies = [ + "libc", +] + +[[package]] +name = "crate_crypto_internal_eth_kzg_bls12_381" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "319cb241b1ad37f8c376b2ebcd7233f53e033a50de6f0a9cf38e6cc545554de4" +dependencies = [ + "blst", + "blstrs", + "ff", + "group", + "pairing", + "subtle", +] + +[[package]] +name = "crate_crypto_internal_eth_kzg_erasure_codes" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abedcc3eb4d04655c53704a66880945f5a39c6d96b337f0ab4a086dda795c954" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", + "crate_crypto_internal_eth_kzg_polynomial", +] + +[[package]] +name = "crate_crypto_internal_eth_kzg_maybe_rayon" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db089718921ca28d137ed8b1a7406f10e6bfbc61794a2339bcd9c99d5ddefc6" + +[[package]] +name = "crate_crypto_internal_eth_kzg_polynomial" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "750e6dbe493d337d98502975137f055a52767021bcdb69aa8926ed8ee28c7980" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", +] + +[[package]] +name = "crate_crypto_kzg_multi_open_fk20" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3337262f48c7fee2999cf23bb9cb693299211671fe46b593ac81fcb218de68b" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", + "crate_crypto_internal_eth_kzg_maybe_rayon", + "crate_crypto_internal_eth_kzg_polynomial", + "hex", + "sha2 0.10.8", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "crypto-mac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher 0.3.0", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher 0.4.4", +] + +[[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.90", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core 0.13.4", + "darling_macro 0.13.4", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core 0.20.10", + "darling_macro 0.20.10", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 1.0.109", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.90", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core 0.13.4", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core 0.20.10", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "dary_heap" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04d2cd9c18b9f454ed67da600630b021a8a80bf33f8c95896ab33aaf1c26b728" + +[[package]] +name = "data-encoding" +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 = "db-key" +version = "0.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72465f46d518f6015d9cf07f7f3013a95dd6b9c2747c3d65ae0cce43929d14f" + +[[package]] +name = "delay_map" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df941644b671f05f59433e481ba0d31ac10e3667de725236a4c0d587c496fba1" +dependencies = [ + "futures", + "tokio", + "tokio-util", +] + +[[package]] +name = "deposit_contract" +version = "0.2.0" +dependencies = [ + "ethabi", + "ethereum_ssz", + "hex", + "reqwest", + "serde_json", + "sha2 0.9.9", + "tree_hash", + "types", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "der-parser" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[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.90", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "directory" +version = "0.1.0" +dependencies = [ + "clap", + "clap_utils", + "eth2_network_config", +] + +[[package]] +name = "dirs" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +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.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "discv5" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "898d136ecb64116ec68aecf14d889bd30f8b1fe0c19e262953f7388dbe77052e" +dependencies = [ + "aes 0.8.4", + "aes-gcm", + "alloy-rlp", + "arrayvec", + "ctr 0.9.2", + "delay_map", + "enr", + "fnv", + "futures", + "hashlink 0.9.1", + "hex", + "hkdf", + "lazy_static", + "libp2p-identity", + "lru", + "more-asserts", + "multiaddr", + "parking_lot", + "rand", + "smallvec", + "socket2", + "tokio", + "tracing", + "uint 0.10.0", + "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.90", +] + +[[package]] +name = "dtoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" + +[[package]] +name = "dvf_utils" +version = "0.1.0" +dependencies = [ + "bls", +] + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "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", + "ed25519", + "rand_core", + "serde", + "sha2 0.10.8", + "subtle", + "zeroize", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pem-rfc7468", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enr" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "851bd664a3d3a3c175cff92b2f0df02df3c541b4895d0ae307611827aae46152" +dependencies = [ + "alloy-rlp", + "base64 0.22.1", + "bytes", + "ed25519-dalek", + "hex", + "k256", + "log", + "rand", + "serde", + "sha3 0.10.8", + "zeroize", +] + +[[package]] +name = "enum-as-inner" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "erased-serde" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c" +dependencies = [ + "serde", +] + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "eth2_config" +version = "0.2.0" +dependencies = [ + "paste", + "types", +] + +[[package]] +name = "eth2_interop_keypairs" +version = "0.2.0" +dependencies = [ + "bls", + "ethereum_hashing", + "hex", + "num-bigint", + "serde", + "serde_yaml", +] + +[[package]] +name = "eth2_key_derivation" +version = "0.1.0" +dependencies = [ + "bls", + "num-bigint-dig", + "ring 0.16.20", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "eth2_keystore" +version = "0.1.0" +dependencies = [ + "aes 0.7.5", + "bls", + "eth2_key_derivation", + "hex", + "hmac 0.11.0", + "pbkdf2 0.8.0", + "rand", + "scrypt", + "serde", + "serde_json", + "serde_repr", + "sha2 0.9.9", + "unicode-normalization", + "uuid", + "zeroize", +] + +[[package]] +name = "eth2_keystore_share" +version = "0.1.0" +dependencies = [ + "bls", + "eth2_keystore", + "serde", + "serde_json", +] + +[[package]] +name = "eth2_network_config" +version = "0.2.0" +dependencies = [ + "bytes", + "discv5", + "eth2_config", + "kzg", + "logging", + "pretty_reqwest_error", + "reqwest", + "sensitive_url", + "serde_yaml", + "sha2 0.9.9", + "slog", + "types", + "url", + "zip", +] + +[[package]] +name = "eth2_wallet" +version = "0.1.0" +dependencies = [ + "eth2_key_derivation", + "eth2_keystore", + "rand", + "serde", + "serde_json", + "serde_repr", + "tiny-bip39", + "uuid", +] + +[[package]] +name = "ethabi" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c98847055d934070b90e806e12d3936b787d0a115068981c1d8dfd5dfef5a5" +dependencies = [ + "ethereum-types", + "hex", + "serde", + "serde_json", + "sha3 0.9.1", + "thiserror 1.0.69", + "uint 0.9.5", +] + +[[package]] +name = "ethbloom" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb684ac8fa8f6c5759f788862bb22ec6fe3cb392f6bfd08e3c64b603661e3f8" +dependencies = [ + "crunchy", + "fixed-hash 0.7.0", + "impl-rlp", + "impl-serde", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05136f7057fe789f06e6d41d07b34e6f70d8c86e5693b60f97aaa6553553bdaf" +dependencies = [ + "ethbloom", + "fixed-hash 0.7.0", + "impl-rlp", + "impl-serde", + "primitive-types 0.10.1", + "uint 0.9.5", +] + +[[package]] +name = "ethereum_hashing" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c853bd72c9e5787f8aafc3df2907c2ed03cff3150c3acd94e2e53a98ab70a8ab" +dependencies = [ + "cpufeatures", + "ring 0.17.8", + "sha2 0.10.8", +] + +[[package]] +name = "ethereum_serde_utils" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70cbccfccf81d67bff0ab36e591fa536c8a935b078a7b0e58c1d00d418332fc9" +dependencies = [ + "alloy-primitives", + "hex", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "ethereum_ssz" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e999563461faea0ab9bc0024e5e66adcee35881f3d5062f52f31a4070fe1522" +dependencies = [ + "alloy-primitives", + "itertools 0.13.0", + "smallvec", +] + +[[package]] +name = "ethereum_ssz_derive" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3deae99c8e74829a00ba7a92d49055732b3c1f093f2ccfa3cbc621679b6fa91" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" +dependencies = [ + "event-listener 5.3.1", + "pin-project-lite", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "bitvec 1.0.1", + "rand_core", + "subtle", +] + +[[package]] +name = "ffi-opaque" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec54ac60a7f2ee9a97cad9946f9bf629a3bc6a7ae59e68983dc9318f5a54b81a" + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version 0.4.1", +] + +[[package]] +name = "filesystem" +version = "0.1.0" +dependencies = [ + "winapi", + "windows-acl", +] + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixed_bytes" +version = "0.1.0" +dependencies = [ + "alloy-primitives", + "safe_arith", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +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 = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-bounded" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91f328e7fb845fc832912fb6a34f40cf6d1888c92f974d1893a54e97b5ff542e" +dependencies = [ + "futures-timer", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "futures-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" +dependencies = [ + "futures-io", + "rustls 0.23.19", + "rustls-pki-types", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-ticker" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9763058047f713632a52e916cc7f6a4b3fc6e9fc1ff8c5b1dc49e5a89041682e" +dependencies = [ + "futures", + "futures-timer", + "instant", +] + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "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 = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "git-version" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19" +dependencies = [ + "git-version-macro", +] + +[[package]] +name = "git-version-macro" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gossipsub" +version = "0.5.0" +dependencies = [ + "async-channel", + "asynchronous-codec", + "base64 0.21.7", + "byteorder", + "bytes", + "either", + "fnv", + "futures", + "futures-ticker", + "futures-timer", + "getrandom", + "hashlink 0.9.1", + "hex_fmt", + "libp2p", + "prometheus-client", + "quick-protobuf", + "quick-protobuf-codec", + "rand", + "regex", + "sha2 0.10.8", + "tracing", + "void", + "web-time", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand", + "rand_core", + "rand_xorshift", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.7.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + +[[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 = "hashlink" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" +dependencies = [ + "hashbrown 0.14.5", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-literal" +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 = "hickory-proto" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07698b8420e2f0d6447a436ba999ec85d8fbf2a398bbd737b82cac4a2e96e512" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna 0.4.0", + "ipnet", + "once_cell", + "rand", + "socket2", + "thiserror 1.0.69", + "tinyvec", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "hickory-resolver" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28757f23aa75c98f254cf0405e6d8c25b831b32921b050a66692427679b1f243" +dependencies = [ + "cfg-if", + "futures-util", + "hickory-proto", + "ipconfig", + "lru-cache", + "once_cell", + "parking_lot", + "rand", + "resolv-conf", + "smallvec", + "thiserror 1.0.69", + "tokio", + "tracing", +] + +[[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 0.8.0", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +dependencies = [ + "crypto-mac 0.11.0", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +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 = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls 0.21.12", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "if-addrs" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cabb0019d51a643781ff15c9c8a3e5dedc365c47211270f4e8f82812fedd8f0a" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "if-watch" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf9d64cfcf380606e64f9a0bcf493616b65331199f984151a6fa11a7b3cde38" +dependencies = [ + "async-io", + "core-foundation", + "fnv", + "futures", + "if-addrs", + "ipnet", + "log", + "netlink-packet-core", + "netlink-packet-route", + "netlink-proto", + "netlink-sys", + "rtnetlink", + "system-configuration 0.6.1", + "tokio", + "windows", +] + +[[package]] +name = "igd-next" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064d90fec10d541084e7b39ead8875a5a80d9114a2b18791565253bae25f49e4" +dependencies = [ + "async-trait", + "attohttpc", + "bytes", + "futures", + "http", + "hyper", + "log", + "rand", + "tokio", + "url", + "xmltree", +] + +[[package]] +name = "impl-codec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" +dependencies = [ + "parity-scale-codec 2.3.1", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec 3.6.12", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +dependencies = [ + "arbitrary", + "equivalent", + "hashbrown 0.15.2", + "serde", +] + +[[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 = "int_to_bytes" +version = "0.2.0" +dependencies = [ + "bytes", +] + +[[package]] +name = "integer-sqrt" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ipconfig" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" +dependencies = [ + "socket2", + "widestring 1.1.0", + "windows-sys 0.48.0", + "winreg", +] + +[[package]] +name = "ipnet" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is-terminal" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "keccak-hash" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b286e6b663fb926e1eeb68528e69cb70ed46c6d65871a21b2215ae8154c6d3c" +dependencies = [ + "primitive-types 0.12.2", + "tiny-keccak", +] + +[[package]] +name = "kzg" +version = "0.1.0" +dependencies = [ + "arbitrary", + "c-kzg", + "derivative", + "ethereum_hashing", + "ethereum_serde_utils", + "ethereum_ssz", + "ethereum_ssz_derive", + "hex", + "rust_eth_kzg", + "serde", + "serde_json", + "tree_hash", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "leveldb" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32651baaaa5596b3a6e0bee625e73fd0334c167db0ea5ac68750ef9a629a2d6a" +dependencies = [ + "db-key", + "leveldb-sys", + "libc", +] + +[[package]] +name = "leveldb-sys" +version = "2.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd94a4d0242a437e5e41a27c782b69a624469ca1c4d1e5cb3c337f74a8031d4" +dependencies = [ + "cmake", + "ffi-opaque", + "libc", + "num_cpus", +] + +[[package]] +name = "libc" +version = "0.2.167" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" + +[[package]] +name = "libflate" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e" +dependencies = [ + "adler32", + "core2", + "crc32fast", + "dary_heap", + "libflate_lz77", +] + +[[package]] +name = "libflate_lz77" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" +dependencies = [ + "core2", + "hashbrown 0.14.5", + "rle-decode-fast", +] + +[[package]] +name = "libloading" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + +[[package]] +name = "libp2p" +version = "0.54.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbe80f9c7e00526cd6b838075b9c171919404a4732cb2fa8ece0a093223bfc4" +dependencies = [ + "bytes", + "either", + "futures", + "futures-timer", + "getrandom", + "libp2p-allow-block-list", + "libp2p-connection-limits", + "libp2p-core", + "libp2p-dns", + "libp2p-identify", + "libp2p-identity", + "libp2p-mdns", + "libp2p-metrics", + "libp2p-noise", + "libp2p-plaintext", + "libp2p-quic", + "libp2p-swarm", + "libp2p-tcp", + "libp2p-upnp", + "libp2p-yamux", + "multiaddr", + "pin-project", + "rw-stream-sink", + "thiserror 1.0.69", +] + +[[package]] +name = "libp2p-allow-block-list" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1027ccf8d70320ed77e984f273bc8ce952f623762cb9bf2d126df73caef8041" +dependencies = [ + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "void", +] + +[[package]] +name = "libp2p-connection-limits" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d003540ee8baef0d254f7b6bfd79bac3ddf774662ca0abf69186d517ef82ad8" +dependencies = [ + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "void", +] + +[[package]] +name = "libp2p-core" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a61f26c83ed111104cd820fe9bc3aaabbac5f1652a1d213ed6e900b7918a1298" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "libp2p-identity", + "multiaddr", + "multihash", + "multistream-select", + "once_cell", + "parking_lot", + "pin-project", + "quick-protobuf", + "rand", + "rw-stream-sink", + "smallvec", + "thiserror 1.0.69", + "tracing", + "unsigned-varint 0.8.0", + "void", + "web-time", +] + +[[package]] +name = "libp2p-dns" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97f37f30d5c7275db282ecd86e54f29dd2176bd3ac656f06abf43bedb21eb8bd" +dependencies = [ + "async-trait", + "futures", + "hickory-resolver", + "libp2p-core", + "libp2p-identity", + "parking_lot", + "smallvec", + "tracing", +] + +[[package]] +name = "libp2p-identify" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1711b004a273be4f30202778856368683bd9a83c4c7dcc8f848847606831a4e3" +dependencies = [ + "asynchronous-codec", + "either", + "futures", + "futures-bounded", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "lru", + "quick-protobuf", + "quick-protobuf-codec", + "smallvec", + "thiserror 1.0.69", + "tracing", + "void", +] + +[[package]] +name = "libp2p-identity" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257b5621d159b32282eac446bed6670c39c7dc68a200a992d8f056afa0066f6d" +dependencies = [ + "asn1_der", + "bs58", + "ed25519-dalek", + "hkdf", + "libsecp256k1", + "multihash", + "p256", + "quick-protobuf", + "rand", + "sec1", + "sha2 0.10.8", + "thiserror 1.0.69", + "tracing", + "zeroize", +] + +[[package]] +name = "libp2p-mdns" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b8546b6644032565eb29046b42744aee1e9f261ed99671b2c93fb140dba417" +dependencies = [ + "data-encoding", + "futures", + "hickory-proto", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand", + "smallvec", + "socket2", + "tokio", + "tracing", + "void", +] + +[[package]] +name = "libp2p-metrics" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ebafa94a717c8442d8db8d3ae5d1c6a15e30f2d347e0cd31d057ca72e42566" +dependencies = [ + "futures", + "libp2p-core", + "libp2p-identify", + "libp2p-identity", + "libp2p-swarm", + "pin-project", + "prometheus-client", + "web-time", +] + +[[package]] +name = "libp2p-mplex" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41187ab8f6c835ad864edf94224f666f636ee2d270601422c1441f739e0abccc" +dependencies = [ + "asynchronous-codec", + "bytes", + "futures", + "libp2p-core", + "libp2p-identity", + "nohash-hasher", + "parking_lot", + "rand", + "smallvec", + "tracing", + "unsigned-varint 0.8.0", +] + +[[package]] +name = "libp2p-noise" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36b137cb1ae86ee39f8e5d6245a296518912014eaa87427d24e6ff58cfc1b28c" +dependencies = [ + "asynchronous-codec", + "bytes", + "curve25519-dalek", + "futures", + "libp2p-core", + "libp2p-identity", + "multiaddr", + "multihash", + "once_cell", + "quick-protobuf", + "rand", + "sha2 0.10.8", + "snow", + "static_assertions", + "thiserror 1.0.69", + "tracing", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "libp2p-plaintext" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63d926c6be56a2489e0e7316b17fe95a70bc5c4f3e85740bb3e67c0f3c6a44" +dependencies = [ + "asynchronous-codec", + "bytes", + "futures", + "libp2p-core", + "libp2p-identity", + "quick-protobuf", + "quick-protobuf-codec", + "tracing", +] + +[[package]] +name = "libp2p-quic" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46352ac5cd040c70e88e7ff8257a2ae2f891a4076abad2c439584a31c15fd24e" +dependencies = [ + "bytes", + "futures", + "futures-timer", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-tls", + "parking_lot", + "quinn", + "rand", + "ring 0.17.8", + "rustls 0.23.19", + "socket2", + "thiserror 1.0.69", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-swarm" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7dd6741793d2c1fb2088f67f82cf07261f25272ebe3c0b0c311e0c6b50e851a" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm-derive", + "lru", + "multistream-select", + "once_cell", + "rand", + "smallvec", + "tokio", + "tracing", + "void", + "web-time", +] + +[[package]] +name = "libp2p-swarm-derive" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206e0aa0ebe004d778d79fb0966aa0de996c19894e2c0605ba2f8524dd4443d8" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "libp2p-tcp" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad964f312c59dcfcac840acd8c555de8403e295d39edf96f5240048b5fcaa314" +dependencies = [ + "futures", + "futures-timer", + "if-watch", + "libc", + "libp2p-core", + "libp2p-identity", + "socket2", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b23dddc2b9c355f73c1e36eb0c3ae86f7dc964a3715f0731cfad352db4d847" +dependencies = [ + "futures", + "futures-rustls", + "libp2p-core", + "libp2p-identity", + "rcgen", + "ring 0.17.8", + "rustls 0.23.19", + "rustls-webpki 0.101.7", + "thiserror 1.0.69", + "x509-parser", + "yasna", +] + +[[package]] +name = "libp2p-upnp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01bf2d1b772bd3abca049214a3304615e6a36fa6ffc742bdd1ba774486200b8f" +dependencies = [ + "futures", + "futures-timer", + "igd-next", + "libp2p-core", + "libp2p-swarm", + "tokio", + "tracing", + "void", +] + +[[package]] +name = "libp2p-yamux" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "788b61c80789dba9760d8c669a5bedb642c8267555c803fabd8396e4ca5c5882" +dependencies = [ + "either", + "futures", + "libp2p-core", + "thiserror 1.0.69", + "tracing", + "yamux 0.12.1", + "yamux 0.13.4", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "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", + "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 = "libsqlite3-sys" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "lighthouse_network" +version = "0.2.0" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "bytes", + "delay_map", + "directory", + "dirs", + "discv5", + "either", + "ethereum_ssz", + "ethereum_ssz_derive", + "fnv", + "futures", + "gossipsub", + "hex", + "itertools 0.10.5", + "libp2p", + "libp2p-mplex", + "lighthouse_version", + "lru", + "lru_cache", + "metrics", + "parking_lot", + "prometheus-client", + "rand", + "regex", + "serde", + "sha2 0.9.9", + "slog", + "smallvec", + "snap", + "ssz_types", + "strum", + "superstruct", + "task_executor", + "tiny-keccak", + "tokio", + "tokio-io-timeout", + "tokio-util", + "types", + "unsigned-varint 0.8.0", + "unused_port", + "void", +] + +[[package]] +name = "lighthouse_version" +version = "0.1.0" +dependencies = [ + "git-version", + "target_info", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "lockfile" +version = "0.1.0" +dependencies = [ + "fs2", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "logging" +version = "0.2.0" +dependencies = [ + "chrono", + "metrics", + "parking_lot", + "serde", + "serde_json", + "slog", + "slog-term", + "sloggers", + "take_mut", + "tokio", + "tracing", + "tracing-appender", + "tracing-core", + "tracing-log", + "tracing-subscriber", +] + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.2", +] + +[[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 = "lru_cache" +version = "0.1.0" +dependencies = [ + "fnv", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merkle_proof" +version = "0.2.0" +dependencies = [ + "alloy-primitives", + "ethereum_hashing", + "fixed_bytes", + "safe_arith", +] + +[[package]] +name = "metastruct" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d74f54f231f9a18d77393ecc5cc7ab96709b2a61ee326c2b2b291009b0cc5a07" +dependencies = [ + "metastruct_macro", +] + +[[package]] +name = "metastruct_macro" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7225f3a4dfbec47a0c6a730a874185fda840d365d7bbd6ba199dd81796d5" +dependencies = [ + "darling 0.13.4", + "itertools 0.10.5", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "metrics" +version = "0.2.0" +dependencies = [ + "prometheus", +] + +[[package]] +name = "milhouse" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f68e33f98199224d1073f7c1468ea6abfea30736306fb79c7181a881e97ea32f" +dependencies = [ + "alloy-primitives", + "arbitrary", + "derivative", + "ethereum_hashing", + "ethereum_ssz", + "ethereum_ssz_derive", + "itertools 0.13.0", + "parking_lot", + "rayon", + "serde", + "smallvec", + "tree_hash", + "triomphe", + "typenum", + "vec_map", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[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.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "miracl_core" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "592c78f17df28dccd503346e70270d33247345ab21a44ba526e10f50d56dcdf4" + +[[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.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" +dependencies = [ + "arrayref", + "byteorder", + "data-encoding", + "libp2p-identity", + "multibase", + "multihash", + "percent-encoding", + "serde", + "static_assertions", + "unsigned-varint 0.8.0", + "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.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc41f430805af9d1cf4adae4ed2149c759b877b01d909a1f40256188d09345d2" +dependencies = [ + "core2", + "unsigned-varint 0.8.0", +] + +[[package]] +name = "multimap" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" + +[[package]] +name = "multistream-select" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0df8e5eec2298a62b326ee4f0d7fe1a6b90a09dfcf9df37b38f947a8c42f19" +dependencies = [ + "bytes", + "futures", + "log", + "pin-project", + "smallvec", + "unsigned-varint 0.7.2", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "netlink-packet-core" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4" +dependencies = [ + "anyhow", + "byteorder", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-route" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053998cea5a306971f88580d0829e90f270f940befd7cf928da179d4187a5a66" +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 1.0.69", +] + +[[package]] +name = "netlink-proto" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b33524dc0968bfad349684447bfce6db937a9ac3332a1fe60c0c5a5ce63f21" +dependencies = [ + "bytes", + "futures", + "log", + "netlink-packet-core", + "netlink-sys", + "thiserror 1.0.69", + "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.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", + "rand", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "serde", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "object" +version = "0.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +dependencies = [ + "memchr", +] + +[[package]] +name = "oid-registry" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" +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 = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-src" +version = "300.4.1+3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2 0.10.8", +] + +[[package]] +name = "pairing" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +dependencies = [ + "group", +] + +[[package]] +name = "parity-scale-codec" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +dependencies = [ + "arrayvec", + "bitvec 0.20.4", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive 2.3.1", + "serde", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +dependencies = [ + "arrayvec", + "bitvec 1.0.1", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive 3.6.12", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +dependencies = [ + "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.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pbkdf2" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" +dependencies = [ + "crypto-mac 0.11.0", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac 0.12.1", + "password-hash", + "sha2 0.10.8", +] + +[[package]] +name = "pem" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +dependencies = [ + "base64 0.22.1", + "serde", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" +dependencies = [ + "memchr", + "thiserror 1.0.69", + "ucd-trie", +] + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.7.0", +] + +[[package]] +name = "pin-project" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "polling" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "pretty_reqwest_error" +version = "0.1.0" +dependencies = [ + "reqwest", + "sensitive_url", +] + +[[package]] +name = "prettyplease" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.90", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash 0.7.0", + "impl-codec 0.5.1", + "impl-rlp", + "impl-serde", + "uint 0.9.5", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash 0.8.0", + "impl-codec 0.6.0", + "uint 0.9.5", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit 0.22.22", +] + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "protobuf", + "thiserror 1.0.69", +] + +[[package]] +name = "prometheus-client" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504ee9ff529add891127c4827eb481bd69dc0ebc72e9a682e187db4caa60c3ca" +dependencies = [ + "dtoa", + "itoa", + "parking_lot", + "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.90", +] + +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.6.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "proptest-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "prost" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" +dependencies = [ + "bytes", + "heck 0.5.0", + "itertools 0.10.5", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn 2.0.90", + "tempfile", +] + +[[package]] +name = "prost-derive" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +dependencies = [ + "anyhow", + "itertools 0.10.5", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "prost-types" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" +dependencies = [ + "prost", +] + +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quick-protobuf" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f" +dependencies = [ + "byteorder", +] + +[[package]] +name = "quick-protobuf-codec" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a0580ab32b169745d7a39db2ba969226ca16738931be152a3209b409de2474" +dependencies = [ + "asynchronous-codec", + "bytes", + "quick-protobuf", + "thiserror 1.0.69", + "unsigned-varint 0.8.0", +] + +[[package]] +name = "quinn" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +dependencies = [ + "bytes", + "futures-io", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.0", + "rustls 0.23.19", + "socket2", + "thiserror 2.0.4", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +dependencies = [ + "bytes", + "getrandom", + "rand", + "ring 0.17.8", + "rustc-hash 2.1.0", + "rustls 0.23.19", + "rustls-pki-types", + "slab", + "thiserror 2.0.4", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r2d2" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93" +dependencies = [ + "log", + "parking_lot", + "scheduled-thread-pool", +] + +[[package]] +name = "r2d2_sqlite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f5d0337e99cd5cacd91ffc326c6cc9d8078def459df560c4f9bf9ba4a51034" +dependencies = [ + "r2d2", + "rusqlite", +] + +[[package]] +name = "radium" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", + "serde", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rcgen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52c4f3084aa3bc7dfbba4eff4fab2a54db4324965d8872ab933565e6fbd83bc6" +dependencies = [ + "pem", + "ring 0.16.20", + "time", + "yasna", +] + +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.12", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration 0.5.1", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", + "winreg", +] + +[[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]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "rle-decode-fast" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rpassword" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efb" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "rpds" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ef5140bcb576bfd6d56cd2de709a7d17851ac1f3805e67fe9d99e42a11821f" +dependencies = [ + "archery", +] + +[[package]] +name = "rtnetlink" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a552eb82d19f38c3beed3f786bd23aa434ceb9ac43ab44419ca6d67a7e186c0" +dependencies = [ + "futures", + "log", + "netlink-packet-core", + "netlink-packet-route", + "netlink-packet-utils", + "netlink-proto", + "netlink-sys", + "nix", + "thiserror 1.0.69", + "tokio", +] + +[[package]] +name = "ruint" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +dependencies = [ + "alloy-rlp", + "arbitrary", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint", + "num-traits", + "parity-scale-codec 3.6.12", + "primitive-types 0.12.2", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rusqlite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a" +dependencies = [ + "bitflags 1.3.2", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink 0.8.4", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rust_eth_kzg" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3291fd0d9c629a56537d74bbc1e7bcaf5be610f2f7b55af85c4fea843c6aeca3" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", + "crate_crypto_internal_eth_kzg_erasure_codes", + "crate_crypto_kzg_multi_open_fk20", + "hex", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +dependencies = [ + "once_cell", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +dependencies = [ + "web-time", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring 0.17.8", + "rustls-pki-types", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "rw-stream-sink" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" +dependencies = [ + "futures", + "pin-project", + "static_assertions", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "safe_arith" +version = "0.1.0" + +[[package]] +name = "safestake_crypto" +version = "0.1.0" +dependencies = [ + "aes-gcm", + "array-init", + "base64 0.22.1", + "bls", + "blst", + "bytes", + "dvf_utils", + "hex", + "lazy_static", + "miracl_core", + "num-bigint", + "num-traits", + "rand", + "secp256k1", + "serde", + "serde_json", + "sha256", + "slog", + "types", +] + +[[package]] +name = "safestake_operator" +version = "0.1.0" +dependencies = [ + "account_utils", + "alloy-primitives", + "async-trait", + "bincode", + "bls", + "chrono", + "dvf_utils", + "filesystem", + "futures", + "hex", + "keccak-hash", + "lazy_static", + "prost", + "r2d2", + "r2d2_sqlite", + "reqwest", + "rusqlite", + "safestake_crypto", + "serde", + "serde_json", + "serde_yaml", + "slashing_protection", + "slog", + "store", + "task_executor", + "tokio", + "tonic", + "tonic-build", + "types", + "url", + "validator_metrics", +] + +[[package]] +name = "salsa20" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0" +dependencies = [ + "cipher 0.3.0", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scheduled-thread-pool" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879588d8f90906e73302547e20fffefdd240eb3e0e744e142321f5d49dea0518" +dependencies = [ + "hmac 0.11.0", + "pbkdf2 0.8.0", + "salsa20", + "sha2 0.9.9", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "sensitive_url" +version = "0.1.0" +dependencies = [ + "serde", + "url", +] + +[[package]] +name = "serde" +version = "1.0.215" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.215" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_json" +version = "1.0.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.7.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha256" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18278f6a914fa3070aa316493f7d2ddfb9ac86ebc06fa3b83bffda487e9065b0" +dependencies = [ + "async-trait", + "bytes", + "hex", + "sha2 0.10.8", + "tokio", +] + +[[package]] +name = "sha3" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "keccak", + "opaque-debug", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slashing_protection" +version = "0.1.0" +dependencies = [ + "arbitrary", + "ethereum_serde_utils", + "filesystem", + "r2d2", + "r2d2_sqlite", + "rusqlite", + "serde", + "serde_json", + "tempfile", + "types", +] + +[[package]] +name = "slog" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" +dependencies = [ + "erased-serde", +] + +[[package]] +name = "slog-async" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c8038f898a2c79507940990f05386455b3a317d8f18d4caea7cbc3d5096b84" +dependencies = [ + "crossbeam-channel", + "slog", + "take_mut", + "thread_local", +] + +[[package]] +name = "slog-json" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1e53f61af1e3c8b852eef0a9dee29008f55d6dd63794f3f12cef786cf0f219" +dependencies = [ + "serde", + "serde_json", + "slog", + "time", +] + +[[package]] +name = "slog-kvfilter" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae939ed7d169eed9699f4f5cd440f046f5dc5dfc27c19e3cd311619594c175e0" +dependencies = [ + "regex", + "slog", +] + +[[package]] +name = "slog-scope" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f95a4b4c3274cd2869549da82b57ccc930859bdbf5bcea0424bc5f140b3c786" +dependencies = [ + "arc-swap", + "lazy_static", + "slog", +] + +[[package]] +name = "slog-stdlog" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6706b2ace5bbae7291d3f8d2473e2bfab073ccd7d03670946197aec98471fa3e" +dependencies = [ + "log", + "slog", + "slog-scope", +] + +[[package]] +name = "slog-term" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6e022d0b998abfe5c3782c1f03551a596269450ccd677ea51c56f8b214610e8" +dependencies = [ + "is-terminal", + "slog", + "term", + "thread_local", + "time", +] + +[[package]] +name = "sloggers" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75062c2738b82cd45ae633623caae3393f43eb00aada1dc2d3ebe88db6b0db9b" +dependencies = [ + "chrono", + "libc", + "libflate", + "once_cell", + "regex", + "serde", + "slog", + "slog-async", + "slog-json", + "slog-kvfilter", + "slog-scope", + "slog-stdlog", + "slog-term", + "trackable", + "winapi", + "windows-acl", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "arbitrary", +] + +[[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", + "rand_core", + "ring 0.17.8", + "rustc_version 0.4.1", + "sha2 0.10.8", + "subtle", +] + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "ssz_types" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e0719d2b86ac738a55ae71a8429f52aa2741da988f1fd0975b4cc610fd1e08" +dependencies = [ + "arbitrary", + "derivative", + "ethereum_serde_utils", + "ethereum_ssz", + "itertools 0.13.0", + "serde", + "serde_derive", + "smallvec", + "tree_hash", + "typenum", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "state_processing" +version = "0.2.0" +dependencies = [ + "arbitrary", + "bls", + "derivative", + "ethereum_hashing", + "ethereum_ssz", + "ethereum_ssz_derive", + "int_to_bytes", + "integer-sqrt", + "itertools 0.10.5", + "merkle_proof", + "metrics", + "rand", + "rayon", + "safe_arith", + "smallvec", + "ssz_types", + "test_random_derive", + "tree_hash", + "types", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "store" +version = "0.2.0" +dependencies = [ + "bls", + "db-key", + "directory", + "ethereum_ssz", + "ethereum_ssz_derive", + "itertools 0.10.5", + "leveldb", + "logging", + "lru", + "metrics", + "parking_lot", + "safe_arith", + "serde", + "slog", + "sloggers", + "smallvec", + "state_processing", + "strum", + "superstruct", + "types", + "xdelta3", + "zstd 0.13.2", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "superstruct" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf0f31f730ad9e579364950e10d6172b4a9bd04b447edf5988b066a860cc340e" +dependencies = [ + "darling 0.13.4", + "itertools 0.10.5", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "swap_or_not_shuffle" +version = "0.2.0" +dependencies = [ + "alloy-primitives", + "ethereum_hashing", + "fixed_bytes", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "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]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "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 = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "target_info" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" + +[[package]] +name = "task_executor" +version = "0.1.0" +dependencies = [ + "async-channel", + "futures", + "logging", + "metrics", + "slog", + "sloggers", + "tokio", +] + +[[package]] +name = "tempfile" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "terminal_size" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +dependencies = [ + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "test_random_derive" +version = "0.2.0" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490" +dependencies = [ + "thiserror-impl 2.0.4", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-bip39" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" +dependencies = [ + "anyhow", + "hmac 0.12.1", + "once_cell", + "pbkdf2 0.11.0", + "rand", + "rustc-hash 1.1.0", + "sha2 0.10.8", + "thiserror 1.0.69", + "unicode-normalization", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.7.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap 2.7.0", + "toml_datetime", + "winnow 0.6.20", +] + +[[package]] +name = "tonic" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.21.7", + "bytes", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-build" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror 1.0.69", + "time", + "tracing-subscriber", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "trackable" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15bd114abb99ef8cee977e517c8f37aee63f184f2d08e3e6ceca092373369ae" +dependencies = [ + "trackable_derive", +] + +[[package]] +name = "trackable_derive" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebeb235c5847e2f82cfe0f07eb971d1e5f6804b18dac2ae16349cc604380f82f" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tree_hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373495c23db675a5192de8b610395e1bec324d596f9e6111192ce903dc11403a" +dependencies = [ + "alloy-primitives", + "ethereum_hashing", + "smallvec", +] + +[[package]] +name = "tree_hash_derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0857056ca4eb5de8c417309be42bcff6017b47e86fbaddde609b4633f66061e" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "triomphe" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85" +dependencies = [ + "serde", + "stable_deref_trait", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "types" +version = "0.2.1" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arbitrary", + "bls", + "compare_fields", + "compare_fields_derive", + "derivative", + "eth2_interop_keypairs", + "ethereum_hashing", + "ethereum_serde_utils", + "ethereum_ssz", + "ethereum_ssz_derive", + "fixed_bytes", + "hex", + "int_to_bytes", + "itertools 0.10.5", + "kzg", + "log", + "maplit", + "merkle_proof", + "metastruct", + "milhouse", + "parking_lot", + "rand", + "rand_xorshift", + "rayon", + "regex", + "rpds", + "rusqlite", + "safe_arith", + "serde", + "serde_json", + "serde_yaml", + "slog", + "smallvec", + "ssz_types", + "superstruct", + "swap_or_not_shuffle", + "tempfile", + "test_random_derive", + "tree_hash", + "tree_hash_derive", +] + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-bidi" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +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" + +[[package]] +name = "unsigned-varint" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" +dependencies = [ + "asynchronous-codec", + "bytes", + "tokio-util", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "unused_port" +version = "0.1.0" +dependencies = [ + "lru_cache", + "parking_lot", +] + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna 1.0.3", + "percent-encoding", +] + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "validator_dir" +version = "0.1.0" +dependencies = [ + "bls", + "deposit_contract", + "derivative", + "directory", + "eth2_keystore", + "eth2_keystore_share", + "filesystem", + "hex", + "lockfile", + "rand", + "tree_hash", + "types", +] + +[[package]] +name = "validator_metrics" +version = "0.1.0" +dependencies = [ + "metrics", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +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 = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.90", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "widestring" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" + +[[package]] +name = "widestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc5cf48f83140dcaab716eeaea345f9e93d0018fb81162753a3f76c3397b538" +dependencies = [ + "windows-core 0.53.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-acl" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "177b1723986bcb4c606058e77f6e8614b51c7f9ad2face6f6fd63dd5c8b3cec3" +dependencies = [ + "field-offset", + "libc", + "widestring 0.4.3", + "winapi", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dcc5b895a6377f1ab9fa55acedab1fd5ac0db66ad1e6c7f47e28a22e446a5dd" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "wyz" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "zeroize", +] + +[[package]] +name = "x509-parser" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" +dependencies = [ + "asn1-rs", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror 1.0.69", + "time", +] + +[[package]] +name = "xdelta3" +version = "0.1.5" +source = "git+http://github.com/sigp/xdelta3-rs?rev=50d63cdf1878e5cf3538e9aae5eed34a22c64e4a#50d63cdf1878e5cf3538e9aae5eed34a22c64e4a" +dependencies = [ + "bindgen", + "cc", + "futures-io", + "futures-util", + "libc", + "log", + "rand", +] + +[[package]] +name = "xml-rs" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" + +[[package]] +name = "xmltree" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7d8a75eaf6557bb84a65ace8609883db44a29951042ada9b393151532e41fcb" +dependencies = [ + "xml-rs", +] + +[[package]] +name = "yamux" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed0164ae619f2dc144909a9f082187ebb5893693d8c0196e8085283ccd4b776" +dependencies = [ + "futures", + "log", + "nohash-hasher", + "parking_lot", + "pin-project", + "rand", + "static_assertions", +] + +[[package]] +name = "yamux" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17610762a1207ee816c6fadc29220904753648aba0a9ed61c7b8336e80a559c4" +dependencies = [ + "futures", + "log", + "nohash-hasher", + "parking_lot", + "pin-project", + "rand", + "static_assertions", + "web-time", +] + +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time", +] + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes 0.8.4", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac 0.12.1", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd 0.11.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +dependencies = [ + "zstd-safe 7.2.1", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-safe" +version = "7.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/src/boot_node/Cargo.toml b/src/boot_node/Cargo.toml new file mode 100644 index 00000000..df5e9030 --- /dev/null +++ b/src/boot_node/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "boot_node" +version = "0.1.0" +edition = "2021" + +[dependencies] +bincode = "1" +clap = { version = "4.5.4", features = ["derive", "cargo", "wrap_help"] } +clap_utils = { path = "../../lighthouse/common/clap_utils" } +directory = { path = "../../lighthouse/common/directory" } +dirs = "3" +dvf_utils = { path = "../../lighthouse/common/dvf_utils" } +lighthouse_network = { path = "../../lighthouse/beacon_node/lighthouse_network" } +prost = "0.12" +safestake_crypto = { path = "../../lighthouse/safestake_crypto" } +safestake_operator ={ path = "../../lighthouse/validator_client/safestake_operator" } +serde = { version = "1", features = ["derive"] } +slashing_protection = { path = "../../lighthouse/validator_client/slashing_protection" } +slog = { version = "2", features = ["max_level_debug", "release_max_level_debug", "nested-values"] } +store = { path = "../../lighthouse/beacon_node/store" } +task_executor = { path = "../../lighthouse/common/task_executor" } +tonic = "0.11" +[build-dependencies] +tonic-build = { version = "0.11.0", features = ["prost"] } diff --git a/src/boot_node/bootnode.proto b/src/boot_node/bootnode.proto new file mode 100644 index 00000000..aaf3e6f3 --- /dev/null +++ b/src/boot_node/bootnode.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; + +package bootnode; + +message QueryNodeAddressRequest { + uint64 version = 1; + bytes operator_public_key = 2; +} + +message QueryNodeAddressResponse { + bytes address = 1; + uint64 seq = 2; +} + +service Bootnode { + rpc QueryNodeAddress(QueryNodeAddressRequest) returns(QueryNodeAddressResponse) {} +} \ No newline at end of file diff --git a/src/boot_node/build.rs b/src/boot_node/build.rs new file mode 100644 index 00000000..ea20152f --- /dev/null +++ b/src/boot_node/build.rs @@ -0,0 +1,8 @@ +// This is a stub for determining the build profile, see `build_profile_name`. + +fn main() -> Result<(), Box> { + let proto_files = ["./bootnode.proto"]; + let includes = ["./"]; + tonic_build::configure().compile(&proto_files, &includes)?; + Ok(()) +} diff --git a/src/boot_node/src/boot_service.rs b/src/boot_node/src/boot_service.rs new file mode 100644 index 00000000..b96c7f93 --- /dev/null +++ b/src/boot_node/src/boot_service.rs @@ -0,0 +1,50 @@ +use crate::proto::bootnode_server::Bootnode; +use crate::proto::*; +use dvf_utils::VERSION; +use safestake_crypto::secp::PublicKey; +use safestake_operator::database::SafeStakeDatabase; +use tonic::{Request, Response, Status}; +pub struct BootService { + pub db: SafeStakeDatabase, +} +use slashing_protection::NotSafe; + +#[tonic::async_trait] +impl Bootnode for BootService { + async fn query_node_address( + &self, + request: Request, + ) -> Result, Status> { + let req = request.into_inner(); + if req.version != VERSION { + return Err(Status::internal(format!( + "version mismatch, expected {}, got {}", + VERSION, req.version + ))); + } + if req.operator_public_key.len() != 33 { + return Err(Status::internal(format!( + "unkown format of node public key, length: {}", + req.operator_public_key.len() + ))); + } + let node_public_key = PublicKey(req.operator_public_key.try_into().unwrap()); + + match self.db.with_transaction(|txn| { + let addr = self + .db + .query_operator_socket_address(txn, &node_public_key)?; + let seq = self.db.query_operator_seq(txn, &node_public_key)?; + Ok::<(std::net::SocketAddr, u64), NotSafe>((addr, seq)) + }) { + Ok((addr, seq)) => Ok(Response::new(QueryNodeAddressResponse { + address: bincode::serialize(&addr).unwrap(), + seq, + })), + Err(_) => Err(Status::internal(format!( + "node {} not found", + node_public_key.base64() + ))), + } + } +} diff --git a/src/boot_node/src/config.rs b/src/boot_node/src/config.rs new file mode 100644 index 00000000..d1f76d97 --- /dev/null +++ b/src/boot_node/src/config.rs @@ -0,0 +1,47 @@ +use clap::ArgMatches; +use clap_utils::parse_required; +use directory::DEFAULT_ROOT_DIR; +use dvf_utils::ROOT_VERSION; +use serde::{Deserialize, Serialize}; +use slog::{info, Logger}; +use std::net::{IpAddr, Ipv4Addr}; +use std::path::PathBuf; + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct Config { + pub ip: IpAddr, + pub port: u16, + pub root_dir: PathBuf, +} + +impl Default for Config { + fn default() -> Self { + Self { + ip: IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), + port: 9005, + root_dir: dirs::home_dir() + .unwrap_or_else(|| PathBuf::from(".")) + .join(DEFAULT_ROOT_DIR) + .join(format!("v{}", ROOT_VERSION)) + .join("mainnet"), + } + } +} + +impl Config { + pub fn from_cli(cli_args: &ArgMatches, log: &Logger) -> Result { + let mut config = Config::default(); + config.ip = parse_required(cli_args, "ip")?; + info!(log, "read operator ip"; "operator ip" => %config.ip); + + config.port = parse_required(cli_args, "port")?; + info!(log, "read port"; "port" => config.port); + + config.root_dir = dirs::home_dir() + .unwrap_or_else(|| PathBuf::from(".")) + .join(DEFAULT_ROOT_DIR) + .join(format!("v{}", ROOT_VERSION)); + + Ok(config) + } +} diff --git a/src/boot_node/src/lib.rs b/src/boot_node/src/lib.rs new file mode 100644 index 00000000..6edd6bd5 --- /dev/null +++ b/src/boot_node/src/lib.rs @@ -0,0 +1,155 @@ +pub mod boot_service; +pub mod config; +pub mod proto; +use crate::boot_service::BootService; +use crate::config::Config; +use crate::proto::bootnode_server::BootnodeServer; +use dvf_utils::DEFAULT_BASE_PORT; +use lighthouse_network::discv5::{ + enr::{CombinedKey, Enr, EnrPublicKey}, + ConfigBuilder, Discv5, Event, ListenConfig, +}; +use safestake_crypto::secp::PublicKey as SecpPublicKey; +use safestake_crypto::secret::{Export, Secret}; +use safestake_operator::database::SafeStakeDatabase; +use slog::{info, Logger}; +use std::net::{IpAddr, SocketAddr}; +use task_executor::TaskExecutor; +use tonic::transport::Server; +use clap::{Arg, ArgAction, Command}; +use clap_utils::{get_color_style, FLAG_HEADER}; + +pub const DISCOVERY_PORT_OFFSET: u16 = 4; + +pub fn cli_app() -> Command { + Command::new("boot_node") + .visible_aliases(["b"]) + .styles(get_color_style()) + .display_order(0) + .about( + "safestake boot node", + ) + .arg( + Arg::new("help") + .long("help") + .short('h') + .help("Prints help information") + .action(ArgAction::HelpLong) + .display_order(0) + .help_heading(FLAG_HEADER) + ) + .arg( + Arg::new("ip") + .long("ip") + .value_name("IP") + .help("ip" + ) + .action(ArgAction::Set) + .display_order(0) + ) + .arg( + Arg::new("port") + .long("port") + .value_name("PORT") + .help("port" + ) + .action(ArgAction::Set) + .display_order(0) + ) +} + +pub async fn run(config: Config, executor: &TaskExecutor, log: Logger) { + if !config.root_dir.exists() { + std::fs::create_dir_all(&config.root_dir).unwrap(); + } + let db_path = config.root_dir.join("boot_node.sqlite"); + let db = SafeStakeDatabase::open_or_create(&db_path).unwrap(); + let node_secret_path = config.root_dir.join("node_key.json"); + + let secret = if node_secret_path.exists() { + let secret = Secret::read(&node_secret_path).unwrap(); + info!(log, "read node key"; "operator node public key" => format!("{}", &secret.name)); + secret + } else { + let secret = Secret::new(); + secret.write(&node_secret_path).unwrap(); + secret + }; + + let mut secret_key = secret.secret.0[..].to_vec(); + let enr_key = CombinedKey::secp256k1_from_bytes(&mut secret_key).unwrap(); + + // construct a local ENR + let local_enr = { + let mut builder = Enr::builder(); + builder.ip(config.ip); + builder.udp4(config.port); + builder.build(&enr_key).unwrap() + }; + info!( + log, + "boot node"; + "enr" => format!("{:?}", local_enr.to_base64()) + ); + let c = ConfigBuilder::new(ListenConfig::Ipv4 { + ip: "0.0.0.0".parse().unwrap(), + port: config.port, + }) + .build(); + + let mut discv5: Discv5 = Discv5::new(local_enr.clone(), enr_key, c).unwrap(); + let db_backup = db.clone(); + executor.spawn( + async move { + let _ = discv5.start().await; + let mut event_stream = discv5.event_stream().await.unwrap(); + loop { + if let Some(event) = event_stream.recv().await { + match event { + Event::Discovered(enr) => { + handle_enr(&secret.name, &db, enr); + } + Event::SessionEstablished(enr, _) => { + handle_enr(&secret.name, &db, enr); + } + Event::SocketUpdated(_) => {} + Event::NodeInserted { .. } | Event::TalkRequest(_) => {} // Ignore all other discv5 server events + _ => todo!(), + }; + } + } + }, + "boot node", + ); + let boot_service = BootService { db: db_backup }; + let addr = format!("[::1]:{}", config.port).parse().unwrap(); + Server::builder() + .add_service(BootnodeServer::new(boot_service)) + .serve(addr) + .await + .unwrap() +} + +pub fn handle_enr(self_public_key: &SecpPublicKey, db: &SafeStakeDatabase, enr: Enr) { + let node_public_key: [u8; 33] = enr.public_key().encode().try_into().unwrap(); + let public_key = SecpPublicKey(node_public_key); + if public_key == *self_public_key { + // ignore self operator, the address of self operator in database is always 127.0.0.1:26000 + return; + } + let seq = match db.with_transaction(|txn| db.query_operator_seq(txn, &public_key)) { + Ok(seq) => seq, + Err(_) => 0, + }; + if enr.seq() > seq { + let _ = db.with_transaction(|tx| { + let ip = enr.ip4().unwrap(); + let port = match enr.udp4() { + Some(port) => port.checked_sub(DISCOVERY_PORT_OFFSET).unwrap(), + None => DEFAULT_BASE_PORT, + }; + let socket_address = SocketAddr::new(IpAddr::V4(ip), port); + db.upsert_operator_socket_address(tx, &public_key, &socket_address, enr.seq()) + }); + } +} diff --git a/src/boot_node/src/proto.rs b/src/boot_node/src/proto.rs new file mode 100644 index 00000000..7699553d --- /dev/null +++ b/src/boot_node/src/proto.rs @@ -0,0 +1 @@ +include!(concat!(env!("OUT_DIR"), "/bootnode.rs")); diff --git a/src/lib.rs b/src/lib.rs index 87dd1fd7..546cd832 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,13 +1,13 @@ -#[macro_use] -extern crate downcast_rs; -pub mod crypto; -pub mod math; -pub mod utils; -// pub mod simulator; -pub mod deposit; -pub mod exit; -pub mod network; -pub mod node; -pub mod test_utils; -pub mod validation; -pub const DEFAULT_CHANNEL_CAPACITY: usize = 1_000; +// #[macro_use] +// extern crate downcast_rs; +// pub mod crypto; +// pub mod math; +// pub mod utils; +// // pub mod simulator; +// pub mod deposit; +// pub mod exit; +// pub mod network; +// pub mod node; +// pub mod test_utils; +// pub mod validation; +// pub const DEFAULT_CHANNEL_CAPACITY: usize = 1_000; diff --git a/src/main.rs b/src/main.rs index 0494c3f5..2ca70d6e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,46 +1,46 @@ -#![recursion_limit = "256"] mod metrics; -use chrono::Local; +use account_utils::STDIN_INPUTS_FLAG; use clap::{Arg, ArgAction, ArgMatches, Command}; use clap_utils::{ flags::DISABLE_MALLOC_TUNING_FLAG, get_color_style, get_eth2_network_config, FLAG_HEADER, }; -use directory::DEFAULT_VALIDATOR_DIR; -use dvf::validation::ProductionValidatorClient; -use dvf_directory::get_default_base_dir; -use env_logger::Env; +use directory::{parse_path_or_default, DEFAULT_VALIDATOR_DIR}; use environment::{EnvironmentBuilder, LoggerConfig}; use eth2_network_config::{Eth2NetworkConfig, DEFAULT_HARDCODED_NETWORK, HARDCODED_NET_NAMES}; use ethereum_hashing::have_sha_extensions; use futures::TryFutureExt; -use lazy_static::lazy_static; use lighthouse_version::VERSION; -use log::{error, info}; -use std::io::Write; +use malloc_utils::configure_memory_allocator; +use slog::{crit, info}; +use std::backtrace::Backtrace; use std::path::PathBuf; use std::process::exit; +use std::sync::LazyLock; use task_executor::ShutdownReason; use types::{EthSpec, EthSpecId}; +use validator_client::ProductionValidatorClient; -lazy_static! { - pub static ref SHORT_VERSION: String = VERSION.replace("Lighthouse/", ""); - pub static ref LONG_VERSION: String = format!( +pub static SHORT_VERSION: LazyLock = LazyLock::new(|| VERSION.replace("Lighthouse/", "")); +pub static LONG_VERSION: LazyLock = LazyLock::new(|| { + format!( "{}\n\ BLS library: {}\n\ + BLS hardware acceleration: {}\n\ SHA256 hardware acceleration: {}\n\ Allocator: {}\n\ Profile: {}\n\ Specs: mainnet (true), minimal ({}), gnosis ({})", SHORT_VERSION.as_str(), bls_library_name(), + bls_hardware_acceleration(), have_sha_extensions(), allocator_name(), build_profile_name(), cfg!(feature = "spec-minimal"), cfg!(feature = "gnosis"), - ); -} + ) +}); fn bls_library_name() -> &'static str { if cfg!(feature = "portable") { @@ -52,11 +52,20 @@ fn bls_library_name() -> &'static str { } } +#[inline(always)] +fn bls_hardware_acceleration() -> bool { + #[cfg(target_arch = "x86_64")] + return std::is_x86_feature_detected!("adx"); + + #[cfg(target_arch = "aarch64")] + return std::arch::is_aarch64_feature_detected!("neon"); +} + fn allocator_name() -> &'static str { - if cfg!(feature = "jemalloc") { - "jemalloc" - } else { + if cfg!(target_os = "windows") { "system" + } else { + "jemalloc" } } @@ -67,7 +76,7 @@ fn build_profile_name() -> String { std::env!("OUT_DIR") .split(std::path::MAIN_SEPARATOR) .nth_back(3) - .unwrap_or_else(|| "unknown") + .unwrap_or("unknown") .to_string() } @@ -78,7 +87,7 @@ fn main() { } // Parse the CLI parameters. - let matches = Command::new("Lighthouse") + let cli = Command::new("Lighthouse") .version(SHORT_VERSION.as_str()) .author("Sigma Prime ") .styles(get_color_style()) @@ -92,13 +101,14 @@ fn main() { .long_version(LONG_VERSION.as_str()) .display_order(0) .arg( - Arg::new("env_log") - .short('l') - .help("Enables environment logging giving access to sub-protocol logs such as discv5 and libp2p", - ) + Arg::new(STDIN_INPUTS_FLAG) + .long(STDIN_INPUTS_FLAG) .action(ArgAction::SetTrue) + .help("If present, read all user inputs from stdin instead of tty.") .help_heading(FLAG_HEADER) - .display_order(0) + .hide(cfg!(windows)) + .global(true) + .display_order(0), ) .arg( Arg::new("logfile") @@ -155,7 +165,7 @@ fn main() { "The maximum number of log files that will be stored. If set to 0, \ background file logging is disabled.") .action(ArgAction::Set) - .default_value("5") + .default_value("10") .global(true) .display_order(0) ) @@ -163,11 +173,12 @@ fn main() { Arg::new("logfile-compress") .long("logfile-compress") .action(ArgAction::SetTrue) + .help_heading(FLAG_HEADER) .help( "If present, compress old log files. This can help reduce the space needed \ to store old logs.") .global(true) - .display_order(0), + .display_order(0) ) .arg( Arg::new("logfile-no-restricted-perms") @@ -180,7 +191,7 @@ fn main() { about your validator and so this flag should be used with caution. For Windows users, \ the log file permissions will be inherited from the parent folder.") .global(true) - .display_order(0), + .display_order(0) ) .arg( Arg::new("log-format") @@ -190,7 +201,7 @@ fn main() { .value_parser(["JSON"]) .action(ArgAction::Set) .global(true) - .display_order(0), + .display_order(0) ) .arg( Arg::new("log-color") @@ -200,7 +211,7 @@ fn main() { .action(ArgAction::SetTrue) .help_heading(FLAG_HEADER) .global(true) - .display_order(0), + .display_order(0) ) .arg( Arg::new("disable-log-timestamp") @@ -233,7 +244,7 @@ fn main() { Defaults to $HOME/.lighthouse/{network} where network is the value of the `network` flag \ Note: Users should specify separate custom datadirs for different networks.") .action(ArgAction::Set) - .display_order(0), + .display_order(0) ) .arg( Arg::new("testnet-dir") @@ -247,7 +258,7 @@ fn main() { ) .action(ArgAction::Set) .global(true) - .display_order(0), + .display_order(0) ) .arg( Arg::new("network") @@ -259,7 +270,6 @@ fn main() { .action(ArgAction::Set) .global(true) .display_order(0) - ) .arg( Arg::new("dump-config") @@ -302,63 +312,49 @@ fn main() { .action(ArgAction::SetTrue) .help_heading(FLAG_HEADER) .global(true) - .display_order(0), + .display_order(0) ) .arg( Arg::new("terminal-total-difficulty-override") .long("terminal-total-difficulty-override") .value_name("INTEGER") - .help("Used to coordinate manual overrides to the TERMINAL_TOTAL_DIFFICULTY parameter. \ - Accepts a 256-bit decimal integer (not a hex value). \ - This flag should only be used if the user has a clear understanding that \ - the broad Ethereum community has elected to override the terminal difficulty. \ - Incorrect use of this flag will cause your node to experience a consensus - failure. Be extremely careful with this flag.") - .action(ArgAction::Set) - .global(true) - .display_order(0) + .help("DEPRECATED") + .action(ArgAction::Set) + .global(true) + .display_order(0) + .hide(true) ) .arg( Arg::new("terminal-block-hash-override") .long("terminal-block-hash-override") .value_name("TERMINAL_BLOCK_HASH") - .help("Used to coordinate manual overrides to the TERMINAL_BLOCK_HASH parameter. \ - This flag should only be used if the user has a clear understanding that \ - the broad Ethereum community has elected to override the terminal PoW block. \ - Incorrect use of this flag will cause your node to experience a consensus - failure. Be extremely careful with this flag.") + .help("DEPRECATED") .requires("terminal-block-hash-epoch-override") .action(ArgAction::Set) .global(true) .display_order(0) + .hide(true) ) .arg( Arg::new("terminal-block-hash-epoch-override") .long("terminal-block-hash-epoch-override") .value_name("EPOCH") - .help("Used to coordinate manual overrides to the TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH \ - parameter. This flag should only be used if the user has a clear understanding \ - that the broad Ethereum community has elected to override the terminal PoW block. \ - Incorrect use of this flag will cause your node to experience a consensus - failure. Be extremely careful with this flag.") + .help("DEPRECATED") .requires("terminal-block-hash-override") .action(ArgAction::Set) .global(true) .display_order(0) + .hide(true) ) .arg( Arg::new("safe-slots-to-import-optimistically") .long("safe-slots-to-import-optimistically") .value_name("INTEGER") - .help("Used to coordinate manual overrides of the SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY \ - parameter. This flag should only be used if the user has a clear understanding \ - that the broad Ethereum community has elected to override this parameter in the event \ - of an attack at the PoS transition block. Incorrect use of this flag can cause your \ - node to possibly accept an invalid chain or sync more slowly. Be extremely careful with \ - this flag.") - .action(ArgAction::Set) - .global(true) - .display_order(0) + .help("DEPRECATED") + .action(ArgAction::Set) + .global(true) + .display_order(0) + .hide(true) ) .arg( Arg::new("genesis-state-url") @@ -386,8 +382,36 @@ fn main() { .global(true) .display_order(0) ) - .subcommand(dvf::validation::cli_app()) - .get_matches(); + .arg( + Arg::new("help") + .long("help") + .short('h') + .help("Prints help information") + .action(ArgAction::HelpLong) + .display_order(0) + .help_heading(FLAG_HEADER) + ) + .subcommand(validator_client::cli_app()) + .subcommand(boot_node::cli_app()); + + let matches = cli.get_matches(); + + // Configure the allocator early in the process, before it has the chance to use the default values for + // anything important. + // + // Only apply this optimization for the beacon node. It's the only process with a substantial + // memory footprint. + let is_beacon_node = matches.subcommand_name() == Some("beacon_node"); + if is_beacon_node && !matches.get_flag(DISABLE_MALLOC_TUNING_FLAG) { + if let Err(e) = configure_memory_allocator() { + eprintln!( + "Unable to configure the memory allocator: {} \n\ + Try providing the --{} flag", + e, DISABLE_MALLOC_TUNING_FLAG + ); + exit(1) + } + } let result = get_eth2_network_config(&matches).and_then(|eth2_network_config| { let eth_spec_id = eth2_network_config.eth_spec_id()?; @@ -400,11 +424,11 @@ fn main() { EthSpecId::Minimal => run(EnvironmentBuilder::minimal(), &matches, eth2_network_config), #[cfg(not(all(feature = "spec-minimal", feature = "gnosis")))] other => { - error!( + eprintln!( "Eth spec `{}` is not supported by this build of Lighthouse", other ); - error!("You must compile with a feature flag to enable this spec variant"); + eprintln!("You must compile with a feature flag to enable this spec variant"); exit(1); } } @@ -436,25 +460,6 @@ fn run( )); } - let debug_level = matches - .get_one::("debug-level") - .ok_or("Expected --debug-level flag")?; - - let _logger = env_logger::Builder::from_env(Env::default().default_filter_or(debug_level)) - .format(|buf, record| { - let level = { buf.default_level_style(record.level()) }; - writeln!( - buf, - "{} {} [{}:{}] {}", - Local::now().format("%Y-%m-%d %H:%M:%S%.3f"), - format_args!("{:>5}", level), - record.module_path().unwrap_or(""), - record.line().unwrap_or(0), - &record.args() - ) - }) - .init(); - let debug_level = matches .get_one::("debug-level") .ok_or("Expected --debug-level flag")?; @@ -469,6 +474,11 @@ fn run( .get_one::("logfile-debug-level") .ok_or("Expected --logfile-debug-level flag")?; + let logfile_format = matches + .get_one::("logfile-format") + // Ensure that `logfile-format` defaults to the value of `log-format`. + .or_else(|| matches.get_one::("log-format")); + let logfile_max_size: u64 = matches .get_one::("logfile-max-size") .ok_or("Expected --logfile-max-size flag")? @@ -489,8 +499,13 @@ fn run( let mut log_path: Option = clap_utils::parse_optional(matches, "logfile")?; if log_path.is_none() { log_path = match matches.subcommand() { - Some(("validator_client", matches)) => { - let base_path = get_default_base_dir(matches).join(DEFAULT_VALIDATOR_DIR); + Some(("validator_client", vc_matches)) => { + let base_path = if vc_matches.contains_id("validators-dir") { + parse_path_or_default(vc_matches, "validators-dir")? + } else { + parse_path_or_default(matches, "datadir")?.join(DEFAULT_VALIDATOR_DIR) + }; + Some( base_path .join("logs") @@ -505,17 +520,19 @@ fn run( let sse_logging = { if let Some(vc_matches) = matches.subcommand_matches("validator_client") { vc_matches.get_flag("http") + } else if let Some(_) = matches.subcommand_matches("boot_node") { + false } else { false } }; let logger_config = LoggerConfig { - path: log_path, + path: log_path.clone(), debug_level: String::from(debug_level), logfile_debug_level: String::from(logfile_debug_level), log_format: log_format.map(String::from), - logfile_format: None, + logfile_format: logfile_format.map(String::from), log_color, disable_log_timestamp, max_log_size: logfile_max_size * 1_024 * 1_024, @@ -525,28 +542,59 @@ fn run( sse_logging, }; - let builder = environment_builder.initialize_logger(logger_config)?; + let builder = environment_builder.initialize_logger(logger_config.clone())?; let mut environment = builder .multi_threaded_tokio_runtime()? .eth2_network_config(eth2_network_config)? .build()?; + let log = environment.core_context().log().clone(); + + // Log panics properly. + { + let log = log.clone(); + std::panic::set_hook(Box::new(move |info| { + crit!( + log, + "Task panic. This is a bug!"; + "location" => info.location().map(ToString::to_string), + "message" => info.payload().downcast_ref::(), + "backtrace" => %Backtrace::capture(), + "advice" => "Please check above for a backtrace and notify the developers", + ); + })); + } + // Allow Prometheus to export the time at which the process was started. - metrics::expose_process_start_time(); + metrics::expose_process_start_time(&log); // Allow Prometheus access to the version and commit of the Lighthouse build. metrics::expose_lighthouse_version(); #[cfg(all(feature = "modern", target_arch = "x86_64"))] if !std::is_x86_feature_detected!("adx") { - warn!( + slog::warn!( log, "CPU seems incompatible with optimized Lighthouse build"; "advice" => "If you get a SIGILL, please try Lighthouse portable build" ); } + // Warn for DEPRECATED global flags. This code should be removed when we finish deleting these + // flags. + let deprecated_flags = [ + "terminal-total-difficulty-override", + "terminal-block-hash-override", + "terminal-block-hash-epoch-override", + "safe-slots-to-import-optimistically", + ]; + for flag in deprecated_flags { + if matches.get_one::(flag).is_some() { + slog::warn!(log, "The {} flag is deprecated and does nothing", flag); + } + } + // Note: the current code technically allows for starting a beacon node _and_ a validator // client at the same time. // @@ -566,50 +614,70 @@ fn run( (Some(_), Some(_)) => panic!("CLI prevents both --network and --testnet-dir"), }; - info!("Lighthouse started,version {}", VERSION); - info!("Configured for network,name {}", &network_name); + info!(log, "Lighthouse started"; "version" => VERSION); + info!( + log, + "Configured for network"; + "name" => &network_name + ); match matches.subcommand() { + Some(("boot_node", matches)) => { + let context = environment.core_context(); + let log = context.log().clone(); + let executor = context.executor.clone(); + let config = boot_node::config::Config::from_cli(matches, context.log()).map_err(|e| format!("Unable to initialize boot config: {}", e))?; + executor.clone().spawn( + async move { + boot_node::run(config, &executor, log).await; + let _ = executor + .shutdown_sender() + .try_send(ShutdownReason::Failure("Failed to start validator client")); + } + , "boot_node"); + } + Some(("validator_client", matches)) => { let context = environment.core_context(); + let log = context.log().clone(); let executor = context.executor.clone(); - let config = dvf::validation::Config::from_cli(matches, context.log()) + let config = validator_client::Config::from_cli(matches, context.log()) .map_err(|e| format!("Unable to initialize validator config: {}", e))?; - let shutdown_flag = matches.get_flag("immediate-shutdown"); // Dump configs if `dump-config` or `dump-chain-config` flags are set clap_utils::check_dump_configs::<_, E>(matches, &config, &context.eth2_config.spec)?; - if !shutdown_flag { - executor.clone().spawn( - async move { - if let Err(e) = ProductionValidatorClient::new(context, config) - .and_then(|mut vc| async move { vc.start_service().await }) - .await - { - error!("Failed to start validator client,reason:{}", e); - // Ignore the error since it always occurs during normal operation when - // shutting down. - let _ = executor.shutdown_sender().try_send(ShutdownReason::Failure( - "Failed to start validator client", - )); - } - }, - "validator_client", - ); - } else { - let _ = executor.shutdown_sender().try_send(ShutdownReason::Success( - "Validator client immediate shutdown triggered.", - )); + + let shutdown_flag = matches.get_flag("immediate-shutdown"); + if shutdown_flag { + info!(log, "Validator client immediate shutdown triggered."); + return Ok(()); } + + executor.clone().spawn( + async move { + if let Err(e) = ProductionValidatorClient::new(context, config) + .and_then(|mut vc| async move { vc.start_service().await }) + .await + { + crit!(log, "Failed to start validator client"; "reason" => e); + // Ignore the error since it always occurs during normal operation when + // shutting down. + let _ = executor + .shutdown_sender() + .try_send(ShutdownReason::Failure("Failed to start validator client")); + } + }, + "validator_client", + ); } _ => { - error!("No subcommand supplied. See --help ."); + crit!(log, "No subcommand supplied. See --help ."); return Err("No subcommand supplied.".into()); } }; // Block this thread until we get a ctrl-c or a task sends a shutdown signal. let shutdown_reason = environment.block_until_shutdown_requested()?; - info!("Shutting down..,reason:{:?}", shutdown_reason); + info!(log, "Shutting down.."; "reason" => ?shutdown_reason); environment.fire_signal(); diff --git a/src/metrics.rs b/src/metrics.rs index 28d36b68..30e01205 100644 --- a/src/metrics.rs +++ b/src/metrics.rs @@ -1,28 +1,32 @@ -use lazy_static::lazy_static; -pub use lighthouse_metrics::*; use lighthouse_version::VERSION; -use log::error; +pub use metrics::*; +use slog::{error, Logger}; +use std::sync::LazyLock; use std::time::{SystemTime, UNIX_EPOCH}; -lazy_static! { - pub static ref PROCESS_START_TIME_SECONDS: Result = try_create_int_gauge( +pub static PROCESS_START_TIME_SECONDS: LazyLock> = LazyLock::new(|| { + try_create_int_gauge( "process_start_time_seconds", - "The unix timestamp at which the process was started" - ); -} + "The unix timestamp at which the process was started", + ) +}); -lazy_static! { - pub static ref LIGHTHOUSE_VERSION: Result = try_create_int_gauge_vec( +pub static LIGHTHOUSE_VERSION: LazyLock> = LazyLock::new(|| { + try_create_int_gauge_vec( "lighthouse_info", "The build of Lighthouse running on the server", &["version"], - ); -} + ) +}); -pub fn expose_process_start_time() { +pub fn expose_process_start_time(log: &Logger) { match SystemTime::now().duration_since(UNIX_EPOCH) { Ok(duration) => set_gauge(&PROCESS_START_TIME_SECONDS, duration.as_secs() as i64), - Err(e) => error!("Failed to read system time,:{}", e), + Err(e) => error!( + log, + "Failed to read system time"; + "error" => %e + ), } } diff --git a/src/node/config.rs b/src/node/config.rs index e08a0bec..58edcca9 100644 --- a/src/node/config.rs +++ b/src/node/config.rs @@ -14,10 +14,13 @@ use tokio::sync::OnceCell; pub const NODE_KEY_FILENAME: &str = "node_key.json"; pub const NODE_KEY_HEX_FILENAME: &str = "node_key_hex.json"; pub const DB_FILENAME: &str = "dvf_node_db"; +pub const BOOT_ENRS_CONFIG_FILE: &str = "boot_config/boot_enrs.yaml"; pub const DEFAULT_BASE_PORT: u16 = 26_000; pub const TRANSACTION_PORT_OFFSET: u16 = 0; +pub const DUTIES_PORT_OFFSET: u16 = 0; pub const MEMPOOL_PORT_OFFSET: u16 = 1; +pub const ACTIVE_PORT_OFFSET: u16 = 1; pub const CONSENSUS_PORT_OFFSET: u16 = 2; pub const SIGNATURE_PORT_OFFSET: u16 = 3; pub const DISCOVERY_PORT_OFFSET: u16 = 4; @@ -26,11 +29,10 @@ pub const BASE_ADDRESS: [u8; 4] = [127, 0, 0, 1]; pub static API_ADDRESS: OnceCell = OnceCell::const_new(); pub const STATUS_REPORT_URL: &str = "status"; pub const COLLECT_PERFORMANCE_URL: &str = "collect_performance"; +// TODO delete pub const VALIDATOR_PK_URL: &str = "validator_pk"; pub const PRESTAKE_SIGNATURE_URL: &str = "prestake_signature"; pub const STAKE_SIGNATURE_URL: &str = "stake_signature"; -pub const TOPIC_NODE_INFO: &str = "dvf/topic_node_info"; -pub const BOOT_ENRS_CONFIG_FILE: &str = "boot_config/boot_enrs.yaml"; lazy_static! { // [Issue] SocketAddr::new is not yet a const fn in stable release. @@ -86,7 +88,7 @@ pub fn base_to_duties_addr(base_addr: SocketAddr) -> SocketAddr { if is_addr_invalid(base_addr) { base_addr } else { - SocketAddr::new(base_addr.ip(), base_addr.port() + TRANSACTION_PORT_OFFSET) + SocketAddr::new(base_addr.ip(), base_addr.port() + DUTIES_PORT_OFFSET) } } @@ -94,7 +96,7 @@ pub fn base_to_active_addr(base_addr: SocketAddr) -> SocketAddr { if is_addr_invalid(base_addr) { base_addr } else { - SocketAddr::new(base_addr.ip(), base_addr.port() + MEMPOOL_PORT_OFFSET) + SocketAddr::new(base_addr.ip(), base_addr.port() + ACTIVE_PORT_OFFSET) } } diff --git a/src/node/discovery.rs b/src/node/discovery.rs index bc1d3552..c2b95231 100644 --- a/src/node/discovery.rs +++ b/src/node/discovery.rs @@ -21,7 +21,6 @@ use std::{ use store::Store; use tokio::sync::RwLock; use tokio::sync::{mpsc, oneshot}; -use tokio::task::JoinHandle; use tokio::time::{timeout, Interval}; pub const DEFAULT_DISCOVERY_IP_STORE: &str = "discovery_ip_store"; pub const DISCOVER_HEARTBEAT_INTERVAL: u64 = 60 * 5; @@ -32,17 +31,9 @@ pub struct Discovery { query_sender: mpsc::Sender<(NodeId, oneshot::Sender<()>)>, store: Store, boot_enrs: Vec>, - discv5_service_handle: JoinHandle<()>, base_port: u16, } -impl Drop for Discovery { - fn drop(&mut self) { - info!("Shutting down discovery service"); - self.discv5_service_handle.abort(); - } -} - impl Discovery { pub async fn process_enr(store: &Store, enr: Enr) { // check seq in the enr @@ -90,7 +81,7 @@ impl Discovery { pub async fn spawn( ip: IpAddr, - udp_port: u16, + base_port: u16, secret: Secret, boot_enrs: Vec>, base_dir: PathBuf, @@ -116,20 +107,21 @@ impl Discovery { .await; info!("Node ENR seq updated to: {}", seq); - let mut secret_key = secret.secret.0[..].to_vec(); + let mut secret_key = secret.secret.0.to_vec(); let enr_key = CombinedKey::secp256k1_from_bytes(&mut secret_key[..]).unwrap(); + let discovery_port = base_port.checked_add(DISCOVERY_PORT_OFFSET).unwrap(); let local_enr = { let mut builder = Enr::builder(); builder.ip(ip); - if udp_port != DEFAULT_BASE_PORT { - builder.udp4(udp_port.checked_add(DISCOVERY_PORT_OFFSET).unwrap()); + if base_port != DEFAULT_BASE_PORT { + builder.udp4(discovery_port); } builder.seq(seq); builder.build(&enr_key).unwrap() }; - let base_address = SocketAddr::new(ip, udp_port); - info!("Node ENR ip: {}, port: {}", ip, udp_port); + let base_address = SocketAddr::new(ip, base_port); + info!("Node ENR ip: {}, base port: {}", ip, base_port); info!("Node public key: {}", secret.name.encode_base64()); info!("Node id: {}", base64::encode(local_enr.node_id().raw())); info!("Node ENR: {:?}", local_enr.to_base64()); @@ -137,7 +129,7 @@ impl Discovery { // default configuration without packet filtering let config = ConfigBuilder::new(ListenConfig::Ipv4 { ip: "0.0.0.0".parse().unwrap(), - port: udp_port.checked_add(DISCOVERY_PORT_OFFSET).unwrap(), + port: discovery_port, }) .build(); @@ -160,10 +152,8 @@ impl Discovery { ) .await; - let discv5_service_handle = tokio::spawn(async move { + tokio::spawn(async move { // start the discv5 service - // let listen_addr = SocketAddr::new("0.0.0.0".parse().expect("valid ip"), udp_port); - // let _ = discv5.start(listen_addr).await; let _ = discv5.start().await; let mut event_stream = discv5.event_stream().await.unwrap(); loop { @@ -219,8 +209,7 @@ impl Discovery { query_sender: tx, store: store_clone, boot_enrs, - discv5_service_handle, - base_port: udp_port, + base_port: base_port, }; // immediately initiate a discover request to annouce ourself @@ -239,19 +228,11 @@ impl Discovery { } pub async fn update_addr(&self, pk: &[u8]) -> Option { - // let curve_pk = secp256k1::PublicKey::from_slice(pk); - // if curve_pk.is_err() { - // error!("Failed to construct secp256k1 public key from the slice"); - // return None; - // }; - // let curve_pk = curve_pk.unwrap(); let node_id = NodeId::parse(&keccak_hash::keccak(pk).0).unwrap(); self.discover(node_id).await; // Randomly pick a boot node let boot_idx = rand::random::() % self.boot_enrs.len(); - self.query_addr_from_boot(boot_idx, pk).await; - - self.query_addr_from_local_store(pk).await + self.query_addr_from_boot(boot_idx, pk).await } pub async fn query_addrs(&self, pks: &Vec>) -> Vec> { @@ -270,7 +251,6 @@ impl Discovery { // 1. from local store // 2. initiate a discv5 find node // 3. from boot node - // TODO: do we need to add a discovery for random node ID? // No need to update for self IP if self.secret.name.0.as_slice() == pk { diff --git a/src/node/node.rs b/src/node/node.rs index 9c746e1f..18795d11 100644 --- a/src/node/node.rs +++ b/src/node/node.rs @@ -56,8 +56,6 @@ const THRESHOLD: u64 = 3; pub const COMMITTEE_IP_HEARTBEAT_INTERVAL: u64 = 1800; pub const BALANCE_USED_UP: i64 = 1; pub const BALANCE_STILL_AVAILABLE: i64 = 0; -// type InitiatorStore = -// Arc)>>>; fn with_wildcard_ip(mut addr: SocketAddr) -> SocketAddr { addr.set_ip("0.0.0.0".parse().unwrap()); @@ -67,9 +65,6 @@ fn with_wildcard_ip(mut addr: SocketAddr) -> SocketAddr { pub struct Node { pub config: NodeConfig, pub secret: Secret, - // pub tx_handler_map: Arc>>, - // pub mempool_handler_map: Arc>>, - // pub consensus_handler_map: Arc>>, pub signature_handler_map: Arc>>, pub duties_handler_map: Arc>>>, pub active_handler_map: Arc>>, @@ -89,28 +84,32 @@ impl Node { create_node_key_hex_backup(config.node_key_hex_path.clone(), &secret)?; info!("node public key {}", secret.name.encode_base64()); - // let tx_handler_map = Arc::new(RwLock::new(HashMap::new())); - // let mempool_handler_map = Arc::new(RwLock::new(HashMap::new())); - // let consensus_handler_map = Arc::new(RwLock::new(HashMap::new())); let signature_handler_map = Arc::new(RwLock::new(HashMap::new())); let duties_handler_map = Arc::new(RwLock::new(HashMap::new())); let active_handler_map = Arc::new(RwLock::new(HashMap::new())); let duties_address = with_wildcard_ip(base_to_duties_addr(config.base_address)); let active_address = with_wildcard_ip(base_to_active_addr(config.base_address)); + let signature_address = with_wildcard_ip(base_to_signature_addr(config.base_address)); + NetworkReceiver::spawn( duties_address, Arc::clone(&duties_handler_map), "duties consensus", ); + info!( + "Node {} listening to duties consensus on {}", + secret.name, duties_address + ); NetworkReceiver::spawn( active_address, Arc::clone(&active_handler_map), "active handler", ); + info!( - "Node {} listening to duties consensus on {}", - secret.name, duties_address + "Node {} listening to active messages on {}", + secret.name, active_address ); // let transaction_address = with_wildcard_ip(base_to_transaction_addr(config.base_address)); @@ -141,8 +140,6 @@ impl Node { // "Node {} listening to consensus messages on {}", // secret.name, consensus_address // ); - - let signature_address = with_wildcard_ip(base_to_signature_addr(config.base_address)); NetworkReceiver::spawn( signature_address, Arc::clone(&signature_handler_map), @@ -175,9 +172,6 @@ impl Node { let node = Self { config, secret: secret.clone(), - // tx_handler_map: Arc::clone(&tx_handler_map), - // mempool_handler_map: Arc::clone(&mempool_handler_map), - // consensus_handler_map: Arc::clone(&consensus_handler_map), signature_handler_map: Arc::clone(&signature_handler_map), duties_handler_map: duties_handler_map, active_handler_map: active_handler_map, @@ -1122,17 +1116,6 @@ pub async fn set_validator_fee_recipient( pub async fn cleanup_handler(node: Arc>>, validator_id: u64) { let node_ = node.read().await; - // let _ = node_.tx_handler_map.write().await.remove(&validator_id); - // let _ = node_ - // .mempool_handler_map - // .write() - // .await - // .remove(&validator_id); - // let _ = node_ - // .consensus_handler_map - // .write() - // .await - // .remove(&validator_id); let _ = node_ .signature_handler_map .write() diff --git a/src/validation/validator_dir/share_builder.rs b/src/validation/validator_dir/share_builder.rs index a42c7ac6..9365fc95 100644 --- a/src/validation/validator_dir/share_builder.rs +++ b/src/validation/validator_dir/share_builder.rs @@ -99,30 +99,6 @@ impl ShareBuilder { ValidatorDir::open(keystore_share_dir).map_err(BuilderError::UnableToOpenDir) } - ///// Generate the voting keystore share using a deterministic, well-known, **unsafe** keypair. - ///// - ///// **NEVER** use these keys in production! - //fn insecure_voting_keypair_share( - //mut self, - //deterministic_key_index: usize, - //share_id: u64, - //) -> Result { - //let keypair = generate_deterministic_keypair(deterministic_key_index); - - //let t = 5; - //let n = 10; - //let mut m_threshold = ThresholdSignature::new(t); - //let (kps, ids) = m_threshold.deterministic_key_split(&keypair.sk, n); - - //let keystore = KeystoreBuilder::new(&kps[share_id as usize], INSECURE_PASSWORD, "".into()) - //.map_err(|e| BuilderError::InsecureKeysError(format!("Unable to create keystore builder: {:?}", e)))? - //.kdf(insecure_kdf()) - //.build() - //.map_err(|e| BuilderError::InsecureKeysError(format!("Unable to build keystore: {:?}", e)))?; - //let keystore_share = KeystoreShare::new(keystore, keypair.pk, deterministic_key_index as u64, share_idx); - - //Ok(self.voting_keystore_share(keystore_share, INSECURE_PASSWORD)) - //} /// Generate the voting keystore share using a deterministic, well-known, **unsafe** keypair. /// @@ -292,36 +268,3 @@ pub fn build_deterministic_distributed_validator_dirs( Ok(()) } - -//pub fn build_deterministic_committees_file( -//committees_dir: PathBuf, -//validator_ids: &[usize], -//threshold: usize, -//total_splits: usize, -//) -> Result<(), String> { - -//let mut defs = Vec::::new(); -//for i in 0..validator_ids.len() { -//let keypair = generate_deterministic_keypair(validator_ids[i]); - -//let mut m_threshold = ThresholdSignature::new(threshold); -//let (kps, ids) = m_threshold.deterministic_key_split(&keypair.sk, total_splits); - -//defs.push( -//OperatorCommitteeDefinition { -//total: total_splits as u64, -//threshold: threshold as u64, -//validator_id: validator_ids[i] as u64, -//validator_public_key: keypair.pk.clone(), -//operator_ids: ids, -//operator_public_keys: kps.iter().map(|x| x.pk.clone()).collect(), -//node_public_keys, -//base_socket_addresses: (0..total_splits).map(|j| SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), (4000 + j) as u16)).collect(), -//} -//); -//} -//OperatorCommitteeDefinitions::from(defs) -//.save(committees_dir) -//.map_err(|e| format!("Unable to build committee definitions file: {:?}", e))?; -//Ok(()) -//} From 3df0920dba9ec27e478995303646b1fcdcfadef1 Mon Sep 17 00:00:00 2001 From: azaliasmee Date: Wed, 4 Dec 2024 13:27:28 +0800 Subject: [PATCH 002/101] update workflow file --- .github/workflows/ci_dev-v2.yml | 91 +++++++++++++++++++++++++-------- 1 file changed, 70 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci_dev-v2.yml b/.github/workflows/ci_dev-v2.yml index a3d2f1e2..028f136d 100644 --- a/.github/workflows/ci_dev-v2.yml +++ b/.github/workflows/ci_dev-v2.yml @@ -1,33 +1,56 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -# GitHub recommends pinning actions to a commit SHA. -# To get a newer version, you will need to update the SHA. -# You can also reference a tag or branch, but the action may change without warning. - -name: UnitTest & Publish Image - +name: do-the-job on: push: branches: - dev-v2 - jobs: - push_to_registry: - name: Push Docker image to Docker Hub - runs-on: self-hosted + start-runner: + name: Start self-hosted EC2 runner + runs-on: ubuntu-latest + outputs: + label: ${{ steps.start-ec2-runner.outputs.label }} + ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }} steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_REGION }} + - name: Start EC2 runner + id: start-ec2-runner + uses: machulav/ec2-github-runner@v2.3.7 + with: + mode: start + github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + ec2-image-id: ami-0a2d071e715c3a808 + ec2-instance-type: c6a.4xlarge + subnet-id: subnet-9aa9c8e1 + security-group-id: sg-0c35d2e12fe165fbb + aws-resource-tags: > # optional, requires additional permissions + [ + {"Key": "Name", "Value": "ec2-github-runner"}, + {"Key": "GitHubRepository", "Value": "${{ github.repository }}"} + ] + do-the-job: + name: UnitTest & Build & Publish Image + needs: start-runner # required to start the main job when the runner is ready + runs-on: ${{ needs.start-runner.outputs.label }} # run the job on the newly created runner + steps: + - name: Hello World1 + run: | + echo 'Hello World!' + /root/.cargo/bin/cargo version + - name: Check out the repo uses: actions/checkout@v3 - - - name: Log in to Docker Hub + + - name: Login to Docker Hub uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - + - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 @@ -37,9 +60,10 @@ jobs: - name: Checkout submodules run: git submodule update --init --recursive - - name: Unit Test - run: sudo runuser -f ubuntu -c '/home/ubuntu/.cargo/bin/cargo test test_dkg_secure_net -- --show-output' - + - name: Unit Testing + run: | + /root/.cargo/bin/cargo test test_dkg_secure_net -- --show-output + - name: Build and push Docker image uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc with: @@ -49,3 +73,28 @@ jobs: labels: ${{ steps.meta.outputs.labels }} build-args: | CPU_NUM=16 + + - name: Bye + run: echo 'Congratulations!' + + stop-runner: + name: Stop self-hosted EC2 runner + needs: + - start-runner # required to get output from the start-runner job + - do-the-job # required to wait when the main job is done + runs-on: ubuntu-latest + if: ${{ always() }} # required to stop the runner even if the error happened in the previous jobs + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_REGION }} + - name: Stop EC2 runner + uses: machulav/ec2-github-runner@v2 + with: + mode: stop + github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + label: ${{ needs.start-runner.outputs.label }} + ec2-instance-id: ${{ needs.start-runner.outputs.ec2-instance-id }} From 95d02373f710174db134e7b94f25019fee6b7ec7 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Wed, 4 Dec 2024 06:08:15 +0000 Subject: [PATCH 003/101] tmp remove unit test --- .github/workflows/ci_dev-v2.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci_dev-v2.yml b/.github/workflows/ci_dev-v2.yml index 028f136d..bae062ac 100644 --- a/.github/workflows/ci_dev-v2.yml +++ b/.github/workflows/ci_dev-v2.yml @@ -60,9 +60,9 @@ jobs: - name: Checkout submodules run: git submodule update --init --recursive - - name: Unit Testing - run: | - /root/.cargo/bin/cargo test test_dkg_secure_net -- --show-output + # - name: Unit Testing + # run: | + # /root/.cargo/bin/cargo test test_dkg_secure_net -- --show-output - name: Build and push Docker image uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc From ed8037dee0ee4331dca13efd24f236d8b8a2cd2b Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Wed, 4 Dec 2024 06:14:54 +0000 Subject: [PATCH 004/101] update docker file --- Dockerfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index f9fa79cf..285d8134 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,9 +9,6 @@ WORKDIR /app COPY ./Cargo.lock ./Cargo.lock COPY ./Cargo.toml ./Cargo.toml COPY ./lighthouse ./lighthouse -COPY ./hotstuff ./hotstuff -COPY ./common ./common -COPY ./contract_config ./contract_config COPY ./boot_config ./boot_config # copy your source tree COPY ./build.rs ./build.rs From 7c51de35e2198253cbb87a945a43107ee9f511a9 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Wed, 4 Dec 2024 13:49:53 +0000 Subject: [PATCH 005/101] update boot enr --- boot_config/boot_enrs.yaml | 3 +-- docker-compose-boot.yml | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/boot_config/boot_enrs.yaml b/boot_config/boot_enrs.yaml index d0eaece6..9e4e1213 100644 --- a/boot_config/boot_enrs.yaml +++ b/boot_config/boot_enrs.yaml @@ -1,2 +1 @@ -- enr:-IS4QE7oc75QZE--Zfr8iGb2NxjRi9Yz9Yxv0LQjPpsZSeoOYjm8wWIh8DY2crglYyGIlNX_DhWTTGvfLMVWKlvzf1MBgmlkgnY0gmlwhBKOWcKJc2VjcDI1NmsxoQP-nTBVb3_U8DTfEEbuwYyFWyqjwaQk2t9wgiwtEtGEM4N1ZHCCIy4 -- enr:-IS4QEqPd50HVBzjg5fufVZJjG5GLamODLocUCQEmHoUXi10fOC1DgUqsdrUOKHaAJE0LOibH7KNToImYhgcsD-UOwMBgmlkgnY0gmlwhBLXy-CJc2VjcDI1NmsxoQPra2sOV9Vm5V-60dxD4Kd-XDHcqkcVq0DZfM1XuN38q4N1ZHCCIy0 +- enr:-IS4QCQaienDvEyWvFY9-wkj55spRowzzp-so55JRefrrTAeAbQ3Lr7fl9_k5ScRQBxeozZ1qZRLJkQpZGOLLNd3q6QBgmlkgnY0gmlwhBKNvWmJc2VjcDI1NmsxoQL4ns4R7bHwiMB7LId7Kc7KCbScmVhDxcROOxpUHVnz8oN1ZHCCIy0 diff --git a/docker-compose-boot.yml b/docker-compose-boot.yml index 8ca4149d..23427919 100644 --- a/docker-compose-boot.yml +++ b/docker-compose-boot.yml @@ -8,8 +8,7 @@ services: - /bin/sh - -c - | - node_ip=$$(curl -s ifconfig.me) - dvf boot_node --ip $node_ip --port 9005 2>&1 + dvf boot_node --ip ${NODE_IP} --port 9005 2>&1 expose: - "9005" volumes: From 8c16c72aa6dd992b8716e25de50be984a3b73b8c Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Wed, 4 Dec 2024 15:11:21 +0000 Subject: [PATCH 006/101] upgrade lighthouse --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 612547f0..3e2e8856 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 612547f031663cd03e8bb9dfaa97ed9ad142f36e +Subproject commit 3e2e8856f0ac1e8e73d6e8d9c5b1cc226c41f87c From 63ecddd1bd17f4a24d528d17877aa504d3d49473 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Wed, 4 Dec 2024 15:35:21 +0000 Subject: [PATCH 007/101] [fix] eth2 keystore share remove master id --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 3e2e8856..752acc30 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 3e2e8856f0ac1e8e73d6e8d9c5b1cc226c41f87c +Subproject commit 752acc309740f75bbc6155370000ac3cda238297 From 872f301bf647f65598831572cc7d6b9963717e9c Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Thu, 5 Dec 2024 02:29:21 +0000 Subject: [PATCH 008/101] [fix] primary key conflict --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 752acc30..090ee106 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 752acc309740f75bbc6155370000ac3cda238297 +Subproject commit 090ee106623f3bc3a35d9b41b49b8f3965123029 From 2afee00c56d8c205c1316bebb3a656219ab81094 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Thu, 5 Dec 2024 04:26:10 +0000 Subject: [PATCH 009/101] [fix] fix docker compsoe --- docker-compose-operator-mev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-operator-mev.yml b/docker-compose-operator-mev.yml index 9f43d64d..2bf1ef7a 100644 --- a/docker-compose-operator-mev.yml +++ b/docker-compose-operator-mev.yml @@ -89,7 +89,7 @@ services: - /bin/sh - -c - | - dvf validator_client --builder-proposals --metrics --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${WS_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CONFIG_CLUSTER_ADDRESS} --base-port=26000 2>&1 + dvf validator_client --builder-proposals --metrics --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${RPC_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CLUSTER_CONTRACT_ADDRESS} --base-port=26000 2>&1 expose: - "26000" - "26004" From 41e82ecf1602ea087a647d660dc856655cbc6e76 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Thu, 5 Dec 2024 04:46:23 +0000 Subject: [PATCH 010/101] [fix] disable unused log and code --- docker-compose-operator.yml | 2 +- lighthouse | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose-operator.yml b/docker-compose-operator.yml index 028cdca5..29c59db4 100644 --- a/docker-compose-operator.yml +++ b/docker-compose-operator.yml @@ -80,7 +80,7 @@ services: - /bin/sh - -c - | - dvf validator_client --metrics --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${WS_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CONFIG_CLUSTER_ADDRESS} --base-port=26000 2>&1 + dvf validator_client --metrics --logfile-debug-level=info --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${RPC_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CLUSTER_CONTRACT_ADDRESS} --base-port=26000 2>&1 expose: - "26000" - "26004" diff --git a/lighthouse b/lighthouse index 090ee106..dab29233 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 090ee106623f3bc3a35d9b41b49b8f3965123029 +Subproject commit dab2923337c0c5786baf5d0d4aa687f151bcf34c From 30eb1ad11a4d5041d4315f36b188c731075dd792 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Thu, 5 Dec 2024 05:41:24 +0000 Subject: [PATCH 011/101] [fix] fix contract record path --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index dab29233..4ee01732 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit dab2923337c0c5786baf5d0d4aa687f151bcf34c +Subproject commit 4ee01732cd7ae4cda03c43b14c668ebaef8e0e61 From c6104a0f834ab03eb96c7b1db67c68aff7543546 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 6 Dec 2024 03:42:58 +0000 Subject: [PATCH 012/101] [feature] validator operation --- Cargo.lock | 29 ++++++++++++++++++++++++----- lighthouse | 2 +- src/boot_node/Cargo.toml | 2 +- src/boot_node/src/boot_service.rs | 2 +- src/boot_node/src/lib.rs | 2 +- 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a8c9ca94..82498934 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1415,7 +1415,7 @@ dependencies = [ "lighthouse_network", "prost", "safestake_crypto", - "safestake_operator", + "safestake_database", "serde", "slashing_protection", "slog", @@ -7113,6 +7113,24 @@ dependencies = [ "types", ] +[[package]] +name = "safestake_database" +version = "0.1.0" +dependencies = [ + "alloy-primitives", + "bls", + "filesystem", + "r2d2", + "r2d2_sqlite", + "rusqlite", + "safestake_crypto", + "serde", + "serde_json", + "serde_yaml", + "slashing_protection", + "types", +] + [[package]] name = "safestake_operator" version = "0.1.0" @@ -7130,15 +7148,11 @@ dependencies = [ "keccak-hash", "lazy_static", "prost", - "r2d2", - "r2d2_sqlite", "reqwest 0.11.27", - "rusqlite", "safestake_crypto", "serde", "serde_json", "serde_yaml", - "slashing_protection", "slog", "store", "task_executor", @@ -7176,6 +7190,7 @@ dependencies = [ "rand", "reqwest 0.11.27", "safestake_crypto", + "safestake_database", "safestake_operator", "serde", "serde_json", @@ -7191,6 +7206,7 @@ dependencies = [ "types", "validator_dir", "validator_store", + "warp_utils", ] [[package]] @@ -8944,6 +8960,7 @@ dependencies = [ "parking_lot", "reqwest 0.11.27", "safestake_crypto", + "safestake_database", "safestake_operator", "safestake_service", "sensitive_url", @@ -9058,6 +9075,7 @@ dependencies = [ "graffiti_file", "parking_lot", "safe_arith", + "safestake_database", "safestake_operator", "signing_method", "slog", @@ -9078,6 +9096,7 @@ dependencies = [ "initialized_validators", "parking_lot", "safestake_crypto", + "safestake_operator", "serde", "signing_method", "slashing_protection", diff --git a/lighthouse b/lighthouse index 4ee01732..8e68f2ea 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 4ee01732cd7ae4cda03c43b14c668ebaef8e0e61 +Subproject commit 8e68f2ea992cde7b53e3e85f07f679cac499f745 diff --git a/src/boot_node/Cargo.toml b/src/boot_node/Cargo.toml index df5e9030..ad56f7d3 100644 --- a/src/boot_node/Cargo.toml +++ b/src/boot_node/Cargo.toml @@ -13,7 +13,7 @@ dvf_utils = { path = "../../lighthouse/common/dvf_utils" } lighthouse_network = { path = "../../lighthouse/beacon_node/lighthouse_network" } prost = "0.12" safestake_crypto = { path = "../../lighthouse/safestake_crypto" } -safestake_operator ={ path = "../../lighthouse/validator_client/safestake_operator" } +safestake_database ={ path = "../../lighthouse/validator_client/safestake_database" } serde = { version = "1", features = ["derive"] } slashing_protection = { path = "../../lighthouse/validator_client/slashing_protection" } slog = { version = "2", features = ["max_level_debug", "release_max_level_debug", "nested-values"] } diff --git a/src/boot_node/src/boot_service.rs b/src/boot_node/src/boot_service.rs index b96c7f93..933fe748 100644 --- a/src/boot_node/src/boot_service.rs +++ b/src/boot_node/src/boot_service.rs @@ -2,7 +2,7 @@ use crate::proto::bootnode_server::Bootnode; use crate::proto::*; use dvf_utils::VERSION; use safestake_crypto::secp::PublicKey; -use safestake_operator::database::SafeStakeDatabase; +use safestake_database::SafeStakeDatabase; use tonic::{Request, Response, Status}; pub struct BootService { pub db: SafeStakeDatabase, diff --git a/src/boot_node/src/lib.rs b/src/boot_node/src/lib.rs index 6edd6bd5..218e1d9b 100644 --- a/src/boot_node/src/lib.rs +++ b/src/boot_node/src/lib.rs @@ -11,7 +11,7 @@ use lighthouse_network::discv5::{ }; use safestake_crypto::secp::PublicKey as SecpPublicKey; use safestake_crypto::secret::{Export, Secret}; -use safestake_operator::database::SafeStakeDatabase; +use safestake_database::SafeStakeDatabase; use slog::{info, Logger}; use std::net::{IpAddr, SocketAddr}; use task_executor::TaskExecutor; From 1da26c408a0629461d54f842fa3946ce8ab19ab7 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 6 Dec 2024 04:52:43 +0000 Subject: [PATCH 013/101] [fix] fix event log parsing --- .env.example | 3 ++- lighthouse | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 56cce069..e6c2dd90 100644 --- a/.env.example +++ b/.env.example @@ -8,6 +8,7 @@ IMAGE_TAG=v3.5.0-mainnet REGISTRY_CONTRACT_ADDRESS=1a1f82f0365571A0b06df0992FC4D1BCc5Fdc6aD NETWORK_CONTRACT_ADDRESS=829f3c089fE315FCB2BC9506B237BB56b7c3335B CONFIG_CONTRACT_ADDRESS=07FA0F7f3C67e4cdE0FC23A072dcD712CF9a06C1 +CLUSTER_CONTRACT_ADDRESS=07FA0F7f3C67e4cdE0FC23A072dcD712CF9a06C1 API_SERVER=https://api-node.safestake.xyz/api/op/ # different chain has different ttd TTD=10790000 @@ -15,7 +16,7 @@ TTD=10790000 MEV_BOOST_RELAYS=https://0xa15b52576bcbf1072f4a011c0f99f9fb6c66f3e1ff321f11f461d15e31b1cb359caa092c71bbded0bae5b5ea401aab7e@aestus.live,https://0xa7ab7a996c8584251c8f925da3170bdfd6ebc75d50f5ddc4050a6fdc77f2a3b5fce2cc750d0865e05d7228af97d69561@agnostic-relay.net,https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com,https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com,https://0xb3ee7afcf27f1f1259ac1787876318c6584ee353097a50ed84f51a1f21a323b3736f271a895c7ce918c038e4265918be@relay.edennetwork.io,https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0x98650451ba02064f7b000f5768cf0cf4d4e492317d82871bdc87ef841a0743f69f0f1eea11168503240ac35d101c9135@mainnet-relay.securerpc.com,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money #gas limit. [default: 30,000,000] GAS_LIMIT_INTEGER=30000000 -WS_URL= +RPC_URL= OPERATOR_ID= # The beacon node endpoint, e.g., http://127.0.0.1:5052 for a local node BEACON_NODE_ENDPOINT= diff --git a/lighthouse b/lighthouse index 8e68f2ea..6faf0182 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 8e68f2ea992cde7b53e3e85f07f679cac499f745 +Subproject commit 6faf018219a8ddb3028a3282106540a5871e57d7 From a06f38024d4e518206a48b4ad120f620e41ab14a Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 6 Dec 2024 06:19:20 +0000 Subject: [PATCH 014/101] [fix] fix config dirs --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 6faf0182..38d9baa8 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 6faf018219a8ddb3028a3282106540a5871e57d7 +Subproject commit 38d9baa84baeeafb544dfea98569c896e8384824 From 3c21ce517756f807319165315bb44bff86c996c9 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 6 Dec 2024 06:39:23 +0000 Subject: [PATCH 015/101] [fix] fix config dirs --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 38d9baa8..8641e46d 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 38d9baa84baeeafb544dfea98569c896e8384824 +Subproject commit 8641e46d4bb9397b929871c2318bed72a146817a From 12c0f3f80d94dd57cd8552097c896a764b6cfac4 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 6 Dec 2024 10:57:43 +0000 Subject: [PATCH 016/101] [fix] query block timestamp from rpc --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 8641e46d..06ce0fd4 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 8641e46d4bb9397b929871c2318bed72a146817a +Subproject commit 06ce0fd4597f6de2a5c17539f4e37c65d2d54774 From 86406d0c64ff89c638abbb753b886c31662cc8be Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 7 Dec 2024 09:06:07 +0000 Subject: [PATCH 017/101] [feature] use http api for validator store --- Cargo.lock | 5 +++++ Cargo.toml | 2 +- docker-compose-operator-mev.yml | 2 +- docker-compose-operator.yml | 2 +- lighthouse | 2 +- src/boot_node/src/lib.rs | 15 ++++++++++++--- src/main.rs | 9 +++++++++ 7 files changed, 30 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 82498934..e2937b88 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2274,6 +2274,7 @@ version = "0.1.0" dependencies = [ "clap", "clap_utils", + "dvf_utils", "eth2_network_config", ] @@ -2401,6 +2402,7 @@ dependencies = [ "clap", "clap_utils", "directory", + "dvf_utils", "environment", "eth1", "eth2", @@ -7181,6 +7183,7 @@ dependencies = [ "directory", "dirs", "dvf_utils", + "eth2", "eth2_keystore", "eth2_keystore_share", "hex", @@ -7192,6 +7195,7 @@ dependencies = [ "safestake_crypto", "safestake_database", "safestake_operator", + "sensitive_url", "serde", "serde_json", "serde_yaml", @@ -7205,6 +7209,7 @@ dependencies = [ "tonic", "types", "validator_dir", + "validator_http_api", "validator_store", "warp_utils", ] diff --git a/Cargo.toml b/Cargo.toml index a809b697..71041842 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,7 +55,7 @@ slasher = { path = "lighthouse/slasher", default-features = false } logging = { path = "lighthouse/common/logging" } boot_node = { path = "src/boot_node" } tokio = { version = "1", features = ["rt-multi-thread", "sync", "signal", "macros"] } - +dvf_utils = { path = "lighthouse/common/dvf_utils" } [dev-dependencies] tempfile = "3" validator_dir = { path = "lighthouse/common/validator_dir" } diff --git a/docker-compose-operator-mev.yml b/docker-compose-operator-mev.yml index 2bf1ef7a..3b155d2f 100644 --- a/docker-compose-operator-mev.yml +++ b/docker-compose-operator-mev.yml @@ -89,7 +89,7 @@ services: - /bin/sh - -c - | - dvf validator_client --builder-proposals --metrics --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${RPC_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CLUSTER_CONTRACT_ADDRESS} --base-port=26000 2>&1 + dvf validator_client --builder-proposals --metrics --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${RPC_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CLUSTER_CONTRACT_ADDRESS} --base-port=26000 --http 2>&1 expose: - "26000" - "26004" diff --git a/docker-compose-operator.yml b/docker-compose-operator.yml index 29c59db4..3f84fd82 100644 --- a/docker-compose-operator.yml +++ b/docker-compose-operator.yml @@ -80,7 +80,7 @@ services: - /bin/sh - -c - | - dvf validator_client --metrics --logfile-debug-level=info --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${RPC_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CLUSTER_CONTRACT_ADDRESS} --base-port=26000 2>&1 + dvf validator_client --metrics --logfile-debug-level=info --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${RPC_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CLUSTER_CONTRACT_ADDRESS} --base-port=26000 --http 2>&1 expose: - "26000" - "26004" diff --git a/lighthouse b/lighthouse index 06ce0fd4..6a3e3df1 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 06ce0fd4597f6de2a5c17539f4e37c65d2d54774 +Subproject commit 6a3e3df11dc315d6768709c7c3fb9f04519f0ae3 diff --git a/src/boot_node/src/lib.rs b/src/boot_node/src/lib.rs index 218e1d9b..614b3a22 100644 --- a/src/boot_node/src/lib.rs +++ b/src/boot_node/src/lib.rs @@ -12,7 +12,7 @@ use lighthouse_network::discv5::{ use safestake_crypto::secp::PublicKey as SecpPublicKey; use safestake_crypto::secret::{Export, Secret}; use safestake_database::SafeStakeDatabase; -use slog::{info, Logger}; +use slog::{info, warn, Logger}; use std::net::{IpAddr, SocketAddr}; use task_executor::TaskExecutor; use tonic::transport::Server; @@ -113,8 +113,17 @@ pub async fn run(config: Config, executor: &TaskExecutor, log: Logger) { handle_enr(&secret.name, &db, enr); } Event::SocketUpdated(_) => {} - Event::NodeInserted { .. } | Event::TalkRequest(_) => {} // Ignore all other discv5 server events - _ => todo!(), + Event::NodeInserted { .. } => {} + Event::TalkRequest(_) => {} // Ignore all other discv5 server events + Event::UnverifiableEnr { enr, socket, .. } => { + warn!( + log, + "unveriable enr"; + "enr" => %enr, + "socket" => %socket + ); + }, + _ => {} }; } } diff --git a/src/main.rs b/src/main.rs index 2ca70d6e..4c4a3177 100644 --- a/src/main.rs +++ b/src/main.rs @@ -513,6 +513,15 @@ fn run( .with_extension("log"), ) } + Some(("boot_node", _)) => { + let base_path = + parse_path_or_default(matches, "datadir")?; + Some( + base_path.parent().unwrap() + .join("logs") + .with_extension("log"), + ) + } _ => None, }; } From dfc8f34a7a86a8ea34053076d7a9da6452c994db Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 7 Dec 2024 13:28:57 +0000 Subject: [PATCH 018/101] [fix] fix listen addr --- lighthouse | 2 +- src/boot_node/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lighthouse b/lighthouse index 6a3e3df1..9d9f1d72 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 6a3e3df11dc315d6768709c7c3fb9f04519f0ae3 +Subproject commit 9d9f1d72a4dd227a427fa65e5b9b99434ad9756a diff --git a/src/boot_node/src/lib.rs b/src/boot_node/src/lib.rs index 614b3a22..14ccc74a 100644 --- a/src/boot_node/src/lib.rs +++ b/src/boot_node/src/lib.rs @@ -131,7 +131,7 @@ pub async fn run(config: Config, executor: &TaskExecutor, log: Logger) { "boot node", ); let boot_service = BootService { db: db_backup }; - let addr = format!("[::1]:{}", config.port).parse().unwrap(); + let addr = format!("0.0.0.0:{}", config.port).parse().unwrap(); Server::builder() .add_service(BootnodeServer::new(boot_service)) .serve(addr) From cd8558f7e919e30acf9de18935879cf86fae711f Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 8 Dec 2024 00:46:26 +0000 Subject: [PATCH 019/101] [fix] remove todo --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 9d9f1d72..a6571a34 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 9d9f1d72a4dd227a427fa65e5b9b99434ad9756a +Subproject commit a6571a341ffe573a6b8e7a986f6c2853df6f9d8e From 9eae9e5774ac919eea7ecc9cb427369077b3bda2 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 8 Dec 2024 02:11:08 +0000 Subject: [PATCH 020/101] [feature] sign through http api --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index a6571a34..69469d39 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit a6571a341ffe573a6b8e7a986f6c2853df6f9d8e +Subproject commit 69469d3936b535518cf6e8168d17aef4d78ba70e From 59d624edea41c191086637a2d5cf58fcc472a765 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 8 Dec 2024 03:57:33 +0000 Subject: [PATCH 021/101] [fix] add logs for boot node --- Cargo.lock | 1 + src/boot_node/src/lib.rs | 30 ++++++++++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e2937b88..41b3420c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7178,6 +7178,7 @@ dependencies = [ "alloy-sol-macro", "alloy-sol-types", "alloy-transport-http", + "base64 0.22.1", "bincode", "bls", "directory", diff --git a/src/boot_node/src/lib.rs b/src/boot_node/src/lib.rs index 14ccc74a..2b27c123 100644 --- a/src/boot_node/src/lib.rs +++ b/src/boot_node/src/lib.rs @@ -103,14 +103,15 @@ pub async fn run(config: Config, executor: &TaskExecutor, log: Logger) { async move { let _ = discv5.start().await; let mut event_stream = discv5.event_stream().await.unwrap(); + let logger = log.clone(); loop { if let Some(event) = event_stream.recv().await { match event { Event::Discovered(enr) => { - handle_enr(&secret.name, &db, enr); + handle_enr(&secret.name, &db, enr, &logger); } Event::SessionEstablished(enr, _) => { - handle_enr(&secret.name, &db, enr); + handle_enr(&secret.name, &db, enr, &logger); } Event::SocketUpdated(_) => {} Event::NodeInserted { .. } => {} @@ -120,7 +121,9 @@ pub async fn run(config: Config, executor: &TaskExecutor, log: Logger) { log, "unveriable enr"; "enr" => %enr, - "socket" => %socket + "socket" => %socket, + "enr ip" => %enr.ip4().unwrap(), + "enr port" => format!("{:?}", enr.tcp4()) ); }, _ => {} @@ -139,7 +142,7 @@ pub async fn run(config: Config, executor: &TaskExecutor, log: Logger) { .unwrap() } -pub fn handle_enr(self_public_key: &SecpPublicKey, db: &SafeStakeDatabase, enr: Enr) { +pub fn handle_enr(self_public_key: &SecpPublicKey, db: &SafeStakeDatabase, enr: Enr, logger: &Logger) { let node_public_key: [u8; 33] = enr.public_key().encode().try_into().unwrap(); let public_key = SecpPublicKey(node_public_key); if public_key == *self_public_key { @@ -150,8 +153,15 @@ pub fn handle_enr(self_public_key: &SecpPublicKey, db: &SafeStakeDatabase, enr: Ok(seq) => seq, Err(_) => 0, }; + if enr.seq() > seq { - let _ = db.with_transaction(|tx| { + info!( + logger, + "boot node"; + "node" => %public_key, + "seq" => seq + ); + if let Err(e) = db.with_transaction(|tx| { let ip = enr.ip4().unwrap(); let port = match enr.udp4() { Some(port) => port.checked_sub(DISCOVERY_PORT_OFFSET).unwrap(), @@ -159,6 +169,14 @@ pub fn handle_enr(self_public_key: &SecpPublicKey, db: &SafeStakeDatabase, enr: }; let socket_address = SocketAddr::new(IpAddr::V4(ip), port); db.upsert_operator_socket_address(tx, &public_key, &socket_address, enr.seq()) - }); + }) { + warn!( + logger, + "failed to insert"; + "node" => %public_key, + "seq" => seq, + "error" => %e + ); + } } } From 49f3f428335b174e85a9203424998b44c0b39aa1 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 8 Dec 2024 04:25:32 +0000 Subject: [PATCH 022/101] [test] unit test --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 69469d39..d4cce0e1 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 69469d3936b535518cf6e8168d17aef4d78ba70e +Subproject commit d4cce0e12c34ba56ad9ee7b822224a923b5c6b77 From ae93b0cce7c981c93fbd1a5fd1d5df2677e21aca Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 8 Dec 2024 05:26:20 +0000 Subject: [PATCH 023/101] [fix] fix distributed attestation --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index d4cce0e1..ed05a1fe 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit d4cce0e12c34ba56ad9ee7b822224a923b5c6b77 +Subproject commit ed05a1fe3592a9184c9a7877a04d92dec3f9ebe3 From b9f6c8769cd2ffa439d35cf5dfc5ef50f39a410b Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 8 Dec 2024 06:58:53 +0000 Subject: [PATCH 024/101] [feature] query all operators at boot --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index ed05a1fe..456179fc 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit ed05a1fe3592a9184c9a7877a04d92dec3f9ebe3 +Subproject commit 456179fcf11b6d64037bd22fae16726c37f69e2c From d9abc4a361605c86febe73afb7b856c4b0c650fd Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 8 Dec 2024 07:37:15 +0000 Subject: [PATCH 025/101] [fix] fix signature column --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 456179fc..f7f525e1 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 456179fcf11b6d64037bd22fae16726c37f69e2c +Subproject commit f7f525e10d676bc2489fe20d9c40f2935f51e72f From b313e2516f1a8e67629e8ed78a96086b0e116571 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 8 Dec 2024 08:14:54 +0000 Subject: [PATCH 026/101] [fix] fix signature column --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index f7f525e1..6126f11b 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit f7f525e10d676bc2489fe20d9c40f2935f51e72f +Subproject commit 6126f11bf45b2ca9d156615ceed9c7b9bdffe259 From 7d7ad68df801b4057006f146f8670648424e4d26 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 8 Dec 2024 08:46:39 +0000 Subject: [PATCH 027/101] [fix] signature serde --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 6126f11b..bdc61502 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 6126f11bf45b2ca9d156615ceed9c7b9bdffe259 +Subproject commit bdc61502cbfd11a9027c2525968734aaf9b625d6 From cefbe1caae4826c5d90c4580a5596707a07577ec Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Tue, 10 Dec 2024 01:36:25 +0000 Subject: [PATCH 028/101] [fix] query owner fee recipient --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index bdc61502..0bbcb3f8 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit bdc61502cbfd11a9027c2525968734aaf9b625d6 +Subproject commit 0bbcb3f83fd9f4615eb06d42c79a658e94e1889d From 5a7867ca8f5771959885a4ec1f7943502988e6d5 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Wed, 11 Dec 2024 05:42:28 +0000 Subject: [PATCH 029/101] [fix] query owner fee recipient --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 0bbcb3f8..49b54818 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 0bbcb3f83fd9f4615eb06d42c79a658e94e1889d +Subproject commit 49b548184141d74965935e7a7a88d89cc59564a4 From d92d93760042d3069ffe2f9a82e982171f789f94 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Wed, 11 Dec 2024 11:41:22 +0000 Subject: [PATCH 030/101] [fix] query validators info from contract --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 49b54818..dd17631c 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 49b548184141d74965935e7a7a88d89cc59564a4 +Subproject commit dd17631c0435efcd7f36783115ddeb050b1adbdf From cb8a0a1b562c21a3e0aa306bc0b9ba91583b3de8 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Thu, 12 Dec 2024 07:09:54 +0000 Subject: [PATCH 031/101] [fix] update rregistration timestamp --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index dd17631c..a6f4dffd 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit dd17631c0435efcd7f36783115ddeb050b1adbdf +Subproject commit a6f4dffdc9d12b97cf70f3da8651235e75592071 From d1256e27915541fcf7736fff889394202973a1e9 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 13 Dec 2024 05:04:32 +0000 Subject: [PATCH 032/101] [feature] custom http api --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index a6f4dffd..c976a352 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit a6f4dffdc9d12b97cf70f3da8651235e75592071 +Subproject commit c976a3524fca421988da5d1d63cdeb37fde92dfa From cc8cd7effd1c228b0defd124a24c07ec8ec21939 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Mon, 16 Dec 2024 11:04:24 +0000 Subject: [PATCH 033/101] merge lighthouse 6.0.1 --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index c976a352..07d1a3fd 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit c976a3524fca421988da5d1d63cdeb37fde92dfa +Subproject commit 07d1a3fd7b17078a2f5a7baf9007e4d53c6d4d24 From 66dcd6248d62f4ceb0a7ef1e73e55e7c699aa301 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 20 Dec 2024 03:21:12 +0000 Subject: [PATCH 034/101] add key tool fix status report --- Dockerfile | 5 +- lighthouse | 2 +- src/dvf_key_tool/Cargo.lock | 2772 ++++++++++++++++++++++++++++++++++ src/dvf_key_tool/Cargo.toml | 9 + src/dvf_key_tool/src/main.rs | 47 + 5 files changed, 2832 insertions(+), 3 deletions(-) create mode 100644 src/dvf_key_tool/Cargo.lock create mode 100644 src/dvf_key_tool/Cargo.toml create mode 100644 src/dvf_key_tool/src/main.rs diff --git a/Dockerfile b/Dockerfile index 285d8134..9f4c91f8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ COPY ./src ./src # build for release ARG CPU_NUM=16 RUN cargo build -j $CPU_NUM --release - +RUN cd dvf_key_tool && cargo build -j $CPU_NUM --release FROM ubuntu:22.04 RUN apt-get update && apt-get -y upgrade && apt-get install -y --no-install-recommends \ libssl-dev \ @@ -27,4 +27,5 @@ RUN apt-get update && apt-get -y upgrade && apt-get install -y --no-install-reco && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=builder /app/boot_config /app/boot_config -COPY --from=builder /app/target/release/dvf /usr/local/bin/dvf \ No newline at end of file +COPY --from=builder /app/target/release/dvf /usr/local/bin/dvf +COPY --from=builder /app/src/dvf_key_tool/target/release/dvf_key_tool /usr/local/bin/dvf_key_tool \ No newline at end of file diff --git a/lighthouse b/lighthouse index 07d1a3fd..e572ead4 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 07d1a3fd7b17078a2f5a7baf9007e4d53c6d4d24 +Subproject commit e572ead42bd3463f634395916cb4801175879480 diff --git a/src/dvf_key_tool/Cargo.lock b/src/dvf_key_tool/Cargo.lock new file mode 100644 index 00000000..c16d7542 --- /dev/null +++ b/src/dvf_key_tool/Cargo.lock @@ -0,0 +1,2772 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +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 = "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" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy-primitives" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" +dependencies = [ + "alloy-rlp", + "arbitrary", + "bytes", + "cfg-if", + "const-hex", + "derive_arbitrary", + "derive_more", + "foldhash", + "getrandom", + "hashbrown 0.15.2", + "hex-literal", + "indexmap", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "proptest-derive", + "rand", + "ruint", + "rustc-hash", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "archery" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a8da9bc4c4053ee067669762bcaeea6e241841295a2b6c948312dad6ef4cc02" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "array-init" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "async-trait" +version = "0.1.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "auto_impl" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bls" +version = "0.2.0" +dependencies = [ + "alloy-primitives", + "arbitrary", + "blst", + "ethereum_hashing", + "ethereum_serde_utils", + "ethereum_ssz", + "fixed_bytes", + "hex", + "rand", + "safe_arith", + "serde", + "tree_hash", + "zeroize", +] + +[[package]] +name = "blst" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "blstrs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8a8ed6fefbeef4a8c7b460e4110e12c5e22a5b7cf32621aae6ad650c4dcf29" +dependencies = [ + "blst", + "byte-slice-cast", + "ff", + "group", + "pairing", + "rand_core", + "serde", + "subtle", +] + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +dependencies = [ + "serde", +] + +[[package]] +name = "c-kzg" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", +] + +[[package]] +name = "cc" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "compare_fields" +version = "0.2.0" +dependencies = [ + "itertools 0.10.5", +] + +[[package]] +name = "compare_fields_derive" +version = "0.2.0" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "const-hex" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "cpufeatures" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +dependencies = [ + "libc", +] + +[[package]] +name = "crate_crypto_internal_eth_kzg_bls12_381" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "319cb241b1ad37f8c376b2ebcd7233f53e033a50de6f0a9cf38e6cc545554de4" +dependencies = [ + "blst", + "blstrs", + "ff", + "group", + "pairing", + "subtle", +] + +[[package]] +name = "crate_crypto_internal_eth_kzg_erasure_codes" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abedcc3eb4d04655c53704a66880945f5a39c6d96b337f0ab4a086dda795c954" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", + "crate_crypto_internal_eth_kzg_polynomial", +] + +[[package]] +name = "crate_crypto_internal_eth_kzg_maybe_rayon" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db089718921ca28d137ed8b1a7406f10e6bfbc61794a2339bcd9c99d5ddefc6" + +[[package]] +name = "crate_crypto_internal_eth_kzg_polynomial" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "750e6dbe493d337d98502975137f055a52767021bcdb69aa8926ed8ee28c7980" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", +] + +[[package]] +name = "crate_crypto_kzg_multi_open_fk20" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3337262f48c7fee2999cf23bb9cb693299211671fe46b593ac81fcb218de68b" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", + "crate_crypto_internal_eth_kzg_maybe_rayon", + "crate_crypto_internal_eth_kzg_polynomial", + "hex", + "sha2", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core 0.13.4", + "darling_macro 0.13.4", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core 0.20.10", + "darling_macro 0.20.10", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 1.0.109", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.90", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core 0.13.4", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core 0.20.10", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[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.90", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dvf_key_tool" +version = "0.1.0" +dependencies = [ + "dirs", + "dvf_utils", + "safestake_crypto", +] + +[[package]] +name = "dvf_utils" +version = "0.1.0" +dependencies = [ + "bls", +] + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "erased-serde" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c" +dependencies = [ + "serde", +] + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "eth2_interop_keypairs" +version = "0.2.0" +dependencies = [ + "bls", + "ethereum_hashing", + "hex", + "num-bigint", + "serde", + "serde_yaml", +] + +[[package]] +name = "ethereum_hashing" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c853bd72c9e5787f8aafc3df2907c2ed03cff3150c3acd94e2e53a98ab70a8ab" +dependencies = [ + "cpufeatures", + "ring", + "sha2", +] + +[[package]] +name = "ethereum_serde_utils" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70cbccfccf81d67bff0ab36e591fa536c8a935b078a7b0e58c1d00d418332fc9" +dependencies = [ + "alloy-primitives", + "hex", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "ethereum_ssz" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e999563461faea0ab9bc0024e5e66adcee35881f3d5062f52f31a4070fe1522" +dependencies = [ + "alloy-primitives", + "itertools 0.13.0", + "smallvec", +] + +[[package]] +name = "ethereum_ssz_derive" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3deae99c8e74829a00ba7a92d49055732b3c1f093f2ccfa3cbc621679b6fa91" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "bitvec", + "rand_core", + "subtle", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixed_bytes" +version = "0.1.0" +dependencies = [ + "alloy-primitives", + "safe_arith", +] + +[[package]] +name = "fnv" +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 = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[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 = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand", + "rand_core", + "rand_xorshift", + "subtle", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "foldhash", + "serde", +] + +[[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 = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "indexmap" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +dependencies = [ + "arbitrary", + "equivalent", + "hashbrown 0.15.2", + "serde", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "int_to_bytes" +version = "0.2.0" +dependencies = [ + "bytes", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "kzg" +version = "0.1.0" +dependencies = [ + "arbitrary", + "c-kzg", + "derivative", + "ethereum_hashing", + "ethereum_serde_utils", + "ethereum_ssz", + "ethereum_ssz_derive", + "hex", + "rust_eth_kzg", + "serde", + "serde_json", + "tree_hash", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.168" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "merkle_proof" +version = "0.2.0" +dependencies = [ + "alloy-primitives", + "ethereum_hashing", + "fixed_bytes", + "safe_arith", +] + +[[package]] +name = "metastruct" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d74f54f231f9a18d77393ecc5cc7ab96709b2a61ee326c2b2b291009b0cc5a07" +dependencies = [ + "metastruct_macro", +] + +[[package]] +name = "metastruct_macro" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7225f3a4dfbec47a0c6a730a874185fda840d365d7bbd6ba199dd81796d5" +dependencies = [ + "darling 0.13.4", + "itertools 0.10.5", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "milhouse" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f68e33f98199224d1073f7c1468ea6abfea30736306fb79c7181a881e97ea32f" +dependencies = [ + "alloy-primitives", + "arbitrary", + "derivative", + "ethereum_hashing", + "ethereum_ssz", + "ethereum_ssz_derive", + "itertools 0.13.0", + "parking_lot", + "rayon", + "serde", + "smallvec", + "tree_hash", + "triomphe", + "typenum", + "vec_map", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + +[[package]] +name = "miracl_core" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "592c78f17df28dccd503346e70270d33247345ab21a44ba526e10f50d56dcdf4" + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", + "rand", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "pairing" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +dependencies = [ + "group", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pest" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +dependencies = [ + "memchr", + "thiserror 2.0.7", + "ucd-trie", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[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 = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.6.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "proptest-derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", + "serde", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rpds" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ef5140bcb576bfd6d56cd2de709a7d17851ac1f3805e67fe9d99e42a11821f" +dependencies = [ + "archery", +] + +[[package]] +name = "ruint" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +dependencies = [ + "alloy-rlp", + "arbitrary", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rusqlite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a" +dependencies = [ + "bitflags 1.3.2", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rust_eth_kzg" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3291fd0d9c629a56537d74bbc1e7bcaf5be610f2f7b55af85c4fea843c6aeca3" +dependencies = [ + "crate_crypto_internal_eth_kzg_bls12_381", + "crate_crypto_internal_eth_kzg_erasure_codes", + "crate_crypto_kzg_multi_open_fk20", + "hex", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver 1.0.24", +] + +[[package]] +name = "rustix" +version = "0.38.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "safe_arith" +version = "0.1.0" + +[[package]] +name = "safestake_crypto" +version = "0.1.0" +dependencies = [ + "aes-gcm", + "array-init", + "base64", + "bls", + "blst", + "bytes", + "dvf_utils", + "hex", + "lazy_static", + "miracl_core", + "num-bigint", + "num-traits", + "rand", + "secp256k1", + "serde", + "serde_json", + "sha256", + "slog", + "types", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" + +[[package]] +name = "semver-parser" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.216" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.216" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_json" +version = "1.0.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha256" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18278f6a914fa3070aa316493f7d2ddfb9ac86ebc06fa3b83bffda487e9065b0" +dependencies = [ + "async-trait", + "bytes", + "hex", + "sha2", + "tokio", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "slog" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" +dependencies = [ + "erased-serde", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "arbitrary", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "ssz_types" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e0719d2b86ac738a55ae71a8429f52aa2741da988f1fd0975b4cc610fd1e08" +dependencies = [ + "arbitrary", + "derivative", + "ethereum_serde_utils", + "ethereum_ssz", + "itertools 0.13.0", + "serde", + "serde_derive", + "smallvec", + "tree_hash", + "typenum", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "superstruct" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf0f31f730ad9e579364950e10d6172b4a9bd04b447edf5988b066a860cc340e" +dependencies = [ + "darling 0.13.4", + "itertools 0.10.5", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "swap_or_not_shuffle" +version = "0.2.0" +dependencies = [ + "alloy-primitives", + "ethereum_hashing", + "fixed_bytes", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "test_random_derive" +version = "0.2.0" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" +dependencies = [ + "thiserror-impl 2.0.7", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tokio" +version = "1.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +dependencies = [ + "backtrace", + "bytes", + "pin-project-lite", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tree_hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373495c23db675a5192de8b610395e1bec324d596f9e6111192ce903dc11403a" +dependencies = [ + "alloy-primitives", + "ethereum_hashing", + "smallvec", +] + +[[package]] +name = "tree_hash_derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0857056ca4eb5de8c417309be42bcff6017b47e86fbaddde609b4633f66061e" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "triomphe" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85" +dependencies = [ + "serde", + "stable_deref_trait", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "types" +version = "0.2.1" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arbitrary", + "bls", + "compare_fields", + "compare_fields_derive", + "derivative", + "eth2_interop_keypairs", + "ethereum_hashing", + "ethereum_serde_utils", + "ethereum_ssz", + "ethereum_ssz_derive", + "fixed_bytes", + "hex", + "int_to_bytes", + "itertools 0.10.5", + "kzg", + "log", + "maplit", + "merkle_proof", + "metastruct", + "milhouse", + "parking_lot", + "rand", + "rand_xorshift", + "rayon", + "regex", + "rpds", + "rusqlite", + "safe_arith", + "serde", + "serde_json", + "serde_yaml", + "slog", + "smallvec", + "ssz_types", + "superstruct", + "swap_or_not_shuffle", + "tempfile", + "test_random_derive", + "tree_hash", + "tree_hash_derive", +] + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[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 = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +dependencies = [ + "memchr", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] diff --git a/src/dvf_key_tool/Cargo.toml b/src/dvf_key_tool/Cargo.toml new file mode 100644 index 00000000..d228d3bd --- /dev/null +++ b/src/dvf_key_tool/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "dvf_key_tool" +version = "0.1.0" +edition = "2021" + +[dependencies] +dvf_utils = { path = "../../lighthouse/common/dvf_utils" } +safestake_crypto = { path = "../../lighthouse/safestake_crypto" } +dirs = "3" \ No newline at end of file diff --git a/src/dvf_key_tool/src/main.rs b/src/dvf_key_tool/src/main.rs new file mode 100644 index 00000000..b93a042f --- /dev/null +++ b/src/dvf_key_tool/src/main.rs @@ -0,0 +1,47 @@ + +use std::fs; + +use dvf_utils::ROOT_VERSION; +use safestake_crypto::secret::Export as _; +use safestake_crypto::secret::Secret; + +pub const DEFAULT_SECRET_DIR: &str = "node_key.json"; +pub const DEFAULT_ROOT_DIR: &str = ".lighthouse"; + + +fn main() { + println!("------dvf_key_tool------"); + + let network = std::env::args() + .nth(1) + .expect("ERROR: there is no valid network argument"); + let base_dir = dirs::home_dir() + .expect("ERROR: home dir is valid") + .join(DEFAULT_ROOT_DIR) + .join(format!("v{}", ROOT_VERSION)) + .join(&network); + let secret_dir = base_dir.join(DEFAULT_SECRET_DIR); + + //generate secret key if not exists + if secret_dir.exists() { + println!( + "INFO: secret file has been generated, path: {}", + &secret_dir.to_str().unwrap() + ); + let secret = Secret::read(&secret_dir) + .expect("ERROR: can't read secret file, unexpect error happened."); + println!("INFO: node public key {}", secret.name.base64()); + } else { + let secret = Secret::new(); + if !base_dir.exists() { + fs::create_dir_all(&base_dir).unwrap_or_else(|why| { + println!("ERROR: can't create dir {:?}", why.kind()); + return; + }); + } + secret + .write(&secret_dir) + .expect("ERROR: Can't write to file"); + println!("INFO: node public key {}", secret.name.base64()); + } +} From fc4bcb54d05823946a5a5e6f246048ee3ced1925 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 20 Dec 2024 03:35:25 +0000 Subject: [PATCH 035/101] fix docker build --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9f4c91f8..bec434a9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ COPY ./src ./src # build for release ARG CPU_NUM=16 RUN cargo build -j $CPU_NUM --release -RUN cd dvf_key_tool && cargo build -j $CPU_NUM --release +RUN cd src/dvf_key_tool && cargo build -j $CPU_NUM --release FROM ubuntu:22.04 RUN apt-get update && apt-get -y upgrade && apt-get install -y --no-install-recommends \ libssl-dev \ From 58ce44e1a04ee832bae9a5bb67ebab1a87796519 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 21 Dec 2024 03:15:55 +0000 Subject: [PATCH 036/101] fix discovery panic --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index e572ead4..5b9c610e 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit e572ead42bd3463f634395916cb4801175879480 +Subproject commit 5b9c610e737260a8fdddef10e9a0afdcabd6c3fb From 74ff0fb377acbc3cc96f174bf3fb7425d9cc7a8f Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 21 Dec 2024 07:05:13 +0000 Subject: [PATCH 037/101] add auto discover --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 5b9c610e..05ae204b 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 5b9c610e737260a8fdddef10e9a0afdcabd6c3fb +Subproject commit 05ae204b719fff9bc13fcafc4aee81aa4ca81a70 From 46b1043529d8165866fb7d9c578a22a295193ff6 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 21 Dec 2024 07:56:30 +0000 Subject: [PATCH 038/101] add validator check in liveness service --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 05ae204b..8ea30ec0 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 05ae204b719fff9bc13fcafc4aee81aa4ca81a70 +Subproject commit 8ea30ec01838854eaedc948480f5a9d16adfda8f From 47a79b907056628db1be5810d215a55ae8199af9 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 21 Dec 2024 08:28:22 +0000 Subject: [PATCH 039/101] fix slashing check --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 8ea30ec0..3cd98759 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 8ea30ec01838854eaedc948480f5a9d16adfda8f +Subproject commit 3cd9875983fe8c475038fad1d5689d6d8d7eb17d From 336c58736ca3608999f5227ee65096a4818db93b Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 21 Dec 2024 08:51:50 +0000 Subject: [PATCH 040/101] enable init slashing protection --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 3cd98759..49a6a18a 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 3cd9875983fe8c475038fad1d5689d6d8d7eb17d +Subproject commit 49a6a18addf59c701076ec0f681d8fa7ae7dd5f6 From e7e0a632ca3a7f45022b391c68d9c94828dfcdce Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 22 Dec 2024 14:15:01 +0000 Subject: [PATCH 041/101] add dkg and timeout on rpc client --- Cargo.lock | 6 ++++++ docker-compose-operator-mev.yml | 2 +- docker-compose-operator.yml | 2 +- lighthouse | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 41b3420c..0f01eb3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7096,11 +7096,15 @@ version = "0.1.0" dependencies = [ "aes-gcm", "array-init", + "async-trait", "base64 0.22.1", + "bincode", "bls", "blst", "bytes", "dvf_utils", + "ethereum_hashing", + "futures", "hex", "lazy_static", "miracl_core", @@ -7112,6 +7116,8 @@ dependencies = [ "serde_json", "sha256", "slog", + "tokio", + "tokio-util", "types", ] diff --git a/docker-compose-operator-mev.yml b/docker-compose-operator-mev.yml index 3b155d2f..e0e44008 100644 --- a/docker-compose-operator-mev.yml +++ b/docker-compose-operator-mev.yml @@ -89,7 +89,7 @@ services: - /bin/sh - -c - | - dvf validator_client --builder-proposals --metrics --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${RPC_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CLUSTER_CONTRACT_ADDRESS} --base-port=26000 --http 2>&1 + dvf validator_client --builder-proposals --metrics --metrics-address=0.0.0.0 --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${RPC_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CLUSTER_CONTRACT_ADDRESS} --base-port=26000 --http 2>&1 expose: - "26000" - "26004" diff --git a/docker-compose-operator.yml b/docker-compose-operator.yml index 3f84fd82..4a3ecc1d 100644 --- a/docker-compose-operator.yml +++ b/docker-compose-operator.yml @@ -80,7 +80,7 @@ services: - /bin/sh - -c - | - dvf validator_client --metrics --logfile-debug-level=info --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${RPC_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CLUSTER_CONTRACT_ADDRESS} --base-port=26000 --http 2>&1 + dvf validator_client --metrics --metrics-address=0.0.0.0 --logfile-debug-level=info --network=${OPERATOR_NETWORK} --beacon-nodes=${BEACON_NODE_ENDPOINT} --api=${API_SERVER} --rpc-url=${RPC_URL} --ip=${NODE_IP} --id=${OPERATOR_ID} --registry-contract=${REGISTRY_CONTRACT_ADDRESS} --network-contract=${NETWORK_CONTRACT_ADDRESS} --config-contract=${CONFIG_CONTRACT_ADDRESS} --cluster-contract=${CLUSTER_CONTRACT_ADDRESS} --base-port=26000 --http 2>&1 expose: - "26000" - "26004" diff --git a/lighthouse b/lighthouse index 49a6a18a..e21450b0 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 49a6a18addf59c701076ec0f681d8fa7ae7dd5f6 +Subproject commit e21450b0e33c9c9c3b6d6f89accb09ef1a77ec4a From 36a1ef961a0a66a7ed51aa8d84e916798fc5d879 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 22 Dec 2024 14:55:56 +0000 Subject: [PATCH 042/101] fix disable keystore --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index e21450b0..a82391a7 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit e21450b0e33c9c9c3b6d6f89accb09ef1a77ec4a +Subproject commit a82391a7950f4baf9ba8f753674134c27d125025 From a2795fb9a70a45e8ffece24a0ca58bce9969a564 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Mon, 23 Dec 2024 15:48:31 +0000 Subject: [PATCH 043/101] optimize ip check --- lighthouse | 2 +- src/boot_node/src/lib.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lighthouse b/lighthouse index a82391a7..f6f321d8 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit a82391a7950f4baf9ba8f753674134c27d125025 +Subproject commit f6f321d812df08bfea7877152d99c6e6652d3dcb diff --git a/src/boot_node/src/lib.rs b/src/boot_node/src/lib.rs index 2b27c123..71c47ddb 100644 --- a/src/boot_node/src/lib.rs +++ b/src/boot_node/src/lib.rs @@ -107,8 +107,8 @@ pub async fn run(config: Config, executor: &TaskExecutor, log: Logger) { loop { if let Some(event) = event_stream.recv().await { match event { - Event::Discovered(enr) => { - handle_enr(&secret.name, &db, enr, &logger); + Event::Discovered(_) => { + // handle_enr(&secret.name, &db, enr, &logger); } Event::SessionEstablished(enr, _) => { handle_enr(&secret.name, &db, enr, &logger); From 64870f2a7baae673682f4d67ce0cd28845f7b185 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Tue, 31 Dec 2024 07:11:31 +0000 Subject: [PATCH 044/101] incress timeout time --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index f6f321d8..9b93d051 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit f6f321d812df08bfea7877152d99c6e6652d3dcb +Subproject commit 9b93d051a3bdf8bc0f6bf90041bd246056e1e71b From ef5ea9a374ae94d1bc2d92fbef320be5a2fb8c70 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Tue, 31 Dec 2024 09:13:37 +0000 Subject: [PATCH 045/101] change nonce --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 9b93d051..8f4ac3e0 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 9b93d051a3bdf8bc0f6bf90041bd246056e1e71b +Subproject commit 8f4ac3e03a1727d76966e511af4d8129885de89d From 9057a56d97876cab639a493400f29793c28fbb57 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Thu, 2 Jan 2025 15:55:04 +0000 Subject: [PATCH 046/101] fix timeout --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 8f4ac3e0..b80a93d9 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 8f4ac3e03a1727d76966e511af4d8129885de89d +Subproject commit b80a93d9d824e37909044fe835d889b8e5144837 From affb6448207810100741a115fd7749d48e8d30eb Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 4 Jan 2025 14:17:48 +0000 Subject: [PATCH 047/101] reuse channel --- Cargo.lock | 51 ++++++++++++++++++++++++++++----------------------- lighthouse | 2 +- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0f01eb3a..67196588 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2334,7 +2334,7 @@ dependencies = [ "enr", "fnv", "futures", - "hashlink 0.9.1", + "hashlink", "hex", "hkdf", "lazy_static", @@ -2723,7 +2723,7 @@ dependencies = [ "serde_repr", "sha2 0.9.9", "unicode-normalization", - "uuid", + "uuid 0.8.2", "zeroize", ] @@ -2768,7 +2768,7 @@ dependencies = [ "serde_json", "serde_repr", "tiny-bip39", - "uuid", + "uuid 0.8.2", ] [[package]] @@ -3016,9 +3016,9 @@ dependencies = [ [[package]] name = "fallible-iterator" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fallible-streaming-iterator" @@ -3468,7 +3468,7 @@ dependencies = [ "futures-ticker", "futures-timer", "getrandom", - "hashlink 0.9.1", + "hashlink", "hex_fmt", "libp2p", "prometheus-client", @@ -3582,15 +3582,6 @@ dependencies = [ "serde", ] -[[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 = "hashlink" version = "0.9.1" @@ -4174,6 +4165,7 @@ dependencies = [ "signing_method", "slog", "tokio", + "tonic", "types", "url", "validator_dir", @@ -4930,9 +4922,9 @@ dependencies = [ [[package]] name = "libsqlite3-sys" -version = "0.25.2" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" dependencies = [ "cc", "pkg-config", @@ -6456,12 +6448,13 @@ dependencies = [ [[package]] name = "r2d2_sqlite" -version = "0.21.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f5d0337e99cd5cacd91ffc326c6cc9d8078def459df560c4f9bf9ba4a51034" +checksum = "eb14dba8247a6a15b7fdbc7d389e2e6f03ee9f184f87117706d509c092dfe846" dependencies = [ "r2d2", "rusqlite", + "uuid 1.11.0", ] [[package]] @@ -6861,14 +6854,14 @@ checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] name = "rusqlite" -version = "0.28.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a" +checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "fallible-iterator", "fallible-streaming-iterator", - "hashlink 0.8.4", + "hashlink", "libsqlite3-sys", "smallvec", ] @@ -7155,6 +7148,7 @@ dependencies = [ "hex", "keccak-hash", "lazy_static", + "parking_lot", "prost", "reqwest 0.11.27", "safestake_crypto", @@ -7199,6 +7193,7 @@ dependencies = [ "parking_lot", "rand", "reqwest 0.11.27", + "safe_arith", "safestake_crypto", "safestake_database", "safestake_operator", @@ -8949,6 +8944,16 @@ dependencies = [ "serde", ] +[[package]] +name = "uuid" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +dependencies = [ + "getrandom", + "rand", +] + [[package]] name = "validator_client" version = "0.3.5" diff --git a/lighthouse b/lighthouse index b80a93d9..4f8e8ded 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit b80a93d9d824e37909044fe835d889b8e5144837 +Subproject commit 4f8e8ded5706806d22ab78719b7e3be149234b5b From a9b869ca02c15721ad3621cf3e394fb1a5d67b0d Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 5 Jan 2025 14:41:16 +0000 Subject: [PATCH 048/101] multiple channels --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 4f8e8ded..d9557c27 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 4f8e8ded5706806d22ab78719b7e3be149234b5b +Subproject commit d9557c2796b323549736afbdea5513dc38f6a70b From 9eada10eb9c59a3ef6dff190eec200065199ad97 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 5 Jan 2025 15:43:57 +0000 Subject: [PATCH 049/101] change channel size --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index d9557c27..d364109b 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit d9557c2796b323549736afbdea5513dc38f6a70b +Subproject commit d364109bf342d76033c36571a1f21d6ec4e8bba4 From 074bfe57ea391dfab4222bdc756d941e85f6f09e Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Mon, 6 Jan 2025 00:22:07 +0000 Subject: [PATCH 050/101] reuse channel in discovery --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index d364109b..d305a47b 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit d364109bf342d76033c36571a1f21d6ec4e8bba4 +Subproject commit d305a47b938c73fb9128fcc5daaaa71d90345f7b From 29492bbe9038afed84d5a13c75193f81a0f3e1f9 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Mon, 6 Jan 2025 14:37:08 +0000 Subject: [PATCH 051/101] add flow control window size --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index d305a47b..5b4efaf4 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit d305a47b938c73fb9128fcc5daaaa71d90345f7b +Subproject commit 5b4efaf405b2eb09b56040322f630c72f320ecde From 7cb5d844b162d0943f80b48046ad6aa4eaea1d44 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Mon, 6 Jan 2025 15:39:54 +0000 Subject: [PATCH 052/101] use tikio select to process timeout --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 5b4efaf4..3537b132 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 5b4efaf405b2eb09b56040322f630c72f320ecde +Subproject commit 3537b1327095dd6f625632caa8a77114e5adbce5 From 98521847ff2ffd32adfe758108ea6646ca1d594a Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 10 Jan 2025 05:49:45 +0000 Subject: [PATCH 053/101] fix contract error --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 3537b132..dbc22d73 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 3537b1327095dd6f625632caa8a77114e5adbce5 +Subproject commit dbc22d73265d8d85d9794363c561601c813a3043 From 270c7cc2c454fff1d815ca2da689ff404260bcd2 Mon Sep 17 00:00:00 2001 From: mlbones666 <127071266+mlbones666@users.noreply.github.com> Date: Thu, 16 Jan 2025 13:18:36 +0800 Subject: [PATCH 054/101] update config and doc for v4.0.0-mainnet --- .env.example | 4 ++-- docker-compose-operator-mev.yml | 2 +- docker-compose-operator.yml | 2 +- docs/safestake-running-an-operator-node.md | 6 +----- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index e6c2dd90..3e7dddb9 100644 --- a/.env.example +++ b/.env.example @@ -4,11 +4,11 @@ BESU_NETWORK=mainnet ERIGON_NETWORK=mainnet LIGHTHOUSE_NETWORK=mainnet OPERATOR_NETWORK=mainnet -IMAGE_TAG=v3.5.0-mainnet +IMAGE_TAG=v4.0.0-mainnet REGISTRY_CONTRACT_ADDRESS=1a1f82f0365571A0b06df0992FC4D1BCc5Fdc6aD NETWORK_CONTRACT_ADDRESS=829f3c089fE315FCB2BC9506B237BB56b7c3335B CONFIG_CONTRACT_ADDRESS=07FA0F7f3C67e4cdE0FC23A072dcD712CF9a06C1 -CLUSTER_CONTRACT_ADDRESS=07FA0F7f3C67e4cdE0FC23A072dcD712CF9a06C1 +CLUSTER_CONTRACT_ADDRESS=f0455Aca6B61109098562610e89C7ca22c12Bb43 API_SERVER=https://api-node.safestake.xyz/api/op/ # different chain has different ttd TTD=10790000 diff --git a/docker-compose-operator-mev.yml b/docker-compose-operator-mev.yml index e0e44008..208b520a 100644 --- a/docker-compose-operator-mev.yml +++ b/docker-compose-operator-mev.yml @@ -46,7 +46,7 @@ services: - "18550" lighthouse: network_mode: "host" - image: sigp/lighthouse:v5.3.0 + image: sigp/lighthouse:v6.0.1 pull_policy: always restart: unless-stopped volumes: diff --git a/docker-compose-operator.yml b/docker-compose-operator.yml index 4a3ecc1d..a1829196 100644 --- a/docker-compose-operator.yml +++ b/docker-compose-operator.yml @@ -38,7 +38,7 @@ services: lighthouse: network_mode: "host" - image: sigp/lighthouse:v5.3.0 + image: sigp/lighthouse:v6.0.1 pull_policy: always restart: unless-stopped volumes: diff --git a/docs/safestake-running-an-operator-node.md b/docs/safestake-running-an-operator-node.md index 4e3ab916..06e33af6 100644 --- a/docs/safestake-running-an-operator-node.md +++ b/docs/safestake-running-an-operator-node.md @@ -146,7 +146,7 @@ Now that we have open the `.env` file, we will update the values based on our ow **Update these variables with yours** ```bash -WS_URL= #YOUR WS URL: ws://:8546 or ws://:8545 +RPC_URL= #YOUR RPC URL: http://:8545 BEACON_NODE_ENDPOINT= # The beacon node endpoint. Depending on whether you are running single-node mode or multi-node mode, fill in the correct Lighthouse beacon node service url, e.g. http://127.0.0.1:5052 for a local node # public ipv4 ip of the server running your operator NODE_IP= @@ -269,10 +269,6 @@ graph TD; A[Operator is shown as \n inactive/idle in explorer] --> B{any validator chooses\nthe operator?}; B --> |No| C[register a validator\n in our website and \n choose your operator]; B --> |Yes| D[check if the following errors \nshown in the log of first 100 lines]; - D --> |?| E[Wrong scheme: https]; - E --> |solution| F["WS_URL in .env file should be set\n beginning with ws:// or wss:// instead of https://"]; - F --> G[change the block number in the file\n /data/operator/v1/mainnet/contract_record.yml to \na block number before the registration of the validator]; - G --> H[restart operator]; D --> |?| K["Failed to connect to {ip}:26000"]; K --> |solution| L[need to open the port 26000 to the internet,\n also carefully check if other firewall rules shown\n in the doc are set correctly in your server]; ``` From b2131c10dfef4921bfd5187609667980c3075be6 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Tue, 21 Jan 2025 02:15:03 +0000 Subject: [PATCH 055/101] ubump version to 4.0 --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index dbc22d73..39e1a68a 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit dbc22d73265d8d85d9794363c561601c813a3043 +Subproject commit 39e1a68a23a5a527a3e935b21f0640ca765b3f5a From 54dfe67270416f2f094893b229ace8a5ab698453 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Tue, 21 Jan 2025 02:16:48 +0000 Subject: [PATCH 056/101] update cargo lock --- Cargo.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.lock b/Cargo.lock index 67196588..e6bb8553 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7150,6 +7150,7 @@ dependencies = [ "lazy_static", "parking_lot", "prost", + "rand", "reqwest 0.11.27", "safestake_crypto", "serde", From 8a58aedea295006e6d699a460f8ee5a174069cec Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Thu, 23 Jan 2025 06:08:14 +0000 Subject: [PATCH 057/101] change warn log --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 39e1a68a..93a68ab4 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 39e1a68a23a5a527a3e935b21f0640ca765b3f5a +Subproject commit 93a68ab482cec21936889f85748691e783d8dfd9 From d209abdb9ff26c965c25d5883868ede817fba124 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 24 Jan 2025 07:02:02 +0000 Subject: [PATCH 058/101] fix dkg port --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 93a68ab4..77354931 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 93a68ab482cec21936889f85748691e783d8dfd9 +Subproject commit 77354931bb5e2f65b82df0c679705f903e2f76ed From df1df808be9f1f94bd22afcc7a6b7a8601d05736 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 24 Jan 2025 08:30:43 +0000 Subject: [PATCH 059/101] fix overflow --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 77354931..ea5f0b27 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 77354931bb5e2f65b82df0c679705f903e2f76ed +Subproject commit ea5f0b27c30a9bd655bf85482da004ae576f784d From ebfdef36e1a13a8690bdd2f5b943b5efb22e2ca6 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 26 Jan 2025 08:04:00 +0000 Subject: [PATCH 060/101] fix deposit json --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index ea5f0b27..eb5d07f9 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit ea5f0b27c30a9bd655bf85482da004ae576f784d +Subproject commit eb5d07f93d12164427c7a6a46e754ec4b021ca81 From c5a8041b9505928af485d4aeabeaf7fb0c950a65 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 26 Jan 2025 09:10:36 +0000 Subject: [PATCH 061/101] fix fork version --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index eb5d07f9..ee8d4476 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit eb5d07f93d12164427c7a6a46e754ec4b021ca81 +Subproject commit ee8d44764629749454fb68b6be5cf8116cfee90e From 04421b648321be3e21928d566bb126e43767dedd Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Tue, 18 Feb 2025 02:17:54 +0000 Subject: [PATCH 062/101] fix error handling --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index ee8d4476..b4183fac 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit ee8d44764629749454fb68b6be5cf8116cfee90e +Subproject commit b4183face18b1795586856e06d9796e9a35eda94 From 7f381250fd9a63fb4edefa394922c0319eb6dd78 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Mon, 24 Feb 2025 11:16:03 +0000 Subject: [PATCH 063/101] merge lighthouse 7.0.0 beta --- .github/workflows/ci_dev-v3.yml | 100 +++ Cargo.lock | 1244 +++++++++++++++++++++---------- lighthouse | 2 +- src/boot_node/Cargo.lock | 622 ++-------------- src/boot_node/Cargo.toml | 1 + src/cli.rs | 9 + src/main.rs | 82 +- 7 files changed, 1070 insertions(+), 990 deletions(-) create mode 100644 .github/workflows/ci_dev-v3.yml create mode 100644 src/cli.rs diff --git a/.github/workflows/ci_dev-v3.yml b/.github/workflows/ci_dev-v3.yml new file mode 100644 index 00000000..ff30e85a --- /dev/null +++ b/.github/workflows/ci_dev-v3.yml @@ -0,0 +1,100 @@ +name: do-the-job +on: + push: + branches: + - dev-v3 +jobs: + start-runner: + name: Start self-hosted EC2 runner + runs-on: ubuntu-latest + outputs: + label: ${{ steps.start-ec2-runner.outputs.label }} + ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }} + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_REGION }} + - name: Start EC2 runner + id: start-ec2-runner + uses: machulav/ec2-github-runner@v2.3.7 + with: + mode: start + github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + ec2-image-id: ami-0a2d071e715c3a808 + ec2-instance-type: c6a.4xlarge + subnet-id: subnet-9aa9c8e1 + security-group-id: sg-0c35d2e12fe165fbb + aws-resource-tags: > # optional, requires additional permissions + [ + {"Key": "Name", "Value": "ec2-github-runner"}, + {"Key": "GitHubRepository", "Value": "${{ github.repository }}"} + ] + do-the-job: + name: UnitTest & Build & Publish Image + needs: start-runner # required to start the main job when the runner is ready + runs-on: ${{ needs.start-runner.outputs.label }} # run the job on the newly created runner + steps: + - name: Hello World1 + run: | + echo 'Hello World!' + /root/.cargo/bin/cargo version + + - name: Check out the repo + uses: actions/checkout@v3 + + - name: Login to Docker Hub + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: parastate/dvf-operator + + - name: Checkout submodules + run: git submodule update --init --recursive + + # - name: Unit Testing + # run: | + # /root/.cargo/bin/cargo test test_dkg_secure_net -- --show-output + + - name: Build and push Docker image + uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + CPU_NUM=16 + + - name: Bye + run: echo 'Congratulations!' + + stop-runner: + name: Stop self-hosted EC2 runner + needs: + - start-runner # required to get output from the start-runner job + - do-the-job # required to wait when the main job is done + runs-on: ubuntu-latest + if: ${{ always() }} # required to stop the runner even if the error happened in the previous jobs + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_REGION }} + - name: Stop EC2 runner + uses: machulav/ec2-github-runner@v2 + with: + mode: stop + github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + label: ${{ needs.start-runner.outputs.label }} + ec2-instance-id: ${{ needs.start-runner.outputs.ec2-instance-id }} diff --git a/Cargo.lock b/Cargo.lock index e6bb8553..6ac29b54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,7 +11,7 @@ dependencies = [ "eth2_keystore_share", "eth2_wallet", "filesystem", - "rand", + "rand 0.8.5", "regex", "rpassword", "safestake_crypto", @@ -105,10 +105,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -182,7 +182,7 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -292,7 +292,7 @@ dependencies = [ "alloy-sol-types", "serde", "serde_json", - "thiserror", + "thiserror 1.0.63", "tracing", ] @@ -316,7 +316,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -346,7 +346,7 @@ dependencies = [ "derive_arbitrary", "derive_more 1.0.0", "foldhash", - "getrandom", + "getrandom 0.2.15", "hashbrown 0.15.2", "hex-literal", "indexmap 2.7.0", @@ -356,7 +356,7 @@ dependencies = [ "paste", "proptest", "proptest-derive", - "rand", + "rand 0.8.5", "ruint", "rustc-hash 2.0.0", "serde", @@ -394,7 +394,7 @@ dependencies = [ "schnellru", "serde", "serde_json", - "thiserror", + "thiserror 1.0.63", "tokio", "tracing", "url", @@ -472,7 +472,7 @@ dependencies = [ "alloy-serde", "derive_more 1.0.0", "jsonwebtoken", - "rand", + "rand 0.8.5", "serde", "strum 0.26.3", ] @@ -518,7 +518,7 @@ dependencies = [ "auto_impl", "elliptic-curve 0.13.8", "k256 0.13.3", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -603,7 +603,7 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror", + "thiserror 1.0.63", "tokio", "tower 0.5.1", "tracing", @@ -831,7 +831,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -841,7 +841,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -874,7 +874,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror", + "thiserror 1.0.63", "time", ] @@ -948,6 +948,17 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "async-stream" version = "0.3.5" @@ -994,6 +1005,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "attohttpc" version = "0.24.1" @@ -1124,69 +1141,11 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "beacon_chain" -version = "0.2.0" -dependencies = [ - "alloy-primitives", - "bitvec 1.0.1", - "bls", - "derivative", - "eth1", - "eth2", - "eth2_network_config", - "ethereum_hashing", - "ethereum_serde_utils", - "ethereum_ssz", - "ethereum_ssz_derive", - "execution_layer", - "fork_choice", - "futures", - "genesis", - "hex", - "int_to_bytes", - "itertools 0.10.5", - "kzg", - "lighthouse_version", - "logging", - "lru", - "merkle_proof", - "metrics", - "oneshot_broadcast", - "operation_pool", - "parking_lot", - "proto_array", - "rand", - "rayon", - "safe_arith", - "sensitive_url", - "serde", - "serde_json", - "slasher", - "slog", - "slog-async", - "slog-term", - "sloggers", - "slot_clock", - "smallvec", - "ssz_types", - "state_processing", - "store", - "strum 0.24.1", - "superstruct", - "task_executor", - "tempfile", - "tokio", - "tokio-stream", - "tree_hash", - "tree_hash_derive", - "types", -] - [[package]] name = "beacon_node_fallback" version = "0.1.0" dependencies = [ + "clap", "environment", "eth2", "futures", @@ -1367,7 +1326,7 @@ dependencies = [ "ethereum_ssz", "fixed_bytes", "hex", - "rand", + "rand 0.8.5", "safe_arith", "serde", "tree_hash", @@ -1397,7 +1356,7 @@ dependencies = [ "ff 0.13.0", "group 0.13.0", "pairing", - "rand_core", + "rand_core 0.6.4", "serde", "subtle", ] @@ -1412,6 +1371,7 @@ dependencies = [ "directory", "dirs", "dvf_utils", + "hex", "lighthouse_network", "prost", "safestake_crypto", @@ -1439,10 +1399,12 @@ name = "builder_client" version = "0.1.0" dependencies = [ "eth2", + "ethereum_ssz", "lighthouse_version", "reqwest 0.11.27", "sensitive_url", "serde", + "serde_json", ] [[package]] @@ -1771,9 +1733,9 @@ dependencies = [ [[package]] name = "crate_crypto_internal_eth_kzg_bls12_381" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "319cb241b1ad37f8c376b2ebcd7233f53e033a50de6f0a9cf38e6cc545554de4" +checksum = "76f9cdad245e39a3659bc4c8958e93de34bd31ba3131ead14ccfb4b2cd60e52d" dependencies = [ "blst", "blstrs", @@ -1785,9 +1747,9 @@ dependencies = [ [[package]] name = "crate_crypto_internal_eth_kzg_erasure_codes" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abedcc3eb4d04655c53704a66880945f5a39c6d96b337f0ab4a086dda795c954" +checksum = "581d28bcc93eecd97a04cebc5293271e0f41650f03c102f24d6cd784cbedb9f2" dependencies = [ "crate_crypto_internal_eth_kzg_bls12_381", "crate_crypto_internal_eth_kzg_polynomial", @@ -1795,24 +1757,24 @@ dependencies = [ [[package]] name = "crate_crypto_internal_eth_kzg_maybe_rayon" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db089718921ca28d137ed8b1a7406f10e6bfbc61794a2339bcd9c99d5ddefc6" +checksum = "06fc0f984e585ea984a766c5b58d6bf6c51e463b0a0835b0dd4652d358b506b3" [[package]] name = "crate_crypto_internal_eth_kzg_polynomial" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "750e6dbe493d337d98502975137f055a52767021bcdb69aa8926ed8ee28c7980" +checksum = "56dff7a45e2d80308b21abdbc5520ec23c3ebfb3a94fafc02edfa7f356af6d7f" dependencies = [ "crate_crypto_internal_eth_kzg_bls12_381", ] [[package]] name = "crate_crypto_kzg_multi_open_fk20" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3337262f48c7fee2999cf23bb9cb693299211671fe46b593ac81fcb218de68b" +checksum = "1a0c2f82695a88809e713e1ff9534cb90ceffab0a08f4bd33245db711f9d356f" dependencies = [ "crate_crypto_internal_eth_kzg_bls12_381", "crate_crypto_internal_eth_kzg_maybe_rayon", @@ -1877,7 +1839,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -1889,7 +1851,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -1901,7 +1863,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "typenum", ] @@ -2343,7 +2305,7 @@ dependencies = [ "more-asserts", "multiaddr", "parking_lot", - "rand", + "rand 0.8.5", "smallvec", "socket2", "tokio", @@ -2482,7 +2444,7 @@ checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ "curve25519-dalek", "ed25519", - "rand_core", + "rand_core 0.6.4", "serde", "sha2 0.10.8", "subtle", @@ -2508,7 +2470,7 @@ dependencies = [ "ff 0.12.1", "generic-array", "group 0.12.1", - "rand_core", + "rand_core 0.6.4", "sec1 0.3.0", "subtle", "zeroize", @@ -2528,7 +2490,7 @@ dependencies = [ "group 0.13.0", "pem-rfc7468", "pkcs8 0.10.2", - "rand_core", + "rand_core 0.6.4", "sec1 0.7.3", "subtle", "zeroize", @@ -2556,7 +2518,7 @@ dependencies = [ "hex", "k256 0.13.3", "log", - "rand", + "rand 0.8.5", "serde", "sha3 0.10.8", "zeroize", @@ -2648,24 +2610,20 @@ dependencies = [ name = "eth2" version = "0.1.0" dependencies = [ - "account_utils", - "bytes", "derivative", + "either", "eth2_keystore", "ethereum_serde_utils", "ethereum_ssz", "ethereum_ssz_derive", "futures", "futures-util", - "libsecp256k1", "lighthouse_network", "mediatype", "pretty_reqwest_error", - "procfs", "proto_array", - "psutil", "reqwest 0.11.27", - "ring 0.16.20", + "reqwest-eventsource", "sensitive_url", "serde", "serde_json", @@ -2673,6 +2631,7 @@ dependencies = [ "ssz_types", "store", "types", + "zeroize", ] [[package]] @@ -2716,7 +2675,7 @@ dependencies = [ "hex", "hmac 0.11.0", "pbkdf2 0.8.0", - "rand", + "rand 0.8.5", "scrypt", "serde", "serde_json", @@ -2763,7 +2722,7 @@ version = "0.1.0" dependencies = [ "eth2_key_derivation", "eth2_keystore", - "rand", + "rand 0.8.5", "serde", "serde_json", "serde_repr", @@ -2782,7 +2741,7 @@ dependencies = [ "serde", "serde_json", "sha3 0.9.1", - "thiserror", + "thiserror 1.0.63", "uint 0.9.5", ] @@ -2799,7 +2758,7 @@ dependencies = [ "serde", "serde_json", "sha3 0.10.8", - "thiserror", + "thiserror 1.0.63", "uint 0.9.5", ] @@ -2923,13 +2882,13 @@ dependencies = [ "hex", "k256 0.11.6", "open-fastrlp", - "rand", + "rand 0.8.5", "rlp", "rlp-derive", "serde", "serde_json", "strum 0.24.1", - "thiserror", + "thiserror 1.0.63", "tiny-keccak", "unicode-xid", ] @@ -2961,6 +2920,17 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "eventsource-stream" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab" +dependencies = [ + "futures-core", + "nom", + "pin-project-lite", +] + [[package]] name = "execution_layer" version = "0.1.0" @@ -2990,7 +2960,7 @@ dependencies = [ "metrics", "parking_lot", "pretty_reqwest_error", - "rand", + "rand 0.8.5", "reqwest 0.11.27", "sensitive_url", "serde", @@ -3050,7 +3020,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e182f7dbc2ef73d9ef67351c5fbbea084729c48362d3ce9dd44c28e32e277fe5" dependencies = [ "libc", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -3059,7 +3029,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -3070,7 +3040,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ "bitvec 1.0.1", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -3111,7 +3081,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -3123,7 +3093,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -3327,17 +3297,6 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" -[[package]] -name = "futures-ticker" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9763058047f713632a52e916cc7f6a4b3fc6e9fc1ff8c5b1dc49e5a89041682e" -dependencies = [ - "futures", - "futures-timer", - "instant", -] - [[package]] name = "futures-timer" version = "3.0.3" @@ -3368,6 +3327,19 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" +[[package]] +name = "generator" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +dependencies = [ + "cfg-if", + "libc", + "log", + "rustversion", + "windows 0.58.0", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -3379,25 +3351,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "genesis" -version = "0.2.0" -dependencies = [ - "environment", - "eth1", - "ethereum_hashing", - "ethereum_ssz", - "futures", - "int_to_bytes", - "merkle_proof", - "rayon", - "slog", - "state_processing", - "tokio", - "tree_hash", - "types", -] - [[package]] name = "getrandom" version = "0.2.15" @@ -3407,10 +3360,22 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + [[package]] name = "ghash" version = "0.5.1" @@ -3465,16 +3430,15 @@ dependencies = [ "either", "fnv", "futures", - "futures-ticker", "futures-timer", - "getrandom", + "getrandom 0.2.15", "hashlink", "hex_fmt", "libp2p", "prometheus-client", "quick-protobuf", "quick-protobuf-codec", - "rand", + "rand 0.8.5", "regex", "sha2 0.10.8", "tracing", @@ -3499,7 +3463,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ "ff 0.12.1", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -3510,8 +3474,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff 0.13.0", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "rand_xorshift", "subtle", ] @@ -3535,6 +3499,25 @@ dependencies = [ "tracing", ] +[[package]] +name = "h2" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.7.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hash-db" version = "0.15.2" @@ -3615,6 +3598,16 @@ dependencies = [ "http 0.2.12", ] +[[package]] +name = "health_metrics" +version = "0.1.0" +dependencies = [ + "eth2", + "metrics", + "procfs", + "psutil", +] + [[package]] name = "heck" version = "0.4.1" @@ -3671,10 +3664,11 @@ checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" [[package]] name = "hickory-proto" -version = "0.24.1" +version = "0.25.0-alpha.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07698b8420e2f0d6447a436ba999ec85d8fbf2a398bbd737b82cac4a2e96e512" +checksum = "1d00147af6310f4392a31680db52a3ed45a2e0f68eb18e8c3fe5537ecc96d9e2" dependencies = [ + "async-recursion", "async-trait", "cfg-if", "data-encoding", @@ -3682,12 +3676,12 @@ dependencies = [ "futures-channel", "futures-io", "futures-util", - "idna 0.4.0", + "idna 1.0.3", "ipnet", "once_cell", - "rand", + "rand 0.9.0", "socket2", - "thiserror", + "thiserror 2.0.11", "tinyvec", "tokio", "tracing", @@ -3696,21 +3690,21 @@ dependencies = [ [[package]] name = "hickory-resolver" -version = "0.24.1" +version = "0.25.0-alpha.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28757f23aa75c98f254cf0405e6d8c25b831b32921b050a66692427679b1f243" +checksum = "5762f69ebdbd4ddb2e975cd24690bf21fe6b2604039189c26acddbc427f12887" dependencies = [ "cfg-if", "futures-util", "hickory-proto", "ipconfig", - "lru-cache", + "moka", "once_cell", "parking_lot", - "rand", + "rand 0.9.0", "resolv-conf", "smallvec", - "thiserror", + "thiserror 2.0.11", "tokio", "tracing", ] @@ -3862,7 +3856,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "httparse", @@ -3885,6 +3879,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", + "h2 0.4.8", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -3992,6 +3987,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -4000,9 +4113,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -4010,12 +4123,23 @@ dependencies = [ [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -4030,9 +4154,9 @@ dependencies = [ [[package]] name = "if-watch" -version = "3.2.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b0422c86d7ce0e97169cc42e04ae643caf278874a7a3c87b8150a220dc7e1e" +checksum = "cdf9d64cfcf380606e64f9a0bcf493616b65331199f984151a6fa11a7b3cde38" dependencies = [ "async-io", "core-foundation", @@ -4041,26 +4165,32 @@ dependencies = [ "if-addrs", "ipnet", "log", + "netlink-packet-core", + "netlink-packet-route", + "netlink-proto", + "netlink-sys", "rtnetlink", - "system-configuration", + "system-configuration 0.6.1", "tokio", - "windows", + "windows 0.51.1", ] [[package]] name = "igd-next" -version = "0.14.3" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "064d90fec10d541084e7b39ead8875a5a80d9114a2b18791565253bae25f49e4" +checksum = "76b0d7d4541def58a37bf8efc559683f21edce7c82f0d866c93ac21f7e098f93" dependencies = [ "async-trait", "attohttpc", "bytes", "futures", - "http 0.2.12", - "hyper 0.14.30", + "http 1.1.0", + "http-body-util", + "hyper 1.4.1", + "hyper-util", "log", - "rand", + "rand 0.8.5", "tokio", "url", "xmltree", @@ -4157,7 +4287,7 @@ dependencies = [ "lockfile", "metrics", "parking_lot", - "rand", + "rand 0.8.5", "reqwest 0.11.27", "safestake_operator", "serde", @@ -4170,6 +4300,7 @@ dependencies = [ "url", "validator_dir", "validator_metrics", + "zeroize", ] [[package]] @@ -4181,15 +4312,6 @@ 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 = "int_to_bytes" version = "0.2.0" @@ -4432,9 +4554,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.158" +version = "0.2.170" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" [[package]] name = "libflate" @@ -4488,20 +4610,20 @@ dependencies = [ "libc", "mdbx-sys", "parking_lot", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "libp2p" -version = "0.54.1" +version = "0.55.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbe80f9c7e00526cd6b838075b9c171919404a4732cb2fa8ece0a093223bfc4" +checksum = "b72dc443ddd0254cb49a794ed6b6728400ee446a0f7ab4a07d0209ee98de20e9" dependencies = [ "bytes", "either", "futures", "futures-timer", - "getrandom", + "getrandom 0.2.15", "libp2p-allow-block-list", "libp2p-connection-limits", "libp2p-core", @@ -4520,38 +4642,36 @@ dependencies = [ "multiaddr", "pin-project", "rw-stream-sink", - "thiserror", + "thiserror 2.0.11", ] [[package]] name = "libp2p-allow-block-list" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1027ccf8d70320ed77e984f273bc8ce952f623762cb9bf2d126df73caef8041" +checksum = "38944b7cb981cc93f2f0fb411ff82d0e983bd226fbcc8d559639a3a73236568b" dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm", - "void", ] [[package]] name = "libp2p-connection-limits" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d003540ee8baef0d254f7b6bfd79bac3ddf774662ca0abf69186d517ef82ad8" +checksum = "efe9323175a17caa8a2ed4feaf8a548eeef5e0b72d03840a0eab4bcb0210ce1c" dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm", - "void", ] [[package]] name = "libp2p-core" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a61f26c83ed111104cd820fe9bc3aaabbac5f1652a1d213ed6e900b7918a1298" +checksum = "193c75710ba43f7504ad8f58a62ca0615b1d7e572cb0f1780bc607252c39e9ef" dependencies = [ "either", "fnv", @@ -4565,21 +4685,19 @@ dependencies = [ "parking_lot", "pin-project", "quick-protobuf", - "rand", + "rand 0.8.5", "rw-stream-sink", - "smallvec", - "thiserror", + "thiserror 2.0.11", "tracing", "unsigned-varint 0.8.0", - "void", "web-time", ] [[package]] name = "libp2p-dns" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97f37f30d5c7275db282ecd86e54f29dd2176bd3ac656f06abf43bedb21eb8bd" +checksum = "1b780a1150214155b0ed1cdf09fbd2e1b0442604f9146a431d1b21d23eef7bd7" dependencies = [ "async-trait", "futures", @@ -4593,9 +4711,9 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.45.0" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1711b004a273be4f30202778856368683bd9a83c4c7dcc8f848847606831a4e3" +checksum = "e8c06862544f02d05d62780ff590cc25a75f5c2b9df38ec7a370dcae8bb873cf" dependencies = [ "asynchronous-codec", "either", @@ -4605,20 +4723,18 @@ dependencies = [ "libp2p-core", "libp2p-identity", "libp2p-swarm", - "lru", "quick-protobuf", "quick-protobuf-codec", "smallvec", - "thiserror", + "thiserror 2.0.11", "tracing", - "void", ] [[package]] name = "libp2p-identity" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cca1eb2bc1fd29f099f3daaab7effd01e1a54b7c577d0ed082521034d912e8" +checksum = "257b5621d159b32282eac446bed6670c39c7dc68a200a992d8f056afa0066f6d" dependencies = [ "asn1_der", "bs58", @@ -4628,41 +4744,38 @@ dependencies = [ "multihash", "p256", "quick-protobuf", - "rand", + "rand 0.8.5", "sec1 0.7.3", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.63", "tracing", - "void", "zeroize", ] [[package]] name = "libp2p-mdns" -version = "0.46.0" +version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b8546b6644032565eb29046b42744aee1e9f261ed99671b2c93fb140dba417" +checksum = "11d0ba095e1175d797540e16b62e7576846b883cb5046d4159086837b36846cc" dependencies = [ - "data-encoding", "futures", "hickory-proto", "if-watch", "libp2p-core", "libp2p-identity", "libp2p-swarm", - "rand", + "rand 0.8.5", "smallvec", "socket2", "tokio", "tracing", - "void", ] [[package]] name = "libp2p-metrics" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ebafa94a717c8442d8db8d3ae5d1c6a15e30f2d347e0cd31d057ca72e42566" +checksum = "2ce58c64292e87af624fcb86465e7dd8342e46a388d71e8fec0ab37ee789630a" dependencies = [ "futures", "libp2p-core", @@ -4676,9 +4789,9 @@ dependencies = [ [[package]] name = "libp2p-mplex" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41187ab8f6c835ad864edf94224f666f636ee2d270601422c1441f739e0abccc" +checksum = "8aaa6fee3722e355443058472fc4705d78681bc2d8e447a0bdeb3fecf40cd197" dependencies = [ "asynchronous-codec", "bytes", @@ -4687,7 +4800,7 @@ dependencies = [ "libp2p-identity", "nohash-hasher", "parking_lot", - "rand", + "rand 0.8.5", "smallvec", "tracing", "unsigned-varint 0.8.0", @@ -4695,13 +4808,12 @@ dependencies = [ [[package]] name = "libp2p-noise" -version = "0.45.0" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36b137cb1ae86ee39f8e5d6245a296518912014eaa87427d24e6ff58cfc1b28c" +checksum = "afcc133e0f3cea07acde6eb8a9665cb11b600bd61110b010593a0210b8153b16" dependencies = [ "asynchronous-codec", "bytes", - "curve25519-dalek", "futures", "libp2p-core", "libp2p-identity", @@ -4709,11 +4821,10 @@ dependencies = [ "multihash", "once_cell", "quick-protobuf", - "rand", - "sha2 0.10.8", + "rand 0.8.5", "snow", "static_assertions", - "thiserror", + "thiserror 2.0.11", "tracing", "x25519-dalek", "zeroize", @@ -4721,9 +4832,9 @@ dependencies = [ [[package]] name = "libp2p-plaintext" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63d926c6be56a2489e0e7316b17fe95a70bc5c4f3e85740bb3e67c0f3c6a44" +checksum = "7e659439578fc6d305da8303834beb9d62f155f40e7f5b9d81c9f2b2c69d1926" dependencies = [ "asynchronous-codec", "bytes", @@ -4737,33 +4848,31 @@ dependencies = [ [[package]] name = "libp2p-quic" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46352ac5cd040c70e88e7ff8257a2ae2f891a4076abad2c439584a31c15fd24e" +checksum = "41432a159b00424a0abaa2c80d786cddff81055ac24aa127e0cf375f7858d880" dependencies = [ - "bytes", "futures", "futures-timer", "if-watch", "libp2p-core", "libp2p-identity", "libp2p-tls", - "parking_lot", "quinn", - "rand", + "rand 0.8.5", "ring 0.17.8", "rustls 0.23.12", "socket2", - "thiserror", + "thiserror 2.0.11", "tokio", "tracing", ] [[package]] name = "libp2p-swarm" -version = "0.45.1" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7dd6741793d2c1fb2088f67f82cf07261f25272ebe3c0b0c311e0c6b50e851a" +checksum = "803399b4b6f68adb85e63ab573ac568154b193e9a640f03e0f2890eabbcb37f8" dependencies = [ "either", "fnv", @@ -4775,11 +4884,10 @@ dependencies = [ "lru", "multistream-select", "once_cell", - "rand", + "rand 0.8.5", "smallvec", "tokio", "tracing", - "void", "web-time", ] @@ -4797,16 +4905,15 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.42.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad964f312c59dcfcac840acd8c555de8403e295d39edf96f5240048b5fcaa314" +checksum = "65346fb4d36035b23fec4e7be4c320436ba53537ce9b6be1d1db1f70c905cad0" dependencies = [ "futures", "futures-timer", "if-watch", "libc", "libp2p-core", - "libp2p-identity", "socket2", "tokio", "tracing", @@ -4814,9 +4921,9 @@ dependencies = [ [[package]] name = "libp2p-tls" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b23dddc2b9c355f73c1e36eb0c3ae86f7dc964a3715f0731cfad352db4d847" +checksum = "dcaebc1069dea12c5b86a597eaaddae0317c2c2cb9ec99dc94f82fd340f5c78b" dependencies = [ "futures", "futures-rustls", @@ -4826,16 +4933,16 @@ dependencies = [ "ring 0.17.8", "rustls 0.23.12", "rustls-webpki 0.101.7", - "thiserror", + "thiserror 2.0.11", "x509-parser", "yasna", ] [[package]] name = "libp2p-upnp" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01bf2d1b772bd3abca049214a3304615e6a36fa6ffc742bdd1ba774486200b8f" +checksum = "d457b9ecceb66e7199f049926fad447f1f17f040e8d29d690c086b4cab8ed14a" dependencies = [ "futures", "futures-timer", @@ -4844,19 +4951,18 @@ dependencies = [ "libp2p-swarm", "tokio", "tracing", - "void", ] [[package]] name = "libp2p-yamux" -version = "0.46.0" +version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "788b61c80789dba9760d8c669a5bedb642c8267555c803fabd8396e4ca5c5882" +checksum = "f15df094914eb4af272acf9adaa9e287baa269943f32ea348ba29cfb9bfc60d8" dependencies = [ "either", "futures", "libp2p-core", - "thiserror", + "thiserror 2.0.11", "tracing", "yamux 0.12.1", "yamux 0.13.3", @@ -4885,7 +4991,7 @@ dependencies = [ "libsecp256k1-core", "libsecp256k1-gen-ecmult", "libsecp256k1-gen-genmult", - "rand", + "rand 0.8.5", "serde", "sha2 0.9.9", "typenum", @@ -4964,12 +5070,13 @@ dependencies = [ "libp2p", "libp2p-mplex", "lighthouse_version", + "local-ip-address", "lru", "lru_cache", "metrics", "parking_lot", "prometheus-client", - "rand", + "rand 0.8.5", "regex", "serde", "sha2 0.9.9", @@ -4998,12 +5105,6 @@ dependencies = [ "target_info", ] -[[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.1.4" @@ -5016,6 +5117,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "lmdb-rkv" version = "0.14.0" @@ -5037,6 +5144,18 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "local-ip-address" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3669cf5561f8d27e8fc84cc15e58350e70f557d4d65f70e3154e54cd2f8e1782" +dependencies = [ + "libc", + "neli", + "thiserror 1.0.63", + "windows-sys 0.59.0", +] + [[package]] name = "lock_api" version = "0.4.12" @@ -5082,21 +5201,25 @@ dependencies = [ ] [[package]] -name = "lru" -version = "0.12.4" +name = "loom" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" dependencies = [ - "hashbrown 0.14.5", + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", ] [[package]] -name = "lru-cache" -version = "0.1.2" +name = "lru" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ - "linked-hash-map", + "hashbrown 0.14.5", ] [[package]] @@ -5296,7 +5419,7 @@ checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ "hermit-abi 0.3.9", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -5306,11 +5429,31 @@ version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "592c78f17df28dccd503346e70270d33247345ab21a44ba526e10f50d56dcdf4" +[[package]] +name = "moka" +version = "0.12.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +dependencies = [ + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "loom", + "parking_lot", + "portable-atomic", + "rustc_version 0.4.0", + "smallvec", + "tagptr", + "thiserror 1.0.63", + "uuid 1.11.0", +] + [[package]] name = "monitoring_api" version = "0.1.0" dependencies = [ "eth2", + "health_metrics", "lighthouse_version", "metrics", "regex", @@ -5407,23 +5550,47 @@ dependencies = [ "tempfile", ] +[[package]] +name = "neli" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93062a0dce6da2517ea35f301dfc88184ce18d3601ec786a727a87bf535deca9" +dependencies = [ + "byteorder", + "libc", + "log", + "neli-proc-macros", +] + +[[package]] +name = "neli-proc-macros" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8034b7fbb6f9455b2a96c19e6edf8dc9fc34c70449938d8ee3b4df363f61fe" +dependencies = [ + "either", + "proc-macro2", + "quote", + "serde", + "syn 1.0.109", +] + [[package]] name = "netlink-packet-core" -version = "0.4.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345b8ab5bd4e71a2986663e88c56856699d060e78e152e6e9d7966fcd5491297" +checksum = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4" dependencies = [ "anyhow", "byteorder", - "libc", "netlink-packet-utils", ] [[package]] name = "netlink-packet-route" -version = "0.12.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9ea4302b9759a7a88242299225ea3688e63c85ea136371bb6cf94fd674efaab" +checksum = "053998cea5a306971f88580d0829e90f270f940befd7cf928da179d4187a5a66" dependencies = [ "anyhow", "bitflags 1.3.2", @@ -5442,22 +5609,21 @@ dependencies = [ "anyhow", "byteorder", "paste", - "thiserror", + "thiserror 1.0.63", ] [[package]] name = "netlink-proto" -version = "0.10.0" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65b4b14489ab424703c092062176d52ba55485a89c076b4f9db05092b7223aa6" +checksum = "72452e012c2f8d612410d89eea01e2d9b56205274abb35d53f60200b2ec41d60" dependencies = [ "bytes", "futures", "log", "netlink-packet-core", "netlink-sys", - "thiserror", - "tokio", + "thiserror 2.0.11", ] [[package]] @@ -5484,6 +5650,17 @@ dependencies = [ "libc", ] +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", +] + [[package]] name = "nix" version = "0.29.0" @@ -5539,7 +5716,7 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -5554,7 +5731,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand", + "rand 0.8.5", "serde", "smallvec", "zeroize", @@ -5646,16 +5823,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "oneshot_broadcast" -version = "0.1.0" -dependencies = [ - "parking_lot", -] +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "opaque-debug" @@ -5738,27 +5908,8 @@ dependencies = [ "cc", "libc", "openssl-src", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "operation_pool" -version = "0.2.0" -dependencies = [ - "bitvec 1.0.1", - "derivative", - "ethereum_ssz", - "ethereum_ssz_derive", - "itertools 0.10.5", - "metrics", - "parking_lot", - "rand", - "rayon", - "serde", - "state_processing", - "store", - "types", + "pkg-config", + "vcpkg", ] [[package]] @@ -5876,7 +6027,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -5939,7 +6090,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.63", "ucd-trie", ] @@ -6055,6 +6206,12 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "portable-atomic" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" + [[package]] name = "powerfmt" version = "0.2.0" @@ -6067,7 +6224,7 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -6130,7 +6287,7 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ - "thiserror", + "thiserror 1.0.63", "toml", ] @@ -6201,7 +6358,7 @@ dependencies = [ "memchr", "parking_lot", "protobuf", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -6238,8 +6395,8 @@ dependencies = [ "bitflags 2.6.0", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax 0.8.4", "rusty-fork", @@ -6345,7 +6502,7 @@ dependencies = [ "num_cpus", "once_cell", "platforms", - "thiserror", + "thiserror 1.0.63", "unescape", ] @@ -6373,15 +6530,15 @@ dependencies = [ "asynchronous-codec", "bytes", "quick-protobuf", - "thiserror", + "thiserror 1.0.63", "unsigned-varint 0.8.0", ] [[package]] name = "quinn" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" dependencies = [ "bytes", "futures-io", @@ -6391,26 +6548,29 @@ dependencies = [ "rustc-hash 2.0.0", "rustls 0.23.12", "socket2", - "thiserror", + "thiserror 2.0.11", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.6" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", - "rand", + "getrandom 0.2.15", + "rand 0.8.5", "ring 0.17.8", "rustc-hash 2.0.0", "rustls 0.23.12", + "rustls-pki-types", "slab", - "thiserror", + "thiserror 2.0.11", "tinyvec", "tracing", + "web-time", ] [[package]] @@ -6476,11 +6636,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", "serde", ] +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.2", + "zerocopy 0.8.20", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -6488,7 +6659,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.2", ] [[package]] @@ -6497,7 +6678,17 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a509b1a2ffbe92afab0e55c8fd99dea1c280e8171bd2d88682bb20bc41cbc2c" +dependencies = [ + "getrandom 0.3.1", + "zerocopy 0.8.20", ] [[package]] @@ -6506,7 +6697,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -6565,9 +6756,9 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -6625,7 +6816,7 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.30", @@ -6645,7 +6836,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 0.1.2", - "system-configuration", + "system-configuration 0.5.1", "tokio", "tokio-native-tls", "tokio-rustls 0.24.1", @@ -6699,6 +6890,22 @@ dependencies = [ "windows-registry", ] +[[package]] +name = "reqwest-eventsource" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f529a5ff327743addc322af460761dff5b50e0c826b9e6ac44c3195c50bb2026" +dependencies = [ + "eventsource-stream", + "futures-core", + "futures-timer", + "mime", + "nom", + "pin-project-lite", + "reqwest 0.11.27", + "thiserror 1.0.63", +] + [[package]] name = "resolv-conf" version = "0.7.0" @@ -6753,7 +6960,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "spin 0.9.8", "untrusted 0.9.0", @@ -6808,16 +7015,19 @@ dependencies = [ [[package]] name = "rtnetlink" -version = "0.10.1" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0" +checksum = "7a552eb82d19f38c3beed3f786bd23aa434ceb9ac43ab44419ca6d67a7e186c0" dependencies = [ "futures", "log", + "netlink-packet-core", "netlink-packet-route", + "netlink-packet-utils", "netlink-proto", - "nix 0.24.3", - "thiserror", + "netlink-sys", + "nix 0.26.4", + "thiserror 1.0.63", "tokio", ] @@ -6838,7 +7048,7 @@ dependencies = [ "parity-scale-codec 3.6.12", "primitive-types 0.12.2", "proptest", - "rand", + "rand 0.8.5", "rlp", "ruint-macro", "serde", @@ -6868,9 +7078,9 @@ dependencies = [ [[package]] name = "rust_eth_kzg" -version = "0.5.1" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3291fd0d9c629a56537d74bbc1e7bcaf5be610f2f7b55af85c4fea843c6aeca3" +checksum = "3f83b5559e1dcd3f7721838909288faf4500fb466eff98eac99b67ac04335b93" dependencies = [ "crate_crypto_internal_eth_kzg_bls12_381", "crate_crypto_internal_eth_kzg_erasure_codes", @@ -7022,6 +7232,9 @@ name = "rustls-pki-types" version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +dependencies = [ + "web-time", +] [[package]] name = "rustls-webpki" @@ -7103,7 +7316,7 @@ dependencies = [ "miracl_core", "num-bigint", "num-traits", - "rand", + "rand 0.8.5", "secp256k1", "serde", "serde_json", @@ -7150,7 +7363,7 @@ dependencies = [ "lazy_static", "parking_lot", "prost", - "rand", + "rand 0.8.5", "reqwest 0.11.27", "safestake_crypto", "serde", @@ -7192,7 +7405,7 @@ dependencies = [ "keccak-hash", "lighthouse_network", "parking_lot", - "rand", + "rand 0.8.5", "reqwest 0.11.27", "safe_arith", "safestake_crypto", @@ -7210,9 +7423,11 @@ dependencies = [ "task_executor", "tokio", "tonic", + "tree_hash", "types", "validator_dir", "validator_http_api", + "validator_manager", "validator_store", "warp_utils", ] @@ -7348,7 +7563,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" dependencies = [ "bitcoin_hashes", - "rand", + "rand 0.8.5", "secp256k1-sys", ] @@ -7605,7 +7820,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -7615,7 +7830,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -7648,7 +7863,7 @@ checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ "num-bigint", "num-traits", - "thiserror", + "thiserror 1.0.63", "time", ] @@ -7678,7 +7893,7 @@ dependencies = [ "lru", "metrics", "parking_lot", - "rand", + "rand 0.8.5", "redb", "safe_arith", "serde", @@ -7842,7 +8057,7 @@ dependencies = [ "blake2", "chacha20poly1305", "curve25519-dalek", - "rand_core", + "rand_core 0.6.4", "ring 0.17.8", "rustc_version 0.4.0", "sha2 0.10.8", @@ -7930,7 +8145,7 @@ dependencies = [ "itertools 0.10.5", "merkle_proof", "metrics", - "rand", + "rand 0.8.5", "rayon", "safe_arith", "smallvec", @@ -8142,7 +8357,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]] @@ -8155,6 +8381,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 = "system_health" version = "0.1.0" @@ -8166,6 +8402,12 @@ dependencies = [ "types", ] +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + [[package]] name = "take_mut" version = "0.2.2" @@ -8245,7 +8487,16 @@ version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.63", +] + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", ] [[package]] @@ -8259,6 +8510,17 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -8350,10 +8612,10 @@ dependencies = [ "hmac 0.12.1", "once_cell", "pbkdf2 0.11.0", - "rand", + "rand 0.8.5", "rustc-hash 1.1.0", "sha2 0.10.8", - "thiserror", + "thiserror 1.0.63", "unicode-normalization", "wasm-bindgen", "zeroize", @@ -8368,6 +8630,16 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -8516,7 +8788,7 @@ dependencies = [ "axum", "base64 0.21.7", "bytes", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.30", @@ -8556,7 +8828,7 @@ dependencies = [ "indexmap 1.9.3", "pin-project", "pin-project-lite", - "rand", + "rand 0.8.5", "slab", "tokio", "tokio-util", @@ -8593,9 +8865,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -8610,16 +8882,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", - "thiserror", + "thiserror 1.0.63", "time", "tracing-subscriber", ] [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", @@ -8628,9 +8900,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -8766,7 +9038,7 @@ dependencies = [ "metastruct", "milhouse", "parking_lot", - "rand", + "rand 0.8.5", "rand_xorshift", "rayon", "regex", @@ -8929,6 +9201,18 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -8941,7 +9225,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.15", "serde", ] @@ -8951,8 +9235,8 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ - "getrandom", - "rand", + "getrandom 0.2.15", + "rand 0.8.5", ] [[package]] @@ -9003,13 +9287,12 @@ dependencies = [ "bls", "deposit_contract", "derivative", - "directory", "eth2_keystore", "eth2_keystore_share", "filesystem", "hex", "lockfile", - "rand", + "rand 0.8.5", "tree_hash", "types", ] @@ -9022,17 +9305,20 @@ dependencies = [ "beacon_node_fallback", "bls", "deposit_contract", + "directory", + "dirs", "doppelganger_service", "eth2", "eth2_keystore", "ethereum_serde_utils", "filesystem", "graffiti_file", + "health_metrics", "initialized_validators", "lighthouse_version", "logging", "parking_lot", - "rand", + "rand 0.8.5", "sensitive_url", "serde", "signing_method", @@ -9052,12 +9338,14 @@ dependencies = [ "validator_store", "warp", "warp_utils", + "zeroize", ] [[package]] name = "validator_http_metrics" version = "0.1.0" dependencies = [ + "health_metrics", "lighthouse_version", "malloc_utils", "metrics", @@ -9073,6 +9361,28 @@ dependencies = [ "warp_utils", ] +[[package]] +name = "validator_manager" +version = "0.1.0" +dependencies = [ + "account_utils", + "clap", + "clap_utils", + "derivative", + "environment", + "eth2", + "eth2_network_config", + "eth2_wallet", + "ethereum_serde_utils", + "hex", + "serde", + "serde_json", + "tokio", + "tree_hash", + "types", + "zeroize", +] + [[package]] name = "validator_metrics" version = "0.1.0" @@ -9087,6 +9397,7 @@ dependencies = [ "beacon_node_fallback", "bls", "doppelganger_service", + "either", "environment", "eth2", "futures", @@ -9206,7 +9517,6 @@ dependencies = [ name = "warp_utils" version = "0.1.0" dependencies = [ - "beacon_chain", "bytes", "eth2", "headers", @@ -9215,7 +9525,6 @@ dependencies = [ "serde", "serde_array_query", "serde_json", - "state_processing", "tokio", "types", "warp", @@ -9227,6 +9536,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.93" @@ -9403,6 +9721,16 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-acl" version = "0.3.0" @@ -9433,6 +9761,41 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "windows-registry" version = "0.2.0" @@ -9705,6 +10068,27 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.2.0" @@ -9727,7 +10111,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ "curve25519-dalek", - "rand_core", + "rand_core 0.6.4", "serde", "zeroize", ] @@ -9745,7 +10129,7 @@ dependencies = [ "nom", "oid-registry", "rusticata-macros", - "thiserror", + "thiserror 1.0.63", "time", ] @@ -9760,7 +10144,7 @@ dependencies = [ "futures-util", "libc", "log", - "rand", + "rand 0.8.5", ] [[package]] @@ -9789,7 +10173,7 @@ dependencies = [ "nohash-hasher", "parking_lot", "pin-project", - "rand", + "rand 0.8.5", "static_assertions", ] @@ -9804,7 +10188,7 @@ dependencies = [ "nohash-hasher", "parking_lot", "pin-project", - "rand", + "rand 0.8.5", "static_assertions", "web-time", ] @@ -9818,6 +10202,30 @@ dependencies = [ "time", ] +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -9825,7 +10233,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde3bb8c68a8f3f1ed4ac9221aad6b10cece3e60a8e2ea54a6a2dec806d0084c" +dependencies = [ + "zerocopy-derive 0.8.20", ] [[package]] @@ -9839,12 +10256,45 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eea57037071898bf96a6da35fd626f4f27e9cee3ead2a6c703cf09d472b2e700" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + [[package]] name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" dependencies = [ + "serde", "zeroize_derive", ] @@ -9859,6 +10309,28 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "zip" version = "0.6.6" diff --git a/lighthouse b/lighthouse index b4183fac..796bbc06 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit b4183face18b1795586856e06d9796e9a35eda94 +Subproject commit 796bbc060f0a524a871491114a03ce895fb1a8ff diff --git a/src/boot_node/Cargo.lock b/src/boot_node/Cargo.lock index e3b1fca4..c02b5281 100644 --- a/src/boot_node/Cargo.lock +++ b/src/boot_node/Cargo.lock @@ -2,27 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "account_utils" -version = "0.1.0" -dependencies = [ - "directory", - "eth2_keystore", - "eth2_keystore_share", - "eth2_wallet", - "filesystem", - "rand", - "regex", - "rpassword", - "safestake_crypto", - "serde", - "serde_yaml", - "slog", - "types", - "validator_dir", - "zeroize", -] - [[package]] name = "addr2line" version = "0.24.2" @@ -54,19 +33,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "aes" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" -dependencies = [ - "cfg-if", - "cipher 0.3.0", - "cpufeatures", - "ctr 0.8.0", - "opaque-debug", -] - [[package]] name = "aes" version = "0.8.4" @@ -74,7 +40,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", - "cipher 0.4.4", + "cipher", "cpufeatures", ] @@ -85,9 +51,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ "aead", - "aes 0.8.4", - "cipher 0.4.4", - "ctr 0.9.2", + "aes", + "cipher", + "ctr", "ghash", "subtle", ] @@ -147,7 +113,7 @@ dependencies = [ "ruint", "rustc-hash 2.1.0", "serde", - "sha3 0.10.8", + "sha3", "tiny-keccak", ] @@ -740,28 +706,16 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" -[[package]] -name = "bitvec" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" -dependencies = [ - "funty 1.1.0", - "radium 0.6.2", - "tap", - "wyz 0.2.0", -] - [[package]] name = "bitvec" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ - "funty 2.0.0", - "radium 0.7.0", + "funty", + "radium", "tap", - "wyz 0.5.1", + "wyz", ] [[package]] @@ -779,7 +733,6 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "block-padding", "generic-array", ] @@ -792,12 +745,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - [[package]] name = "bls" version = "0.2.0" @@ -855,10 +802,11 @@ dependencies = [ "directory", "dirs", "dvf_utils", + "hex", "lighthouse_network", "prost", "safestake_crypto", - "safestake_operator", + "safestake_database", "serde", "slashing_protection", "slog", @@ -977,7 +925,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ "cfg-if", - "cipher 0.4.4", + "cipher", "cpufeatures", ] @@ -989,7 +937,7 @@ checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" dependencies = [ "aead", "chacha20", - "cipher 0.4.4", + "cipher", "poly1305", "zeroize", ] @@ -1002,21 +950,10 @@ checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", - "js-sys", "num-traits", - "wasm-bindgen", "windows-targets 0.52.6", ] -[[package]] -name = "cipher" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" -dependencies = [ - "generic-array", -] - [[package]] name = "cipher" version = "0.4.4" @@ -1328,32 +1265,13 @@ dependencies = [ "subtle", ] -[[package]] -name = "crypto-mac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" -dependencies = [ - "generic-array", - "subtle", -] - -[[package]] -name = "ctr" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" -dependencies = [ - "cipher 0.3.0", -] - [[package]] name = "ctr" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ - "cipher 0.4.4", + "cipher", ] [[package]] @@ -1502,20 +1420,6 @@ dependencies = [ "tokio-util", ] -[[package]] -name = "deposit_contract" -version = "0.2.0" -dependencies = [ - "ethabi", - "ethereum_ssz", - "hex", - "reqwest", - "serde_json", - "sha2 0.9.9", - "tree_hash", - "types", -] - [[package]] name = "der" version = "0.7.9" @@ -1620,6 +1524,7 @@ version = "0.1.0" dependencies = [ "clap", "clap_utils", + "dvf_utils", "eth2_network_config", ] @@ -1670,16 +1575,16 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "898d136ecb64116ec68aecf14d889bd30f8b1fe0c19e262953f7388dbe77052e" dependencies = [ - "aes 0.8.4", + "aes", "aes-gcm", "alloy-rlp", "arrayvec", - "ctr 0.9.2", + "ctr", "delay_map", "enr", "fnv", "futures", - "hashlink 0.9.1", + "hashlink", "hex", "hkdf", "lazy_static", @@ -1810,7 +1715,7 @@ dependencies = [ "log", "rand", "serde", - "sha3 0.10.8", + "sha3", "zeroize", ] @@ -1871,48 +1776,6 @@ dependencies = [ "serde_yaml", ] -[[package]] -name = "eth2_key_derivation" -version = "0.1.0" -dependencies = [ - "bls", - "num-bigint-dig", - "ring 0.16.20", - "sha2 0.9.9", - "zeroize", -] - -[[package]] -name = "eth2_keystore" -version = "0.1.0" -dependencies = [ - "aes 0.7.5", - "bls", - "eth2_key_derivation", - "hex", - "hmac 0.11.0", - "pbkdf2 0.8.0", - "rand", - "scrypt", - "serde", - "serde_json", - "serde_repr", - "sha2 0.9.9", - "unicode-normalization", - "uuid", - "zeroize", -] - -[[package]] -name = "eth2_keystore_share" -version = "0.1.0" -dependencies = [ - "bls", - "eth2_keystore", - "serde", - "serde_json", -] - [[package]] name = "eth2_network_config" version = "0.2.0" @@ -1933,62 +1796,6 @@ dependencies = [ "zip", ] -[[package]] -name = "eth2_wallet" -version = "0.1.0" -dependencies = [ - "eth2_key_derivation", - "eth2_keystore", - "rand", - "serde", - "serde_json", - "serde_repr", - "tiny-bip39", - "uuid", -] - -[[package]] -name = "ethabi" -version = "16.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c98847055d934070b90e806e12d3936b787d0a115068981c1d8dfd5dfef5a5" -dependencies = [ - "ethereum-types", - "hex", - "serde", - "serde_json", - "sha3 0.9.1", - "thiserror 1.0.69", - "uint 0.9.5", -] - -[[package]] -name = "ethbloom" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb684ac8fa8f6c5759f788862bb22ec6fe3cb392f6bfd08e3c64b603661e3f8" -dependencies = [ - "crunchy", - "fixed-hash 0.7.0", - "impl-rlp", - "impl-serde", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05136f7057fe789f06e6d41d07b34e6f70d8c86e5693b60f97aaa6553553bdaf" -dependencies = [ - "ethbloom", - "fixed-hash 0.7.0", - "impl-rlp", - "impl-serde", - "primitive-types 0.10.1", - "uint 0.9.5", -] - [[package]] name = "ethereum_hashing" version = "0.7.0" @@ -2065,9 +1872,9 @@ dependencies = [ [[package]] name = "fallible-iterator" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fallible-streaming-iterator" @@ -2098,7 +1905,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "bitvec 1.0.1", + "bitvec", "rand_core", "subtle", ] @@ -2133,18 +1940,6 @@ dependencies = [ "windows-acl", ] -[[package]] -name = "fixed-hash" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" -dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", -] - [[package]] name = "fixed-hash" version = "0.8.0" @@ -2217,22 +2012,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "funty" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" - [[package]] name = "funty" version = "2.0.0" @@ -2458,7 +2237,7 @@ dependencies = [ "futures-ticker", "futures-timer", "getrandom", - "hashlink 0.9.1", + "hashlink", "hex_fmt", "libp2p", "prometheus-client", @@ -2532,15 +2311,6 @@ dependencies = [ "serde", ] -[[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 = "hashlink" version = "0.9.1" @@ -2665,17 +2435,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "crypto-mac 0.8.0", - "digest 0.9.0", -] - -[[package]] -name = "hmac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" -dependencies = [ - "crypto-mac 0.11.0", + "crypto-mac", "digest 0.9.0", ] @@ -3046,40 +2806,13 @@ dependencies = [ "xmltree", ] -[[package]] -name = "impl-codec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" -dependencies = [ - "parity-scale-codec 2.3.1", -] - [[package]] name = "impl-codec" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ - "parity-scale-codec 3.6.12", -] - -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" -dependencies = [ - "serde", + "parity-scale-codec", ] [[package]] @@ -3260,16 +2993,6 @@ dependencies = [ "sha3-asm", ] -[[package]] -name = "keccak-hash" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b286e6b663fb926e1eeb68528e69cb70ed46c6d65871a21b2215ae8154c6d3c" -dependencies = [ - "primitive-types 0.12.2", - "tiny-keccak", -] - [[package]] name = "kzg" version = "0.1.0" @@ -3293,9 +3016,6 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin 0.9.8", -] [[package]] name = "lazycell" @@ -3802,9 +3522,9 @@ dependencies = [ [[package]] name = "libsqlite3-sys" -version = "0.25.2" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f835d03d717946d28b1d1ed632eb6f0e24a299388ee623d0c23118d3e8a7fa" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" dependencies = [ "cc", "pkg-config", @@ -3895,13 +3615,6 @@ dependencies = [ "scopeguard", ] -[[package]] -name = "lockfile" -version = "0.1.0" -dependencies = [ - "fs2", -] - [[package]] name = "log" version = "0.4.22" @@ -4293,24 +4006,6 @@ dependencies = [ "rand", ] -[[package]] -name = "num-bigint-dig" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" -dependencies = [ - "byteorder", - "lazy_static", - "libm", - "num-integer", - "num-iter", - "num-traits", - "rand", - "serde", - "smallvec", - "zeroize", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -4326,17 +4021,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-traits" version = "0.2.19" @@ -4468,20 +4152,6 @@ dependencies = [ "group", ] -[[package]] -name = "parity-scale-codec" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" -dependencies = [ - "arrayvec", - "bitvec 0.20.4", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive 2.3.1", - "serde", -] - [[package]] name = "parity-scale-codec" version = "3.6.12" @@ -4489,32 +4159,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" dependencies = [ "arrayvec", - "bitvec 1.0.1", + "bitvec", "byte-slice-cast", "impl-trait-for-tuples", - "parity-scale-codec-derive 3.6.12", + "parity-scale-codec-derive", "serde", ] -[[package]] -name = "parity-scale-codec-derive" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "parity-scale-codec-derive" version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate", "proc-macro2", "quote", "syn 1.0.109", @@ -4566,15 +4224,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" -[[package]] -name = "pbkdf2" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" -dependencies = [ - "crypto-mac 0.11.0", -] - [[package]] name = "pbkdf2" version = "0.11.0" @@ -4761,47 +4410,24 @@ dependencies = [ "elliptic-curve", ] -[[package]] -name = "primitive-types" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" -dependencies = [ - "fixed-hash 0.7.0", - "impl-codec 0.5.1", - "impl-rlp", - "impl-serde", - "uint 0.9.5", -] - [[package]] name = "primitive-types" version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ - "fixed-hash 0.8.0", - "impl-codec 0.6.0", + "fixed-hash", + "impl-codec", "uint 0.9.5", ] -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - [[package]] name = "proc-macro-crate" version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.22.22", + "toml_edit", ] [[package]] @@ -5044,20 +4670,15 @@ dependencies = [ [[package]] name = "r2d2_sqlite" -version = "0.21.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f5d0337e99cd5cacd91ffc326c6cc9d8078def459df560c4f9bf9ba4a51034" +checksum = "eb14dba8247a6a15b7fdbc7d389e2e6f03ee9f184f87117706d509c092dfe846" dependencies = [ "r2d2", "rusqlite", + "uuid", ] -[[package]] -name = "radium" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" - [[package]] name = "radium" version = "0.7.0" @@ -5312,16 +4933,6 @@ dependencies = [ "rustc-hex", ] -[[package]] -name = "rpassword" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efb" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "rpds" version = "0.11.0" @@ -5363,8 +4974,8 @@ dependencies = [ "fastrlp", "num-bigint", "num-traits", - "parity-scale-codec 3.6.12", - "primitive-types 0.12.2", + "parity-scale-codec", + "primitive-types", "proptest", "rand", "rlp", @@ -5382,14 +4993,14 @@ checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] name = "rusqlite" -version = "0.28.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a" +checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "fallible-iterator", "fallible-streaming-iterator", - "hashlink 0.8.4", + "hashlink", "libsqlite3-sys", "smallvec", ] @@ -5582,11 +5193,15 @@ version = "0.1.0" dependencies = [ "aes-gcm", "array-init", + "async-trait", "base64 0.22.1", + "bincode", "bls", "blst", "bytes", "dvf_utils", + "ethereum_hashing", + "futures", "hex", "lazy_static", "miracl_core", @@ -5598,53 +5213,27 @@ dependencies = [ "serde_json", "sha256", "slog", + "tokio", + "tokio-util", "types", ] [[package]] -name = "safestake_operator" +name = "safestake_database" version = "0.1.0" dependencies = [ - "account_utils", "alloy-primitives", - "async-trait", - "bincode", "bls", - "chrono", - "dvf_utils", "filesystem", - "futures", - "hex", - "keccak-hash", - "lazy_static", - "prost", "r2d2", "r2d2_sqlite", - "reqwest", "rusqlite", "safestake_crypto", "serde", "serde_json", "serde_yaml", "slashing_protection", - "slog", - "store", - "task_executor", - "tokio", - "tonic", - "tonic-build", "types", - "url", - "validator_metrics", -] - -[[package]] -name = "salsa20" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0" -dependencies = [ - "cipher 0.3.0", ] [[package]] @@ -5671,18 +5260,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "scrypt" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879588d8f90906e73302547e20fffefdd240eb3e0e744e142321f5d49dea0518" -dependencies = [ - "hmac 0.11.0", - "pbkdf2 0.8.0", - "salsa20", - "sha2 0.9.9", -] - [[package]] name = "sct" version = "0.7.1" @@ -5814,17 +5391,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_repr" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -5898,18 +5464,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "sha3" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "keccak", - "opaque-debug", -] - [[package]] name = "sha3" version = "0.10.8" @@ -6545,25 +6099,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "tiny-bip39" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" -dependencies = [ - "anyhow", - "hmac 0.12.1", - "once_cell", - "pbkdf2 0.11.0", - "rand", - "rustc-hash 1.1.0", - "sha2 0.10.8", - "thiserror 1.0.69", - "unicode-normalization", - "wasm-bindgen", - "zeroize", -] - [[package]] name = "tiny-keccak" version = "2.0.2" @@ -6688,17 +6223,6 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.7.0", - "toml_datetime", - "winnow 0.5.40", -] - [[package]] name = "toml_edit" version = "0.22.22" @@ -6707,7 +6231,7 @@ checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap 2.7.0", "toml_datetime", - "winnow 0.6.20", + "winnow", ] [[package]] @@ -7115,37 +6639,12 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "0.8.2" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" dependencies = [ "getrandom", - "serde", -] - -[[package]] -name = "validator_dir" -version = "0.1.0" -dependencies = [ - "bls", - "deposit_contract", - "derivative", - "directory", - "eth2_keystore", - "eth2_keystore_share", - "filesystem", - "hex", - "lockfile", "rand", - "tree_hash", - "types", -] - -[[package]] -name = "validator_metrics" -version = "0.1.0" -dependencies = [ - "metrics", ] [[package]] @@ -7553,15 +7052,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" 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.20" @@ -7593,12 +7083,6 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" -[[package]] -name = "wyz" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" - [[package]] name = "wyz" version = "0.5.1" @@ -7820,7 +7304,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" dependencies = [ - "aes 0.8.4", + "aes", "byteorder", "bzip2", "constant_time_eq", @@ -7828,7 +7312,7 @@ dependencies = [ "crossbeam-utils", "flate2", "hmac 0.12.1", - "pbkdf2 0.11.0", + "pbkdf2", "sha1", "time", "zstd 0.11.2+zstd.1.5.2", diff --git a/src/boot_node/Cargo.toml b/src/boot_node/Cargo.toml index ad56f7d3..4c782d42 100644 --- a/src/boot_node/Cargo.toml +++ b/src/boot_node/Cargo.toml @@ -20,5 +20,6 @@ slog = { version = "2", features = ["max_level_debug", "release_max_level_debug" store = { path = "../../lighthouse/beacon_node/store" } task_executor = { path = "../../lighthouse/common/task_executor" } tonic = "0.11" +hex = "0.4" [build-dependencies] tonic-build = { version = "0.11.0", features = ["prost"] } diff --git a/src/cli.rs b/src/cli.rs new file mode 100644 index 00000000..aef4ba6f --- /dev/null +++ b/src/cli.rs @@ -0,0 +1,9 @@ +use clap::Parser; +use serde::{Deserialize, Serialize}; +use validator_client::cli::ValidatorClient; + +#[derive(Parser, Clone, Deserialize, Serialize, Debug)] +pub enum LighthouseSubcommands { + #[clap(name = "validator_client")] + ValidatorClient(Box), +} diff --git a/src/main.rs b/src/main.rs index 4c4a3177..c31e2deb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,14 @@ +mod cli; mod metrics; use account_utils::STDIN_INPUTS_FLAG; +use clap::FromArgMatches; use clap::{Arg, ArgAction, ArgMatches, Command}; +use clap::Subcommand; use clap_utils::{ flags::DISABLE_MALLOC_TUNING_FLAG, get_color_style, get_eth2_network_config, FLAG_HEADER, }; +use cli::LighthouseSubcommands; use directory::{parse_path_or_default, DEFAULT_VALIDATOR_DIR}; use environment::{EnvironmentBuilder, LoggerConfig}; use eth2_network_config::{Eth2NetworkConfig, DEFAULT_HARDCODED_NETWORK, HARDCODED_NET_NAMES}; @@ -391,9 +395,10 @@ fn main() { .display_order(0) .help_heading(FLAG_HEADER) ) - .subcommand(validator_client::cli_app()) + // .subcommand(validator_client::cli_app()) .subcommand(boot_node::cli_app()); + let cli = LighthouseSubcommands::augment_subcommands(cli); let matches = cli.get_matches(); // Configure the allocator early in the process, before it has the chance to use the default values for @@ -499,13 +504,13 @@ fn run( let mut log_path: Option = clap_utils::parse_optional(matches, "logfile")?; if log_path.is_none() { log_path = match matches.subcommand() { - Some(("validator_client", vc_matches)) => { - let base_path = if vc_matches.contains_id("validators-dir") { - parse_path_or_default(vc_matches, "validators-dir")? - } else { - parse_path_or_default(matches, "datadir")?.join(DEFAULT_VALIDATOR_DIR) - }; - + Some(("validator_client", _)) => { + // let base_path = if vc_matches.contains_id("validators-dir") { + // parse_path_or_default(vc_matches, "validators-dir")? + // } else { + // parse_path_or_default(matches, "datadir")?.join(DEFAULT_VALIDATOR_DIR) + // }; + let base_path = parse_path_or_default(matches, "datadir")?.join(DEFAULT_VALIDATOR_DIR); Some( base_path .join("logs") @@ -623,35 +628,17 @@ fn run( (Some(_), Some(_)) => panic!("CLI prevents both --network and --testnet-dir"), }; - info!(log, "Lighthouse started"; "version" => VERSION); - info!( - log, - "Configured for network"; - "name" => &network_name - ); - - match matches.subcommand() { - Some(("boot_node", matches)) => { + match LighthouseSubcommands::from_arg_matches(matches) { + Ok(LighthouseSubcommands::ValidatorClient(validator_client_config)) => { let context = environment.core_context(); let log = context.log().clone(); let executor = context.executor.clone(); - let config = boot_node::config::Config::from_cli(matches, context.log()).map_err(|e| format!("Unable to initialize boot config: {}", e))?; - executor.clone().spawn( - async move { - boot_node::run(config, &executor, log).await; - let _ = executor - .shutdown_sender() - .try_send(ShutdownReason::Failure("Failed to start validator client")); - } - , "boot_node"); - } - - Some(("validator_client", matches)) => { - let context = environment.core_context(); - let log = context.log().clone(); - let executor = context.executor.clone(); - let config = validator_client::Config::from_cli(matches, context.log()) - .map_err(|e| format!("Unable to initialize validator config: {}", e))?; + let config = validator_client::Config::from_cli( + matches, + &validator_client_config, + context.log(), + ) + .map_err(|e| format!("Unable to initialize validator config: {}", e))?; // Dump configs if `dump-config` or `dump-chain-config` flags are set clap_utils::check_dump_configs::<_, E>(matches, &config, &context.eth2_config.spec)?; @@ -678,6 +665,33 @@ fn run( "validator_client", ); } + Err(_) => (), + }; + + info!(log, "Lighthouse started"; "version" => VERSION); + info!( + log, + "Configured for network"; + "name" => &network_name + ); + + match matches.subcommand() { + Some(("boot_node", matches)) => { + let context = environment.core_context(); + let log = context.log().clone(); + let executor = context.executor.clone(); + let config = boot_node::config::Config::from_cli(matches, context.log()).map_err(|e| format!("Unable to initialize boot config: {}", e))?; + executor.clone().spawn( + async move { + boot_node::run(config, &executor, log).await; + let _ = executor + .shutdown_sender() + .try_send(ShutdownReason::Failure("Failed to start validator client")); + } + , "boot_node"); + } + + Some(("validator_client", _)) => (), _ => { crit!(log, "No subcommand supplied. See --help ."); return Err("No subcommand supplied.".into()); From ffde126d07540ad36e96be9b07efc77160d11863 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Mon, 24 Feb 2025 13:02:00 +0000 Subject: [PATCH 064/101] upgrade rust to 1.85 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index bec434a9..2521692a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.82.0 AS builder +FROM rust:1.85.0 AS builder RUN apt-get update && apt-get -y upgrade \ && apt-get install -y cmake libclang-dev protobuf-compiler From b36952b0557af263b6711bb6943ff6fad62f3f37 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Wed, 26 Feb 2025 12:54:44 +0000 Subject: [PATCH 065/101] update lighthouse to v7.0.0-beta1 --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 796bbc06..29dd6467 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 796bbc060f0a524a871491114a03ce895fb1a8ff +Subproject commit 29dd6467414abbd3852daac20e4e0e3cd148abb5 From 6cee70a4656b134e05b476347f2ced3855765884 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Wed, 5 Mar 2025 10:35:13 +0000 Subject: [PATCH 066/101] update lighthouse to v7.0.0-beta2 --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 29dd6467..4f5d0276 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 29dd6467414abbd3852daac20e4e0e3cd148abb5 +Subproject commit 4f5d027657b2f08332aa8842c0aaeb269b12c516 From 1b71fdbec7f93028dec347680b5deba9d0185ec9 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 14 Mar 2025 07:23:13 +0000 Subject: [PATCH 067/101] update lighthouse to v7.0.0-beta3 --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 4f5d0276..c397da57 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 4f5d027657b2f08332aa8842c0aaeb269b12c516 +Subproject commit c397da57bbb8465cc7a4b5c83423bf9fd36304f7 From 8e3c590a0e1e0656721d5517501445aaf4e8f923 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 21 Mar 2025 18:02:15 +0000 Subject: [PATCH 068/101] update lighthouse to v7.0.0-beta4 --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index c397da57..83e8f78c 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit c397da57bbb8465cc7a4b5c83423bf9fd36304f7 +Subproject commit 83e8f78cbc420759bd90224b503179c2d2d836b2 From e3ed6712a00e8a0e12368fc09dfa3604585a79e6 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Thu, 27 Mar 2025 08:47:37 +0000 Subject: [PATCH 069/101] update lighthouse to v7.0.0-beta5 --- Cargo.lock | 13 +++---------- lighthouse | 2 +- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6ac29b54..442ede5d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "account_utils" @@ -2660,7 +2660,7 @@ version = "0.1.0" dependencies = [ "bls", "num-bigint-dig", - "ring 0.16.20", + "ring 0.17.8", "sha2 0.9.9", "zeroize", ] @@ -6357,7 +6357,6 @@ dependencies = [ "lazy_static", "memchr", "parking_lot", - "protobuf", "thiserror 1.0.63", ] @@ -6481,12 +6480,6 @@ dependencies = [ "types", ] -[[package]] -name = "protobuf" -version = "2.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" - [[package]] name = "psutil" version = "3.3.0" @@ -10136,7 +10129,7 @@ dependencies = [ [[package]] name = "xdelta3" version = "0.1.5" -source = "git+http://github.com/sigp/xdelta3-rs?rev=50d63cdf1878e5cf3538e9aae5eed34a22c64e4a#50d63cdf1878e5cf3538e9aae5eed34a22c64e4a" +source = "git+http://github.com/sigp/xdelta3-rs?rev=4db64086bb02e9febb584ba93b9d16bb2ae3825a#4db64086bb02e9febb584ba93b9d16bb2ae3825a" dependencies = [ "bindgen", "cc", diff --git a/lighthouse b/lighthouse index 83e8f78c..cc82d8b6 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 83e8f78cbc420759bd90224b503179c2d2d836b2 +Subproject commit cc82d8b6672cf25f4fd4be7ae51ef0f30d2241c6 From b25e93069cfea1cec2dd430428bef046c9824bc5 Mon Sep 17 00:00:00 2001 From: azaliasmee Date: Thu, 27 Mar 2025 19:04:32 +0800 Subject: [PATCH 070/101] add retry workflow on github-action failure --- .github/workflows/ci_dev-v3.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/ci_dev-v3.yml b/.github/workflows/ci_dev-v3.yml index ff30e85a..04fdafb9 100644 --- a/.github/workflows/ci_dev-v3.yml +++ b/.github/workflows/ci_dev-v3.yml @@ -20,6 +20,7 @@ jobs: - name: Start EC2 runner id: start-ec2-runner uses: machulav/ec2-github-runner@v2.3.7 + continue-on-error: true with: mode: start github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} @@ -32,6 +33,22 @@ jobs: {"Key": "Name", "Value": "ec2-github-runner"}, {"Key": "GitHubRepository", "Value": "${{ github.repository }}"} ] + - name: Re-try Start EC2 runner + id: re-try-start-ec2-runner + if: steps.start-ec2-runner.outcome == 'failure' + uses: machulav/ec2-github-runner@v2.3.7 + with: + mode: start + github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + ec2-image-id: ami-0a2d071e715c3a808 + ec2-instance-type: m6a.4xlarge + subnet-id: subnet-9aa9c8e1 + security-group-id: sg-0c35d2e12fe165fbb + aws-resource-tags: > # optional, requires additional permissions + [ + {"Key": "Name", "Value": "ec2-github-runner"}, + {"Key": "GitHubRepository", "Value": "${{ github.repository }}"} + ] do-the-job: name: UnitTest & Build & Publish Image needs: start-runner # required to start the main job when the runner is ready From 54e0d3a32e6dc051a1f3209031bd1ff47c77f4ed Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Tue, 8 Apr 2025 06:53:35 +0000 Subject: [PATCH 071/101] fix exit signing message --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index cc82d8b6..c42f3317 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit cc82d8b6672cf25f4fd4be7ae51ef0f30d2241c6 +Subproject commit c42f3317eee4f20548017bc407c8ebc5675201fe From 508c069d28fd2bab718ab38901d2442473b59e0a Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Tue, 8 Apr 2025 09:53:27 +0000 Subject: [PATCH 072/101] get spec from env --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index c42f3317..5f456eb4 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit c42f3317eee4f20548017bc407c8ebc5675201fe +Subproject commit 5f456eb4a5eaa0f20a11b3f67994b0fa98e13a9d From 4bed5a3238e1c9a04a866b4c847c162d392210b0 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Tue, 22 Apr 2025 08:33:47 +0000 Subject: [PATCH 073/101] add compress for attest and propose --- Cargo.lock | 3 +++ lighthouse | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 442ede5d..3a0e8d40 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2622,6 +2622,7 @@ dependencies = [ "mediatype", "pretty_reqwest_error", "proto_array", + "rand 0.8.5", "reqwest 0.11.27", "reqwest-eventsource", "sensitive_url", @@ -2630,6 +2631,7 @@ dependencies = [ "slashing_protection", "ssz_types", "store", + "test_random_derive", "types", "zeroize", ] @@ -7350,6 +7352,7 @@ dependencies = [ "chrono", "dvf_utils", "filesystem", + "flate2", "futures", "hex", "keccak-hash", diff --git a/lighthouse b/lighthouse index 5f456eb4..d2743904 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 5f456eb4a5eaa0f20a11b3f67994b0fa98e13a9d +Subproject commit d2743904b4d4a47f1cec9daa308f346e917c425b From cde5bb6574c2bdecc8391c2212083e376e902d05 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Tue, 29 Apr 2025 12:55:49 +0000 Subject: [PATCH 074/101] release 4.1 --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index d2743904..ee94cb38 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit d2743904b4d4a47f1cec9daa308f346e917c425b +Subproject commit ee94cb3870d936bdc3422d6051779128e26c13ba From 4694be3bd7906647429ea4a9be130e5e1280ce86 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Wed, 30 Apr 2025 15:04:53 +0000 Subject: [PATCH 075/101] merge lighthouse 7.0.1 --- Cargo.lock | 167 ++++++++++++++++++++--------------------------------- lighthouse | 2 +- 2 files changed, 63 insertions(+), 106 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3a0e8d40..b4ae4515 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -108,7 +108,7 @@ dependencies = [ "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -1471,9 +1471,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.13" +version = "1.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +checksum = "04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a" dependencies = [ "jobserver", "libc", @@ -2662,7 +2662,7 @@ version = "0.1.0" dependencies = [ "bls", "num-bigint-dig", - "ring 0.17.8", + "ring", "sha2 0.9.9", "zeroize", ] @@ -2829,7 +2829,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c853bd72c9e5787f8aafc3df2907c2ed03cff3150c3acd94e2e53a98ab70a8ab" dependencies = [ "cpufeatures", - "ring 0.17.8", + "ring", "sha2 0.10.8", ] @@ -3368,14 +3368,14 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" dependencies = [ "cfg-if", "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets 0.52.6", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -3503,9 +3503,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" +checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633" dependencies = [ "atomic-waker", "bytes", @@ -3681,7 +3681,7 @@ dependencies = [ "idna 1.0.3", "ipnet", "once_cell", - "rand 0.9.0", + "rand 0.9.1", "socket2", "thiserror 2.0.11", "tinyvec", @@ -3703,7 +3703,7 @@ dependencies = [ "moka", "once_cell", "parking_lot", - "rand 0.9.0", + "rand 0.9.1", "resolv-conf", "smallvec", "thiserror 2.0.11", @@ -3881,7 +3881,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.8", + "h2 0.4.9", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -4436,7 +4436,7 @@ dependencies = [ "base64 0.21.7", "js-sys", "pem", - "ring 0.17.8", + "ring", "serde", "serde_json", "simple_asn1", @@ -4522,7 +4522,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.9.8", + "spin", ] [[package]] @@ -4862,7 +4862,7 @@ dependencies = [ "libp2p-tls", "quinn", "rand 0.8.5", - "ring 0.17.8", + "ring", "rustls 0.23.12", "socket2", "thiserror 2.0.11", @@ -4923,16 +4923,16 @@ dependencies = [ [[package]] name = "libp2p-tls" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcaebc1069dea12c5b86a597eaaddae0317c2c2cb9ec99dc94f82fd340f5c78b" +checksum = "42bbf5084fb44133267ad4caaa72a253d68d709edd2ed1cf9b42431a8ead8fd5" dependencies = [ "futures", "futures-rustls", "libp2p-core", "libp2p-identity", "rcgen", - "ring 0.17.8", + "ring", "rustls 0.23.12", "rustls-webpki 0.101.7", "thiserror 2.0.11", @@ -5148,13 +5148,13 @@ dependencies = [ [[package]] name = "local-ip-address" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3669cf5561f8d27e8fc84cc15e58350e70f557d4d65f70e3154e54cd2f8e1782" +checksum = "c986b1747bbd3666abe4d57c64e60e6a82c2216140d8b12d5ceb33feb9de44b3" dependencies = [ "libc", "neli", - "thiserror 1.0.63", + "thiserror 2.0.11", "windows-sys 0.59.0", ] @@ -6210,9 +6210,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" [[package]] name = "powerfmt" @@ -6226,7 +6226,7 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -6557,7 +6557,7 @@ dependencies = [ "bytes", "getrandom 0.2.15", "rand 0.8.5", - "ring 0.17.8", + "ring", "rustc-hash 2.0.0", "rustls 0.23.12", "rustls-pki-types", @@ -6590,6 +6590,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "r2d2" version = "0.8.10" @@ -6638,13 +6644,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.2", - "zerocopy 0.8.20", + "rand_core 0.9.3", ] [[package]] @@ -6664,7 +6669,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.2", + "rand_core 0.9.3", ] [[package]] @@ -6678,12 +6683,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a509b1a2ffbe92afab0e55c8fd99dea1c280e8171bd2d88682bb20bc41cbc2c" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.1", - "zerocopy 0.8.20", + "getrandom 0.3.2", ] [[package]] @@ -6717,12 +6721,13 @@ dependencies = [ [[package]] name = "rcgen" -version = "0.11.3" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c4f3084aa3bc7dfbba4eff4fab2a54db4324965d8872ab933565e6fbd83bc6" +checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" dependencies = [ "pem", - "ring 0.16.20", + "ring", + "rustls-pki-types", "time", "yasna", ] @@ -6934,31 +6939,15 @@ dependencies = [ [[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" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", "getrandom 0.2.15", "libc", - "spin 0.9.8", - "untrusted 0.9.0", + "untrusted", "windows-sys 0.52.0", ] @@ -7170,7 +7159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.8", + "ring", "rustls-webpki 0.101.7", "sct", ] @@ -7182,7 +7171,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ "log", - "ring 0.17.8", + "ring", "rustls-pki-types", "rustls-webpki 0.102.6", "subtle", @@ -7196,7 +7185,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "once_cell", - "ring 0.17.8", + "ring", "rustls-pki-types", "rustls-webpki 0.102.6", "subtle", @@ -7237,8 +7226,8 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -7247,9 +7236,9 @@ version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ - "ring 0.17.8", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] @@ -7520,8 +7509,8 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -8054,7 +8043,7 @@ dependencies = [ "chacha20poly1305", "curve25519-dalek", "rand_core 0.6.4", - "ring 0.17.8", + "ring", "rustc_version 0.4.0", "sha2 0.10.8", "subtle", @@ -8070,12 +8059,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[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" @@ -9166,12 +9149,6 @@ dependencies = [ "tokio-util", ] -[[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" @@ -9534,9 +9511,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi" -version = "0.13.3+wasi-0.2.2" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" dependencies = [ "wit-bindgen-rt", ] @@ -10066,9 +10043,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rt" -version = "0.33.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ "bitflags 2.6.0", ] @@ -10229,16 +10206,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde3bb8c68a8f3f1ed4ac9221aad6b10cece3e60a8e2ea54a6a2dec806d0084c" -dependencies = [ - "zerocopy-derive 0.8.20", + "zerocopy-derive", ] [[package]] @@ -10252,17 +10220,6 @@ dependencies = [ "syn 2.0.87", ] -[[package]] -name = "zerocopy-derive" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eea57037071898bf96a6da35fd626f4f27e9cee3ead2a6c703cf09d472b2e700" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "zerofrom" version = "0.1.5" diff --git a/lighthouse b/lighthouse index ee94cb38..f80b9ff0 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit ee94cb3870d936bdc3422d6051779128e26c13ba +Subproject commit f80b9ff04da4bebd3af0fa191c11fdd50d5fd482 From 9e51bd443be7c79a776dabd09e7e5f550530ded9 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 2 May 2025 09:46:33 +0000 Subject: [PATCH 076/101] add software version interface --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index f80b9ff0..08460e00 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit f80b9ff04da4bebd3af0fa191c11fdd50d5fd482 +Subproject commit 08460e00a8344ba860cd0de77176eed211647a14 From 3fcbf5a73e75b4cf79f39eaf653cfb2147c03eb9 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 2 May 2025 13:49:05 +0000 Subject: [PATCH 077/101] error handling --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 08460e00..8e54c2c6 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 08460e00a8344ba860cd0de77176eed211647a14 +Subproject commit 8e54c2c6b5842b66a35be3aa0ae2cc754c003eb2 From 0910beaa3cfdc19f6205420a14a27e7a499f1e9a Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Mon, 5 May 2025 01:41:50 +0000 Subject: [PATCH 078/101] add logs, upgrade rust to 1.86 --- Dockerfile | 2 +- lighthouse | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2521692a..a957f868 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.85.0 AS builder +FROM rust:1.86.0 AS builder RUN apt-get update && apt-get -y upgrade \ && apt-get install -y cmake libclang-dev protobuf-compiler diff --git a/lighthouse b/lighthouse index 8e54c2c6..a944b647 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 8e54c2c6b5842b66a35be3aa0ae2cc754c003eb2 +Subproject commit a944b64763833ea53ab949759906400c374ec428 From d0a293b817ef7939d34b29320663a7de0c651b3a Mon Sep 17 00:00:00 2001 From: mlbones666 <127071266+mlbones666@users.noreply.github.com> Date: Mon, 5 May 2025 23:53:08 +0800 Subject: [PATCH 079/101] update version for release v4.1.0 --- .env.example | 2 +- docker-compose-boot.yml | 1 - docker-compose-operator-mev.yml | 7 +++---- docker-compose-operator.yml | 5 ++--- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index 3e7dddb9..eb78536b 100644 --- a/.env.example +++ b/.env.example @@ -4,7 +4,7 @@ BESU_NETWORK=mainnet ERIGON_NETWORK=mainnet LIGHTHOUSE_NETWORK=mainnet OPERATOR_NETWORK=mainnet -IMAGE_TAG=v4.0.0-mainnet +IMAGE_TAG=v4.1.0-mainnet REGISTRY_CONTRACT_ADDRESS=1a1f82f0365571A0b06df0992FC4D1BCc5Fdc6aD NETWORK_CONTRACT_ADDRESS=829f3c089fE315FCB2BC9506B237BB56b7c3335B CONFIG_CONTRACT_ADDRESS=07FA0F7f3C67e4cdE0FC23A072dcD712CF9a06C1 diff --git a/docker-compose-boot.yml b/docker-compose-boot.yml index 23427919..f5457dda 100644 --- a/docker-compose-boot.yml +++ b/docker-compose-boot.yml @@ -1,4 +1,3 @@ -version: '3' services: dvf_root_node: network_mode: "host" diff --git a/docker-compose-operator-mev.yml b/docker-compose-operator-mev.yml index 208b520a..3144f643 100644 --- a/docker-compose-operator-mev.yml +++ b/docker-compose-operator-mev.yml @@ -1,7 +1,6 @@ -version: '3' services: geth: - image: ethereum/client-go:v1.14.11 + image: ethereum/client-go:v1.15.11 pull_policy: always restart: unless-stopped network_mode: "host" @@ -37,7 +36,7 @@ services: - "30303" mev-boost: - image: flashbots/mev-boost:1.8 + image: flashbots/mev-boost:1.9 network_mode: "host" pull_policy: always restart: unless-stopped @@ -46,7 +45,7 @@ services: - "18550" lighthouse: network_mode: "host" - image: sigp/lighthouse:v6.0.1 + image: sigp/lighthouse:v7.0.1 pull_policy: always restart: unless-stopped volumes: diff --git a/docker-compose-operator.yml b/docker-compose-operator.yml index a1829196..051b0afb 100644 --- a/docker-compose-operator.yml +++ b/docker-compose-operator.yml @@ -1,7 +1,6 @@ -version: '3' services: geth: - image: ethereum/client-go:v1.14.11 + image: ethereum/client-go:v1.15.11 pull_policy: always restart: unless-stopped network_mode: "host" @@ -38,7 +37,7 @@ services: lighthouse: network_mode: "host" - image: sigp/lighthouse:v6.0.1 + image: sigp/lighthouse:v7.0.1 pull_policy: always restart: unless-stopped volumes: From e148440157df2a76d9cc016bf055ca29e744a385 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Tue, 6 May 2025 01:44:20 +0000 Subject: [PATCH 080/101] update cargo lock --- Cargo.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b4ae4515..706d65fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3503,9 +3503,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" dependencies = [ "atomic-waker", "bytes", @@ -3881,7 +3881,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.9", + "h2 0.4.10", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -5148,9 +5148,9 @@ dependencies = [ [[package]] name = "local-ip-address" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c986b1747bbd3666abe4d57c64e60e6a82c2216140d8b12d5ceb33feb9de44b3" +checksum = "656b3b27f8893f7bbf9485148ff9a65f019e3f33bd5cdc87c83cab16b3fd9ec8" dependencies = [ "libc", "neli", From a5d5a8cd889d370a452a08232cb78e09864081e6 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Thu, 8 May 2025 13:52:20 +0000 Subject: [PATCH 081/101] optimize va registration timestamp --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index a944b647..f6f64e72 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit a944b64763833ea53ab949759906400c374ec428 +Subproject commit f6f64e72cdfa23091b1973ba86ab7933303f5e17 From dd5448376e061f9d7eff1a7c2669ca41a1065bf8 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 9 May 2025 06:06:11 +0000 Subject: [PATCH 082/101] fix dead lock --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index f6f64e72..9df0195f 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit f6f64e72cdfa23091b1973ba86ab7933303f5e17 +Subproject commit 9df0195f97ba10d1fe870c7f88162743afcfec5d From 1b4e3162c1bc01de0a7b472d3bd338f03b531fa7 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 9 May 2025 06:52:58 +0000 Subject: [PATCH 083/101] add log --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 9df0195f..841c16b4 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 9df0195f97ba10d1fe870c7f88162743afcfec5d +Subproject commit 841c16b4a07660543e476986ba3d4277eafd602a From 92b7dc8915c62ec2adfdc03f3ac5dc3143470970 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 9 May 2025 09:39:21 +0000 Subject: [PATCH 084/101] fix dead lock --- Cargo.lock | 38 +++++++++++++++++++++++++++++++++++++- lighthouse | 2 +- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 706d65fb..679dbc76 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6847,7 +6847,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots", + "webpki-roots 0.25.4", "winreg", ] @@ -7184,6 +7184,7 @@ version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ + "log", "once_cell", "ring", "rustls-pki-types", @@ -7361,6 +7362,7 @@ dependencies = [ "tonic", "tonic-build", "types", + "ureq", "url", "validator_metrics", ] @@ -9163,6 +9165,22 @@ dependencies = [ "parking_lot", ] +[[package]] +name = "ureq" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" +dependencies = [ + "base64 0.22.1", + "flate2", + "log", + "once_cell", + "rustls 0.23.12", + "rustls-pki-types", + "url", + "webpki-roots 0.26.11", +] + [[package]] name = "url" version = "2.5.2" @@ -9638,6 +9656,24 @@ version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.0", +] + +[[package]] +name = "webpki-roots" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "which" version = "4.4.2" diff --git a/lighthouse b/lighthouse index 841c16b4..0a1b6de3 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 841c16b4a07660543e476986ba3d4277eafd602a +Subproject commit 0a1b6de32d40b0014bec6b34d671d30dba8510b4 From a65dad36b66575c5ae2f664bbded9e28a99f6a03 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Mon, 12 May 2025 12:46:04 +0000 Subject: [PATCH 085/101] cluster node v2 --- Cargo.lock | 1 + lighthouse | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 679dbc76..18b67fa4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7398,6 +7398,7 @@ dependencies = [ "safestake_crypto", "safestake_database", "safestake_operator", + "secp256k1", "sensitive_url", "serde", "serde_json", diff --git a/lighthouse b/lighthouse index 0a1b6de3..92a72cec 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 0a1b6de32d40b0014bec6b34d671d30dba8510b4 +Subproject commit 92a72cecdb6d800496a8d5b48e3246f5a94b4519 From 0e452f11a901d5f2c2da651aef5adf96aa451e86 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Thu, 15 May 2025 12:31:21 +0000 Subject: [PATCH 086/101] add broadcast attestation --- Cargo.lock | 2 ++ lighthouse | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 18b67fa4..cc760d67 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7380,11 +7380,13 @@ dependencies = [ "alloy-sol-types", "alloy-transport-http", "base64 0.22.1", + "beacon_node_fallback", "bincode", "bls", "directory", "dirs", "dvf_utils", + "either", "eth2", "eth2_keystore", "eth2_keystore_share", diff --git a/lighthouse b/lighthouse index 92a72cec..86b7aee7 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 92a72cecdb6d800496a8d5b48e3246f5a94b4519 +Subproject commit 86b7aee7f17223c9d25e396558f9f3475f2d7451 From e4759b84d32e0a825fc0ac0af4f6f9190ba1e9e6 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 16 May 2025 00:50:26 +0000 Subject: [PATCH 087/101] add error log --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 86b7aee7..3cb4109d 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 86b7aee7f17223c9d25e396558f9f3475f2d7451 +Subproject commit 3cb4109d8bd0c409251856d28af6d1cc9cefadf5 From dd14a69dd8596f947beeb5ca488e1525f6abb41e Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 16 May 2025 09:51:29 +0000 Subject: [PATCH 088/101] fix signature not found error --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 3cb4109d..97e5963d 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 3cb4109d8bd0c409251856d28af6d1cc9cefadf5 +Subproject commit 97e5963deb71c4494a4cbdf55583772a716c283d From 83845ba7329e38a89bfa1f695d7cfb25749f4737 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 16 May 2025 10:11:45 +0000 Subject: [PATCH 089/101] fix typo --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 97e5963d..bbc08d9b 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 97e5963deb71c4494a4cbdf55583772a716c283d +Subproject commit bbc08d9b0ce2fe74a88cdb4e7f98e35b8f447521 From 1d47eb460d09822329936d9b280e80ce1da49bb7 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 17 May 2025 01:31:40 +0000 Subject: [PATCH 090/101] add broadcast block --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index bbc08d9b..3e19cb77 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit bbc08d9b0ce2fe74a88cdb4e7f98e35b8f447521 +Subproject commit 3e19cb770e9da1c791c787f17f01feebd0142534 From c5c732f776be86f993be1be2ef1b25b2e27fbf80 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 17 May 2025 02:23:57 +0000 Subject: [PATCH 091/101] add log --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 3e19cb77..4553fbf2 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 3e19cb770e9da1c791c787f17f01feebd0142534 +Subproject commit 4553fbf29e1de1a9373a51ac7e8ed8e75c0c9a1d From 7d00f1790360386b60b78f8c60f3d95fae138d61 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 17 May 2025 03:38:20 +0000 Subject: [PATCH 092/101] add log --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 4553fbf2..60a53f5e 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 4553fbf29e1de1a9373a51ac7e8ed8e75c0c9a1d +Subproject commit 60a53f5efb1ce243b18e2a5eab5343869aeabd7b From b8d7411bd8bfca82ea70e70f40d03d98f0c3afe9 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 17 May 2025 04:25:10 +0000 Subject: [PATCH 093/101] add get signature v2 --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 60a53f5e..1cbdc6b6 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 60a53f5efb1ce243b18e2a5eab5343869aeabd7b +Subproject commit 1cbdc6b6b27c6124ba75c1727cae05e3cc98e7f0 From b05ddb2c4af51c01265a8884cc1227e0549d3510 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 17 May 2025 05:08:13 +0000 Subject: [PATCH 094/101] add get signature v2 --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 1cbdc6b6..c0359b2d 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 1cbdc6b6b27c6124ba75c1727cae05e3cc98e7f0 +Subproject commit c0359b2de0fb58d8975e2148e3abeebd63c94c72 From 9d883ccccb4f5094a80a06cabc508f4987b3b2b3 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 24 May 2025 05:51:39 +0000 Subject: [PATCH 095/101] remove log --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index c0359b2d..45c96618 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit c0359b2de0fb58d8975e2148e3abeebd63c94c72 +Subproject commit 45c96618a5f7e231cf0035c2b735f18f4fa026f2 From 242aa75a0d8fb71c38c8e18523ec1ff169986fad Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 24 May 2025 08:03:43 +0000 Subject: [PATCH 096/101] don't query baecon node when dkg --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 45c96618..d3840aed 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 45c96618a5f7e231cf0035c2b735f18f4fa026f2 +Subproject commit d3840aedc0215a8a7c98a1e27133f377d872f516 From 9efcb3a5895a4dd8213e644ce7ff0a6de24eea37 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sat, 24 May 2025 13:43:10 +0000 Subject: [PATCH 097/101] add sleep time --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index d3840aed..eefcde67 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit d3840aedc0215a8a7c98a1e27133f377d872f516 +Subproject commit eefcde675d34b6afba8da3c8a533ffc37f1a5302 From 8a6f36d7516215148d96c3866c0627ddee144ee3 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 25 May 2025 01:06:34 +0000 Subject: [PATCH 098/101] add timeout for dkg io committee --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index eefcde67..0cb79cd5 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit eefcde675d34b6afba8da3c8a533ffc37f1a5302 +Subproject commit 0cb79cd50b8ecdfd7f9c56317efb4b19e00658d1 From d70446acf15163f818f2eed3b73f123868b60064 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Sun, 25 May 2025 07:14:08 +0000 Subject: [PATCH 099/101] update dkg sleep time --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index 0cb79cd5..d61ff7dc 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit 0cb79cd50b8ecdfd7f9c56317efb4b19e00658d1 +Subproject commit d61ff7dcc80444ebcf4181e95ea72e448f1aea02 From 856d769159b8577d442513309beffc0b4ac33b71 Mon Sep 17 00:00:00 2001 From: jianlinjiang Date: Fri, 13 Jun 2025 02:29:14 +0000 Subject: [PATCH 100/101] update rpc timeout from 1.5s to 0.8s --- lighthouse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lighthouse b/lighthouse index d61ff7dc..d4c87435 160000 --- a/lighthouse +++ b/lighthouse @@ -1 +1 @@ -Subproject commit d61ff7dcc80444ebcf4181e95ea72e448f1aea02 +Subproject commit d4c8743539e0baa67a34862e63419dc368d81692 From 63c650d17ed22714da0438b7305a1cb0664eee68 Mon Sep 17 00:00:00 2001 From: mlbones666 <127071266+mlbones666@users.noreply.github.com> Date: Mon, 23 Jun 2025 22:13:34 +0800 Subject: [PATCH 101/101] update version to v4.1.1-mainnet --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index eb78536b..478fe4cd 100644 --- a/.env.example +++ b/.env.example @@ -4,7 +4,7 @@ BESU_NETWORK=mainnet ERIGON_NETWORK=mainnet LIGHTHOUSE_NETWORK=mainnet OPERATOR_NETWORK=mainnet -IMAGE_TAG=v4.1.0-mainnet +IMAGE_TAG=v4.1.1-mainnet REGISTRY_CONTRACT_ADDRESS=1a1f82f0365571A0b06df0992FC4D1BCc5Fdc6aD NETWORK_CONTRACT_ADDRESS=829f3c089fE315FCB2BC9506B237BB56b7c3335B CONFIG_CONTRACT_ADDRESS=07FA0F7f3C67e4cdE0FC23A072dcD712CF9a06C1