[package] name = "reth-eth-wire" description = "Implements the eth/64 and eth/65 P2P protocols" version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true homepage.workspace = true repository.workspace = true [dependencies] bytes = "1.4" thiserror = { workspace = true } serde = { workspace = true, optional = true } # reth reth-codecs = { path = "../../storage/codecs" } reth-primitives = { workspace = true } reth-ecies = { path = "../ecies" } reth-rlp = { workspace = true, features = [ "alloc", "derive", "std", "ethereum-types", "smol_str", ] } reth-metrics = { workspace = true } # used for Chain and builders ethers-core = { workspace = true, default-features = false } tokio = { workspace = true, features = ["full"] } tokio-util = { workspace = true, features = ["io", "codec"] } futures = { workspace = true } tokio-stream = { workspace = true } pin-project = { workspace = true } tracing = { workspace = true } snap = "1.0.5" smol_str = "0.1" async-trait = { workspace = true } # arbitrary utils arbitrary = { version = "1.1.7", features = ["derive"], optional = true } proptest = { version = "1.0", optional = true } proptest-derive = { version = "0.3", optional = true } [dev-dependencies] reth-primitives = { workspace = true, features = ["arbitrary"] } reth-tracing = { path = "../../tracing" } ethers-core = { workspace = true, default-features = false } test-fuzz = "3.0.4" tokio-util = { workspace = true, features = ["io", "codec"] } hex-literal = "0.3" hex = "0.4" rand = { workspace = true } secp256k1 = { workspace = true, features = ["global-context", "rand-std", "recovery"] } arbitrary = { version = "1.1.7", features = ["derive"] } proptest = { version = "1.0" } proptest-derive = "0.3" [features] default = ["serde"] serde = ["dep:serde", "smol_str/serde"] arbitrary = ["reth-primitives/arbitrary", "dep:arbitrary", "dep:proptest", "dep:proptest-derive"] [[test]] name = "fuzz_roundtrip" path = "tests/fuzz_roundtrip.rs" required-features = ["arbitrary", "serde"]