From 5b40152873b0972834dcef601d8632ce06d1fe35 Mon Sep 17 00:00:00 2001 From: Age Manning Date: Tue, 26 Mar 2019 15:01:05 +1100 Subject: [PATCH 1/2] Update to latest libp2p and gossipsub --- beacon_node/eth2-libp2p/src/config.rs | 4 +++- beacon_node/eth2-libp2p/src/rpc/protocol.rs | 13 ++++++++----- beacon_node/eth2-libp2p/src/service.rs | 11 +++++------ 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/beacon_node/eth2-libp2p/src/config.rs b/beacon_node/eth2-libp2p/src/config.rs index 2b4972237..265100658 100644 --- a/beacon_node/eth2-libp2p/src/config.rs +++ b/beacon_node/eth2-libp2p/src/config.rs @@ -29,7 +29,9 @@ impl Default for Config { .parse() .expect("is a correct multi-address")], listen_port: 9000, - gs_config: GossipsubConfigBuilder::new().build(), + gs_config: GossipsubConfigBuilder::new() + .max_gossip_size(4_000_000) + .build(), identify_config: IdentifyConfig::default(), boot_nodes: Vec::new(), client_version: version::version(), diff --git a/beacon_node/eth2-libp2p/src/rpc/protocol.rs b/beacon_node/eth2-libp2p/src/rpc/protocol.rs index f4fe26fac..dc3f70a9b 100644 --- a/beacon_node/eth2-libp2p/src/rpc/protocol.rs +++ b/beacon_node/eth2-libp2p/src/rpc/protocol.rs @@ -60,10 +60,13 @@ where { type Output = RPCEvent; type Error = DecodeError; - type Future = - upgrade::ReadOneThen, ()) -> Result>; + type Future = upgrade::ReadOneThen< + upgrade::Negotiated, + (), + fn(Vec, ()) -> Result, + >; - fn upgrade_inbound(self, socket: TSocket, _: Self::Info) -> Self::Future { + fn upgrade_inbound(self, socket: upgrade::Negotiated, _: Self::Info) -> Self::Future { upgrade::read_one_then(socket, MAX_READ_SIZE, (), |packet, ()| Ok(decode(packet)?)) } } @@ -154,10 +157,10 @@ where { type Output = (); type Error = io::Error; - type Future = upgrade::WriteOne; + type Future = upgrade::WriteOne>; #[inline] - fn upgrade_outbound(self, socket: TSocket, _: Self::Info) -> Self::Future { + fn upgrade_outbound(self, socket: upgrade::Negotiated, _: Self::Info) -> Self::Future { let bytes = ssz_encode(&self); upgrade::write_one(socket, bytes) } diff --git a/beacon_node/eth2-libp2p/src/service.rs b/beacon_node/eth2-libp2p/src/service.rs index e68df2d38..b20874427 100644 --- a/beacon_node/eth2-libp2p/src/service.rs +++ b/beacon_node/eth2-libp2p/src/service.rs @@ -6,6 +6,7 @@ use crate::NetworkConfig; use futures::prelude::*; use futures::Stream; use libp2p::core::{ + identity, muxing::StreamMuxerBox, nodes::Substream, transport::boxed::Boxed, @@ -36,10 +37,10 @@ impl Service { // TODO: Currently using secp256k1 key pairs. Wire protocol specifies RSA. Waiting for this // PR to be merged to generate RSA keys: https://github.com/briansmith/ring/pull/733 // TODO: Save and recover node key from disk - let local_private_key = secio::SecioKeyPair::secp256k1_generated().unwrap(); + let local_private_key = identity::Keypair::generate_secp256k1(); - let local_public_key = local_private_key.to_public_key(); - let local_peer_id = local_private_key.to_peer_id(); + let local_public_key = local_private_key.public(); + let local_peer_id = PeerId::from(local_private_key.public()); info!(log, "Local peer id: {:?}", local_peer_id); let mut swarm = { @@ -132,9 +133,7 @@ impl Stream for Service { /// The implementation supports TCP/IP, WebSockets over TCP/IP, secio as the encryption layer, and /// mplex or yamux as the multiplexing layer. -fn build_transport( - local_private_key: secio::SecioKeyPair, -) -> Boxed<(PeerId, StreamMuxerBox), Error> { +fn build_transport(local_private_key: identity::Keypair) -> Boxed<(PeerId, StreamMuxerBox), Error> { // TODO: The Wire protocol currently doesn't specify encryption and this will need to be customised // in the future. let transport = libp2p::tcp::TcpConfig::new(); From b2ae54043ced3c61de0c651a58368ccd39a3eb04 Mon Sep 17 00:00:00 2001 From: Age Manning Date: Tue, 26 Mar 2019 15:06:41 +1100 Subject: [PATCH 2/2] Fix libp2p version to specific commit --- beacon_node/eth2-libp2p/Cargo.toml | 2 +- eth2/types/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/beacon_node/eth2-libp2p/Cargo.toml b/beacon_node/eth2-libp2p/Cargo.toml index 4dd2e9c7b..beb1a0234 100644 --- a/beacon_node/eth2-libp2p/Cargo.toml +++ b/beacon_node/eth2-libp2p/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] # SigP repository until PR is merged -libp2p = { git = "https://github.com/SigP/rust-libp2p", branch = "gossipsub" } +libp2p = { git = "https://github.com/SigP/rust-libp2p", rev = "987fec350b5c2eb55e5f0139615adab49ce493ff" } types = { path = "../../eth2/types" } ssz = { path = "../../eth2/utils/ssz" } ssz_derive = { path = "../../eth2/utils/ssz_derive" } diff --git a/eth2/types/Cargo.toml b/eth2/types/Cargo.toml index e4ccfd63e..d0e23b7dd 100644 --- a/eth2/types/Cargo.toml +++ b/eth2/types/Cargo.toml @@ -25,7 +25,7 @@ ssz = { path = "../utils/ssz" } ssz_derive = { path = "../utils/ssz_derive" } swap_or_not_shuffle = { path = "../utils/swap_or_not_shuffle" } test_random_derive = { path = "../utils/test_random_derive" } -libp2p = { git = "https://github.com/SigP/rust-libp2p", branch = "gossipsub" } +libp2p = { git = "https://github.com/SigP/rust-libp2p", rev = "987fec350b5c2eb55e5f0139615adab49ce493ff" } [dev-dependencies] env_logger = "0.6.0"