From b350a78fec6994083625c8cdc4b2e607139f730a Mon Sep 17 00:00:00 2001 From: Age Manning Date: Mon, 22 Jul 2019 14:13:18 +1000 Subject: [PATCH] Update RPC. WIP --- beacon_node/eth2-libp2p/src/rpc/methods.rs | 7 ------- beacon_node/eth2-libp2p/src/rpc/protocol.rs | 3 --- beacon_node/network/src/message_handler.rs | 6 +----- beacon_node/network/src/sync/simple_sync.rs | 6 +----- 4 files changed, 2 insertions(+), 20 deletions(-) diff --git a/beacon_node/eth2-libp2p/src/rpc/methods.rs b/beacon_node/eth2-libp2p/src/rpc/methods.rs index 02dec8025..8a62b87c5 100644 --- a/beacon_node/eth2-libp2p/src/rpc/methods.rs +++ b/beacon_node/eth2-libp2p/src/rpc/methods.rs @@ -166,13 +166,6 @@ pub struct DecodedBeaconBlockBodiesResponse { pub block_bodies: Vec, } -//TODO: Build a cleaner API for this encoding/decoding -/// This only exists to encode/decode beacon block bodies according to the wire protocol. -#[derive(Encode, Decode)] -pub struct EncodeableBeaconBlockBodiesResponse { - pub block_bodies: Vec, -} - /// Request values for tree hashes which yield a blocks `state_root`. #[derive(Encode, Decode, Clone, Debug, PartialEq)] pub struct BeaconChainStateRequest { diff --git a/beacon_node/eth2-libp2p/src/rpc/protocol.rs b/beacon_node/eth2-libp2p/src/rpc/protocol.rs index caa2aacf9..6664b1d5c 100644 --- a/beacon_node/eth2-libp2p/src/rpc/protocol.rs +++ b/beacon_node/eth2-libp2p/src/rpc/protocol.rs @@ -24,9 +24,6 @@ const PROTOCOL_PREFIX: &str = "/eth/serenity/rpc/"; /// The number of seconds to wait for a request once a protocol has been established before the stream is terminated. const REQUEST_TIMEOUT: u64 = 3; -/// Implementation of the `ConnectionUpgrade` for the RPC protocol. -const MAX_READ_SIZE: usize = 4_194_304; // 4M - #[derive(Debug, Clone)] pub struct RPCProtocol; diff --git a/beacon_node/network/src/message_handler.rs b/beacon_node/network/src/message_handler.rs index d255d4a8f..0f67f63a9 100644 --- a/beacon_node/network/src/message_handler.rs +++ b/beacon_node/network/src/message_handler.rs @@ -254,16 +254,12 @@ impl MessageHandler { bodies_response: BeaconBlockBodiesResponse, ) -> Option { //TODO: Implement faster block verification before decoding entirely - let simple_decoded_bodies = - EncodeableBeaconBlockBodiesResponse::from_ssz_bytes(&bodies_response.block_bodies); - - //TODO: Potentially improve the types used here for SSZ encoding/decoding if let Ok(simple_decoded_bodies) = simple_decoded_bodies { Some(DecodedBeaconBlockBodiesResponse { block_roots: bodies_response .block_roots .expect("Responses must have associated roots"), - block_bodies: simple_decoded_bodies.block_bodies, + block_bodies: Vec::from_ssz_bytes(&bodies_response.block_bodies).unwrap(), }) } else { None diff --git a/beacon_node/network/src/sync/simple_sync.rs b/beacon_node/network/src/sync/simple_sync.rs index d8f419520..e4115ff37 100644 --- a/beacon_node/network/src/sync/simple_sync.rs +++ b/beacon_node/network/src/sync/simple_sync.rs @@ -503,11 +503,7 @@ impl SimpleSync { "returned" => block_bodies.len(), ); - //TODO: Elegant ssz encoding. Either here or in the message handler - let bytes = { - let resp = EncodeableBeaconBlockBodiesResponse { block_bodies }; - resp.as_ssz_bytes() - }; + let bytes = block_bodes.as_ssz_bytes(); network.send_rpc_response( peer_id,