Revive mplex (#4619)
## Issue Addressed N/A ## Proposed Changes In #4431 , we seem to have removed support for mplex as it is being deprecated in libp2p. See https://github.com/libp2p/specs/issues/553 . Related rust-libp2p PR https://github.com/libp2p/rust-libp2p/pull/3920 However, since this isn't part of the official [consensus specs](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#multiplexing), we still need to support mplex. > Clients MUST support [mplex](https://github.com/libp2p/specs/tree/master/mplex) and MAY support [yamux](https://github.com/hashicorp/yamux/blob/master/spec.md). This PR adds back mplex support as before.
This commit is contained in:
parent
661779f08e
commit
ea43b6a53c
20
Cargo.lock
generated
20
Cargo.lock
generated
@ -4117,6 +4117,25 @@ dependencies = [
|
|||||||
"prometheus-client",
|
"prometheus-client",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libp2p-mplex"
|
||||||
|
version = "0.40.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "93959ed08b6caf9810e067655e25f1362098797fef7c44d3103e63dcb6f0fabe"
|
||||||
|
dependencies = [
|
||||||
|
"asynchronous-codec",
|
||||||
|
"bytes",
|
||||||
|
"futures",
|
||||||
|
"libp2p-core",
|
||||||
|
"libp2p-identity",
|
||||||
|
"log",
|
||||||
|
"nohash-hasher",
|
||||||
|
"parking_lot 0.12.1",
|
||||||
|
"rand 0.8.5",
|
||||||
|
"smallvec 1.11.0",
|
||||||
|
"unsigned-varint 0.7.1",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libp2p-noise"
|
name = "libp2p-noise"
|
||||||
version = "0.43.0"
|
version = "0.43.0"
|
||||||
@ -4382,6 +4401,7 @@ dependencies = [
|
|||||||
"hex",
|
"hex",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"libp2p",
|
"libp2p",
|
||||||
|
"libp2p-mplex",
|
||||||
"lighthouse_metrics",
|
"lighthouse_metrics",
|
||||||
"lighthouse_version",
|
"lighthouse_version",
|
||||||
"lru 0.7.8",
|
"lru 0.7.8",
|
||||||
|
@ -44,6 +44,7 @@ prometheus-client = "0.21.0"
|
|||||||
unused_port = { path = "../../common/unused_port" }
|
unused_port = { path = "../../common/unused_port" }
|
||||||
delay_map = "0.3.0"
|
delay_map = "0.3.0"
|
||||||
void = "1"
|
void = "1"
|
||||||
|
libp2p-mplex = "0.40.0"
|
||||||
|
|
||||||
[dependencies.libp2p]
|
[dependencies.libp2p]
|
||||||
version = "0.52"
|
version = "0.52"
|
||||||
|
@ -50,13 +50,21 @@ pub fn build_transport(
|
|||||||
transport.or_transport(libp2p::websocket::WsConfig::new(trans_clone))
|
transport.or_transport(libp2p::websocket::WsConfig::new(trans_clone))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// mplex config
|
||||||
|
let mut mplex_config = libp2p_mplex::MplexConfig::new();
|
||||||
|
mplex_config.set_max_buffer_size(256);
|
||||||
|
mplex_config.set_max_buffer_behaviour(libp2p_mplex::MaxBufferBehaviour::Block);
|
||||||
|
|
||||||
// yamux config
|
// yamux config
|
||||||
let mut yamux_config = yamux::Config::default();
|
let mut yamux_config = yamux::Config::default();
|
||||||
yamux_config.set_window_update_mode(yamux::WindowUpdateMode::on_read());
|
yamux_config.set_window_update_mode(yamux::WindowUpdateMode::on_read());
|
||||||
let (transport, bandwidth) = transport
|
let (transport, bandwidth) = transport
|
||||||
.upgrade(core::upgrade::Version::V1)
|
.upgrade(core::upgrade::Version::V1)
|
||||||
.authenticate(generate_noise_config(&local_private_key))
|
.authenticate(generate_noise_config(&local_private_key))
|
||||||
.multiplex(yamux_config)
|
.multiplex(core::upgrade::SelectUpgrade::new(
|
||||||
|
yamux_config,
|
||||||
|
mplex_config,
|
||||||
|
))
|
||||||
.timeout(Duration::from_secs(10))
|
.timeout(Duration::from_secs(10))
|
||||||
.boxed()
|
.boxed()
|
||||||
.with_bandwidth_logging();
|
.with_bandwidth_logging();
|
||||||
|
Loading…
Reference in New Issue
Block a user