From adace4357457e2f4146911254b6fde25ea3a3ff8 Mon Sep 17 00:00:00 2001 From: Daniel Knopik Date: Wed, 11 Dec 2024 11:09:18 +0100 Subject: [PATCH 01/10] decouple `eth2` from `store` and `lighthouse_network` Co-authored-by: Pawan Dhananjay --- Cargo.lock | 5 +- beacon_node/http_api/Cargo.toml | 2 +- beacon_node/http_api/src/database.rs | 12 +++- beacon_node/http_api/src/lib.rs | 56 ++++++++++--------- beacon_node/http_api/tests/tests.rs | 13 ++++- beacon_node/lighthouse_network/Cargo.toml | 1 + .../src/peer_manager/peerdb/peer_info.rs | 21 +++++++ .../lighthouse_network/src/types/mod.rs | 3 +- common/eth2/Cargo.toml | 6 +- common/eth2/src/lib.rs | 4 +- common/eth2/src/lighthouse.rs | 27 +++------ .../eth2/src/lighthouse}/sync_state.rs | 0 common/eth2/src/types.rs | 27 +-------- 13 files changed, 95 insertions(+), 82 deletions(-) rename {beacon_node/lighthouse_network/src/types => common/eth2/src/lighthouse}/sync_state.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index c62e9fbc878..8b38abf41a8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2563,14 +2563,16 @@ name = "eth2" version = "0.1.0" dependencies = [ "derivative", + "enr", "eth2_keystore", "ethereum_serde_utils", "ethereum_ssz", "ethereum_ssz_derive", "futures", "futures-util", - "lighthouse_network", + "libp2p-identity", "mediatype", + "multiaddr", "pretty_reqwest_error", "procfs", "proto_array", @@ -5314,6 +5316,7 @@ dependencies = [ "dirs", "discv5", "either", + "eth2", "ethereum_ssz", "ethereum_ssz_derive", "fnv", diff --git a/beacon_node/http_api/Cargo.toml b/beacon_node/http_api/Cargo.toml index 5d601008bc0..b4551f3915b 100644 --- a/beacon_node/http_api/Cargo.toml +++ b/beacon_node/http_api/Cargo.toml @@ -30,6 +30,7 @@ rand = { workspace = true } safe_arith = { workspace = true } sensitive_url = { workspace = true } serde = { workspace = true } +serde_json = { workspace = true } slog = { workspace = true } slot_clock = { workspace = true } state_processing = { workspace = true } @@ -48,7 +49,6 @@ warp_utils = { workspace = true } genesis = { workspace = true } logging = { workspace = true } proto_array = { workspace = true } -serde_json = { workspace = true } [[test]] name = "bn_http_api_tests" diff --git a/beacon_node/http_api/src/database.rs b/beacon_node/http_api/src/database.rs index aa8b0e8ffca..8a50ec45b08 100644 --- a/beacon_node/http_api/src/database.rs +++ b/beacon_node/http_api/src/database.rs @@ -1,7 +1,17 @@ use beacon_chain::store::metadata::CURRENT_SCHEMA_VERSION; use beacon_chain::{BeaconChain, BeaconChainTypes}; -use eth2::lighthouse::DatabaseInfo; +use serde::Serialize; use std::sync::Arc; +use store::{AnchorInfo, BlobInfo, Split, StoreConfig}; + +#[derive(Debug, Serialize)] +pub struct DatabaseInfo { + pub schema_version: u64, + pub config: StoreConfig, + pub split: Split, + pub anchor: AnchorInfo, + pub blob_info: BlobInfo, +} pub fn info( chain: Arc>, diff --git a/beacon_node/http_api/src/lib.rs b/beacon_node/http_api/src/lib.rs index febdf692590..c8f54f6f8ce 100644 --- a/beacon_node/http_api/src/lib.rs +++ b/beacon_node/http_api/src/lib.rs @@ -3059,9 +3059,9 @@ pub fn serve( peer_id: peer_id.to_string(), enr: peer_info.enr().map(|enr| enr.to_base64()), last_seen_p2p_address: address, - direction: api_types::PeerDirection::from_connection_direction(dir), - state: api_types::PeerState::from_peer_connection_status( - peer_info.connection_status(), + direction: api_types::PeerDirection::from((*dir).clone()), + state: api_types::PeerState::from( + peer_info.connection_status().clone(), ), })); } @@ -3104,10 +3104,9 @@ pub fn serve( // the eth2 API spec implies only peers we have been connected to at some point should be included. if let Some(dir) = peer_info.connection_direction() { - let direction = - api_types::PeerDirection::from_connection_direction(dir); - let state = api_types::PeerState::from_peer_connection_status( - peer_info.connection_status(), + let direction = api_types::PeerDirection::from((*dir).clone()); + let state = api_types::PeerState::from( + peer_info.connection_status().clone(), ); let state_matches = query.state.as_ref().map_or(true, |states| { @@ -3160,9 +3159,8 @@ pub fn serve( .read() .peers() .for_each(|(_, peer_info)| { - let state = api_types::PeerState::from_peer_connection_status( - peer_info.connection_status(), - ); + let state = + api_types::PeerState::from(peer_info.connection_status().clone()); match state { api_types::PeerState::Connected => connected += 1, api_types::PeerState::Connecting => connecting += 1, @@ -4175,15 +4173,18 @@ pub fn serve( |task_spawner: TaskSpawner, network_globals: Arc>| { task_spawner.blocking_json_task(Priority::P1, move || { - Ok(network_globals - .peers - .read() - .peers() - .map(|(peer_id, peer_info)| eth2::lighthouse::Peer { + let mut peers = vec![]; + for (peer_id, peer_info) in network_globals.peers.read().peers() { + peers.push(eth2::lighthouse::Peer { peer_id: peer_id.to_string(), - peer_info: peer_info.clone(), - }) - .collect::>()) + peer_info: serde_json::to_value(peer_info).map_err(|e| { + warp_utils::reject::custom_not_found(format!( + "unable to serialize peer_info: {e:?}", + )) + })?, + }); + } + Ok(peers) }) }, ); @@ -4199,15 +4200,18 @@ pub fn serve( |task_spawner: TaskSpawner, network_globals: Arc>| { task_spawner.blocking_json_task(Priority::P1, move || { - Ok(network_globals - .peers - .read() - .connected_peers() - .map(|(peer_id, peer_info)| eth2::lighthouse::Peer { + let mut peers = vec![]; + for (peer_id, peer_info) in network_globals.peers.read().connected_peers() { + peers.push(eth2::lighthouse::Peer { peer_id: peer_id.to_string(), - peer_info: peer_info.clone(), - }) - .collect::>()) + peer_info: serde_json::to_value(peer_info).map_err(|e| { + warp_utils::reject::custom_not_found(format!( + "unable to serialize peer_info: {e:?}", + )) + })?, + }); + } + Ok(peers) }) }, ); diff --git a/beacon_node/http_api/tests/tests.rs b/beacon_node/http_api/tests/tests.rs index 85d3b4e9bae..5d0f8fdee24 100644 --- a/beacon_node/http_api/tests/tests.rs +++ b/beacon_node/http_api/tests/tests.rs @@ -35,6 +35,7 @@ use state_processing::per_slot_processing; use state_processing::state_advance::partial_state_advance; use std::convert::TryInto; use std::sync::Arc; +use store::{AnchorInfo, Split}; use tokio::time::Duration; use tree_hash::TreeHash; use types::application_domain::ApplicationDomain; @@ -5646,10 +5647,16 @@ impl ApiTester { pub async fn test_get_lighthouse_database_info(self) -> Self { let info = self.client.get_lighthouse_database_info().await.unwrap(); - assert_eq!(info.anchor, self.chain.store.get_anchor_info()); - assert_eq!(info.split, self.chain.store.get_split_info()); assert_eq!( - info.schema_version, + serde_json::from_value::(info.get("anchor").unwrap().clone()).unwrap(), + self.chain.store.get_anchor_info() + ); + assert_eq!( + serde_json::from_value::(info.get("split").unwrap().clone()).unwrap(), + self.chain.store.get_split_info() + ); + assert_eq!( + serde_json::from_value::(info.get("schema_version").unwrap().clone()).unwrap(), store::metadata::CURRENT_SCHEMA_VERSION.as_u64() ); diff --git a/beacon_node/lighthouse_network/Cargo.toml b/beacon_node/lighthouse_network/Cargo.toml index 485f32b37a7..959398fb2da 100644 --- a/beacon_node/lighthouse_network/Cargo.toml +++ b/beacon_node/lighthouse_network/Cargo.toml @@ -13,6 +13,7 @@ directory = { workspace = true } dirs = { workspace = true } discv5 = { workspace = true } either = { workspace = true } +eth2 = { workspace = true } ethereum_ssz = { workspace = true } ethereum_ssz_derive = { workspace = true } fnv = { workspace = true } diff --git a/beacon_node/lighthouse_network/src/peer_manager/peerdb/peer_info.rs b/beacon_node/lighthouse_network/src/peer_manager/peerdb/peer_info.rs index 27c8463a55e..7a173f84b08 100644 --- a/beacon_node/lighthouse_network/src/peer_manager/peerdb/peer_info.rs +++ b/beacon_node/lighthouse_network/src/peer_manager/peerdb/peer_info.rs @@ -4,6 +4,7 @@ use super::sync_status::SyncStatus; use crate::discovery::Eth2Enr; use crate::{rpc::MetaData, types::Subnet}; use discv5::Enr; +use eth2::types::{PeerDirection, PeerState}; use libp2p::core::multiaddr::{Multiaddr, Protocol}; use serde::{ ser::{SerializeStruct, Serializer}, @@ -506,6 +507,15 @@ pub enum ConnectionDirection { Outgoing, } +impl From for PeerDirection { + fn from(direction: ConnectionDirection) -> Self { + match direction { + ConnectionDirection::Incoming => PeerDirection::Inbound, + ConnectionDirection::Outgoing => PeerDirection::Outbound, + } + } +} + /// Connection Status of the peer. #[derive(Debug, Clone, Default)] pub enum PeerConnectionStatus { @@ -599,3 +609,14 @@ impl Serialize for PeerConnectionStatus { } } } + +impl From for PeerState { + fn from(status: PeerConnectionStatus) -> Self { + match status { + Connected { .. } => PeerState::Connected, + Dialing { .. } => PeerState::Connecting, + Disconnecting { .. } => PeerState::Disconnecting, + Disconnected { .. } | Banned { .. } | Unknown => PeerState::Disconnected, + } + } +} diff --git a/beacon_node/lighthouse_network/src/types/mod.rs b/beacon_node/lighthouse_network/src/types/mod.rs index 6f266fd2bad..1812c7b3e2d 100644 --- a/beacon_node/lighthouse_network/src/types/mod.rs +++ b/beacon_node/lighthouse_network/src/types/mod.rs @@ -1,7 +1,6 @@ mod globals; mod pubsub; mod subnet; -mod sync_state; mod topics; use types::{BitVector, EthSpec}; @@ -11,10 +10,10 @@ pub type EnrSyncCommitteeBitfield = BitVector<::SyncCommitteeSu pub type Enr = discv5::enr::Enr; +pub use eth2::lighthouse::sync_state::{BackFillState, SyncState}; pub use globals::NetworkGlobals; pub use pubsub::{PubsubMessage, SnappyTransform}; pub use subnet::{Subnet, SubnetDiscovery}; -pub use sync_state::{BackFillState, SyncState}; pub use topics::{ attestation_sync_committee_topics, core_topics_to_subscribe, fork_core_topics, subnet_from_topic_hash, GossipEncoding, GossipKind, GossipTopic, ALTAIR_CORE_TOPICS, diff --git a/common/eth2/Cargo.toml b/common/eth2/Cargo.toml index 9d6dea100d4..75803e31efe 100644 --- a/common/eth2/Cargo.toml +++ b/common/eth2/Cargo.toml @@ -7,14 +7,16 @@ edition = { workspace = true } [dependencies] derivative = { workspace = true } +enr = { version = "0.13.0", features = ["ed25519"] } eth2_keystore = { workspace = true } ethereum_serde_utils = { workspace = true } ethereum_ssz = { workspace = true } ethereum_ssz_derive = { workspace = true } futures = { workspace = true } futures-util = "0.3.8" -lighthouse_network = { workspace = true } +libp2p-identity = { version = "0.2", features = ["peerid"] } mediatype = "0.19.13" +multiaddr = "0.18.2" pretty_reqwest_error = { workspace = true } proto_array = { workspace = true } reqwest = { workspace = true } @@ -37,4 +39,4 @@ procfs = { version = "0.15.1", optional = true } [features] default = ["lighthouse"] -lighthouse = ["psutil", "procfs"] +lighthouse = ["dep:psutil", "dep:procfs"] diff --git a/common/eth2/src/lib.rs b/common/eth2/src/lib.rs index 12b1538984e..5aac11fe10a 100644 --- a/common/eth2/src/lib.rs +++ b/common/eth2/src/lib.rs @@ -16,10 +16,11 @@ pub mod types; use self::mixin::{RequestAccept, ResponseOptional}; use self::types::{Error as ResponseError, *}; +use ::types::fork_versioned_response::ExecutionOptimisticFinalizedForkVersionedResponse; use derivative::Derivative; use futures::Stream; use futures_util::StreamExt; -use lighthouse_network::PeerId; +use libp2p_identity::PeerId; use pretty_reqwest_error::PrettyReqwestError; pub use reqwest; use reqwest::{ @@ -35,7 +36,6 @@ use std::fmt; use std::future::Future; use std::path::PathBuf; use std::time::Duration; -use store::fork_versioned_response::ExecutionOptimisticFinalizedForkVersionedResponse; pub const V1: EndpointVersion = EndpointVersion(1); pub const V2: EndpointVersion = EndpointVersion(2); diff --git a/common/eth2/src/lighthouse.rs b/common/eth2/src/lighthouse.rs index 66dd5d779bd..4cba0192a48 100644 --- a/common/eth2/src/lighthouse.rs +++ b/common/eth2/src/lighthouse.rs @@ -6,18 +6,16 @@ mod block_packing_efficiency; mod block_rewards; mod standard_block_rewards; mod sync_committee_rewards; +pub mod sync_state; use crate::{ - types::{ - DepositTreeSnapshot, Epoch, EthSpec, FinalizedExecutionBlock, GenericResponse, ValidatorId, - }, + types::{DepositTreeSnapshot, Epoch, FinalizedExecutionBlock, GenericResponse, ValidatorId}, BeaconNodeHttpClient, DepositData, Error, Eth1Data, Hash256, Slot, }; use proto_array::core::ProtoArray; use serde::{Deserialize, Serialize}; use ssz::four_byte_option_impl; use ssz_derive::{Decode, Encode}; -use store::{AnchorInfo, BlobInfo, Split, StoreConfig}; pub use attestation_performance::{ AttestationPerformance, AttestationPerformanceQuery, AttestationPerformanceStatistics, @@ -27,7 +25,6 @@ pub use block_packing_efficiency::{ BlockPackingEfficiency, BlockPackingEfficiencyQuery, ProposerInfo, UniqueAttestation, }; pub use block_rewards::{AttestationRewards, BlockReward, BlockRewardMeta, BlockRewardsQuery}; -pub use lighthouse_network::{types::SyncState, PeerInfo}; pub use standard_block_rewards::StandardBlockReward; pub use sync_committee_rewards::SyncCommitteeReward; @@ -37,14 +34,12 @@ four_byte_option_impl!(four_byte_option_u64, u64); four_byte_option_impl!(four_byte_option_hash256, Hash256); /// Information returned by `peers` and `connected_peers`. -// TODO: this should be deserializable.. -#[derive(Debug, Clone, Serialize)] -#[serde(bound = "E: EthSpec")] -pub struct Peer { +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Peer { /// The Peer's ID pub peer_id: String, /// The PeerInfo associated with the peer. - pub peer_info: PeerInfo, + pub peer_info: serde_json::Value, } /// The results of validators voting during an epoch. @@ -88,6 +83,7 @@ pub struct ValidatorInclusionData { pub is_previous_epoch_head_attester: bool, } +use crate::lighthouse::sync_state::SyncState; #[cfg(target_os = "linux")] use { psutil::cpu::os::linux::CpuTimesExt, psutil::memory::os::linux::VirtualMemoryExt, @@ -356,15 +352,6 @@ impl From for FinalizedExecutionBlock { } } -#[derive(Debug, Serialize, Deserialize)] -pub struct DatabaseInfo { - pub schema_version: u64, - pub config: StoreConfig, - pub split: Split, - pub anchor: AnchorInfo, - pub blob_info: BlobInfo, -} - impl BeaconNodeHttpClient { /// `GET lighthouse/health` pub async fn get_lighthouse_health(&self) -> Result, Error> { @@ -503,7 +490,7 @@ impl BeaconNodeHttpClient { } /// `GET lighthouse/database/info` - pub async fn get_lighthouse_database_info(&self) -> Result { + pub async fn get_lighthouse_database_info(&self) -> Result { let mut path = self.server.full.clone(); path.path_segments_mut() diff --git a/beacon_node/lighthouse_network/src/types/sync_state.rs b/common/eth2/src/lighthouse/sync_state.rs similarity index 100% rename from beacon_node/lighthouse_network/src/types/sync_state.rs rename to common/eth2/src/lighthouse/sync_state.rs diff --git a/common/eth2/src/types.rs b/common/eth2/src/types.rs index 695d536944b..a6c973d2e63 100644 --- a/common/eth2/src/types.rs +++ b/common/eth2/src/types.rs @@ -5,8 +5,9 @@ use crate::{ Error as ServerError, CONSENSUS_BLOCK_VALUE_HEADER, CONSENSUS_VERSION_HEADER, EXECUTION_PAYLOAD_BLINDED_HEADER, EXECUTION_PAYLOAD_VALUE_HEADER, }; -use lighthouse_network::{ConnectionDirection, Enr, Multiaddr, PeerConnectionStatus}; +use enr::{CombinedKey, Enr}; use mediatype::{names, MediaType, MediaTypeList}; +use multiaddr::Multiaddr; use reqwest::header::HeaderMap; use serde::{Deserialize, Deserializer, Serialize}; use serde_json::Value; @@ -578,7 +579,7 @@ pub struct ChainHeadData { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct IdentityData { pub peer_id: String, - pub enr: Enr, + pub enr: Enr, pub p2p_addresses: Vec, pub discovery_addresses: Vec, pub metadata: MetaData, @@ -853,19 +854,6 @@ pub enum PeerState { Disconnecting, } -impl PeerState { - pub fn from_peer_connection_status(status: &PeerConnectionStatus) -> Self { - match status { - PeerConnectionStatus::Connected { .. } => PeerState::Connected, - PeerConnectionStatus::Dialing { .. } => PeerState::Connecting, - PeerConnectionStatus::Disconnecting { .. } => PeerState::Disconnecting, - PeerConnectionStatus::Disconnected { .. } - | PeerConnectionStatus::Banned { .. } - | PeerConnectionStatus::Unknown => PeerState::Disconnected, - } - } -} - impl FromStr for PeerState { type Err = String; @@ -898,15 +886,6 @@ pub enum PeerDirection { Outbound, } -impl PeerDirection { - pub fn from_connection_direction(direction: &ConnectionDirection) -> Self { - match direction { - ConnectionDirection::Incoming => PeerDirection::Inbound, - ConnectionDirection::Outgoing => PeerDirection::Outbound, - } - } -} - impl FromStr for PeerDirection { type Err = String; From 903bae0959627afb5efd8cfb408392bc2edc635c Mon Sep 17 00:00:00 2001 From: Daniel Knopik Date: Thu, 12 Dec 2024 11:22:43 +0100 Subject: [PATCH 02/10] remove unused dependency --- Cargo.lock | 1 - beacon_node/execution_layer/Cargo.toml | 1 - 2 files changed, 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8b38abf41a8..d713d4c0356 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3025,7 +3025,6 @@ dependencies = [ "builder_client", "bytes", "eth2", - "eth2_network_config", "ethereum_serde_utils", "ethereum_ssz", "ethers-core", diff --git a/beacon_node/execution_layer/Cargo.toml b/beacon_node/execution_layer/Cargo.toml index 7eb7b4a15e1..236180c011b 100644 --- a/beacon_node/execution_layer/Cargo.toml +++ b/beacon_node/execution_layer/Cargo.toml @@ -12,7 +12,6 @@ arc-swap = "1.6.0" builder_client = { path = "../builder_client" } bytes = { workspace = true } eth2 = { workspace = true } -eth2_network_config = { workspace = true } ethereum_serde_utils = { workspace = true } ethereum_ssz = { workspace = true } ethers-core = { workspace = true } From 9bbd09b6aa7f4913072e23d6beda8d8c2353f809 Mon Sep 17 00:00:00 2001 From: Daniel Knopik Date: Tue, 14 Jan 2025 14:27:57 +0100 Subject: [PATCH 03/10] remove the unused `store` dependency --- Cargo.lock | 1 - common/eth2/Cargo.toml | 2 -- 2 files changed, 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d713d4c0356..42e9df4e796 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2584,7 +2584,6 @@ dependencies = [ "serde_json", "slashing_protection", "ssz_types", - "store", "tokio", "types", "zeroize", diff --git a/common/eth2/Cargo.toml b/common/eth2/Cargo.toml index 75803e31efe..5b790cbacae 100644 --- a/common/eth2/Cargo.toml +++ b/common/eth2/Cargo.toml @@ -3,7 +3,6 @@ name = "eth2" version = "0.1.0" authors = ["Paul Hauner "] edition = { workspace = true } -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] derivative = { workspace = true } @@ -26,7 +25,6 @@ serde = { workspace = true } serde_json = { workspace = true } slashing_protection = { workspace = true } ssz_types = { workspace = true } -store = { workspace = true } types = { workspace = true } zeroize = { workspace = true } From c036f7a58e34a2af7f5fdf214da8538f0f5b1409 Mon Sep 17 00:00:00 2001 From: Daniel Knopik Date: Tue, 14 Jan 2025 14:42:29 +0100 Subject: [PATCH 04/10] move misplaced `use` --- common/eth2/src/lighthouse.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/eth2/src/lighthouse.rs b/common/eth2/src/lighthouse.rs index 4cba0192a48..f7f07b3fa5c 100644 --- a/common/eth2/src/lighthouse.rs +++ b/common/eth2/src/lighthouse.rs @@ -9,6 +9,7 @@ mod sync_committee_rewards; pub mod sync_state; use crate::{ + lighthouse::sync_state::SyncState, types::{DepositTreeSnapshot, Epoch, FinalizedExecutionBlock, GenericResponse, ValidatorId}, BeaconNodeHttpClient, DepositData, Error, Eth1Data, Hash256, Slot, }; @@ -83,7 +84,6 @@ pub struct ValidatorInclusionData { pub is_previous_epoch_head_attester: bool, } -use crate::lighthouse::sync_state::SyncState; #[cfg(target_os = "linux")] use { psutil::cpu::os::linux::CpuTimesExt, psutil::memory::os::linux::VirtualMemoryExt, From 7883acbc5c15a86a28f018b46de05cb311211654 Mon Sep 17 00:00:00 2001 From: Daniel Knopik Date: Tue, 14 Jan 2025 17:30:51 +0100 Subject: [PATCH 05/10] fix reward api and building without lighthouse feature --- .../beacon_chain/src/attestation_rewards.rs | 6 +- .../beacon_chain/src/beacon_block_reward.rs | 2 +- .../src/sync_committee_rewards.rs | 2 +- beacon_node/beacon_chain/tests/rewards.rs | 4 +- .../http_api/src/standard_block_rewards.rs | 2 +- .../http_api/src/sync_committee_rewards.rs | 3 +- common/eth2/src/lib.rs | 36 ++++---- common/eth2/src/lighthouse.rs | 6 -- .../src/lighthouse/attestation_rewards.rs | 55 ------------ .../src/lighthouse/standard_block_rewards.rs | 26 ------ .../src/lighthouse/sync_committee_rewards.rs | 13 --- common/eth2/src/types.rs | 85 +++++++++++++++++++ 12 files changed, 111 insertions(+), 129 deletions(-) delete mode 100644 common/eth2/src/lighthouse/attestation_rewards.rs delete mode 100644 common/eth2/src/lighthouse/standard_block_rewards.rs delete mode 100644 common/eth2/src/lighthouse/sync_committee_rewards.rs diff --git a/beacon_node/beacon_chain/src/attestation_rewards.rs b/beacon_node/beacon_chain/src/attestation_rewards.rs index 3b37b09e402..e552cad9d03 100644 --- a/beacon_node/beacon_chain/src/attestation_rewards.rs +++ b/beacon_node/beacon_chain/src/attestation_rewards.rs @@ -1,7 +1,7 @@ use crate::{BeaconChain, BeaconChainError, BeaconChainTypes}; -use eth2::lighthouse::attestation_rewards::{IdealAttestationRewards, TotalAttestationRewards}; -use eth2::lighthouse::StandardAttestationRewards; -use eth2::types::ValidatorId; +use eth2::types::{ + IdealAttestationRewards, StandardAttestationRewards, TotalAttestationRewards, ValidatorId, +}; use safe_arith::SafeArith; use serde_utils::quoted_u64::Quoted; use slog::debug; diff --git a/beacon_node/beacon_chain/src/beacon_block_reward.rs b/beacon_node/beacon_chain/src/beacon_block_reward.rs index e0bb79bf38b..131abd4111c 100644 --- a/beacon_node/beacon_chain/src/beacon_block_reward.rs +++ b/beacon_node/beacon_chain/src/beacon_block_reward.rs @@ -1,6 +1,6 @@ use crate::{BeaconChain, BeaconChainError, BeaconChainTypes, StateSkipConfig}; use attesting_indices_base::get_attesting_indices; -use eth2::lighthouse::StandardBlockReward; +use eth2::types::StandardBlockReward; use safe_arith::SafeArith; use slog::error; use state_processing::common::attesting_indices_base; diff --git a/beacon_node/beacon_chain/src/sync_committee_rewards.rs b/beacon_node/beacon_chain/src/sync_committee_rewards.rs index 9b35cff9432..5aa262c30a6 100644 --- a/beacon_node/beacon_chain/src/sync_committee_rewards.rs +++ b/beacon_node/beacon_chain/src/sync_committee_rewards.rs @@ -1,6 +1,6 @@ use crate::{BeaconChain, BeaconChainError, BeaconChainTypes}; -use eth2::lighthouse::SyncCommitteeReward; +use eth2::types::SyncCommitteeReward; use safe_arith::SafeArith; use slog::error; use state_processing::per_block_processing::altair::sync_committee::compute_sync_aggregate_rewards; diff --git a/beacon_node/beacon_chain/tests/rewards.rs b/beacon_node/beacon_chain/tests/rewards.rs index be7045c54a9..6d03593aef7 100644 --- a/beacon_node/beacon_chain/tests/rewards.rs +++ b/beacon_node/beacon_chain/tests/rewards.rs @@ -9,9 +9,7 @@ use beacon_chain::{ types::{Epoch, EthSpec, Keypair, MinimalEthSpec}, BlockError, ChainConfig, StateSkipConfig, WhenSlotSkipped, }; -use eth2::lighthouse::attestation_rewards::TotalAttestationRewards; -use eth2::lighthouse::StandardAttestationRewards; -use eth2::types::ValidatorId; +use eth2::types::{StandardAttestationRewards, TotalAttestationRewards, ValidatorId}; use state_processing::{BlockReplayError, BlockReplayer}; use std::array::IntoIter; use std::collections::HashMap; diff --git a/beacon_node/http_api/src/standard_block_rewards.rs b/beacon_node/http_api/src/standard_block_rewards.rs index 1ab75374ea8..97cfd8847a2 100644 --- a/beacon_node/http_api/src/standard_block_rewards.rs +++ b/beacon_node/http_api/src/standard_block_rewards.rs @@ -2,7 +2,7 @@ use crate::sync_committee_rewards::get_state_before_applying_block; use crate::BlockId; use crate::ExecutionOptimistic; use beacon_chain::{BeaconChain, BeaconChainTypes}; -use eth2::lighthouse::StandardBlockReward; +use eth2::types::StandardBlockReward; use std::sync::Arc; use warp_utils::reject::beacon_chain_error; /// The difference between block_rewards and beacon_block_rewards is the later returns block diff --git a/beacon_node/http_api/src/sync_committee_rewards.rs b/beacon_node/http_api/src/sync_committee_rewards.rs index 68a06b1ce8c..9737f3e58c7 100644 --- a/beacon_node/http_api/src/sync_committee_rewards.rs +++ b/beacon_node/http_api/src/sync_committee_rewards.rs @@ -1,7 +1,6 @@ use crate::{BlockId, ExecutionOptimistic}; use beacon_chain::{BeaconChain, BeaconChainError, BeaconChainTypes}; -use eth2::lighthouse::SyncCommitteeReward; -use eth2::types::ValidatorId; +use eth2::types::{SyncCommitteeReward, ValidatorId}; use slog::{debug, Logger}; use state_processing::BlockReplayer; use std::sync::Arc; diff --git a/common/eth2/src/lib.rs b/common/eth2/src/lib.rs index 5aac11fe10a..b3bc48a8042 100644 --- a/common/eth2/src/lib.rs +++ b/common/eth2/src/lib.rs @@ -327,7 +327,6 @@ impl BeaconNodeHttpClient { } /// Perform a HTTP POST request, returning a JSON response. - #[cfg(feature = "lighthouse")] async fn post_with_response( &self, url: U, @@ -1587,33 +1586,34 @@ impl BeaconNodeHttpClient { /// `POST beacon/rewards/sync_committee` pub async fn post_beacon_rewards_sync_committee( &self, - rewards: &[Option>], - ) -> Result<(), Error> { + block_id: BlockId, + validators: &[ValidatorId], + ) -> Result>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() .map_err(|()| Error::InvalidUrl(self.server.clone()))? .push("beacon") .push("rewards") - .push("sync_committee"); - - self.post(path, &rewards).await?; + .push("sync_committee") + .push(&block_id.to_string()); - Ok(()) + self.post_with_response(path, &validators).await } /// `GET beacon/rewards/blocks` - pub async fn get_beacon_rewards_blocks(&self, epoch: Epoch) -> Result<(), Error> { + pub async fn get_beacon_rewards_blocks( + &self, + block_id: BlockId, + ) -> Result, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() .map_err(|()| Error::InvalidUrl(self.server.clone()))? .push("beacon") .push("rewards") - .push("blocks"); - - path.query_pairs_mut() - .append_pair("epoch", &epoch.to_string()); + .push("blocks") + .push(&block_id.to_string()); self.get(path).await } @@ -1621,19 +1621,19 @@ impl BeaconNodeHttpClient { /// `POST beacon/rewards/attestations` pub async fn post_beacon_rewards_attestations( &self, - attestations: &[ValidatorId], - ) -> Result<(), Error> { + epoch: Epoch, + validators: &[ValidatorId], + ) -> Result { let mut path = self.eth_path(V1)?; path.path_segments_mut() .map_err(|()| Error::InvalidUrl(self.server.clone()))? .push("beacon") .push("rewards") - .push("attestations"); - - self.post(path, &attestations).await?; + .push("attestations") + .push(&epoch.to_string()); - Ok(()) + self.post_with_response(path, &validators).await } // GET builder/states/{state_id}/expected_withdrawals diff --git a/common/eth2/src/lighthouse.rs b/common/eth2/src/lighthouse.rs index f7f07b3fa5c..a9f4ce80a00 100644 --- a/common/eth2/src/lighthouse.rs +++ b/common/eth2/src/lighthouse.rs @@ -1,11 +1,8 @@ //! This module contains endpoints that are non-standard and only available on Lighthouse servers. mod attestation_performance; -pub mod attestation_rewards; mod block_packing_efficiency; mod block_rewards; -mod standard_block_rewards; -mod sync_committee_rewards; pub mod sync_state; use crate::{ @@ -21,13 +18,10 @@ use ssz_derive::{Decode, Encode}; pub use attestation_performance::{ AttestationPerformance, AttestationPerformanceQuery, AttestationPerformanceStatistics, }; -pub use attestation_rewards::StandardAttestationRewards; pub use block_packing_efficiency::{ BlockPackingEfficiency, BlockPackingEfficiencyQuery, ProposerInfo, UniqueAttestation, }; pub use block_rewards::{AttestationRewards, BlockReward, BlockRewardMeta, BlockRewardsQuery}; -pub use standard_block_rewards::StandardBlockReward; -pub use sync_committee_rewards::SyncCommitteeReward; // Define "legacy" implementations of `Option` which use four bytes for encoding the union // selector. diff --git a/common/eth2/src/lighthouse/attestation_rewards.rs b/common/eth2/src/lighthouse/attestation_rewards.rs deleted file mode 100644 index fa3f93d06f8..00000000000 --- a/common/eth2/src/lighthouse/attestation_rewards.rs +++ /dev/null @@ -1,55 +0,0 @@ -use serde::{Deserialize, Serialize}; -use serde_utils::quoted_u64::Quoted; - -// Details about the rewards paid for attestations -// All rewards in GWei - -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] -pub struct IdealAttestationRewards { - // Validator's effective balance in gwei - #[serde(with = "serde_utils::quoted_u64")] - pub effective_balance: u64, - // Ideal attester's reward for head vote in gwei - #[serde(with = "serde_utils::quoted_u64")] - pub head: u64, - // Ideal attester's reward for target vote in gwei - #[serde(with = "serde_utils::quoted_u64")] - pub target: u64, - // Ideal attester's reward for source vote in gwei - #[serde(with = "serde_utils::quoted_u64")] - pub source: u64, - // Ideal attester's inclusion_delay reward in gwei (phase0 only) - #[serde(skip_serializing_if = "Option::is_none")] - pub inclusion_delay: Option>, - // Ideal attester's inactivity penalty in gwei - #[serde(with = "serde_utils::quoted_i64")] - pub inactivity: i64, -} - -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] -pub struct TotalAttestationRewards { - // one entry for every validator based on their attestations in the epoch - #[serde(with = "serde_utils::quoted_u64")] - pub validator_index: u64, - // attester's reward for head vote in gwei - #[serde(with = "serde_utils::quoted_i64")] - pub head: i64, - // attester's reward for target vote in gwei - #[serde(with = "serde_utils::quoted_i64")] - pub target: i64, - // attester's reward for source vote in gwei - #[serde(with = "serde_utils::quoted_i64")] - pub source: i64, - // attester's inclusion_delay reward in gwei (phase0 only) - #[serde(skip_serializing_if = "Option::is_none")] - pub inclusion_delay: Option>, - // attester's inactivity penalty in gwei - #[serde(with = "serde_utils::quoted_i64")] - pub inactivity: i64, -} - -#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] -pub struct StandardAttestationRewards { - pub ideal_rewards: Vec, - pub total_rewards: Vec, -} diff --git a/common/eth2/src/lighthouse/standard_block_rewards.rs b/common/eth2/src/lighthouse/standard_block_rewards.rs deleted file mode 100644 index 15fcdc60667..00000000000 --- a/common/eth2/src/lighthouse/standard_block_rewards.rs +++ /dev/null @@ -1,26 +0,0 @@ -use serde::{Deserialize, Serialize}; - -// Details about the rewards for a single block -// All rewards in GWei -#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] -pub struct StandardBlockReward { - // proposer of the block, the proposer index who receives these rewards - #[serde(with = "serde_utils::quoted_u64")] - pub proposer_index: u64, - // total block reward in gwei, - // equal to attestations + sync_aggregate + proposer_slashings + attester_slashings - #[serde(with = "serde_utils::quoted_u64")] - pub total: u64, - // block reward component due to included attestations in gwei - #[serde(with = "serde_utils::quoted_u64")] - pub attestations: u64, - // block reward component due to included sync_aggregate in gwei - #[serde(with = "serde_utils::quoted_u64")] - pub sync_aggregate: u64, - // block reward component due to included proposer_slashings in gwei - #[serde(with = "serde_utils::quoted_u64")] - pub proposer_slashings: u64, - // block reward component due to included attester_slashings in gwei - #[serde(with = "serde_utils::quoted_u64")] - pub attester_slashings: u64, -} diff --git a/common/eth2/src/lighthouse/sync_committee_rewards.rs b/common/eth2/src/lighthouse/sync_committee_rewards.rs deleted file mode 100644 index 66a721dc229..00000000000 --- a/common/eth2/src/lighthouse/sync_committee_rewards.rs +++ /dev/null @@ -1,13 +0,0 @@ -use serde::{Deserialize, Serialize}; - -// Details about the rewards paid to sync committee members for attesting headers -// All rewards in GWei - -#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] -pub struct SyncCommitteeReward { - #[serde(with = "serde_utils::quoted_u64")] - pub validator_index: u64, - // sync committee reward in gwei for the validator - #[serde(with = "serde_utils::quoted_i64")] - pub reward: i64, -} diff --git a/common/eth2/src/types.rs b/common/eth2/src/types.rs index a6c973d2e63..91c18c27bdc 100644 --- a/common/eth2/src/types.rs +++ b/common/eth2/src/types.rs @@ -11,6 +11,7 @@ use multiaddr::Multiaddr; use reqwest::header::HeaderMap; use serde::{Deserialize, Deserializer, Serialize}; use serde_json::Value; +use serde_utils::quoted_u64::Quoted; use ssz::{Decode, DecodeError}; use ssz_derive::{Decode, Encode}; use std::fmt::{self, Display}; @@ -1982,6 +1983,90 @@ pub struct BlobsBundle { pub blobs: BlobsList, } +/// Details about the rewards paid to sync committee members for attesting headers +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] +pub struct SyncCommitteeReward { + #[serde(with = "serde_utils::quoted_u64")] + pub validator_index: u64, + /// sync committee reward in gwei for the validator + #[serde(with = "serde_utils::quoted_i64")] + pub reward: i64, +} + +/// Details about the rewards for a single block +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] +pub struct StandardBlockReward { + /// proposer of the block, the proposer index who receives these rewards + #[serde(with = "serde_utils::quoted_u64")] + pub proposer_index: u64, + /// total block reward in gwei, + /// equal to attestations + sync_aggregate + proposer_slashings + attester_slashings + #[serde(with = "serde_utils::quoted_u64")] + pub total: u64, + /// block reward component due to included attestations in gwei + #[serde(with = "serde_utils::quoted_u64")] + pub attestations: u64, + /// block reward component due to included sync_aggregate in gwei + #[serde(with = "serde_utils::quoted_u64")] + pub sync_aggregate: u64, + /// block reward component due to included proposer_slashings in gwei + #[serde(with = "serde_utils::quoted_u64")] + pub proposer_slashings: u64, + /// block reward component due to included attester_slashings in gwei + #[serde(with = "serde_utils::quoted_u64")] + pub attester_slashings: u64, +} + +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +pub struct IdealAttestationRewards { + /// Validator's effective balance in gwei + #[serde(with = "serde_utils::quoted_u64")] + pub effective_balance: u64, + /// Ideal attester's reward for head vote in gwei + #[serde(with = "serde_utils::quoted_u64")] + pub head: u64, + /// Ideal attester's reward for target vote in gwei + #[serde(with = "serde_utils::quoted_u64")] + pub target: u64, + /// Ideal attester's reward for source vote in gwei + #[serde(with = "serde_utils::quoted_u64")] + pub source: u64, + /// Ideal attester's inclusion_delay reward in gwei (phase0 only) + #[serde(skip_serializing_if = "Option::is_none")] + pub inclusion_delay: Option>, + /// Ideal attester's inactivity penalty in gwei + #[serde(with = "serde_utils::quoted_i64")] + pub inactivity: i64, +} + +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +pub struct TotalAttestationRewards { + /// one entry for every validator based on their attestations in the epoch + #[serde(with = "serde_utils::quoted_u64")] + pub validator_index: u64, + /// attester's reward for head vote in gwei + #[serde(with = "serde_utils::quoted_i64")] + pub head: i64, + /// attester's reward for target vote in gwei + #[serde(with = "serde_utils::quoted_i64")] + pub target: i64, + /// attester's reward for source vote in gwei + #[serde(with = "serde_utils::quoted_i64")] + pub source: i64, + /// attester's inclusion_delay reward in gwei (phase0 only) + #[serde(skip_serializing_if = "Option::is_none")] + pub inclusion_delay: Option>, + /// attester's inactivity penalty in gwei + #[serde(with = "serde_utils::quoted_i64")] + pub inactivity: i64, +} + +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] +pub struct StandardAttestationRewards { + pub ideal_rewards: Vec, + pub total_rewards: Vec, +} + #[cfg(test)] mod test { use super::*; From e81773a4d889b08e15e3798b2f9207d5f1ac426c Mon Sep 17 00:00:00 2001 From: Daniel Knopik Date: Mon, 20 Jan 2025 13:53:30 +0100 Subject: [PATCH 06/10] move `Peer` and remove `get_lighthouse_database_info` --- Cargo.lock | 1 - beacon_node/http_api/src/lib.rs | 44 +++++++------------ beacon_node/http_api/src/peer.rs | 13 ++++++ beacon_node/http_api/tests/tests.rs | 21 --------- .../src/peer_manager/peerdb/peer_info.rs | 2 +- common/eth2/src/lighthouse.rs | 22 ---------- common/warp_utils/Cargo.toml | 1 - 7 files changed, 31 insertions(+), 73 deletions(-) create mode 100644 beacon_node/http_api/src/peer.rs diff --git a/Cargo.lock b/Cargo.lock index 5f45fc7b4c3..966e8773fd1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9815,7 +9815,6 @@ dependencies = [ "bytes", "eth2", "headers", - "metrics", "safe_arith", "serde", "serde_array_query", diff --git a/beacon_node/http_api/src/lib.rs b/beacon_node/http_api/src/lib.rs index 21a1cd48ba3..df804d18b41 100644 --- a/beacon_node/http_api/src/lib.rs +++ b/beacon_node/http_api/src/lib.rs @@ -15,6 +15,7 @@ mod builder_states; mod database; mod light_client; mod metrics; +mod peer; mod produce_block; mod proposer_duties; mod publish_attestations; @@ -3092,15 +3093,13 @@ pub fn serve( }; // the eth2 API spec implies only peers we have been connected to at some point should be included. - if let Some(dir) = peer_info.connection_direction().as_ref() { + if let Some(&dir) = peer_info.connection_direction() { return Ok(api_types::GenericResponse::from(api_types::PeerData { peer_id: peer_id.to_string(), enr: peer_info.enr().map(|enr| enr.to_base64()), last_seen_p2p_address: address, - direction: api_types::PeerDirection::from((*dir).clone()), - state: api_types::PeerState::from( - peer_info.connection_status().clone(), - ), + direction: dir.into(), + state: peer_info.connection_status().clone().into(), })); } } @@ -3141,11 +3140,9 @@ pub fn serve( }; // the eth2 API spec implies only peers we have been connected to at some point should be included. - if let Some(dir) = peer_info.connection_direction() { - let direction = api_types::PeerDirection::from((*dir).clone()); - let state = api_types::PeerState::from( - peer_info.connection_status().clone(), - ); + if let Some(&dir) = peer_info.connection_direction() { + let direction = dir.into(); + let state = peer_info.connection_status().clone().into(); let state_matches = query.state.as_ref().map_or(true, |states| { states.iter().any(|state_param| *state_param == state) @@ -4205,18 +4202,15 @@ pub fn serve( |task_spawner: TaskSpawner, network_globals: Arc>| { task_spawner.blocking_json_task(Priority::P1, move || { - let mut peers = vec![]; - for (peer_id, peer_info) in network_globals.peers.read().peers() { - peers.push(eth2::lighthouse::Peer { + Ok(network_globals + .peers + .read() + .peers() + .map(|(peer_id, peer_info)| peer::Peer { peer_id: peer_id.to_string(), - peer_info: serde_json::to_value(peer_info).map_err(|e| { - warp_utils::reject::custom_not_found(format!( - "unable to serialize peer_info: {e:?}", - )) - })?, - }); - } - Ok(peers) + peer_info: peer_info.clone(), + }) + .collect::>()) }) }, ); @@ -4234,13 +4228,9 @@ pub fn serve( task_spawner.blocking_json_task(Priority::P1, move || { let mut peers = vec![]; for (peer_id, peer_info) in network_globals.peers.read().connected_peers() { - peers.push(eth2::lighthouse::Peer { + peers.push(peer::Peer { peer_id: peer_id.to_string(), - peer_info: serde_json::to_value(peer_info).map_err(|e| { - warp_utils::reject::custom_not_found(format!( - "unable to serialize peer_info: {e:?}", - )) - })?, + peer_info: peer_info.clone(), }); } Ok(peers) diff --git a/beacon_node/http_api/src/peer.rs b/beacon_node/http_api/src/peer.rs new file mode 100644 index 00000000000..9d160b72d92 --- /dev/null +++ b/beacon_node/http_api/src/peer.rs @@ -0,0 +1,13 @@ +use serde::Serialize; +use lighthouse_network::PeerInfo; +use types::EthSpec; + +/// Information returned by `peers` and `connected_peers`. +#[derive(Debug, Clone, Serialize)] +#[serde(bound = "E: EthSpec")] +pub(crate) struct Peer { + /// The Peer's ID + pub peer_id: String, + /// The PeerInfo associated with the peer. + pub peer_info: PeerInfo, +} diff --git a/beacon_node/http_api/tests/tests.rs b/beacon_node/http_api/tests/tests.rs index bc5173c2ab0..9f146eadec1 100644 --- a/beacon_node/http_api/tests/tests.rs +++ b/beacon_node/http_api/tests/tests.rs @@ -5675,25 +5675,6 @@ impl ApiTester { self } - pub async fn test_get_lighthouse_database_info(self) -> Self { - let info = self.client.get_lighthouse_database_info().await.unwrap(); - - assert_eq!( - serde_json::from_value::(info.get("anchor").unwrap().clone()).unwrap(), - self.chain.store.get_anchor_info() - ); - assert_eq!( - serde_json::from_value::(info.get("split").unwrap().clone()).unwrap(), - self.chain.store.get_split_info() - ); - assert_eq!( - serde_json::from_value::(info.get("schema_version").unwrap().clone()).unwrap(), - store::metadata::CURRENT_SCHEMA_VERSION.as_u64() - ); - - self - } - pub async fn test_post_lighthouse_database_reconstruct(self) -> Self { let response = self .client @@ -7232,8 +7213,6 @@ async fn lighthouse_endpoints() { .await .test_get_lighthouse_staking() .await - .test_get_lighthouse_database_info() - .await .test_post_lighthouse_database_reconstruct() .await .test_post_lighthouse_liveness() diff --git a/beacon_node/lighthouse_network/src/peer_manager/peerdb/peer_info.rs b/beacon_node/lighthouse_network/src/peer_manager/peerdb/peer_info.rs index 576135f6ad3..325190d51ac 100644 --- a/beacon_node/lighthouse_network/src/peer_manager/peerdb/peer_info.rs +++ b/beacon_node/lighthouse_network/src/peer_manager/peerdb/peer_info.rs @@ -518,7 +518,7 @@ impl PeerInfo { } /// Connection Direction of connection. -#[derive(Debug, Clone, Serialize, AsRefStr)] +#[derive(Debug, Clone, Copy, Serialize, AsRefStr)] #[strum(serialize_all = "snake_case")] pub enum ConnectionDirection { /// The connection was established by a peer dialing us. diff --git a/common/eth2/src/lighthouse.rs b/common/eth2/src/lighthouse.rs index 11e4628d377..a9f2f471b0f 100644 --- a/common/eth2/src/lighthouse.rs +++ b/common/eth2/src/lighthouse.rs @@ -28,15 +28,6 @@ pub use block_rewards::{AttestationRewards, BlockReward, BlockRewardMeta, BlockR four_byte_option_impl!(four_byte_option_u64, u64); four_byte_option_impl!(four_byte_option_hash256, Hash256); -/// Information returned by `peers` and `connected_peers`. -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct Peer { - /// The Peer's ID - pub peer_id: String, - /// The PeerInfo associated with the peer. - pub peer_info: serde_json::Value, -} - /// The results of validators voting during an epoch. /// /// Provides information about the current and previous epochs. @@ -361,19 +352,6 @@ impl BeaconNodeHttpClient { self.get_opt::<(), _>(path).await.map(|opt| opt.is_some()) } - /// `GET lighthouse/database/info` - pub async fn get_lighthouse_database_info(&self) -> Result { - let mut path = self.server.full.clone(); - - path.path_segments_mut() - .map_err(|()| Error::InvalidUrl(self.server.clone()))? - .push("lighthouse") - .push("database") - .push("info"); - - self.get(path).await - } - /// `POST lighthouse/database/reconstruct` pub async fn post_lighthouse_database_reconstruct(&self) -> Result { let mut path = self.server.full.clone(); diff --git a/common/warp_utils/Cargo.toml b/common/warp_utils/Cargo.toml index ec2d23686b1..32a540a69d8 100644 --- a/common/warp_utils/Cargo.toml +++ b/common/warp_utils/Cargo.toml @@ -9,7 +9,6 @@ edition = { workspace = true } bytes = { workspace = true } eth2 = { workspace = true } headers = "0.3.2" -metrics = { workspace = true } safe_arith = { workspace = true } serde = { workspace = true } serde_array_query = "0.1.0" From 2480f5b20d53db342e4d6550ec83263ef4b39484 Mon Sep 17 00:00:00 2001 From: Daniel Knopik Date: Mon, 20 Jan 2025 14:02:11 +0100 Subject: [PATCH 07/10] cargo fmt --- beacon_node/http_api/src/peer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon_node/http_api/src/peer.rs b/beacon_node/http_api/src/peer.rs index 9d160b72d92..c9aea9d87cf 100644 --- a/beacon_node/http_api/src/peer.rs +++ b/beacon_node/http_api/src/peer.rs @@ -1,5 +1,5 @@ -use serde::Serialize; use lighthouse_network::PeerInfo; +use serde::Serialize; use types::EthSpec; /// Information returned by `peers` and `connected_peers`. From 6072c424688eeadfb0faa8d62f568434f9c38e82 Mon Sep 17 00:00:00 2001 From: Daniel Knopik Date: Mon, 20 Jan 2025 15:57:10 +0100 Subject: [PATCH 08/10] remove unused import --- beacon_node/http_api/tests/tests.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/beacon_node/http_api/tests/tests.rs b/beacon_node/http_api/tests/tests.rs index 9f146eadec1..4b97f31213d 100644 --- a/beacon_node/http_api/tests/tests.rs +++ b/beacon_node/http_api/tests/tests.rs @@ -35,7 +35,6 @@ use state_processing::per_slot_processing; use state_processing::state_advance::partial_state_advance; use std::convert::TryInto; use std::sync::Arc; -use store::{AnchorInfo, Split}; use tokio::time::Duration; use tree_hash::TreeHash; use types::application_domain::ApplicationDomain; From 864a915bdd2fa2bee6416ceea43f02e29fdeb86d Mon Sep 17 00:00:00 2001 From: Daniel Knopik Date: Thu, 13 Mar 2025 14:21:43 +0100 Subject: [PATCH 09/10] remove unused dep --- testing/validator_test_rig/Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/testing/validator_test_rig/Cargo.toml b/testing/validator_test_rig/Cargo.toml index bdbdac95d8b..f28a423433b 100644 --- a/testing/validator_test_rig/Cargo.toml +++ b/testing/validator_test_rig/Cargo.toml @@ -5,7 +5,6 @@ edition = { workspace = true } [dependencies] eth2 = { workspace = true } -logging = { workspace = true } mockito = { workspace = true } regex = { workspace = true } sensitive_url = { workspace = true } From 6839a70b0ef1c527e25d3b9040dd6c123ab34ca3 Mon Sep 17 00:00:00 2001 From: Daniel Knopik Date: Thu, 13 Mar 2025 15:33:08 +0100 Subject: [PATCH 10/10] cargo.lock --- Cargo.lock | 1 - 1 file changed, 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 48b87bce7cc..2bbbb5e8647 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9487,7 +9487,6 @@ name = "validator_test_rig" version = "0.1.0" dependencies = [ "eth2", - "logging", "mockito", "regex", "sensitive_url",