From 616bee6757f316f55522f13b50045b3cbdfea04a Mon Sep 17 00:00:00 2001 From: Age Manning Date: Wed, 3 May 2023 04:12:10 +0000 Subject: [PATCH 01/11] Maintain trusted peers (#4159) ## Issue Addressed #4150 ## Proposed Changes Maintain trusted peers in the pruning logic. ~~In principle the changes here are not necessary as a trusted peer has a max score (100) and all other peers can have at most 0 (because we don't implement positive scores). This means that we should never prune trusted peers unless we have more trusted peers than the target peer count.~~ This change shifts this logic to explicitly never prune trusted peers which I expect is the intuitive behaviour. ~~I suspect the issue in #4150 arises when a trusted peer disconnects from us for one reason or another and then we remove that peer from our peerdb as it becomes stale. When it re-connects at some large time later, it is no longer a trusted peer.~~ Currently we do disconnect trusted peers, and this PR corrects this to maintain trusted peers in the pruning logic. As suggested in #4150 we maintain trusted peers in the db and thus we remember them even if they disconnect from us. --- .../src/peer_manager/mod.rs | 119 +++++++++++++++--- .../src/peer_manager/peerdb.rs | 2 +- .../lighthouse_network/src/types/globals.rs | 7 +- .../network/src/sync/block_lookups/tests.rs | 2 +- .../network/src/sync/range_sync/range.rs | 2 +- beacon_node/src/config.rs | 3 + 6 files changed, 113 insertions(+), 22 deletions(-) diff --git a/beacon_node/lighthouse_network/src/peer_manager/mod.rs b/beacon_node/lighthouse_network/src/peer_manager/mod.rs index a461a12e530..b2096013bfe 100644 --- a/beacon_node/lighthouse_network/src/peer_manager/mod.rs +++ b/beacon_node/lighthouse_network/src/peer_manager/mod.rs @@ -940,6 +940,10 @@ impl PeerManager { /// MIN_SYNC_COMMITTEE_PEERS /// number should be set low as an absolute lower bound to maintain peers on the sync /// committees. + /// - Do not prune trusted peers. NOTE: This means if a user has more trusted peers than the + /// excess peer limit, all of the following logic is subverted as we will not prune any peers. + /// Also, the more trusted peers a user has, the less room Lighthouse has to efficiently manage + /// its peers across the subnets. /// /// Prune peers in the following order: /// 1. Remove worst scoring peers @@ -970,7 +974,9 @@ impl PeerManager { .read() .worst_connected_peers() .iter() - .filter(|(_, info)| !info.has_future_duty() && $filter(*info)) + .filter(|(_, info)| { + !info.has_future_duty() && !info.is_trusted() && $filter(*info) + }) { if peers_to_prune.len() >= connected_peer_count.saturating_sub(self.target_peers) @@ -1020,8 +1026,8 @@ impl PeerManager { > = HashMap::new(); for (peer_id, info) in self.network_globals.peers.read().connected_peers() { - // Ignore peers we are already pruning - if peers_to_prune.contains(peer_id) { + // Ignore peers we trust or that we are already pruning + if info.is_trusted() || peers_to_prune.contains(peer_id) { continue; } @@ -1318,25 +1324,47 @@ mod tests { ..Default::default() }; let log = build_log(slog::Level::Debug, false); - let globals = NetworkGlobals::new_test_globals(&log); + let globals = NetworkGlobals::new_test_globals(vec![], &log); + PeerManager::new(config, Arc::new(globals), &log).unwrap() + } + + async fn build_peer_manager_with_trusted_peers( + trusted_peers: Vec, + target_peer_count: usize, + ) -> PeerManager { + let config = config::Config { + target_peer_count, + discovery_enabled: false, + ..Default::default() + }; + let log = build_log(slog::Level::Debug, false); + let globals = NetworkGlobals::new_test_globals(trusted_peers, &log); PeerManager::new(config, Arc::new(globals), &log).unwrap() } #[tokio::test] async fn test_peer_manager_disconnects_correctly_during_heartbeat() { - let mut peer_manager = build_peer_manager(3).await; - - // Create 5 peers to connect to. + // Create 6 peers to connect to with a target of 3. // 2 will be outbound-only, and have the lowest score. + // 1 will be a trusted peer. + // The other 3 will be ingoing peers. + + // We expect this test to disconnect from 3 peers. 1 from the outbound peer (the other must + // remain due to the outbound peer limit) and 2 from the ingoing peers (the trusted peer + // should remain connected). let peer0 = PeerId::random(); let peer1 = PeerId::random(); let peer2 = PeerId::random(); let outbound_only_peer1 = PeerId::random(); let outbound_only_peer2 = PeerId::random(); + let trusted_peer = PeerId::random(); + + let mut peer_manager = build_peer_manager_with_trusted_peers(vec![trusted_peer], 3).await; peer_manager.inject_connect_ingoing(&peer0, "/ip4/0.0.0.0".parse().unwrap(), None); peer_manager.inject_connect_ingoing(&peer1, "/ip4/0.0.0.0".parse().unwrap(), None); peer_manager.inject_connect_ingoing(&peer2, "/ip4/0.0.0.0".parse().unwrap(), None); + peer_manager.inject_connect_ingoing(&trusted_peer, "/ip4/0.0.0.0".parse().unwrap(), None); peer_manager.inject_connect_outgoing( &outbound_only_peer1, "/ip4/0.0.0.0".parse().unwrap(), @@ -1366,7 +1394,7 @@ mod tests { .add_to_score(-2.0); // Check initial connected peers. - assert_eq!(peer_manager.network_globals.connected_or_dialing_peers(), 5); + assert_eq!(peer_manager.network_globals.connected_or_dialing_peers(), 6); peer_manager.heartbeat(); @@ -1385,8 +1413,22 @@ mod tests { .read() .is_connected(&outbound_only_peer2)); + // The trusted peer remains connected + assert!(peer_manager + .network_globals + .peers + .read() + .is_connected(&trusted_peer)); + peer_manager.heartbeat(); + // The trusted peer remains connected, even after subsequent heartbeats. + assert!(peer_manager + .network_globals + .peers + .read() + .is_connected(&trusted_peer)); + // Check that if we are at target number of peers, we do not disconnect any. assert_eq!(peer_manager.network_globals.connected_or_dialing_peers(), 3); } @@ -2131,7 +2173,7 @@ mod tests { #[cfg(test)] mod property_based_tests { use crate::peer_manager::config::DEFAULT_TARGET_PEERS; - use crate::peer_manager::tests::build_peer_manager; + use crate::peer_manager::tests::build_peer_manager_with_trusted_peers; use crate::rpc::MetaData; use libp2p::PeerId; use quickcheck::{Arbitrary, Gen, TestResult}; @@ -2142,10 +2184,12 @@ mod tests { #[derive(Clone, Debug)] struct PeerCondition { + peer_id: PeerId, outgoing: bool, attestation_net_bitfield: Vec, sync_committee_net_bitfield: Vec, score: f64, + trusted: bool, gossipsub_score: f64, } @@ -2170,10 +2214,12 @@ mod tests { }; PeerCondition { + peer_id: PeerId::random(), outgoing: bool::arbitrary(g), attestation_net_bitfield, sync_committee_net_bitfield, score: f64::arbitrary(g), + trusted: bool::arbitrary(g), gossipsub_score: f64::arbitrary(g), } } @@ -2185,26 +2231,36 @@ mod tests { if peer_conditions.len() < target_peer_count { return TestResult::discard(); } + let trusted_peers: Vec<_> = peer_conditions + .iter() + .filter_map(|p| if p.trusted { Some(p.peer_id) } else { None }) + .collect(); + // If we have a high percentage of trusted peers, it is very difficult to reason about + // the expected results of the pruning. + if trusted_peers.len() > peer_conditions.len() / 3_usize { + return TestResult::discard(); + } let rt = Runtime::new().unwrap(); rt.block_on(async move { - let mut peer_manager = build_peer_manager(target_peer_count).await; + // Collect all the trusted peers + let mut peer_manager = + build_peer_manager_with_trusted_peers(trusted_peers, target_peer_count).await; // Create peers based on the randomly generated conditions. for condition in &peer_conditions { - let peer = PeerId::random(); let mut attnets = crate::types::EnrAttestationBitfield::::new(); let mut syncnets = crate::types::EnrSyncCommitteeBitfield::::new(); if condition.outgoing { peer_manager.inject_connect_outgoing( - &peer, + &condition.peer_id, "/ip4/0.0.0.0".parse().unwrap(), None, ); } else { peer_manager.inject_connect_ingoing( - &peer, + &condition.peer_id, "/ip4/0.0.0.0".parse().unwrap(), None, ); @@ -2225,22 +2281,51 @@ mod tests { }; let mut peer_db = peer_manager.network_globals.peers.write(); - let peer_info = peer_db.peer_info_mut(&peer).unwrap(); + let peer_info = peer_db.peer_info_mut(&condition.peer_id).unwrap(); peer_info.set_meta_data(MetaData::V2(metadata)); peer_info.set_gossipsub_score(condition.gossipsub_score); peer_info.add_to_score(condition.score); for subnet in peer_info.long_lived_subnets() { - peer_db.add_subscription(&peer, subnet); + peer_db.add_subscription(&condition.peer_id, subnet); } } // Perform the heartbeat. peer_manager.heartbeat(); - TestResult::from_bool( + // The minimum number of connected peers cannot be less than the target peer count + // or submitted peers. + + let expected_peer_count = target_peer_count.min(peer_conditions.len()); + // Trusted peers could make this larger however. + let no_of_trusted_peers = peer_conditions + .iter() + .filter(|condition| condition.trusted) + .count(); + let expected_peer_count = expected_peer_count.max(no_of_trusted_peers); + + let target_peer_condition = peer_manager.network_globals.connected_or_dialing_peers() - == target_peer_count.min(peer_conditions.len()), + == expected_peer_count; + + // It could be that we reach our target outbound limit and are unable to prune any + // extra, which violates the target_peer_condition. + let outbound_peers = peer_manager.network_globals.connected_outbound_only_peers(); + let hit_outbound_limit = outbound_peers == peer_manager.target_outbound_peers(); + + // No trusted peers should be disconnected + let trusted_peer_disconnected = peer_conditions.iter().any(|condition| { + condition.trusted + && !peer_manager + .network_globals + .peers + .read() + .is_connected(&condition.peer_id) + }); + + TestResult::from_bool( + (target_peer_condition || hit_outbound_limit) && !trusted_peer_disconnected, ) }) } diff --git a/beacon_node/lighthouse_network/src/peer_manager/peerdb.rs b/beacon_node/lighthouse_network/src/peer_manager/peerdb.rs index 20870656883..52f0bbd9dfc 100644 --- a/beacon_node/lighthouse_network/src/peer_manager/peerdb.rs +++ b/beacon_node/lighthouse_network/src/peer_manager/peerdb.rs @@ -1062,7 +1062,7 @@ impl PeerDB { if let Some(to_drop) = self .peers .iter() - .filter(|(_, info)| info.is_disconnected()) + .filter(|(_, info)| info.is_disconnected() && !info.is_trusted()) .filter_map(|(id, info)| match info.connection_status() { PeerConnectionStatus::Disconnected { since } => Some((id, since)), _ => None, diff --git a/beacon_node/lighthouse_network/src/types/globals.rs b/beacon_node/lighthouse_network/src/types/globals.rs index 43e8ebd76a5..295616f36ba 100644 --- a/beacon_node/lighthouse_network/src/types/globals.rs +++ b/beacon_node/lighthouse_network/src/types/globals.rs @@ -129,7 +129,10 @@ impl NetworkGlobals { } /// TESTING ONLY. Build a dummy NetworkGlobals instance. - pub fn new_test_globals(log: &slog::Logger) -> NetworkGlobals { + pub fn new_test_globals( + trusted_peers: Vec, + log: &slog::Logger, + ) -> NetworkGlobals { use crate::CombinedKeyExt; let keypair = libp2p::identity::Keypair::generate_secp256k1(); let enr_key: discv5::enr::CombinedKey = @@ -144,7 +147,7 @@ impl NetworkGlobals { attnets: Default::default(), syncnets: Default::default(), }), - vec![], + trusted_peers, false, log, ) diff --git a/beacon_node/network/src/sync/block_lookups/tests.rs b/beacon_node/network/src/sync/block_lookups/tests.rs index 8ade622f8d9..5a70944f6cb 100644 --- a/beacon_node/network/src/sync/block_lookups/tests.rs +++ b/beacon_node/network/src/sync/block_lookups/tests.rs @@ -50,7 +50,7 @@ impl TestRig { }; let bl = BlockLookups::new(log.new(slog::o!("component" => "block_lookups"))); let cx = { - let globals = Arc::new(NetworkGlobals::new_test_globals(&log)); + let globals = Arc::new(NetworkGlobals::new_test_globals(Vec::new(), &log)); SyncNetworkContext::new( network_tx, globals, diff --git a/beacon_node/network/src/sync/range_sync/range.rs b/beacon_node/network/src/sync/range_sync/range.rs index 25314543877..0f1c00e509f 100644 --- a/beacon_node/network/src/sync/range_sync/range.rs +++ b/beacon_node/network/src/sync/range_sync/range.rs @@ -599,7 +599,7 @@ mod tests { log.new(o!("component" => "range")), ); let (network_tx, network_rx) = mpsc::unbounded_channel(); - let globals = Arc::new(NetworkGlobals::new_test_globals(&log)); + let globals = Arc::new(NetworkGlobals::new_test_globals(Vec::new(), &log)); let cx = SyncNetworkContext::new( network_tx, globals.clone(), diff --git a/beacon_node/src/config.rs b/beacon_node/src/config.rs index 7cd2a627999..9b1b9ad1a60 100644 --- a/beacon_node/src/config.rs +++ b/beacon_node/src/config.rs @@ -1044,6 +1044,9 @@ pub fn set_network_config( .map_err(|_| format!("Invalid trusted peer id: {}", peer_id)) }) .collect::, _>>()?; + if config.trusted_peers.len() >= config.target_peers { + slog::warn!(log, "More trusted peers than the target peer limit. This will prevent efficient peer selection criteria."; "target_peers" => config.target_peers, "trusted_peers" => config.trusted_peers.len()); + } } if let Some(enr_udp_port_str) = cli_args.value_of("enr-udp-port") { From bb651a503d769cb8d883be3eebd1c2ac78de7469 Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Wed, 3 May 2023 04:12:11 +0000 Subject: [PATCH 02/11] Enable build profiles for Docker source builds (#4237) ## Proposed Changes - Allow Docker images to be built with different profiles via e.g. `--build-arg PROFILE=maxperf`. - Include the build profile in `lighthouse --version`. ## Additional Info This only affects Docker images built from source. Our published Docker images use `cross`-compiled binaries that get copied into place. --- Dockerfile | 2 ++ lighthouse/build.rs | 2 ++ lighthouse/src/main.rs | 13 +++++++++++++ 3 files changed, 17 insertions(+) create mode 100644 lighthouse/build.rs diff --git a/Dockerfile b/Dockerfile index 0d268c7e1aa..be01ad7c572 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,9 @@ FROM rust:1.68.2-bullseye AS builder RUN apt-get update && apt-get -y upgrade && apt-get install -y cmake libclang-dev protobuf-compiler COPY . lighthouse ARG FEATURES +ARG PROFILE=release ENV FEATURES $FEATURES +ENV PROFILE $PROFILE RUN cd lighthouse && make FROM ubuntu:22.04 diff --git a/lighthouse/build.rs b/lighthouse/build.rs new file mode 100644 index 00000000000..3d8a25ec8c2 --- /dev/null +++ b/lighthouse/build.rs @@ -0,0 +1,2 @@ +// This is a stub for determining the build profile, see `build_profile_name`. +fn main() {} diff --git a/lighthouse/src/main.rs b/lighthouse/src/main.rs index 9986ac15032..f55e39bfb7a 100644 --- a/lighthouse/src/main.rs +++ b/lighthouse/src/main.rs @@ -37,6 +37,17 @@ fn allocator_name() -> &'static str { } } +fn build_profile_name() -> String { + // Nice hack from https://stackoverflow.com/questions/73595435/how-to-get-profile-from-cargo-toml-in-build-rs-or-at-runtime + // The profile name is always the 3rd last part of the path (with 1 based indexing). + // e.g. /code/core/target/cli/build/my-build-info-9f91ba6f99d7a061/out + std::env!("OUT_DIR") + .split(std::path::MAIN_SEPARATOR) + .nth_back(3) + .unwrap_or_else(|| "unknown") + .to_string() +} + fn main() { // Enable backtraces unless a RUST_BACKTRACE value has already been explicitly provided. if std::env::var("RUST_BACKTRACE").is_err() { @@ -58,11 +69,13 @@ fn main() { BLS library: {}\n\ SHA256 hardware acceleration: {}\n\ Allocator: {}\n\ + Profile: {}\n\ Specs: mainnet (true), minimal ({}), gnosis ({})", VERSION.replace("Lighthouse/", ""), bls_library_name(), have_sha_extensions(), allocator_name(), + build_profile_name(), cfg!(feature = "spec-minimal"), cfg!(feature = "gnosis"), ).as_str() From 2aef2db66f13b867668f1e0561b820d96f231118 Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Wed, 3 May 2023 04:12:12 +0000 Subject: [PATCH 03/11] Un-deprecate test utils functions such as extend_chain (#4255) ## Issue Addressed This PR un-deprecates some commonly used test util functions, e.g. `extend_chain`. Most of these were deprecated in 2020 but some of us still found them quite convenient and they're still being used a lot. If there's no issue with using them, I think we should remove the "Deprecated" comment to avoid confusion. --- beacon_node/beacon_chain/src/test_utils.rs | 24 +++------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/beacon_node/beacon_chain/src/test_utils.rs b/beacon_node/beacon_chain/src/test_utils.rs index 3c5d1fd3b1a..7ade38385a9 100644 --- a/beacon_node/beacon_chain/src/test_utils.rs +++ b/beacon_node/beacon_chain/src/test_utils.rs @@ -83,7 +83,7 @@ pub type AddBlocksResult = ( BeaconState, ); -/// Deprecated: Indicates how the `BeaconChainHarness` should produce blocks. +/// Indicates how the `BeaconChainHarness` should produce blocks. #[derive(Clone, Copy, Debug)] pub enum BlockStrategy { /// Produce blocks upon the canonical head (normal case). @@ -99,7 +99,7 @@ pub enum BlockStrategy { }, } -/// Deprecated: Indicates how the `BeaconChainHarness` should produce attestations. +/// Indicates how the `BeaconChainHarness` should produce attestations. #[derive(Clone, Debug)] pub enum AttestationStrategy { /// All validators attest to whichever block the `BeaconChainHarness` has produced. @@ -732,6 +732,7 @@ where state.get_block_root(slot).unwrap() == state.get_block_root(slot - 1).unwrap() } + /// Returns a newly created block, signed by the proposer for the given slot. pub async fn make_block( &self, mut state: BeaconState, @@ -1095,8 +1096,6 @@ where .collect() } - /// Deprecated: Use make_unaggregated_attestations() instead. - /// /// A list of attestations for each committee for the given slot. /// /// The first layer of the Vec is organised per committee. For example, if the return value is @@ -2001,9 +2000,6 @@ where .collect() } - /// Deprecated: Do not modify the slot clock manually; rely on add_attested_blocks_at_slots() - /// instead - /// /// Advance the slot of the `BeaconChain`. /// /// Does not produce blocks or attestations. @@ -2017,18 +2013,6 @@ where self.chain.slot_clock.set_current_time(time); } - /// Deprecated: Use make_block() instead - /// - /// Returns a newly created block, signed by the proposer for the given slot. - pub async fn build_block( - &self, - state: BeaconState, - slot: Slot, - _block_strategy: BlockStrategy, - ) -> (SignedBeaconBlock, BeaconState) { - self.make_block(state, slot).await - } - /// Uses `Self::extend_chain` to build the chain out to the `target_slot`. pub async fn extend_to_slot(&self, target_slot: Slot) -> Hash256 { if self.chain.slot().unwrap() == self.chain.canonical_head.cached_head().head_slot() { @@ -2064,8 +2048,6 @@ where .await } - /// Deprecated: Use add_attested_blocks_at_slots() instead - /// /// Extend the `BeaconChain` with some blocks and attestations. Returns the root of the /// last-produced block (the head of the chain). /// From edbb47dd038d1dcfb86f957852a70c7e885270e4 Mon Sep 17 00:00:00 2001 From: Akihito Nakano Date: Wed, 3 May 2023 04:12:14 +0000 Subject: [PATCH 04/11] Update igd to v0.12.1 (#4257) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Issue Addressed https://github.com/sigp/lighthouse/issues/4171 ## Proposed Changes Through [this PR](https://github.com/sbstp/rust-igd/pull/56) in rust-igd, `igd` v0.12.1 no longer panics if there is an issue while searching for a gateway. So updating igd makes lighthouse emit a helpful log instead of panicking. ## Additional Info No CHANGELOG exists in rust-igd. 👀 Here is the commit history between v0.11.1 and v0.12.1. No breaking changes. https://github.com/sbstp/rust-igd/compare/v0.11.1...v0.12.1 --- Cargo.lock | 17 ++++++++++++----- beacon_node/network/Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 27f0ee61d01..6bfa6035ab0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -423,13 +423,14 @@ checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599" [[package]] name = "attohttpc" -version = "0.10.1" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf13118df3e3dce4b5ac930641343b91b656e4e72c8f8325838b01a4b1c9d45" +checksum = "fdb8867f378f33f78a811a8eb9bf108ad99430d7aad43315dd9319c827ef6247" dependencies = [ "http", "log", "url", + "wildmatch", ] [[package]] @@ -3521,13 +3522,13 @@ dependencies = [ [[package]] name = "igd" -version = "0.11.1" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd32c880165b2f776af0b38d206d1cabaebcf46c166ac6ae004a5d45f7d48ef" +checksum = "556b5a75cd4adb7c4ea21c64af1c48cefb2ce7d43dc4352c720a1fe47c21f355" dependencies = [ "attohttpc", "log", - "rand 0.7.3", + "rand 0.8.5", "url", "xmltree", ] @@ -9478,6 +9479,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" +[[package]] +name = "wildmatch" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f44b95f62d34113cf558c93511ac93027e03e9c29a60dd0fd70e6e025c7270a" + [[package]] name = "winapi" version = "0.3.9" diff --git a/beacon_node/network/Cargo.toml b/beacon_node/network/Cargo.toml index fbc45364aad..a234165d113 100644 --- a/beacon_node/network/Cargo.toml +++ b/beacon_node/network/Cargo.toml @@ -35,7 +35,7 @@ lazy_static = "1.4.0" lighthouse_metrics = { path = "../../common/lighthouse_metrics" } logging = { path = "../../common/logging" } task_executor = { path = "../../common/task_executor" } -igd = "0.11.1" +igd = "0.12.1" itertools = "0.10.0" num_cpus = "1.13.0" lru_cache = { path = "../../common/lru_cache" } From b1416c8a4352f9f8497c0c91cc152d6c35525222 Mon Sep 17 00:00:00 2001 From: Eitan Seri-Levi Date: Wed, 3 May 2023 09:02:58 +0000 Subject: [PATCH 05/11] simplify calculate_committee_fraction (#4213) ## Issue Addressed [#4211](https://github.com/sigp/lighthouse/issues/4211) ## Proposed Changes This PR conforms the helper function `calculate_committee_fraction` to the [v1.3.0 spec](https://github.com/ethereum/consensus-specs/blob/v1.3.0/specs/phase0/fork-choice.md#get_weight) ## Additional Info the old definition of `calculate_committee_fraction` is almost identical, but the new definition is simpler. --- .../src/fork_choice_test_definition/execution_status.rs | 6 +++--- consensus/proto_array/src/proto_array.rs | 6 +----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/consensus/proto_array/src/fork_choice_test_definition/execution_status.rs b/consensus/proto_array/src/fork_choice_test_definition/execution_status.rs index ede5bb39481..aa26a843069 100644 --- a/consensus/proto_array/src/fork_choice_test_definition/execution_status.rs +++ b/consensus/proto_array/src/fork_choice_test_definition/execution_status.rs @@ -987,11 +987,11 @@ pub fn get_execution_status_test_definition_03() -> ForkChoiceTestDefinition { ops.push(Operation::AssertWeight { block_root: get_root(0), - weight: 33_000, + weight: 33_250, }); ops.push(Operation::AssertWeight { block_root: get_root(1), - weight: 33_000, + weight: 33_250, }); ops.push(Operation::AssertWeight { block_root: get_root(2), @@ -1000,7 +1000,7 @@ pub fn get_execution_status_test_definition_03() -> ForkChoiceTestDefinition { ops.push(Operation::AssertWeight { block_root: get_root(3), // This is a "magic number" generated from `calculate_committee_fraction`. - weight: 31_000, + weight: 31_250, }); // Invalidate the payload of 3. diff --git a/consensus/proto_array/src/proto_array.rs b/consensus/proto_array/src/proto_array.rs index 2c19206cb75..1cc34beff0c 100644 --- a/consensus/proto_array/src/proto_array.rs +++ b/consensus/proto_array/src/proto_array.rs @@ -1055,13 +1055,9 @@ pub fn calculate_committee_fraction( justified_balances: &JustifiedBalances, proposer_score_boost: u64, ) -> Option { - let average_balance = justified_balances + let committee_weight = justified_balances .total_effective_balance - .checked_div(justified_balances.num_active_validators)?; - let committee_size = justified_balances - .num_active_validators .checked_div(E::slots_per_epoch())?; - let committee_weight = committee_size.checked_mul(average_balance)?; committee_weight .checked_mul(proposer_score_boost)? .checked_div(100) From 45835f6a6bdb3e9da73f5f2933402a5edf1ed36d Mon Sep 17 00:00:00 2001 From: chonghe <44791194+chong-he@users.noreply.github.com> Date: Fri, 5 May 2023 00:51:56 +0000 Subject: [PATCH 06/11] Update Lighthouse book Sec 3-6 and FAQ (#4221) ## Issue Addressed Update Lighthouse book to include latest information especially after Capella upgrade ## Proposed Changes Notable changes: - Combine Sec 4.1 & 6.1 into Sec 4, because Sec 6.1 is importing validator key which is a required step when want to run a validator - Combine Sec 5.1 & 5.2 with Sec 5, and move Sec 5 to under Sec 9 - Added partial withdrawals in Sec 6 ## Additional Info Please provide any additional information. For example, future considerations or information useful for reviewers. Co-authored-by: chonghe --- book/src/LaTeX/full-withdrawal.tex | 66 +++++++ book/src/LaTeX/partial-withdrawal.tex | 50 +++++ book/src/SUMMARY.md | 9 +- book/src/imgs/full-withdrawal.png | Bin 0 -> 263209 bytes book/src/imgs/partial-withdrawal.png | Bin 0 -> 175823 bytes book/src/installation.md | 8 +- book/src/key-management.md | 103 ++++++----- book/src/key-recovery.md | 6 +- book/src/mainnet-validator.md | 244 ++++++++++++++----------- book/src/partial-withdrawal.md | 23 +++ book/src/run_a_node.md | 131 +++++++------ book/src/slashing-protection.md | 29 +-- book/src/suggested-fee-recipient.md | 8 +- book/src/testnet-validator.md | 23 --- book/src/validator-create.md | 90 --------- book/src/validator-doppelganger.md | 11 +- book/src/validator-import-launchpad.md | 111 ----------- book/src/validator-management.md | 18 +- book/src/validator-monitoring.md | 2 +- book/src/voluntary-exit.md | 66 +++++-- book/src/wallet-create.md | 74 -------- 21 files changed, 495 insertions(+), 577 deletions(-) create mode 100644 book/src/LaTeX/full-withdrawal.tex create mode 100644 book/src/LaTeX/partial-withdrawal.tex create mode 100644 book/src/imgs/full-withdrawal.png create mode 100644 book/src/imgs/partial-withdrawal.png create mode 100644 book/src/partial-withdrawal.md delete mode 100644 book/src/testnet-validator.md delete mode 100644 book/src/validator-create.md delete mode 100644 book/src/validator-import-launchpad.md delete mode 100644 book/src/wallet-create.md diff --git a/book/src/LaTeX/full-withdrawal.tex b/book/src/LaTeX/full-withdrawal.tex new file mode 100644 index 00000000000..2447ba0974a --- /dev/null +++ b/book/src/LaTeX/full-withdrawal.tex @@ -0,0 +1,66 @@ +% To compile the file using PdfLaTeX, you may use the latex+dvips+ps2pdf compilation. If you are using TeXstudio, this is builtin and you can choose this option by going to Options > Configure TeXstudio under Build & View, choose DVI -> PS -> PDF Chain + +% Alternatively, you may use XeLaTeX with --shell-escape command. To do so in TeXstuidio, go to Options > Configure TeXstudio > Build. Under "Add Commands", enter a user of your choice, and in the right empty space, insert: txs:///xelatex/[--shell-escape]. When compile, go to Tools > User and select the user you just inserted. + +\documentclass[]{article} +\usepackage{pst-all} +\pagestyle{empty} + + + +\begin{document} + + +\begin{figure} + \psscalebox{1.0 1.0} % Change this value to rescale the drawing. + { + \begin{pspicture}(0,-9.09)(11.8,6.13) + \psframe[linecolor=black, linewidth=0.04, dimen=outer](7.3,6.13)(4.2,5.21) + \rput[bl](4.6,5.51){Voluntary exit} + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{-<}(5.8,5.21)(5.8,3.71)(5.8,3.81) + \psline[linecolor=black, linewidth=0.04](1.7,3.61)(9.8,3.61) + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(1.7,3.61)(1.7,2.61) + \psframe[linecolor=black, linewidth=0.04, dimen=outer](2.9,2.63)(0.8,1.55) + \rput[bl](1.0,1.91){Type 0x00} + \psframe[linecolor=black, linewidth=0.04, dimen=outer](10.7,2.63)(8.6,1.55) + \rput[bl](8.8,1.91){Type 0x01} + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(9.8,3.61)(9.8,2.61) + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(1.7,1.51)(1.7,0.61) + \psframe[linecolor=black, linewidth=0.04, dimen=outer](3.7,0.61)(0.0,-1.19) + \rput[bl](0.6,-0.19){Funds locked in} + \rput[bl](0.7,-0.79){Beacon chain} + \psframe[linecolor=black, linewidth=0.04, dimen=outer](11.8,0.73)(7.9,-1.39) + \rput[bl](9.0,-0.59){Exit queue} + \rput[bl](8.8,0.01){Varying time} + \rput[bl](8.3,-1.09){32 minutes to weeks} + \rput[bl](9.0,-2.89){Fixed time} + \rput[bl](9.0,-3.49){27.3 hours} + \rput[bl](8.8,-5.49){Varying time} + \rput[bl](8.7,-5.99){validator sweep} + \rput[bl](8.9,-6.59){up to 5 days} + \psframe[linecolor=black, linewidth=0.04, dimen=outer](11.6,-2.19)(8.0,-3.89) + \psframe[linecolor=black, linewidth=0.04, dimen=outer](11.7,-4.79)(7.9,-6.89) + \psframe[linecolor=black, linewidth=0.04, dimen=outer](3.7,-2.49)(0.0,-4.29) + \rput[bl](1.3,-3.29){BLS to} + \rput[bl](0.6,-3.89){execution change} + \psline[linecolor=black, linewidth=0.04, linestyle=dashed, dash=0.17638889cm 0.10583334cm, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(1.7,-1.19)(1.7,-2.49) + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(9.8,1.51)(9.8,0.71) + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(9.8,-1.39)(9.8,-2.19) + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(9.8,-3.89)(9.8,-4.79) + \psline[linecolor=black, linewidth=0.04, linestyle=dotted, dotsep=0.10583334cm](3.7,-3.39)(5.8,-3.39) + \psline[linecolor=black, linewidth=0.04, linestyle=dotted, dotsep=0.10583334cm, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(5.8,-3.39)(5.8,-0.39)(7.9,-0.39) + \psline[linecolor=black, linewidth=0.04, linestyle=dotted, dotsep=0.10583334cm, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(5.8,-3.39)(8.0,-3.39) + \psline[linecolor=black, linewidth=0.04, linestyle=dotted, dotsep=0.10583334cm, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(5.8,-3.39)(5.8,-6.09)(7.9,-6.09) + \psframe[linecolor=black, linewidth=0.04, dimen=outer](11.7,-7.79)(7.9,-9.09) + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(9.8,-6.89)(9.8,-7.79) + \rput[bl](8.1,-8.59){\Large{Full withdrawal}} + \rput[bl](1.8,-2.09){\textit{\Large{anytime}}} + \rput[bl](4.0,-3.19){\textit{\Large{either}}} + \rput[bl](4.2,-3.89){\textit{\Large{one}}} + \end{pspicture} + } +\end{figure} + + + +\end{document} diff --git a/book/src/LaTeX/partial-withdrawal.tex b/book/src/LaTeX/partial-withdrawal.tex new file mode 100644 index 00000000000..05db3b68889 --- /dev/null +++ b/book/src/LaTeX/partial-withdrawal.tex @@ -0,0 +1,50 @@ +% To compile the file using PdfLaTeX, you may use the latex+dvips+ps2pdf compilation. If you are using TeXstudio, this is builtin and you can choose this option by going to Options > Configure TeXstudio under Build & View, choose DVI -> PS -> PDF Chain + +% Alternatively, you may use XeLaTeX with --shell-escape command. To do so in TeXstuidio, go to Options > Configure TeXstudio > Build. Under "Add Commands", enter a user of your choice, and in the right empty space, insert: txs:///xelatex/[--shell-escape]. When compile, go to Tools > User and select the user you just inserted. + + +\documentclass[]{article} +\usepackage{pst-all} +\pagestyle{empty} + + + +\begin{document} + +\begin{figure} + \psscalebox{1.0 1.0} % Change this value to rescale the drawing. + { + \begin{pspicture}(0,-8.09)(10.7,5.53) + \psframe[linecolor=black, linewidth=0.04, dimen=outer](7.14,5.53)(3.6,4.45) + \rput[bl](3.8,4.81){Partial withdrawals} + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{-<}(5.2,4.41)(5.2,2.91)(5.2,3.01) + \psline[linecolor=black, linewidth=0.04](1.8,2.81)(8.9,2.81) + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(1.8,2.81)(1.8,1.81) + \psframe[linecolor=black, linewidth=0.04, dimen=outer](2.7,1.83)(0.6,0.75) + \rput[bl](0.8,1.09){Type 0x00} + \psframe[linecolor=black, linewidth=0.04, dimen=outer](9.8,1.83)(7.7,0.75) + \rput[bl](7.92,1.07){Type 0x01} + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(8.9,2.81)(8.9,1.81) + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(1.7,0.71)(1.7,-0.19) + \psframe[linecolor=black, linewidth=0.04, dimen=outer](3.7,-0.19)(0.0,-1.99) + \rput[bl](0.66,-0.99){Funds locked in} + \rput[bl](0.9,-1.59){Beacon chain} + \psframe[linecolor=black, linewidth=0.04, dimen=outer](10.7,-3.29)(6.8,-5.09) + \rput[bl](7.6,-3.99){validator sweep} + \rput[bl](7.5,-4.69){$\sim$ every 5 days} + \psframe[linecolor=black, linewidth=0.04, dimen=outer](3.7,-3.29)(0.0,-5.09) + \rput[bl](1.3,-4.09){BLS to} + \rput[bl](0.5,-4.69){execution change} + \psline[linecolor=black, linewidth=0.04, linestyle=dashed, dash=0.17638889cm 0.10583334cm, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(1.7,-1.99)(1.7,-3.29) + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(8.9,0.71)(8.9,-3.29) + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(3.7,-4.19)(6.7,-4.19) + \psframe[linecolor=black, linewidth=0.04, dimen=outer](10.7,-6.29)(6.9,-8.09) + \rput[bl](7.0,-6.99){Balance above 32 ETH} + \rput[bl](7.9,-7.59){withdrawn} + \psline[linecolor=black, linewidth=0.04, arrowsize=0.05291667cm 2.0,arrowlength=1.4,arrowinset=0.0]{->}(8.9,-5.09)(8.9,-6.29) + \rput[bl](1.8,-2.89){\textit{\Large{anytime}}} + \end{pspicture} + } +\end{figure} + +\end{document} \ No newline at end of file diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index ba234632d72..bfd5a02a6f2 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -11,15 +11,10 @@ * [Update Priorities](./installation-priorities.md) * [Run a Node](./run_a_node.md) * [Become a Validator](./mainnet-validator.md) - * [Become a Testnet Validator](./testnet-validator.md) -* [Key Management](./key-management.md) - * [Create a wallet](./wallet-create.md) - * [Create a validator](./validator-create.md) - * [Key recovery](./key-recovery.md) * [Validator Management](./validator-management.md) - * [Importing from the Staking Launchpad](./validator-import-launchpad.md) * [Slashing Protection](./slashing-protection.md) * [Voluntary Exits](./voluntary-exit.md) + * [Partial Withdrawals](./partial-withdrawal.md) * [Validator Monitoring](./validator-monitoring.md) * [Doppelganger Protection](./validator-doppelganger.md) * [Suggested Fee Recipient](./suggested-fee-recipient.md) @@ -46,6 +41,8 @@ * [Remote Signing with Web3Signer](./validator-web3signer.md) * [Database Configuration](./advanced_database.md) * [Database Migrations](./database-migrations.md) + * [Key Management](./key-management.md) + * [Key Recovery](./key-recovery.md) * [Advanced Networking](./advanced_networking.md) * [Running a Slasher](./slasher.md) * [Redundancy](./redundancy.md) diff --git a/book/src/imgs/full-withdrawal.png b/book/src/imgs/full-withdrawal.png new file mode 100644 index 0000000000000000000000000000000000000000..6fa2db6a9137da077a72c658bb8f8ca514bcf0f6 GIT binary patch literal 263209 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

A6$ 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 NNfYy9l|~n1{tt?$m4N^N literal 0 HcmV?d00001 diff --git a/book/src/imgs/partial-withdrawal.png b/book/src/imgs/partial-withdrawal.png new file mode 100644 index 0000000000000000000000000000000000000000..0bf90b91db0270dc8d7a0618905f21301728a5d3 GIT binary patch literal 175823 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 b{$o3AMdanor1_t}r)ul#8s92|I7a**sw_jv literal 0 HcmV?d00001 diff --git a/book/src/installation.md b/book/src/installation.md index 627326d2a4a..4adaf8da76e 100644 --- a/book/src/installation.md +++ b/book/src/installation.md @@ -29,6 +29,10 @@ After [The Merge](https://ethereum.org/en/roadmap/merge/) on 15th Sep * CPU: Quad-core AMD Ryzen, Intel Broadwell, ARMv8 or newer -* Memory: 16 GB RAM or more -* Storage: 2 TB solid state storage +* Memory: 32 GB RAM* +* Storage: 2 TB solid state drive * Network: 100 Mb/s download, 20 Mb/s upload broadband connection + +> *Note: 16 GB RAM is becoming rather limited due to the increased resources required. 16 GB RAM would likely result in out of memory errors in the case of a spike in computing demand (e.g., caused by a bug) or during periods of non-finality of the beacon chain. Users with 16 GB RAM also have a limited choice when it comes to selecting an execution client, which does not help with the [client diversity](https://clientdiversity.org/). We therefore recommend users to have at least 32 GB RAM for long term health of the node, while also giving users the flexibility to change client should the thought arise. + +Last update: April 2023 diff --git a/book/src/key-management.md b/book/src/key-management.md index bb1751be166..084b1fbe4cb 100644 --- a/book/src/key-management.md +++ b/book/src/key-management.md @@ -3,12 +3,12 @@ [launchpad]: https://launchpad.ethereum.org/ > -> **Note: we recommend using the [Staking launchpad][launchpad] to create validators.** +> **Note: While Lighthouse is able to generate the validator keys and the deposit data file to submit to the deposit contract, we strongly recommend using the [staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli) to create validators keys and the deposit data file. This is because the [staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli) which has the option to assign a withdrawal address during the key generation process, while Lighthouse wallet will always generate keys with withdrawal credentials of type 0x00. This means that users who created keys using Lighthouse will have to update their withdrawal credentials in the future to enable withdrawals. In addition, Lighthouse generates the deposit data file in the form of `*.rlp`, which cannot be uploaded to the [Staking launchpad][launchpad] that accepts only `*.json` file. This means that users have to directly interact with the deposit contract to be able to submit the deposit if they were to generate the files using Lighthouse.** Lighthouse uses a _hierarchical_ key management system for producing validator keys. It is hierarchical because each validator key can be _derived_ from a master key, making the validators keys _children_ of the master key. This -scheme means that a single 24-word mnemonic can be used to backup all of your +scheme means that a single 24-word mnemonic can be used to back up all of your validator keys without providing any observable link between them (i.e., it is privacy-retaining). Hierarchical key derivation schemes are common-place in cryptocurrencies, they are already used by most hardware and software wallets @@ -30,37 +30,63 @@ We defined some terms in the context of validator key management: keypair. - Defined in EIP-2335. - **Voting Keypair**: a BLS public and private keypair which is used for - signing blocks, attestations and other messages on regular intervals, - whilst staking in Phase 0. + signing blocks, attestations and other messages on regular intervals in the beacon chain. - **Withdrawal Keypair**: a BLS public and private keypair which will be required _after_ Phase 0 to manage ETH once a validator has exited. -## Overview +## Create a validator +There are 2 steps involved to create a validator key using Lighthouse: + 1. [Create a wallet](#step-1-create-a-wallet-and-record-the-mnemonic) + 1. [Create a validator](#step-2-create-a-validator) -The key management system in Lighthouse involves moving down the above list of -items, starting at one easy-to-backup mnemonic and ending with multiple -keypairs. Creating a single validator looks like this: +The following example demonstrates how to create a single validator key. -1. Create a **wallet** and record the **mnemonic**: - - `lighthouse --network prater account wallet create --name wally --password-file wally.pass` -1. Create the voting and withdrawal **keystores** for one validator: - - `lighthouse --network prater account validator create --wallet-name wally --wallet-password wally.pass --count 1` +### Step 1: Create a wallet and record the mnemonic +A wallet allows for generating practically unlimited validators from an +easy-to-remember 24-word string (a mnemonic). As long as that mnemonic is +backed up, all validator keys can be trivially re-generated. +Whilst the wallet stores the mnemonic, it does not store it in plain-text: the +mnemonic is encrypted with a password. It is the responsibility of the user to +define a strong password. The password is only required for interacting with +the wallet, it is not required for recovering keys from a mnemonic. -In step (1), we created a wallet in `~/.lighthouse/{network}/wallets` with the name -`wally`. We encrypted this using a pre-defined password in the -`wally.pass` file. Then, in step (2), we created one new validator in the -`~/.lighthouse/{network}/validators` directory using `wally` (unlocking it with -`wally.pass`) and storing the passwords to the validators voting key in -`~/.lighthouse/{network}/secrets`. +To create a wallet, use the `lighthouse account wallet` command. For example, if we wish to create a new wallet for the Goerli testnet named `wally` and saves it in `~/.lighthouse/goerli/wallets` with a randomly generated password saved +to `./wallet.pass`: -Thanks to the hierarchical key derivation scheme, we can delete all of the -aforementioned directories and then regenerate them as long as we remembered -the 24-word mnemonic (we don't recommend doing this, though). +```bash +lighthouse --network goerli account wallet create --name wally --password-file wally.pass +``` +Using the above command, a wallet will be created in `~/.lighthouse/goerli/wallets` with the name +`wally`. It is encrypted using the password defined in the +`wally.pass` file. -Creating another validator is easy, it's just a matter of repeating step (2). -The wallet keeps track of how many validators it has generated and ensures that -a new validator is generated each time. +During the wallet creation process, a 24-word mnemonic will be displayed. Record the mnemonic because it allows you to recreate the files in the case of data loss. +> Notes: +> - When navigating to the directory `~/.lighthouse/goerli/wallets`, one will not see the wallet name `wally`, but a hexadecimal folder containing the wallet file. However, when interacting with `lighthouse` in the CLI, the name `wally` will be used. +> - The password is not `wally.pass`, it is the _content_ of the +> `wally.pass` file. +> - If `wally.pass` already exists, the wallet password will be set to the content +> of that file. + +### Step 2: Create a validator +Validators are fundamentally represented by a BLS keypair. In Lighthouse, we use a wallet to generate these keypairs. Once a wallet exists, the `lighthouse account validator create` command can be used to generate the BLS keypair and all necessary information to submit a validator deposit. With the `wally` wallet created in [Step 1](#step-1-create-a-wallet-and-record-the-mnemonic), we can create a validator with the command: + +```bash +lighthouse --network goerli account validator create --wallet-name wally --wallet-password wally.pass --count 1 +``` +This command will: + +- Derive a single new BLS keypair from wallet `wally` in `~/.lighthouse/goerli/wallets`, updating it so that it generates a new key next time. +- Create a new directory `~/.lighthouse/goerli/validators` containing: + - An encrypted keystore file `voting-keystore.json` containing the validator's voting keypair. + - An `eth1_deposit_data.rlp` assuming the default deposit amount (`32 ETH`) which can be submitted to the deposit + contract for the Goerli testnet. Other networks can be set via the + `--network` parameter. +- Create a new directory `~/.lighthouse/goerli/secrets` which stores a password to the validator's voting keypair. + + +If you want to create another validator in the future, repeat [Step 2](#step-2-create-a-validator). The wallet keeps track of how many validators it has generated and ensures that a new validator is generated each time. The important thing is to keep the 24-word mnemonic safe so that it can be used to generate new validator keys if needed. ## Detail @@ -76,36 +102,17 @@ There are three important directories in Lighthouse validator key management: - Defaults to `~/.lighthouse/{network}/validators` - `secrets/`: since the validator signing keys are "hot", the validator process needs access to the passwords to decrypt the keystores in the validators - dir. These passwords are stored here. - - Defaults to `~/.lighthouse/{network}/secrets` where `network` is the name of the network passed in the `--network` parameter (default is `mainnet`). + directory. These passwords are stored here. + - Defaults to `~/.lighthouse/{network}/secrets` + +where `{network}` is the name of the network passed in the `--network` parameter. When the validator client boots, it searches the `validators/` for directories containing voting keystores. When it discovers a keystore, it searches the -`secrets/` dir for a file with the same name as the 0x-prefixed hex -representation of the keystore public key. If it finds this file, it attempts +`secrets/` directory for a file with the same name as the 0x-prefixed validator public key. If it finds this file, it attempts to decrypt the keystore using the contents of this file as the password. If it fails, it logs an error and moves onto the next keystore. The `validators/` and `secrets/` directories are kept separate to allow for ease-of-backup; you can safely backup `validators/` without worrying about leaking private key data. - -### Withdrawal Keypairs - -In Ethereum consensus Phase 0, withdrawal keypairs do not serve any immediate purpose. -However, they become very important _after_ Phase 0: they will provide the -ultimate control of the ETH of withdrawn validators. - -This presents an interesting key management scenario: withdrawal keys are very -important, but not right now. Considering this, Lighthouse has adopted a -strategy where **we do not save withdrawal keypairs to disk by default** (it is -opt-in). Instead, we assert that since the withdrawal keys can be regenerated -from a mnemonic, having them lying around on the file-system only presents risk -and complexity. - -At the time of writing, we do not expose the commands to regenerate keys from -mnemonics. However, key regeneration is tested on the public Lighthouse -repository and will be exposed prior to mainnet launch. - -So, in summary, withdrawal keypairs can be trivially regenerated from the -mnemonic via EIP-2333 so they are not saved to disk like the voting keypairs. diff --git a/book/src/key-recovery.md b/book/src/key-recovery.md index 2474d123caf..a996e95cbc5 100644 --- a/book/src/key-recovery.md +++ b/book/src/key-recovery.md @@ -1,8 +1,8 @@ -# Key recovery +# Key Recovery Generally, validator keystore files are generated alongside a *mnemonic*. If -the keystore and/or the keystore password are lost this mnemonic can +the keystore and/or the keystore password are lost, this mnemonic can regenerate a new, equivalent keystore with a new password. There are two ways to recover keys using the `lighthouse` CLI: @@ -48,7 +48,7 @@ which contains all the information necessary to run a validator using the `lighthouse vc` command. The password to this new keystore will be placed in the `--secrets-dir` (default `~/.lighthouse/{network}/secrets`). -where `network` is the name of the consensus layer network passed in the `--network` parameter (default is `mainnet`). +where `{network}` is the name of the consensus layer network passed in the `--network` parameter (default is `mainnet`). ## Recover a EIP-2386 wallet diff --git a/book/src/mainnet-validator.md b/book/src/mainnet-validator.md index 41735f85bb5..d61d460e3cc 100644 --- a/book/src/mainnet-validator.md +++ b/book/src/mainnet-validator.md @@ -12,25 +12,13 @@ Becoming an Ethereum consensus validator is rewarding, but it's not for the fain familiar with the rules of staking (e.g., rewards, penalties, etc.) and also configuring and managing servers. You'll also need at least 32 ETH! -For those with an understanding of Ethereum consensus and server maintenance, you'll find that running Lighthouse -is easy. Install it, start it, monitor it and keep it updated. You shouldn't need to interact -with it on a day-to-day basis. +Being educated is critical to a validator's success. Before submitting your mainnet deposit, we recommend: -Being educated is critical to validator success. Before submitting your mainnet deposit, we -recommend: - -- Thoroughly exploring the [Staking Launchpad][launchpad] website - - Try running through the deposit process *without* actually submitting a deposit. -- Reading through this documentation, especially the [Slashing Protection][slashing] section. +- Thoroughly exploring the [Staking Launchpad][launchpad] website, try running through the deposit process using a testnet launchpad such as the [Goerli staking launchpad](https://goerli.launchpad.ethereum.org/en/). - Running a [testnet validator][testnet-validator]. +- Reading through this documentation, especially the [Slashing Protection][slashing] section. - Performing a web search and doing your own research. -By far, the best technical learning experience is to run a [Testnet Validator][testnet-validator]. -You can get hands-on experience with all the tools and it's a great way to test your staking -hardware. We recommend *all* mainnet validators to run a testnet validator initially; 32 ETH is a -significant outlay and joining a testnet is a great way to "try before you buy". - -Remember, if you get stuck you can always reach out on our [Discord][discord]. > > **Please note**: the Lighthouse team does not take any responsibility for losses or damages @@ -40,116 +28,187 @@ Remember, if you get stuck you can always reach out on our [Discord][discord]. > due to the actions of other actors on the consensus layer or software bugs. See the > [software license][license] for more detail on liability. -## Using Lighthouse for Mainnet -When using Lighthouse, the `--network` flag selects a network. E.g., +## Become a validator -- `lighthouse` (no flag): Mainnet. -- `lighthouse --network mainnet`: Mainnet. -- `lighthouse --network prater`: Prater (testnet). +There are five primary steps to become a validator: -Using the correct `--network` flag is very important; using the wrong flag can -result in penalties, slashings or lost deposits. As a rule of thumb, always -provide a `--network` flag instead of relying on the default. +1. [Create validator keys](#step-1-create-validator-keys) +1. [Start an execution client and Lighthouse beacon node](#step-2-start-an-execution-client-and-lighthouse-beacon-node) +1. [Import validator keys into Lighthouse](#step-3-import-validator-keys-to-lighthouse) +1. [Start Lighthouse validator client](#step-4-start-lighthouse-validator-client) +1. [Submit deposit](#step-5-submit-deposit-32eth-per-validator) -## Joining a Testnet +> **Important note**: The guide below contains both mainnet and testnet instructions. We highly recommend *all* users to **run a testnet validator** prior to staking mainnet ETH. By far, the best technical learning experience is to run a testnet validator. You can get hands-on experience with all the tools and it's a great way to test your staking +hardware. 32 ETH is a significant outlay and joining a testnet is a great way to "try before you buy". -There are five primary steps to become a testnet validator: + -1. Create validator keys and submit deposits. -1. Start an execution client. -1. Install Lighthouse. -1. Import the validator keys into Lighthouse. -1. Start Lighthouse. -1. Leave Lighthouse running. -Each of these primary steps has several intermediate steps, so we recommend -setting aside one or two hours for this process. +> **Never use real ETH to join a testnet!** Testnet such as the Goerli testnet uses Goerli ETH which is worthless. This allows experimentation without real-world costs. ### Step 1. Create validator keys -The Ethereum Foundation provides a "Staking Launchpad" for creating validator keypairs and submitting -deposits: - -- [Staking Launchpad][launchpad] +The Ethereum Foundation provides the [staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli/releases) for creating validator keys. Download and run the `staking-deposit-cli` with the command: +```bash +./deposit new-mnemonic +``` +and follow the instructions to generate the keys. When prompted for a network, select `mainnet` if you want to run a mainnet validator, or select `goerli` if you want to run a Goerli testnet validator. A new mnemonic will be generated in the process. -Please follow the steps on the launch pad site to generate validator keys and submit deposits. Make -sure you select "Lighthouse" as your client. +> **Important note:** A mnemonic (or seed phrase) is a 24-word string randomly generated in the process. It is highly recommended to write down the mnemonic and keep it safe offline. It is important to ensure that the mnemonic is never stored in any digital form (computers, mobile phones, etc) connected to the internet. Please also make one or more backups of the mnemonic to ensure your ETH is not lost in the case of data loss. It is very important to keep your mnemonic private as it represents the ultimate control of your ETH. -Move to the next step once you have completed the steps on the launch pad, -including generating keys via the Python CLI and submitting gETH/ETH deposits. +Upon completing this step, the files `deposit_data-*.json` and `keystore-m_*.json` will be created. The keys that are generated from staking-deposit-cli can be easily loaded into a Lighthouse validator client (`lighthouse vc`) in [Step 3](#step-3-import-validator-keys-to-lighthouse). In fact, both of these programs are designed to work with each other. -### Step 2. Start an execution client -Since the consensus chain relies upon the execution chain for validator on-boarding, all consensus validators must have a -connection to an execution client. +> Lighthouse also supports creating validator keys, see [Key management](./key-management.md) for more info. -We provide instructions for using Geth, but you could use any client that implements the JSON RPC -via HTTP. A fast-synced node is sufficient. +### Step 2. Start an execution client and Lighthouse beacon node -#### Installing Geth +Start an execution client and Lighthouse beacon node according to the [Run a Node](./run_a_node.md) guide. Make sure that both execution client and consensus client are synced. -If you're using a Mac, follow the instructions [listed -here](https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Mac) to install -geth. Otherwise [see here](https://github.com/ethereum/go-ethereum/wiki/Installing-Geth). +### Step 3. Import validator keys to Lighthouse -#### Starting Geth +In [Step 1](#step-1-create-validator-keys), the staking-deposit-cli will generate the validator keys into a `validator_keys` directory. Let's assume that +this directory is `$HOME/staking-deposit-cli/validator_keys`. Using the default `validators` directory in Lighthouse (`~/.lighthouse/mainnet/validators`), run the following command to import validator keys: -Once you have geth installed, use this command to start your execution node: +Mainnet: +```bash +lighthouse --network mainnet account validator import --directory $HOME/staking-deposit-cli/validator_keys +``` +Goerli testnet: ```bash - geth --http +lighthouse --network goerli account validator import --directory $HOME/staking-deposit-cli/validator_keys +``` + +> Note: The user must specify the consensus client network that they are importing the keys by using the `--network` flag. + +> Note: If the validator_keys directory is in a different location, modify the path accordingly. + +> Note: `~/.lighthouse/mainnet` is the default directory which contains the keys and database. To specify a custom directory, see [Custom Directories][advanced-datadir]. + +> Docker users should use the command from the [Docker](#docker-users) documentation. + + +The user will be prompted for a password for each keystore discovered: + ``` +Keystore found at "/home/{username}/staking-deposit-cli/validator_keys/keystore-m_12381_3600_0_0_0-1595406747.json": -### Step 3. Install Lighthouse + - Public key: 0xa5e8702533f6d66422e042a0bf3471ab9b302ce115633fa6fdc5643f804b6b4f1c33baf95f125ec21969a3b1e0dd9e56 + - UUID: 8ea4cf99-8719-43c5-9eda-e97b8a4e074f -*Note: Lighthouse only supports Windows via WSL.* +If you enter the password it will be stored as plain text in validator_definitions.yml so that it is not required each time the validator client starts. -Follow the [Lighthouse Installation Instructions](./installation.md) to install -Lighthouse from one of the available options. +Enter the keystore password, or press enter to omit it: +``` -Proceed to the next step once you've successfully installed Lighthouse and viewed -its `--version` info. +The user can choose whether or not they'd like to store the validator password +in the [`validator_definitions.yml`](./validator-management.md) file. If the +password is *not* stored here, the validator client (`lighthouse vc`) +application will ask for the password each time it starts. This might be nice +for some users from a security perspective (i.e., if it is a shared computer), +however it means that if the validator client restarts, the user will be subject +to offline penalties until they can enter the password. If the user trusts the +computer that is running the validator client and they are seeking maximum +validator rewards, we recommend entering a password at this point. -> Note: Some of the instructions vary when using Docker, ensure you follow the -> appropriate sections later in this guide. +Once the process is done the user will see: -### Step 4. Import validator keys to Lighthouse +``` +Successfully imported keystore. +Successfully updated validator_definitions.yml. -When Lighthouse is installed, follow the [Importing from the Ethereum Staking Launch -pad](./validator-import-launchpad.md) instructions so the validator client can -perform your validator duties. +Successfully imported 1 validators (0 skipped). -Proceed to the next step once you've successfully imported all validators. +WARNING: DO NOT USE THE ORIGINAL KEYSTORES TO VALIDATE WITH ANOTHER CLIENT, OR YOU WILL GET SLASHED. +``` -### Step 5. Start Lighthouse +Once you see the above message, you have successfully imported the validator keys. You can now proceed to the next step to start the validator client. -For staking, one needs to run two Lighthouse processes: -- `lighthouse bn`: the "beacon node" which connects to the P2P network and - verifies blocks. -- `lighthouse vc`: the "validator client" which manages validators, using data - obtained from the beacon node via a HTTP API. +### Step 4. Start Lighthouse validator client -Starting these processes is different for binary and docker users: +After the keys are imported, the user can start performing their validator duties +by starting the Lighthouse validator client `lighthouse vc`: -#### Binary users +Mainnet: -Those using the pre- or custom-built binaries can start the two processes with: +```bash +lighthouse vc --network mainnet --suggested-fee-recipient YourFeeRecipientAddress +``` +Goerli testnet: ```bash -lighthouse --network mainnet bn --staking +lighthouse vc --network goerli --suggested-fee-recipient YourFeeRecipientAddress +``` + +The `validator client` manages validators using data obtained from the beacon node via a HTTP API. You are highly recommended to enter a fee-recipient by changing `YourFeeRecipientAddress` to an Ethereum address under your control. + +When `lighthouse vc` starts, check that the validator public key appears +as a `voting_pubkey` as shown below: + +``` +INFO Enabled validator voting_pubkey: 0xa5e8702533f6d66422e042a0bf3471ab9b302ce115633fa6fdc5643f804b6b4f1c33baf95f125ec21969a3b1e0dd9e56 +``` + +Once this log appears (and there are no errors) the `lighthouse vc` application +will ensure that the validator starts performing its duties and being rewarded +by the protocol. + +### Step 5: Submit deposit (32ETH per validator) + +After you have successfully run and synced the execution client, beacon node and validator client, you can now proceed to submit the deposit. Go to the mainnet [Staking launchpad](https://launchpad.ethereum.org/en/) (or [Goerli staking launchpad](https://goerli.launchpad.ethereum.org/en/) for testnet validator) and carefully go through the steps to becoming a validator. Once you are ready, you can submit the deposit by sending 32ETH per validator to the deposit contract. Upload the `deposit_data-*.json` file generated in [Step 1](#step-1-create-validator-keys) to the Staking launchpad. + +> **Important note:** Double check that the deposit contract for mainnet is `0x00000000219ab540356cBB839Cbe05303d7705Fa` before you confirm the transaction. + +Once the deposit transaction is confirmed, it will take a minimum of ~16 hours to a few days/weeks for the beacon chain to process and activate your validator, depending on the queue. Refer to our [FAQ - Why does it take so long for a validator to be activated](./faq.md#why-does-it-take-so-long-for-a-validator-to-be-activated) for more info. + +Once your validator is activated, the validator client will start to publish attestations each epoch: + +``` +Dec 03 08:49:40.053 INFO Successfully published attestation slot: 98, committee_index: 0, head_block: 0xa208…7fd5, +``` + +If you propose a block, the log will look like: + ``` +Dec 03 08:49:36.225 INFO Successfully published block slot: 98, attestations: 2, deposits: 0, service: block +``` + +Congratulations! Your validator is now performing its duties and you will receive rewards for securing the Ethereum network. + +### What is next? +After the validator is running and performing its duties, it is important to keep the validator online to continue accumulating rewards. However, there could be problems with the computer, the internet or other factors that cause the validator to be offline. For this, it is best to subscribe to notifications, e.g., via [beaconcha.in](https://beaconcha.in/) which will send notifications about missed attestations and/or proposals. You will be notified about the validator's offline status and will be able to react promptly. + +The next important thing is to stay up to date with updates to Lighthouse and the execution client. Updates are released from time to time, typically once or twice a month. For Lighthouse updates, you can subscribe to notifications on [Github](https://github.com/sigp/lighthouse) by clicking on `Watch`. If you only want to receive notification on new releases, select `Custom`, then `Releases`. You could also join [Lighthouse Discord](https://discord.gg/cyAszAh) where we will make an announcement when there is a new release. + +You may also want to try out [Siren](./lighthouse-ui.md), a UI developed by Lighthouse to monitor validator performance. + +Once you are familiar with running a validator and server maintenance, you'll find that running Lighthouse is easy. Install it, start it, monitor it and keep it updated. You shouldn't need to interact with it on a day-to-day basis. Happy staking! + +## Docker users + +### Import validator keys + +The `import` command is a little more complex for Docker users, but the example +in this document can be substituted with: ```bash -lighthouse --network mainnet vc +docker run -it \ + -v $HOME/.lighthouse:/root/.lighthouse \ + -v $(pwd)/validator_keys:/root/validator_keys \ + sigp/lighthouse \ + lighthouse --network mainnet account validator import --directory /root/validator_keys ``` -> Note: `~/.lighthouse/mainnet` is the default directory which contains the keys and databases. -> To specify a custom dir, see [Custom Directories][advanced-datadir]. +Here we use two `-v` volumes to attach: -#### Docker users +- `~/.lighthouse` on the host to `/root/.lighthouse` in the Docker container. +- The `validator_keys` directory in the present working directory of the host + to the `/root/validator_keys` directory of the Docker container. +### Start Lighthouse beacon node and validator client Those using Docker images can start the processes with: ```bash @@ -167,29 +226,8 @@ $ docker run \ lighthouse --network mainnet vc ``` -### Step 6. Leave Lighthouse running - -Leave your beacon node and validator client running and you'll see logs as the -beacon node stays synced with the network while the validator client produces -blocks and attestations. - -It will take 4-8+ hours for the beacon chain to process and activate your -validator, however you'll know you're active when the validator client starts -successfully publishing attestations each epoch: - -``` -Dec 03 08:49:40.053 INFO Successfully published attestation slot: 98, committee_index: 0, head_block: 0xa208…7fd5, -``` - -Although you'll produce an attestation each epoch, it's less common to produce a -block. Watch for the block production logs too: - -``` -Dec 03 08:49:36.225 INFO Successfully published block slot: 98, attestations: 2, deposits: 0, service: block -``` -If you see any `ERRO` (error) logs, please reach out on -[Discord](https://discord.gg/cyAszAh) or [create an +If you get stuck you can always reach out on our [Discord][discord] or [create an issue](https://github.com/sigp/lighthouse/issues/new). -Happy staking! + diff --git a/book/src/partial-withdrawal.md b/book/src/partial-withdrawal.md new file mode 100644 index 00000000000..db722d729e2 --- /dev/null +++ b/book/src/partial-withdrawal.md @@ -0,0 +1,23 @@ +# Partial Withdrawals + +After the [Capella](https://ethereum.org/en/history/#capella) upgrade on 12th April 2023: + + - if a validator has a withdrawal credential type `0x00`, the rewards will continue to accumulate and will be locked in the beacon chain. + - if a validator has a withdrawal credential type `0x01`, any rewards above 32ETH will be periodically withdrawn to the withdrawal address. This is also known as the "validator sweep", i.e., once the "validator sweep" reaches your validator's index, your rewards will be withdrawn to the withdrawal address. At the time of writing, with 560,000+ validators on the Ethereum mainnet, you shall expect to receive the rewards approximately every 5 days. + +### FAQ +1. How to know if I have the withdrawal credentials type `0x00` or `0x01`? + + Refer [here](./voluntary-exit.md#1-how-to-know-if-i-have-the-withdrawal-credentials-type-0x01). + +2. My validator has withdrawal credentials type `0x00`, is there a deadline to update my withdrawal credentials? + + No. You can update your withdrawal credentials **anytime**. The catch is that as long as you do not update your withdrawal credentials, your rewards in the beacon chain will continue to be locked in the beacon chain. Only after you update the withdrawal credentials, will the rewards be withdrawn to the withdrawal address. + +3. Do I have to do anything to get my rewards after I update the withdrawal credentials to type `0x01`? + + No. The "validator sweep" occurs automatically and you can expect to receive the rewards every few days. + + Figure below summarizes partial withdrawals. + + ![partial](./imgs/partial-withdrawal.png) \ No newline at end of file diff --git a/book/src/run_a_node.md b/book/src/run_a_node.md index fb112c36753..3affa6ab36b 100644 --- a/book/src/run_a_node.md +++ b/book/src/run_a_node.md @@ -1,77 +1,43 @@ # Run a Node -This document provides detail for users who want to run a Lighthouse beacon node. +This section provides the detail for users who want to run a Lighthouse beacon node. You should be finished with one [Installation](./installation.md) method of your choice to continue with the following steps: -1. Set up an [execution node](#step-1-set-up-an-execution-node); -1. Enable [checkpoint sync](#step-2-choose-a-checkpoint-sync-provider); -1. Run [Lighthouse](#step-3-run-lighthouse); -1. [Check logs](#step-4-check-logs); and -1. [Further readings](#step-5-further-readings). +1. Create a [JWT secret file](#step-1-create-a-jwt-secret-file) +1. Set up an [execution node](#step-2-set-up-an-execution-node); +1. Set up a [beacon node](#step-3-set-up-a-beacon-node-using-lighthouse); +1. [Check logs for sync status](#step-4-check-logs); -Checkpoint sync is *optional*; however, we recommend it since it is substantially faster -than syncing from genesis while still providing the same functionality. -## Step 1: Set up an execution node -The Lighthouse beacon node *must* connect to an execution engine in order to validate the transactions -present in blocks. Two flags are used to configure this connection: +## Step 1: Create a JWT secret file +A JWT secret file is used to secure the communication between the execution client and the consensus client. In this step, we will create a JWT secret file which will be used in later steps. -- `--execution-endpoint`: the *URL* of the execution engine API. Often this will be - `http://localhost:8551`. -- `--execution-jwt`: the *path* to the file containing the JWT secret shared by Lighthouse and the - execution engine. This is a mandatory form of authentication that ensures that Lighthouse -has authority to control the execution engine. - -Each execution engine has its own flags for configuring the engine API and JWT. -Please consult the relevant page of your execution engine for the required flags: - -- [Geth: Connecting to Consensus Clients](https://geth.ethereum.org/docs/getting-started/consensus-clients) -- [Nethermind: Running Nethermind & CL](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/running-nethermind-post-merge) -- [Besu: Connect to Mainnet](https://besu.hyperledger.org/en/stable/public-networks/get-started/connect/mainnet/) -- [Erigon: Beacon Chain (Consensus Layer)](https://github.com/ledgerwatch/erigon#beacon-chain-consensus-layer) - -The execution engine connection must be *exclusive*, i.e. you must have one execution node -per beacon node. The reason for this is that the beacon node _controls_ the execution node. - -## Step 2: Choose a checkpoint sync provider - -Lighthouse supports fast sync from a recent finalized checkpoint. -The checkpoint sync is done using a [public endpoint](#use-a-community-checkpoint-sync-endpoint) -provided by the Ethereum community. - -In [step 3](#step-3-run-lighthouse), when running Lighthouse, -we will enable checkpoint sync by providing the URL to the `--checkpoint-sync-url` flag. +```bash +sudo mkdir -p /secrets +openssl rand -hex 32 | tr -d "\n" | sudo tee /secrets/jwt.hex +``` -### Use a community checkpoint sync endpoint +## Step 2: Set up an execution node -The Ethereum community provides various [public endpoints](https://eth-clients.github.io/checkpoint-sync-endpoints/) for you to choose from for your initial checkpoint state. Select one for your network and use it as the URL. +The Lighthouse beacon node *must* connect to an execution engine in order to validate the transactions present in blocks. The execution engine connection must be *exclusive*, i.e. you must have one execution node +per beacon node. The reason for this is that the beacon node _controls_ the execution node. Select an execution client from the list below and run it: -For example, the URL for Sigma Prime's checkpoint sync server for mainnet is `https://mainnet.checkpoint.sigp.io`, -which we will use in [step 3](#step-3-run-lighthouse). -## Step 3: Run Lighthouse +- [Nethermind](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/running-nethermind-post-merge) +- [Besu](https://besu.hyperledger.org/en/stable/public-networks/get-started/connect/mainnet/) +- [Erigon](https://github.com/ledgerwatch/erigon#beacon-chain-consensus-layer) +- [Geth](https://geth.ethereum.org/docs/getting-started/consensus-clients) -To run Lighthouse, we use the three flags from the steps above: -- `--execution-endpoint`; -- `--execution-jwt`; and -- `--checkpoint-sync-url`. -Additionally, we run Lighthouse with the `--network` flag, which selects a network: +> Note: Each execution engine has its own flags for configuring the engine API and JWT secret to connect to a beacon node. Please consult the relevant page of your execution engine as above for the required flags. -- `lighthouse` (no flag): Mainnet. -- `lighthouse --network mainnet`: Mainnet. -- `lighthouse --network goerli`: Goerli (testnet). -Using the correct `--network` flag is very important; using the wrong flag can -result in penalties, slashings or lost deposits. As a rule of thumb, *always* -provide a `--network` flag instead of relying on the default. +Once the execution client is up, just let it continue running. The execution client will start syncing when it connects to a beacon node. Depending on the execution client and computer hardware specifications, syncing can take from a few hours to a few days. You can safely proceed to Step 3 to set up a beacon node while the execution client is still syncing. -For the testnets we support [Goerli](https://goerli.net/) (`--network goerli`), -[Sepolia](https://sepolia.dev/) (`--network sepolia`), and [Gnosis chain](https://www.gnosis.io/) (`--network gnosis`). +## Step 3: Set up a beacon node using Lighthouse -Minor modifications depend on if you want to run your node while [staking](#staking) or [non-staking](#non-staking). -In the following, we will provide examples of what a Lighthouse setup could look like. +In this step, we will set up a beacon node. Use the following command to start a beacon node that connects to the execution node: ### Staking @@ -84,9 +50,30 @@ lighthouse bn \ --http ``` -A Lighthouse beacon node can be configured to expose an HTTP server by supplying the `--http` flag. -The default listen address is `127.0.0.1:5052`. -The HTTP API is required for the beacon node to accept connections from the *validator client*, which manages keys. +> Note: If you download the binary file, you need to navigate to the directory of the binary file to run the above command. + +Notable flags: +- `--network` flag, which selects a network: + - `lighthouse` (no flag): Mainnet. + - `lighthouse --network mainnet`: Mainnet. + - `lighthouse --network goerli`: Goerli (testnet). + - `lighthouse --network sepolia`: Sepolia (testnet). + - `lighthouse --network gnosis`: Gnosis chain + + > Note: Using the correct `--network` flag is very important; using the wrong flag can +result in penalties, slashings or lost deposits. As a rule of thumb, *always* +provide a `--network` flag instead of relying on the default. +- `--execution-endpoint`: the URL of the execution engine API. If the execution engine is running on the same computer with the default port, this will be + `http://localhost:8551`. +- `--execution-jwt`: the path to the JWT secret file shared by Lighthouse and the + execution engine. This is a mandatory form of authentication which ensures that Lighthouse has the authority to control the execution engine. +- `--checkpoint-sync-url`: Lighthouse supports fast sync from a recent finalized checkpoint. Checkpoint sync is *optional*; however, we **highly recommend** it since it is substantially faster than syncing from genesis while still providing the same functionality. The checkpoint sync is done using [public endpoints](https://eth-clients.github.io/checkpoint-sync-endpoints/) provided by the Ethereum community. For example, in the above command, we use the URL for Sigma Prime's checkpoint sync server for mainnet `https://mainnet.checkpoint.sigp.io`. +- `--http`: to expose an HTTP server of the beacon chain. The default listening address is `http://localhost:5052`. The HTTP API is required for the beacon node to accept connections from the *validator client*, which manages keys. + + + +If you intend to run the beacon node without running the validator client (e.g., for non-staking purposes such as supporting the network), you can modify the above command so that the beacon node is configured for non-staking purposes: + ### Non-staking @@ -99,17 +86,19 @@ lighthouse bn \ --disable-deposit-contract-sync ``` -Since we are not staking, we can use the `--disable-deposit-contract-sync` flag. +Since we are not staking, we can use the `--disable-deposit-contract-sync` flag to disable syncing of deposit logs from the execution node. + ---- Once Lighthouse runs, we can monitor the logs to see if it is syncing correctly. -## Step 4: Check logs + + +## Step 4: Check logs for sync status Several logs help you identify if Lighthouse is running correctly. ### Logs - Checkpoint sync -Lighthouse will print a message to indicate that checkpoint sync is being used: +If you run Lighthouse with the flag `--checkpoint-sync-url`, Lighthouse will print a message to indicate that checkpoint sync is being used: ``` INFO Starting checkpoint sync remote_url: http://remote-bn:8000/, service: beacon @@ -122,16 +111,17 @@ loaded from the remote beacon node: INFO Loaded checkpoint block and state state_root: 0xe8252c68784a8d5cc7e5429b0e95747032dd1dcee0d1dc9bdaf6380bf90bc8a6, block_root: 0x5508a20147299b1a7fe9dbea1a8b3bf979f74c52e7242039bd77cbff62c0695a, slot: 2034720, service: beacon ``` -Once the checkpoint is loaded Lighthouse will sync forwards to the head of the chain. +Once the checkpoint is loaded, Lighthouse will sync forwards to the head of the chain. + +If a validator client is connected to the beacon node it will be able to start its duties as soon as forwards sync completes, which typically takes 1-2 minutes. -If a validator client is connected to the node then it will be able to start completing its duties -as soon as forwards sync completes. +> Note: If you have an existing Lighthouse database, you will need to delete the database by using the `--purge-db` flag or manually delete the database with `sudo rm -r /path_to_database/beacon`. If you do use a `--purge-db` flag, once checkpoint sync is complete, you can remove the flag upon a restart. > **Security Note**: You should cross-reference the `block_root` and `slot` of the loaded checkpoint > against a trusted source like another [public endpoint](https://eth-clients.github.io/checkpoint-sync-endpoints/), > a friend's node, or a block explorer. -#### Backfilling Blocks +### Backfilling Blocks Once forwards sync completes, Lighthouse will commence a "backfill sync" to download the blocks from the checkpoint back to genesis. @@ -156,16 +146,17 @@ as `verified` indicating that they have been processed successfully by the execu INFO Synced, slot: 3690668, block: 0x1244…cb92, epoch: 115333, finalized_epoch: 115331, finalized_root: 0x0764…2a3d, exec_hash: 0x929c…1ff6 (verified), peers: 78 ``` +Once you see the above message - congratulations! This means that your node is synced and you have contributed to the decentralization and security of the Ethereum network. -## Step 5: Further readings +## Further readings Several other resources are the next logical step to explore after running your beacon node: -- Learn how to [become a validator](./mainnet-validator.md); +- If you intend to run a validator, proceed to [become a validator](./mainnet-validator.md); - Explore how to [manage your keys](./key-management.md); - Research on [validator management](./validator-management.md); - Dig into the [APIs](./api.md) that the beacon node and validator client provide; - Study even more about [checkpoint sync](./checkpoint-sync.md); or - Investigate what steps had to be taken in the past to execute a smooth [merge migration](./merge-migration.md). -Finally, if you a struggling with anything, join our [Discord](https://discord.gg/cyAszAh). We are happy to help! \ No newline at end of file +Finally, if you are struggling with anything, join our [Discord](https://discord.gg/cyAszAh). We are happy to help! diff --git a/book/src/slashing-protection.md b/book/src/slashing-protection.md index a60c8e36dc2..6e2ca65b416 100644 --- a/book/src/slashing-protection.md +++ b/book/src/slashing-protection.md @@ -21,8 +21,8 @@ and carefully to keep your validators safe. See the [Troubleshooting](#troublesh The database will be automatically created, and your validators registered with it when: -* Importing keys from another source (e.g. Launchpad, Teku, Prysm, `ethdo`). - See [the docs on importing keys](./validator-import-launchpad.md). +* Importing keys from another source (e.g. [staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli/releases), Lodestar, Nimbus, Prysm, Teku, [ethdo](https://github.com/wealdtech/ethdo)). + See [import validator keys](./mainnet-validator.md#step-3-import-validator-keys-to-lighthouse). * Creating keys using Lighthouse itself (`lighthouse account validator create`) * Creating keys via the [validator client API](./api-vc.md). @@ -45,7 +45,7 @@ Examples of circumstances where the slashing protection database is effective ar your client to be imported into Lighthouse's slashing protection database. See [Import and Export](#import-and-export). * Misplacing `slashing_protection.sqlite` during a datadir change or migration between machines. - By default Lighthouse will refuse to start if it finds validator keys that are not registered + By default, Lighthouse will refuse to start if it finds validator keys that are not registered in the slashing protection database. Examples where it is **ineffective** are: @@ -54,7 +54,7 @@ Examples where it is **ineffective** are: clients (e.g. Lighthouse and Prysm) running on the same machine, two Lighthouse instances using different datadirs, or two clients on completely different machines (e.g. one on a cloud server and one running locally). You are responsible for ensuring that your validator keys are never - running simultaneously – the slashing protection DB **cannot protect you in this case**. + running simultaneously – the slashing protection database **cannot protect you in this case**. * Importing keys from another client without also importing voting history. * If you use `--init-slashing-protection` to recreate a missing slashing protection database. @@ -64,19 +64,22 @@ Lighthouse supports the slashing protection interchange format described in [EIP interchange file is a record of blocks and attestations signed by a set of validator keys – basically a portable slashing protection database! -With your validator client stopped, you can import a `.json` interchange file from another client +To import a slashing protection database to Lighthouse, you first need to export your existing client's database. Instructions to export the slashing protection database for other clients are listed below: +- [Lodestar](https://chainsafe.github.io/lodestar/reference/cli/#validator-slashing-protection-export) +- [Nimbus](https://nimbus.guide/migration.html#2-export-slashing-protection-history) +- [Prysm](https://docs.prylabs.network/docs/wallet/slashing-protection#exporting-your-validators-slashing-protection-history) +- [Teku](https://docs.teku.consensys.net/HowTo/Prevent-Slashing#export-a-slashing-protection-file) + + +Once you have the slashing protection database from your existing client, you can now import the database to Lighthouse. With your validator client stopped, you can import a `.json` interchange file from another client using this command: ```bash lighthouse account validator slashing-protection import ``` -Instructions for exporting your existing client's database are out of scope for this document, -please check the other client's documentation for instructions. - When importing an interchange file, you still need to import the validator keystores themselves -separately, using the instructions for [importing keystores into -Lighthouse](./validator-import-launchpad.md). +separately, using the instructions for [import validator keys](./mainnet-validator.md#step-3-import-validator-keys-to-lighthouse). --- @@ -93,7 +96,7 @@ up to date. ### How Import Works -Since version 1.6.0 Lighthouse will ignore any slashable data in the import data and will safely +Since version 1.6.0, Lighthouse will ignore any slashable data in the import data and will safely update the low watermarks for blocks and attestations. It will store only the maximum-slot block for each validator, and the maximum source/target attestation. This is faster than importing all data while also being more resilient to repeated imports & stale data. @@ -121,7 +124,7 @@ Oct 12 14:41:26.415 CRIT Failed to start validator client reason: Failed Ensure that `slashing_protection.sqlite` is in "/home/karlm/.lighthouse/mainnet/validators" folder ``` -Usually this indicates that during some manual intervention the slashing database has been +Usually this indicates that during some manual intervention, the slashing database has been misplaced. This error can also occur if you have upgraded from Lighthouse v0.2.x to v0.3.x without moving the slashing protection database. If you have imported your keys into a new node, you should never see this error (see [Initialization](#initialization)). @@ -137,7 +140,7 @@ the Lighthouse validator client with the `--init-slashing-protection` flag. This dangerous and should not be used lightly, and we **strongly recommend** you try finding your old slashing protection database before using it. If you do decide to use it, you should wait at least 1 epoch (~7 minutes) from when your validator client was last actively signing -messages. If you suspect your node experienced a clock drift issue you should wait +messages. If you suspect your node experienced a clock drift issue, you should wait longer. Remember that the inactivity penalty for being offline for even a day or so is approximately equal to the rewards earned in a day. You will get slashed if you use `--init-slashing-protection` incorrectly. diff --git a/book/src/suggested-fee-recipient.md b/book/src/suggested-fee-recipient.md index c1739aa9378..f3ece850621 100644 --- a/book/src/suggested-fee-recipient.md +++ b/book/src/suggested-fee-recipient.md @@ -1,14 +1,12 @@ # Suggested Fee Recipient The _fee recipient_ is an Ethereum address nominated by a beacon chain validator to receive -tips from user transactions. If you run validators on a network that has already merged -or is due to merge soon then you should nominate a fee recipient for your validators. +tips from user transactions. Given that all mainnet and testnets have gone through [The Merge](https://ethereum.org/en/roadmap/merge/), if you run validators on a network, you are strongly recommended to nominate a fee recipient for your validators. Failing to nominate a fee recipient will result in losing the tips from transactions. ## Background During post-merge block production, the Beacon Node (BN) will provide a `suggested_fee_recipient` to -the execution node. This is a 20-byte Ethereum address which the EL might choose to set as the -coinbase and the recipient of other fees or rewards. +the execution node. This is a 20-byte Ethereum address which the execution node might choose to set as the recipient of other fees or rewards. There is no guarantee that an execution node will use the `suggested_fee_recipient` to collect fees, it may use any address it chooses. It is assumed that an honest execution node *will* use the @@ -189,4 +187,4 @@ accumulates other staking rewards. The reason for this is that transaction fees validated by the execution node, and therefore need to be paid to an address that exists on the execution chain. Validators use BLS keys which do not correspond to Ethereum addresses, so they have no "presence" on the execution chain. Therefore, it's necessary for each validator to nominate -a separate fee recipient address. +a fee recipient address. diff --git a/book/src/testnet-validator.md b/book/src/testnet-validator.md deleted file mode 100644 index 98ba66c2445..00000000000 --- a/book/src/testnet-validator.md +++ /dev/null @@ -1,23 +0,0 @@ -# Become a Testnet Validator - -[mainnet-validator]: ./mainnet-validator.md -[prater-launchpad]: https://prater.launchpad.ethereum.org/ - -Joining an Ethereum consensus testnet is a great way to get familiar with staking in Phase 0. All users should -experiment with a testnet prior to staking mainnet ETH. - -To join a testnet, you can follow the [Become an Ethereum consensus Mainnet Validator][mainnet-validator] -instructions but with a few differences: - -1. Use the appropriate Staking launchpad website: - - [Prater][prater-launchpad] -1. Instead of `--network mainnet`, use the appropriate network flag: - - `--network prater`: Prater. -1. Use a Goerli execution node instead of a mainnet one: - - For Geth, this means using `geth --goerli --http`. -1. Notice that Lighthouse will store its files in a different directory by default: - - `~/.lighthouse/prater`: Prater. - -> -> **Never use real ETH to join a testnet!** All of the testnets listed here use Goerli ETH which is -> basically worthless. This allows experimentation without real-world costs. diff --git a/book/src/validator-create.md b/book/src/validator-create.md deleted file mode 100644 index f13c449b9f8..00000000000 --- a/book/src/validator-create.md +++ /dev/null @@ -1,90 +0,0 @@ -# Create a validator - -[launchpad]: https://launchpad.ethereum.org/ - -> -> **Note: we recommend using the [Staking launchpad][launchpad] to create validators.** - -Validators are fundamentally represented by a BLS keypair. In Lighthouse, we -use a [wallet](./wallet-create.md) to generate these keypairs. Once a wallet -exists, the `lighthouse account validator create` command is used to generate -the BLS keypair and all necessary information to submit a validator deposit and -have that validator operate in the `lighthouse validator_client`. - -## Usage - -To create a validator from a [wallet](./wallet-create.md), use the `lighthouse -account validator create` command: - -```bash -lighthouse account validator create --help - -Creates new validators from an existing EIP-2386 wallet using the EIP-2333 HD key derivation scheme. - -USAGE: - lighthouse account_manager validator create [FLAGS] [OPTIONS] - -FLAGS: - -h, --help Prints help information - --stdin-inputs If present, read all user inputs from stdin instead of tty. - --store-withdrawal-keystore If present, the withdrawal keystore will be stored alongside the voting keypair. - It is generally recommended to *not* store the withdrawal key and instead - generate them from the wallet seed when required. - -V, --version Prints version information - -OPTIONS: - --at-most - Observe the number of validators in --validator-dir, only creating enough to reach the given count. Never - deletes an existing validator. - --count - The number of validators to create, regardless of how many already exist - - -d, --datadir

- Used to specify a custom root data directory for lighthouse keys and databases. Defaults to - $HOME/.lighthouse/{network} where network is the value of the `network` flag Note: Users should specify - separate custom datadirs for different networks. - --debug-level - The verbosity level for emitting logs. [default: info] [possible values: info, debug, trace, warn, error, - crit] - --deposit-gwei - The GWEI value of the deposit amount. Defaults to the minimum amount required for an active validator - (MAX_EFFECTIVE_BALANCE) - --network - Name of the Eth2 chain Lighthouse will sync and follow. [default: mainnet] [possible values: prater, mainnet] - --secrets-dir - The path where the validator keystore passwords will be stored. Defaults to ~/.lighthouse/{network}/secrets - - -s, --spec - This flag is deprecated, it will be disallowed in a future release. This value is now derived from the - --network or --testnet-dir flags. - -t, --testnet-dir - Path to directory containing eth2_testnet specs. Defaults to a hard-coded Lighthouse testnet. Only effective - if there is no existing database. - --wallet-name Use the wallet identified by this name - --wallet-password - A path to a file containing the password which will unlock the wallet. - - --wallets-dir - A path containing Eth2 EIP-2386 wallets. Defaults to ~/.lighthouse/{network}/wallets -``` - -## Example - -The example assumes that the `wally` wallet was generated from the -[wallet](./wallet-create.md) example. - -```bash -lighthouse --network prater account validator create --wallet-name wally --wallet-password wally.pass --count 1 -``` - -This command will: - -- Derive a single new BLS keypair from wallet `wally` in `~/.lighthouse/{network}/wallets`, updating it so that it generates a - new key next time. -- Create a new directory in `~/.lighthouse/{network}/validators` containing: - - An encrypted keystore containing the validators voting keypair. - - An `eth1_deposit_data.rlp` assuming the default deposit amount (`32 ETH` - for most testnets and mainnet) which can be submitted to the deposit - contract for the Prater testnet. Other testnets can be set via the - `--network` CLI param. -- Store a password to the validators voting keypair in `~/.lighthouse/{network}/secrets`. diff --git a/book/src/validator-doppelganger.md b/book/src/validator-doppelganger.md index d880cce0ae4..6eaddcc7b0b 100644 --- a/book/src/validator-doppelganger.md +++ b/book/src/validator-doppelganger.md @@ -16,8 +16,7 @@ achieves this by staying silent for 2-3 epochs after a validator is started so i other instances of that validator before starting to sign potentially slashable messages. > Note: Doppelganger Protection is not yet interoperable, so if it is configured on a Lighthouse -> validator client, the client must be connected to a Lighthouse beacon node. Because Infura -> uses Teku, Lighthouse's Doppelganger Protection cannot yet be used with Infura's Eth2 service. +> validator client, the client must be connected to a Lighthouse beacon node. ## Initial Considerations @@ -30,9 +29,9 @@ is no guarantee that your Beacon Node (BN) will see messages from it. **It is fe doppelganger protection to fail to detect another validator due to network faults or other common circumstances.** -DP should be considered a last-line-of-defence that *might* save a validator from being slashed due +DP should be considered as a last-line-of-defence that *might* save a validator from being slashed due to operator error (i.e. running two instances of the same validator). Users should -*never* rely upon DP and should practice the same caution with regards to duplicating validators as +*never* rely upon DP and should practice the same caution with regard to duplicating validators as if it did not exist. **Remember: even with doppelganger protection enabled, it is not safe to run two instances of the @@ -44,7 +43,7 @@ DP works by staying silent on the network for 2-3 epochs before starting to sign Staying silent and refusing to sign messages will cause the following: - 2-3 missed attestations, incurring penalties and missed rewards. -- 2-3 epochs of missed sync committee contributions (if the validator is in a sync committee, which is unlikely), incurring penalties and missed rewards (post-Altair upgrade only). +- 2-3 epochs of missed sync committee contributions (if the validator is in a sync committee, which is unlikely), incurring penalties and missed rewards. - Potentially missed rewards by missing a block proposal (if the validator is an elected block proposer, which is unlikely). @@ -105,7 +104,7 @@ there is no other instance of that validator running elsewhere!** The steps to solving a doppelganger vary depending on the case, but some places to check are: 1. Is there another validator process running on this host? - - Unix users can check `ps aux | grep lighthouse` + - Unix users can check by running the command `ps aux | grep lighthouse` - Windows users can check the Task Manager. 1. Has this validator recently been moved from another host? Check to ensure it's not running. 1. Has this validator been delegated to a staking service? diff --git a/book/src/validator-import-launchpad.md b/book/src/validator-import-launchpad.md deleted file mode 100644 index 9849b91b70a..00000000000 --- a/book/src/validator-import-launchpad.md +++ /dev/null @@ -1,111 +0,0 @@ -# Importing from the Ethereum Staking Launch pad - -The [Staking Launchpad](https://github.com/ethereum/eth2.0-deposit) is a website -from the Ethereum Foundation which guides users how to use the -[`eth2.0-deposit-cli`](https://github.com/ethereum/eth2.0-deposit-cli) -command-line program to generate consensus validator keys. - -The keys that are generated from `eth2.0-deposit-cli` can be easily loaded into -a Lighthouse validator client (`lighthouse vc`). In fact, both of these -programs are designed to work with each other. - -This guide will show the user how to import their keys into Lighthouse so they -can perform their duties as a validator. The guide assumes the user has already -[installed Lighthouse](./installation.md). - -## Instructions - -Whilst following the steps on the website, users are instructed to download the -[`eth2.0-deposit-cli`](https://github.com/ethereum/eth2.0-deposit-cli) -repository. This `eth2-deposit-cli` script will generate the validator BLS keys -into a `validator_keys` directory. We assume that the user's -present-working-directory is the `eth2-deposit-cli` repository (this is where -you will be if you just ran the `./deposit.sh` script from the Staking Launch pad -website). If this is not the case, simply change the `--directory` to point to -the `validator_keys` directory. - -Now, assuming that the user is in the `eth2-deposit-cli` directory and they're -using the default (`~/.lighthouse/{network}/validators`) `validators` directory (specify a different one using -`--validators-dir` flag), they can follow these steps: - -### 1. Run the `lighthouse account validator import` command. - -Docker users should use the command from the [Docker](#docker) -section, all other users can use: - - -```bash -lighthouse --network mainnet account validator import --directory validator_keys -``` - -Note: The user must specify the consensus client network that they are importing the keys for using the `--network` flag. - - -After which they will be prompted for a password for each keystore discovered: - -``` -Keystore found at "validator_keys/keystore-m_12381_3600_0_0_0-1595406747.json": - - - Public key: 0xa5e8702533f6d66422e042a0bf3471ab9b302ce115633fa6fdc5643f804b6b4f1c33baf95f125ec21969a3b1e0dd9e56 - - UUID: 8ea4cf99-8719-43c5-9eda-e97b8a4e074f - -If you enter a password it will be stored in validator_definitions.yml so that it is not required each time the validator client starts. - -Enter a password, or press enter to omit a password: -``` - -The user can choose whether or not they'd like to store the validator password -in the [`validator_definitions.yml`](./validator-management.md) file. If the -password is *not* stored here, the validator client (`lighthouse vc`) -application will ask for the password each time it starts. This might be nice -for some users from a security perspective (i.e., if it is a shared computer), -however it means that if the validator client restarts, the user will be liable -to off-line penalties until they can enter the password. If the user trusts the -computer that is running the validator client and they are seeking maximum -validator rewards, we recommend entering a password at this point. - -Once the process is done the user will see: - -``` -Successfully imported keystore. -Successfully updated validator_definitions.yml. - -Successfully imported 1 validators (0 skipped). - -WARNING: DO NOT USE THE ORIGINAL KEYSTORES TO VALIDATE WITH ANOTHER CLIENT, OR YOU WILL GET SLASHED.. -``` - -The import process is complete! - -### 2. Run the `lighthouse vc` command. - -Now the keys are imported the user can start performing their validator duties -by running `lighthouse vc` and checking that their validator public key appears -as a `voting_pubkey` in one of the following logs: - -``` -INFO Enabled validator voting_pubkey: 0xa5e8702533f6d66422e042a0bf3471ab9b302ce115633fa6fdc5643f804b6b4f1c33baf95f125ec21969a3b1e0dd9e56 -``` - -Once this log appears (and there are no errors) the `lighthouse vc` application -will ensure that the validator starts performing its duties and being rewarded -by the protocol. There is no more input required from the user. - -## Docker - -The `import` command is a little more complex for Docker users, but the example -in this document can be substituted with: - -```bash -docker run -it \ - -v $HOME/.lighthouse:/root/.lighthouse \ - -v $(pwd)/validator_keys:/root/validator_keys \ - sigp/lighthouse \ - lighthouse --network MY_NETWORK account validator import --directory /root/validator_keys -``` - -Here we use two `-v` volumes to attach: - -- `~/.lighthouse` on the host to `/root/.lighthouse` in the Docker container. -- The `validator_keys` directory in the present working directory of the host - to the `/root/validator_keys` directory of the Docker container. diff --git a/book/src/validator-management.md b/book/src/validator-management.md index b7d4442de3d..be34fef2c3c 100644 --- a/book/src/validator-management.md +++ b/book/src/validator-management.md @@ -1,10 +1,10 @@ # Validator Management The `lighthouse vc` command starts a *validator client* instance which connects -to a beacon node performs the duties of a staked validator. +to a beacon node to perform the duties of a staked validator. This document provides information on how the validator client discovers the -validators it will act for and how it should obtain their cryptographic +validators it will act for and how it obtains their cryptographic signatures. Users that create validators using the `lighthouse account` tool in the @@ -49,7 +49,7 @@ Each permitted field of the file is listed below for reference: - `enabled`: A `true`/`false` indicating if the validator client should consider this validator "enabled". - `voting_public_key`: A validator public key. -- `type`: How the validator signs messages (currently restricted to `local_keystore`). +- `type`: How the validator signs messages (this can be `local_keystore` or `web3signer` (see [Web3Signer](./validator-web3signer.md))). - `voting_keystore_path`: The path to a EIP-2335 keystore. - `voting_keystore_password_path`: The path to the password for the EIP-2335 keystore. - `voting_keystore_password`: The password to the EIP-2335 keystore. @@ -59,7 +59,7 @@ Each permitted field of the file is listed below for reference: ## Populating the `validator_definitions.yml` file -When validator client starts and the `validator_definitions.yml` file doesn't +When a validator client starts and the `validator_definitions.yml` file doesn't exist, a new file will be created. If the `--disable-auto-discover` flag is provided, the new file will be empty and the validator client will not start any validators. If the `--disable-auto-discover` flag is **not** provided, an @@ -71,7 +71,7 @@ recap: ### Automatic validator discovery -When the `--disable-auto-discover` flag is **not** provided, the validator will search the +When the `--disable-auto-discover` flag is **not** provided, the validator client will search the `validator-dir` for validators and add any *new* validators to the `validator_definitions.yml` with `enabled: true`. @@ -89,7 +89,7 @@ name identical to the `voting_public_key` value. #### Discovery Example -Lets assume the following directory structure: +Let's assume the following directory structure: ``` ~/.lighthouse/{network}/validators @@ -158,7 +158,7 @@ start. If a validator client were to start using the [first example `validator_definitions.yml` file](#example) it would print the following log, -acknowledging there there are two validators and one is disabled: +acknowledging there are two validators and one is disabled: ``` INFO Initialized validators enabled: 1, disabled: 1 @@ -180,8 +180,8 @@ should not be opened by another process. 1. Proceed to act for that validator, creating blocks and attestations if/when required. If there is an error during any of these steps (e.g., a file is missing or -corrupt) the validator client will log an error and continue to attempt to +corrupt), the validator client will log an error and continue to attempt to process other validators. -When the validator client exits (or the validator is deactivated) it will +When the validator client exits (or the validator is deactivated), it will remove the `voting-keystore.json.lock` to indicate that the keystore is free for use again. diff --git a/book/src/validator-monitoring.md b/book/src/validator-monitoring.md index 9074bc0273e..893ec90bdd3 100644 --- a/book/src/validator-monitoring.md +++ b/book/src/validator-monitoring.md @@ -38,7 +38,7 @@ minutes after start up. #### Example ``` -lighthouse bn --staking --validator-monitor-auto +lighthouse bn --http --validator-monitor-auto ``` ### Manual diff --git a/book/src/voluntary-exit.md b/book/src/voluntary-exit.md index 591b7d49109..d90395c07fc 100644 --- a/book/src/voluntary-exit.md +++ b/book/src/voluntary-exit.md @@ -1,7 +1,7 @@ -# Voluntary exits +# Voluntary Exits (Full Withdrawals) A validator may chose to voluntarily stop performing duties (proposing blocks and attesting to blocks) by submitting -a voluntary exit transaction to the beacon chain. +a voluntary exit message to the beacon chain. A validator can initiate a voluntary exit provided that the validator is currently active, has not been slashed and has been active for at least 256 epochs (~27 hours) since it has been activated. @@ -10,21 +10,15 @@ A validator can initiate a voluntary exit provided that the validator is current It takes at a minimum 5 epochs (32 minutes) for a validator to exit after initiating a voluntary exit. This number can be much higher depending on how many other validators are queued to exit. -## Withdrawal of exited funds - -In order to be eligible for fund withdrawal, the validator must have set a withdrawal address and fully exited the network. - -For more information on how fund withdrawal works, please visit - ## Initiating a voluntary exit In order to initiate an exit, users can use the `lighthouse account validator exit` command. -- The `--keystore` flag is used to specify the path to the EIP-2335 voting keystore for the validator. +- The `--keystore` flag is used to specify the path to the EIP-2335 voting keystore for the validator. The path should point directly to the validator key `.json` file, _not_ the folder containing the `.json` file. - The `--beacon-node` flag is used to specify a beacon chain HTTP endpoint that confirms to the [Beacon Node API](https://ethereum.github.io/beacon-APIs/) specifications. That beacon node will be used to validate and propagate the voluntary exit. The default value for this flag is `http://localhost:5052`. -- The `--network` flag is used to specify a particular Eth2 network (default is `mainnet`). +- The `--network` flag is used to specify the network (default is `mainnet`). - The `--password-file` flag is used to specify the path to the file containing the password for the voting keystore. If this flag is not provided, the user will be prompted to enter the password. @@ -36,13 +30,13 @@ The exit phrase is the following: -Below is an example for initiating a voluntary exit on the Prater testnet. +Below is an example for initiating a voluntary exit on the Goerli testnet. ``` -$ lighthouse --network prater account validator exit --keystore /path/to/keystore --beacon-node http://localhost:5052 +$ lighthouse --network goerli account validator exit --keystore /path/to/keystore --beacon-node http://localhost:5052 Running account manager for Prater network -validator-dir path: ~/.lighthouse/prater/validators +validator-dir path: ~/.lighthouse/goerli/validators Enter the keystore password for validator in 0xabcd @@ -52,6 +46,8 @@ Publishing a voluntary exit for validator 0xabcd WARNING: WARNING: THIS IS AN IRREVERSIBLE OPERATION + + PLEASE VISIT https://lighthouse-book.sigmaprime.io/voluntary-exit.html TO MAKE SURE YOU UNDERSTAND THE IMPLICATIONS OF A VOLUNTARY EXIT. @@ -65,3 +61,47 @@ Please keep your validator running till exit epoch Exit epoch in approximately 1920 secs ``` +## Full withdrawal of staked fund + +After the [Capella](https://ethereum.org/en/history/#capella) upgrade on 12th April 2023, if a user initiates a voluntary exit, they will receive the full staked funds to the withdrawal address, provided that the validator has withdrawal credentials of type `0x01`. For more information on how fund withdrawal works, please visit [Ethereum.org](https://ethereum.org/en/staking/withdrawals/#how-do-withdrawals-work) website. + +## FAQ + +### 1. How to know if I have the withdrawal credentials type `0x01`? + +There are two types of withdrawal credentials, `0x00` and `0x01`. To check which type your validator has, go to [Staking launchpad](https://launchpad.ethereum.org/en/withdrawals), enter your validator index and click `verify on mainnet`: + + - `withdrawals enabled` means your validator is of type `0x01`, and you will automatically receive the full withdrawal to the withdrawal address that you set. +- `withdrawals not enabled` means your validator is of type `0x00`, and will need to update your withdrawal credentials from `0x00` type to `0x01` type (also known as BLS-to-execution-change, or BTEC) to receive the staked funds. The common way to do this is using `Staking deposit CLI` or `ethdo`, with the instructions available [here](https://launchpad.ethereum.org/en/withdrawals#update-your-keys). + + +### 2. What if my validator is of type `0x00` and I do not update my withdrawal credentials after I initiated a voluntary exit? + + Your staked fund will continue to be locked on the beacon chain. You can update your withdrawal credentials **anytime**, and there is no deadline for that. The catch is that as long as you do not update your withdrawal credentials, your staked funds in the beacon chain will continue to be locked in the beacon chain. Only after you update the withdrawal credentials, will the staked funds be withdrawn to the withdrawal address. + +### 3. How many times can I update my withdrawal credentials? + + If your withdrawal credentials is of type `0x00`, you can only update it once to type `0x01`. It is therefore very important to ensure that the withdrawal address you set is an address under your control, preferably an address controlled by a hardware wallet. + + If your withdrawal credentials is of type `0x01`, it means you have set your withdrawal address previously, and you will not be able to change the withdrawal address. + +### 3. When will my BTEC request (update withdrawal credentials to type `0x01`) be processed ? + + Your BTEC request will be included very quickly as soon as a new block is proposed. This should be the case most (if not all) of the time, given that the peak BTEC request time has now past (right after the [Capella](https://ethereum.org/en/history/#capella) upgrade on 12th April 2023 and lasted for ~ 2 days) . + +### 4. When will I get my staked fund after voluntary exit if my validator is of type `0x01`? + + There are 3 waiting periods until you get the staked funds in your withdrawal address: + + - An exit queue: a varying time that takes at a minimum 5 epochs (32 minutes) if there is no queue; or if there are many validators exiting at the same time, it has to go through the exit queue. The exit queue can be from hours to weeks, depending on the number of validators in the exit queue. During this time your validator has to stay online to perform its duties to avoid penalties. + + - A fixed waiting period of 256 epochs (27.3 hours) for the validator's status to become withdrawable. + + - A varying time of "validator sweep" that can take up to 5 days (at the time of writing with ~560,000 validators on the mainnet). The "validator sweep" is the process of skimming through all validators by index number for eligible withdrawals (those with type `0x01` and balance above 32ETH). Once the "validator sweep" reaches your validator's index, your staked fund will be fully withdrawn to the withdrawal address set. + + The total time taken is the summation of the above 3 waiting periods. After these waiting periods, you will receive the staked funds in your withdrawal address. + +The voluntary exit and full withdrawal process is summarized in the Figure below. + +![full](./imgs/full-withdrawal.png) + diff --git a/book/src/wallet-create.md b/book/src/wallet-create.md deleted file mode 100644 index 25cac8d34dd..00000000000 --- a/book/src/wallet-create.md +++ /dev/null @@ -1,74 +0,0 @@ -# Create a wallet - -[launchpad]: https://launchpad.ethereum.org/ - -> -> **Note: we recommend using the [Staking launchpad][launchpad] to create validators.** - -A wallet allows for generating practically unlimited validators from an -easy-to-remember 24-word string (a mnemonic). As long as that mnemonic is -backed up, all validator keys can be trivially re-generated. - -The 24-word string is randomly generated during wallet creation and printed out -to the terminal. It's important to **make one or more backups of the mnemonic** -to ensure your ETH is not lost in the case of data loss. It is very important to -**keep your mnemonic private** as it represents the ultimate control of your -ETH. - -Whilst the wallet stores the mnemonic, it does not store it in plain-text: the -mnemonic is encrypted with a password. It is the responsibility of the user to -define a strong password. The password is only required for interacting with -the wallet, it is not required for recovering keys from a mnemonic. - -## Usage - -To create a wallet, use the `lighthouse account wallet` command: - -```bash -lighthouse account wallet create --help - -Creates a new HD (hierarchical-deterministic) EIP-2386 wallet. - -USAGE: - lighthouse account_manager wallet create [OPTIONS] --name --password-file - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -d, --datadir Data directory for lighthouse keys and databases. - --mnemonic-output-path - If present, the mnemonic will be saved to this file. DO NOT SHARE THE MNEMONIC. - - --name - The wallet will be created with this name. It is not allowed to create two wallets with the same name for - the same --base-dir. - --password-file - A path to a file containing the password which will unlock the wallet. If the file does not exist, a random - password will be generated and saved at that path. To avoid confusion, if the file does not already exist it - must include a '.pass' suffix. - -t, --testnet-dir - Path to directory containing eth2_testnet specs. Defaults to a hard-coded Lighthouse testnet. Only effective - if there is no existing database. - --type - The type of wallet to create. Only HD (hierarchical-deterministic) wallets are supported presently.. - [default: hd] [possible values: hd] -``` - - -## Example - -Creates a new wallet named `wally` and saves it in `~/.lighthouse/prater/wallets` with a randomly generated password saved -to `./wallet.pass`: - -```bash -lighthouse --network prater account wallet create --name wally --password-file wally.pass -``` - -> Notes: -> -> - The password is not `wally.pass`, it is the _contents_ of the -> `wally.pass` file. -> - If `wally.pass` already exists the wallet password will be set to contents -> of that file. From 6d8d212da84a232ec9711be5e18c13d93881eb93 Mon Sep 17 00:00:00 2001 From: int88 Date: Fri, 5 May 2023 00:51:57 +0000 Subject: [PATCH 07/11] use state cache to optimise historical state lookup (#4228) ## Issue Addressed #3873 ## Proposed Changes add a cache to optimise historical state lookup. ## Additional Info N/A Co-authored-by: Michael Sproul --- beacon_node/src/cli.rs | 7 ++++ beacon_node/src/config.rs | 6 +++ beacon_node/store/src/config.rs | 4 ++ beacon_node/store/src/hot_cold_store.rs | 50 +++++++++++++++++++++---- book/src/advanced_database.md | 10 +++++ book/src/api-lighthouse.md | 1 + book/src/database-migrations.md | 1 + lighthouse/tests/beacon_node.rs | 19 ++++++++++ 8 files changed, 90 insertions(+), 8 deletions(-) diff --git a/beacon_node/src/cli.rs b/beacon_node/src/cli.rs index a578ac7ea20..61a11f88e69 100644 --- a/beacon_node/src/cli.rs +++ b/beacon_node/src/cli.rs @@ -519,6 +519,13 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { .help("Specifies how many blocks the database should cache in memory [default: 5]") .takes_value(true) ) + .arg( + Arg::with_name("historic-state-cache-size") + .long("historic-state-cache-size") + .value_name("SIZE") + .help("Specifies how many states from the freezer database should cache in memory [default: 1]") + .takes_value(true) + ) /* * Execution Layer Integration */ diff --git a/beacon_node/src/config.rs b/beacon_node/src/config.rs index 9b1b9ad1a60..64cfb0fedfa 100644 --- a/beacon_node/src/config.rs +++ b/beacon_node/src/config.rs @@ -383,6 +383,12 @@ pub fn get_config( .map_err(|_| "block-cache-size is not a valid integer".to_string())?; } + if let Some(historic_state_cache_size) = cli_args.value_of("historic-state-cache-size") { + client_config.store.historic_state_cache_size = historic_state_cache_size + .parse() + .map_err(|_| "historic-state-cache-size is not a valid integer".to_string())?; + } + client_config.store.compact_on_init = cli_args.is_present("compact-db"); if let Some(compact_on_prune) = cli_args.value_of("auto-compact-db") { client_config.store.compact_on_prune = compact_on_prune diff --git a/beacon_node/store/src/config.rs b/beacon_node/store/src/config.rs index 027b8152ee5..581003b4fae 100644 --- a/beacon_node/store/src/config.rs +++ b/beacon_node/store/src/config.rs @@ -7,6 +7,7 @@ use types::{EthSpec, MinimalEthSpec}; pub const PREV_DEFAULT_SLOTS_PER_RESTORE_POINT: u64 = 2048; pub const DEFAULT_SLOTS_PER_RESTORE_POINT: u64 = 8192; pub const DEFAULT_BLOCK_CACHE_SIZE: usize = 5; +pub const DEFAULT_HISTORIC_STATE_CACHE_SIZE: usize = 1; /// Database configuration parameters. #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] @@ -17,6 +18,8 @@ pub struct StoreConfig { pub slots_per_restore_point_set_explicitly: bool, /// Maximum number of blocks to store in the in-memory block cache. pub block_cache_size: usize, + /// Maximum number of states from freezer database to store in the in-memory state cache. + pub historic_state_cache_size: usize, /// Whether to compact the database on initialization. pub compact_on_init: bool, /// Whether to compact the database during database pruning. @@ -43,6 +46,7 @@ impl Default for StoreConfig { slots_per_restore_point: MinimalEthSpec::slots_per_historical_root() as u64, slots_per_restore_point_set_explicitly: false, block_cache_size: DEFAULT_BLOCK_CACHE_SIZE, + historic_state_cache_size: DEFAULT_HISTORIC_STATE_CACHE_SIZE, compact_on_init: false, compact_on_prune: true, prune_payloads: true, diff --git a/beacon_node/store/src/hot_cold_store.rs b/beacon_node/store/src/hot_cold_store.rs index 02608f9a0bd..70fb22742e0 100644 --- a/beacon_node/store/src/hot_cold_store.rs +++ b/beacon_node/store/src/hot_cold_store.rs @@ -62,6 +62,8 @@ pub struct HotColdDB, Cold: ItemStore> { pub hot_db: Hot, /// LRU cache of deserialized blocks. Updated whenever a block is loaded. block_cache: Mutex>>, + /// LRU cache of replayed states. + state_cache: Mutex>>, /// Chain spec. pub(crate) spec: ChainSpec, /// Logger. @@ -129,6 +131,7 @@ impl HotColdDB, MemoryStore> { cold_db: MemoryStore::open(), hot_db: MemoryStore::open(), block_cache: Mutex::new(LruCache::new(config.block_cache_size)), + state_cache: Mutex::new(LruCache::new(config.historic_state_cache_size)), config, spec, log, @@ -162,6 +165,7 @@ impl HotColdDB, LevelDB> { cold_db: LevelDB::open(cold_path)?, hot_db: LevelDB::open(hot_path)?, block_cache: Mutex::new(LruCache::new(config.block_cache_size)), + state_cache: Mutex::new(LruCache::new(config.historic_state_cache_size)), config, spec, log, @@ -977,40 +981,70 @@ impl, Cold: ItemStore> HotColdDB /// Load a frozen state that lies between restore points. fn load_cold_intermediate_state(&self, slot: Slot) -> Result, Error> { + if let Some(state) = self.state_cache.lock().get(&slot) { + return Ok(state.clone()); + } + // 1. Load the restore points either side of the intermediate state. let low_restore_point_idx = slot.as_u64() / self.config.slots_per_restore_point; let high_restore_point_idx = low_restore_point_idx + 1; + // Use low restore point as the base state. + let mut low_slot: Slot = + Slot::new(low_restore_point_idx * self.config.slots_per_restore_point); + let mut low_state: Option> = None; + + // Try to get a more recent state from the cache to avoid massive blocks replay. + for (s, state) in self.state_cache.lock().iter() { + if s.as_u64() / self.config.slots_per_restore_point == low_restore_point_idx + && *s < slot + && low_slot < *s + { + low_slot = *s; + low_state = Some(state.clone()); + } + } + + // If low_state is still None, use load_restore_point_by_index to load the state. + let low_state = match low_state { + Some(state) => state, + None => self.load_restore_point_by_index(low_restore_point_idx)?, + }; + // Acquire the read lock, so that the split can't change while this is happening. let split = self.split.read_recursive(); - let low_restore_point = self.load_restore_point_by_index(low_restore_point_idx)?; let high_restore_point = self.get_restore_point(high_restore_point_idx, &split)?; - // 2. Load the blocks from the high restore point back to the low restore point. + // 2. Load the blocks from the high restore point back to the low point. let blocks = self.load_blocks_to_replay( - low_restore_point.slot(), + low_slot, slot, self.get_high_restore_point_block_root(&high_restore_point, slot)?, )?; - // 3. Replay the blocks on top of the low restore point. + // 3. Replay the blocks on top of the low point. // Use a forwards state root iterator to avoid doing any tree hashing. // The state root of the high restore point should never be used, so is safely set to 0. let state_root_iter = self.forwards_state_roots_iterator_until( - low_restore_point.slot(), + low_slot, slot, || (high_restore_point, Hash256::zero()), &self.spec, )?; - self.replay_blocks( - low_restore_point, + let state = self.replay_blocks( + low_state, blocks, slot, Some(state_root_iter), StateRootStrategy::Accurate, - ) + )?; + + // If state is not error, put it in the cache. + self.state_cache.lock().put(slot, state.clone()); + + Ok(state) } /// Get the restore point with the given index, or if it is out of bounds, the split state. diff --git a/book/src/advanced_database.md b/book/src/advanced_database.md index 397d9a28b5f..57e49531ca0 100644 --- a/book/src/advanced_database.md +++ b/book/src/advanced_database.md @@ -58,6 +58,16 @@ the `--slots-per-restore-point` flag: lighthouse beacon_node --slots-per-restore-point 32 ``` +### Historic state cache + +Lighthouse includes a cache to avoid repeatedly replaying blocks when loading historic states. Lighthouse will cache a limited number of reconstructed states and will re-use them when serving requests for subsequent states at higher slots. This greatly reduces the cost of requesting several states in order, and we recommend that applications like block explorers take advantage of this cache. + +The historical state cache size can be specified with the flag `--historic-state-cache-size` (default value is 1): + +```bash +lighthouse beacon_node --historic-state-cache-size 4 +``` + ## Glossary * _Freezer DB_: part of the database storing finalized states. States are stored in a sparser diff --git a/book/src/api-lighthouse.md b/book/src/api-lighthouse.md index 1fa7a13971f..e67a79c8f06 100644 --- a/book/src/api-lighthouse.md +++ b/book/src/api-lighthouse.md @@ -456,6 +456,7 @@ curl "http://localhost:5052/lighthouse/database/info" | jq "config": { "slots_per_restore_point": 2048, "block_cache_size": 5, + "historic_state_cache_size": 1, "compact_on_init": false, "compact_on_prune": true }, diff --git a/book/src/database-migrations.md b/book/src/database-migrations.md index d2b7b518d75..5e0b8963590 100644 --- a/book/src/database-migrations.md +++ b/book/src/database-migrations.md @@ -92,6 +92,7 @@ curl "http://localhost:5052/lighthouse/database/info" "slots_per_restore_point": 8192, "slots_per_restore_point_set_explicitly": true, "block_cache_size": 5, + "historic_state_cache_size": 1, "compact_on_init": false, "compact_on_prune": true } diff --git a/lighthouse/tests/beacon_node.rs b/lighthouse/tests/beacon_node.rs index 9dd67eadc60..08760611170 100644 --- a/lighthouse/tests/beacon_node.rs +++ b/lighthouse/tests/beacon_node.rs @@ -1669,6 +1669,25 @@ fn block_cache_size_flag() { .with_config(|config| assert_eq!(config.store.block_cache_size, 4_usize)); } #[test] +fn historic_state_cache_size_flag() { + CommandLineTest::new() + .flag("historic-state-cache-size", Some("4")) + .run_with_zero_port() + .with_config(|config| assert_eq!(config.store.historic_state_cache_size, 4_usize)); +} +#[test] +fn historic_state_cache_size_default() { + use beacon_node::beacon_chain::store::config::DEFAULT_HISTORIC_STATE_CACHE_SIZE; + CommandLineTest::new() + .run_with_zero_port() + .with_config(|config| { + assert_eq!( + config.store.historic_state_cache_size, + DEFAULT_HISTORIC_STATE_CACHE_SIZE + ); + }); +} +#[test] fn auto_compact_db_flag() { CommandLineTest::new() .flag("auto-compact-db", Some("false")) From 60d13c3fea558e0f1935466375d976defa175114 Mon Sep 17 00:00:00 2001 From: int88 Date: Fri, 5 May 2023 00:51:58 +0000 Subject: [PATCH 08/11] improve api-bn.md (#4244) ## Issue Addressed NA ## Proposed Changes improve doc `api-bn.md` to make user convenient to copy and run the command. ## Additional Info NA --- book/src/api-bn.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/book/src/api-bn.md b/book/src/api-bn.md index 481c0016942..b86e593bf1c 100644 --- a/book/src/api-bn.md +++ b/book/src/api-bn.md @@ -72,8 +72,7 @@ specification][OpenAPI]. Returns the block header at the head of the canonical chain. ```bash -curl -X GET "http://localhost:5052/eth/v1/beacon/headers/head" -H "accept: -application/json" +curl -X GET "http://localhost:5052/eth/v1/beacon/headers/head" -H "accept: application/json" | jq ``` ```json @@ -100,7 +99,7 @@ application/json" Shows the status of validator at index `1` at the `head` state. ```bash -curl -X GET "http://localhost:5052/eth/v1/beacon/states/head/validators/1" -H "accept: application/json" +curl -X GET "http://localhost:5052/eth/v1/beacon/states/head/validators/1" -H "accept: application/json" | jq ``` ```json @@ -159,8 +158,7 @@ The API is now being served at `https://localhost:5052`. To test connectivity, you can run the following: ```bash -curl -X GET "https://localhost:5052/eth/v1/node/version" -H "accept: application/json" --cacert cert.pem - +curl -X GET "https://localhost:5052/eth/v1/node/version" -H "accept: application/json" --cacert cert.pem | jq ``` ### Connecting a validator client In order to connect a validator client to a beacon node over TLS, the validator @@ -203,7 +201,7 @@ Ensure the `--http` flag has been supplied at the CLI. You can quickly check that the HTTP endpoint is up using `curl`: ```bash -curl -X GET "http://localhost:5052/eth/v1/node/version" -H "accept: application/json" +curl -X GET "http://localhost:5052/eth/v1/node/version" -H "accept: application/json" | jq ``` The beacon node should respond with its version: From 35ca086269f4f231445828f559dd6c5f8466f323 Mon Sep 17 00:00:00 2001 From: Age Manning Date: Fri, 5 May 2023 03:49:23 +0000 Subject: [PATCH 09/11] Backfill blocks only to the WSP by default (#4082) ## Limit Backfill Sync This PR transitions Lighthouse from syncing all the way back to genesis to only syncing back to the weak subjectivity point (~ 5 months) when syncing via a checkpoint sync. There are a number of important points to note with this PR: - Firstly and most importantly, this PR fundamentally shifts the default security guarantees of checkpoint syncing in Lighthouse. Prior to this PR, Lighthouse could verify the checkpoint of any given chain by ensuring the chain eventually terminates at the corresponding genesis. This guarantee can still be employed via the new CLI flag --genesis-backfill which will prompt lighthouse to the old behaviour of downloading all blocks back to genesis. The new behaviour only checks the proposer signatures for the last 5 months of blocks but cannot guarantee the chain matches the genesis chain. - I have not modified any of the peer scoring or RPC responses. Clients syncing from gensis, will downscore new Lighthouse peers that do not possess blocks prior to the WSP. This is by design, as Lighthouse nodes of this form, need a mechanism to sort through peers in order to find useful peers in order to complete their genesis sync. We therefore do not discriminate between empty/error responses for blocks prior or post the local WSP. If we request a block that a peer does not posses, then fundamentally that peer is less useful to us than other peers. - This will make a radical shift in that the majority of nodes will no longer store the full history of the chain. In the future we could add a pruning mechanism to remove old blocks from the db also. Co-authored-by: Paul Hauner --- beacon_node/beacon_chain/src/beacon_chain.rs | 2 + beacon_node/beacon_chain/src/builder.rs | 24 +++++++++ beacon_node/beacon_chain/src/chain_config.rs | 4 ++ .../beacon_chain/src/historical_blocks.rs | 8 ++- beacon_node/client/src/builder.rs | 12 +++++ beacon_node/client/src/notifier.rs | 7 +-- .../src/types/sync_state.rs | 2 +- .../network/src/sync/backfill_sync/mod.rs | 52 ++++++++++++------- beacon_node/src/cli.rs | 8 ++- beacon_node/src/config.rs | 4 ++ beacon_node/store/src/metadata.rs | 6 ++- lighthouse/tests/beacon_node.rs | 17 ++++++ 12 files changed, 119 insertions(+), 27 deletions(-) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index ca0c5ce15b7..49630096cee 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -420,6 +420,8 @@ pub struct BeaconChain { pub slasher: Option>>, /// Provides monitoring of a set of explicitly defined validators. pub validator_monitor: RwLock>, + /// The slot at which blocks are downloaded back to. + pub genesis_backfill_slot: Slot, } type BeaconBlockAndState = (BeaconBlock, BeaconState); diff --git a/beacon_node/beacon_chain/src/builder.rs b/beacon_node/beacon_chain/src/builder.rs index 56006b4d622..ca377635d66 100644 --- a/beacon_node/beacon_chain/src/builder.rs +++ b/beacon_node/beacon_chain/src/builder.rs @@ -772,6 +772,29 @@ where let canonical_head = CanonicalHead::new(fork_choice, Arc::new(head_snapshot)); let shuffling_cache_size = self.chain_config.shuffling_cache_size; + // Calculate the weak subjectivity point in which to backfill blocks to. + let genesis_backfill_slot = if self.chain_config.genesis_backfill { + Slot::new(0) + } else { + let backfill_epoch_range = (self.spec.min_validator_withdrawability_delay + + self.spec.churn_limit_quotient) + .as_u64() + / 2; + match slot_clock.now() { + Some(current_slot) => { + let genesis_backfill_epoch = current_slot + .epoch(TEthSpec::slots_per_epoch()) + .saturating_sub(backfill_epoch_range); + genesis_backfill_epoch.start_slot(TEthSpec::slots_per_epoch()) + } + None => { + // The slot clock cannot derive the current slot. We therefore assume we are + // at or prior to genesis and backfill should sync all the way to genesis. + Slot::new(0) + } + } + }; + let beacon_chain = BeaconChain { spec: self.spec, config: self.chain_config, @@ -839,6 +862,7 @@ where graffiti: self.graffiti, slasher: self.slasher.clone(), validator_monitor: RwLock::new(validator_monitor), + genesis_backfill_slot, }; let head = beacon_chain.head_snapshot(); diff --git a/beacon_node/beacon_chain/src/chain_config.rs b/beacon_node/beacon_chain/src/chain_config.rs index 9921435313d..a74fdced1f6 100644 --- a/beacon_node/beacon_chain/src/chain_config.rs +++ b/beacon_node/beacon_chain/src/chain_config.rs @@ -73,6 +73,9 @@ pub struct ChainConfig { pub optimistic_finalized_sync: bool, /// The size of the shuffling cache, pub shuffling_cache_size: usize, + /// If using a weak-subjectivity sync, whether we should download blocks all the way back to + /// genesis. + pub genesis_backfill: bool, /// Whether to send payload attributes every slot, regardless of connected proposers. /// /// This is useful for block builders and testing. @@ -106,6 +109,7 @@ impl Default for ChainConfig { // This value isn't actually read except in tests. optimistic_finalized_sync: true, shuffling_cache_size: crate::shuffling_cache::DEFAULT_CACHE_SIZE, + genesis_backfill: false, always_prepare_payload: false, enable_backfill_rate_limiting: true, } diff --git a/beacon_node/beacon_chain/src/historical_blocks.rs b/beacon_node/beacon_chain/src/historical_blocks.rs index cc45a6bb9a9..5f590735004 100644 --- a/beacon_node/beacon_chain/src/historical_blocks.rs +++ b/beacon_node/beacon_chain/src/historical_blocks.rs @@ -189,13 +189,17 @@ impl BeaconChain { oldest_block_parent: expected_block_root, ..anchor_info }; - let backfill_complete = new_anchor.block_backfill_complete(); + let backfill_complete = new_anchor.block_backfill_complete(self.genesis_backfill_slot); self.store .compare_and_set_anchor_info_with_write(Some(anchor_info), Some(new_anchor))?; // If backfill has completed and the chain is configured to reconstruct historic states, // send a message to the background migrator instructing it to begin reconstruction. - if backfill_complete && self.config.reconstruct_historic_states { + // This can only happen if we have backfilled all the way to genesis. + if backfill_complete + && self.genesis_backfill_slot == Slot::new(0) + && self.config.reconstruct_historic_states + { self.store_migrator.process_reconstruction(); } diff --git a/beacon_node/client/src/builder.rs b/beacon_node/client/src/builder.rs index d4b785cb119..5ef1f28fb4b 100644 --- a/beacon_node/client/src/builder.rs +++ b/beacon_node/client/src/builder.rs @@ -250,6 +250,12 @@ where genesis_state_bytes, } => { info!(context.log(), "Starting checkpoint sync"); + if config.chain.genesis_backfill { + info!( + context.log(), + "Blocks will downloaded all the way back to genesis" + ); + } let anchor_state = BeaconState::from_ssz_bytes(&anchor_state_bytes, &spec) .map_err(|e| format!("Unable to parse weak subj state SSZ: {:?}", e))?; @@ -271,6 +277,12 @@ where "Starting checkpoint sync"; "remote_url" => %url, ); + if config.chain.genesis_backfill { + info!( + context.log(), + "Blocks will be downloaded all the way back to genesis" + ); + } let remote = BeaconNodeHttpClient::new( url, diff --git a/beacon_node/client/src/notifier.rs b/beacon_node/client/src/notifier.rs index 1105bc41f67..1ff469fe300 100644 --- a/beacon_node/client/src/notifier.rs +++ b/beacon_node/client/src/notifier.rs @@ -142,7 +142,8 @@ pub fn spawn_notifier( .get_anchor_info() .map(|ai| ai.oldest_block_slot) { - sync_distance = current_anchor_slot; + sync_distance = current_anchor_slot + .saturating_sub(beacon_chain.genesis_backfill_slot); speedo // For backfill sync use a fake slot which is the distance we've progressed from the starting `oldest_block_slot`. .observe( @@ -207,14 +208,14 @@ pub fn spawn_notifier( "Downloading historical blocks"; "distance" => distance, "speed" => sync_speed_pretty(speed), - "est_time" => estimated_time_pretty(speedo.estimated_time_till_slot(original_anchor_slot.unwrap_or(current_slot))), + "est_time" => estimated_time_pretty(speedo.estimated_time_till_slot(original_anchor_slot.unwrap_or(current_slot).saturating_sub(beacon_chain.genesis_backfill_slot))), ); } else { info!( log, "Downloading historical blocks"; "distance" => distance, - "est_time" => estimated_time_pretty(speedo.estimated_time_till_slot(original_anchor_slot.unwrap_or(current_slot))), + "est_time" => estimated_time_pretty(speedo.estimated_time_till_slot(original_anchor_slot.unwrap_or(current_slot).saturating_sub(beacon_chain.genesis_backfill_slot))), ); } } else if !is_backfilling && last_backfill_log_slot.is_some() { diff --git a/beacon_node/lighthouse_network/src/types/sync_state.rs b/beacon_node/lighthouse_network/src/types/sync_state.rs index 5f09aec27a7..b82e63bd9c0 100644 --- a/beacon_node/lighthouse_network/src/types/sync_state.rs +++ b/beacon_node/lighthouse_network/src/types/sync_state.rs @@ -13,7 +13,7 @@ pub enum SyncState { /// The node is undertaking a backfill sync. This occurs when a user has specified a trusted /// state. The node first syncs "forward" by downloading blocks up to the current head as /// specified by its peers. Once completed, the node enters this sync state and attempts to - /// download all required historical blocks to complete its chain. + /// download all required historical blocks. BackFillSyncing { completed: usize, remaining: usize }, /// The node has completed syncing a finalized chain and is in the process of re-evaluating /// which sync state to progress to. diff --git a/beacon_node/network/src/sync/backfill_sync/mod.rs b/beacon_node/network/src/sync/backfill_sync/mod.rs index d36bbbc79b1..460c8b1ee92 100644 --- a/beacon_node/network/src/sync/backfill_sync/mod.rs +++ b/beacon_node/network/src/sync/backfill_sync/mod.rs @@ -159,20 +159,20 @@ impl BackFillSync { // If, for some reason a backfill has already been completed (or we've used a trusted // genesis root) then backfill has been completed. - let (state, current_start) = if let Some(anchor_info) = beacon_chain.store.get_anchor_info() - { - if anchor_info.block_backfill_complete() { - (BackFillState::Completed, Epoch::new(0)) - } else { - ( - BackFillState::Paused, - anchor_info - .oldest_block_slot - .epoch(T::EthSpec::slots_per_epoch()), - ) + let (state, current_start) = match beacon_chain.store.get_anchor_info() { + Some(anchor_info) => { + if anchor_info.block_backfill_complete(beacon_chain.genesis_backfill_slot) { + (BackFillState::Completed, Epoch::new(0)) + } else { + ( + BackFillState::Paused, + anchor_info + .oldest_block_slot + .epoch(T::EthSpec::slots_per_epoch()), + ) + } } - } else { - (BackFillState::NotRequired, Epoch::new(0)) + None => (BackFillState::NotRequired, Epoch::new(0)), }; let bfs = BackFillSync { @@ -287,6 +287,7 @@ impl BackFillSync { remaining: self .current_start .start_slot(T::EthSpec::slots_per_epoch()) + .saturating_sub(self.beacon_chain.genesis_backfill_slot) .as_usize(), }) } @@ -1097,7 +1098,12 @@ impl BackFillSync { match self.batches.entry(batch_id) { Entry::Occupied(_) => { // this batch doesn't need downloading, let this same function decide the next batch - if batch_id == 0 { + if batch_id + == self + .beacon_chain + .genesis_backfill_slot + .epoch(T::EthSpec::slots_per_epoch()) + { self.last_batch_downloaded = true; } @@ -1108,7 +1114,12 @@ impl BackFillSync { } Entry::Vacant(entry) => { entry.insert(BatchInfo::new(&batch_id, BACKFILL_EPOCHS_PER_BATCH)); - if batch_id == 0 { + if batch_id + == self + .beacon_chain + .genesis_backfill_slot + .epoch(T::EthSpec::slots_per_epoch()) + { self.last_batch_downloaded = true; } self.to_be_downloaded = self @@ -1125,7 +1136,7 @@ impl BackFillSync { /// not required. fn reset_start_epoch(&mut self) -> Result<(), ResetEpochError> { if let Some(anchor_info) = self.beacon_chain.store.get_anchor_info() { - if anchor_info.block_backfill_complete() { + if anchor_info.block_backfill_complete(self.beacon_chain.genesis_backfill_slot) { Err(ResetEpochError::SyncCompleted) } else { self.current_start = anchor_info @@ -1140,12 +1151,17 @@ impl BackFillSync { /// Checks with the beacon chain if backfill sync has completed. fn check_completed(&mut self) -> bool { - if self.current_start == 0 { + if self.current_start + == self + .beacon_chain + .genesis_backfill_slot + .epoch(T::EthSpec::slots_per_epoch()) + { // Check that the beacon chain agrees if let Some(anchor_info) = self.beacon_chain.store.get_anchor_info() { // Conditions that we have completed a backfill sync - if anchor_info.block_backfill_complete() { + if anchor_info.block_backfill_complete(self.beacon_chain.genesis_backfill_slot) { return true; } else { error!(self.log, "Backfill out of sync with beacon chain"); diff --git a/beacon_node/src/cli.rs b/beacon_node/src/cli.rs index 61a11f88e69..633cbf0438d 100644 --- a/beacon_node/src/cli.rs +++ b/beacon_node/src/cli.rs @@ -247,6 +247,12 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { .help("One or more comma-delimited trusted peer ids which always have the highest score according to the peer scoring system.") .takes_value(true), ) + .arg( + Arg::with_name("genesis-backfill") + .long("genesis-backfill") + .help("Attempts to download blocks all the way back to genesis when checkpoint syncing.") + .takes_value(false), + ) .arg( Arg::with_name("enable-private-discovery") .long("enable-private-discovery") @@ -831,7 +837,7 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { .arg( Arg::with_name("reconstruct-historic-states") .long("reconstruct-historic-states") - .help("After a checkpoint sync, reconstruct historic states in the database.") + .help("After a checkpoint sync, reconstruct historic states in the database. This requires syncing all the way back to genesis.") .takes_value(false) ) .arg( diff --git a/beacon_node/src/config.rs b/beacon_node/src/config.rs index 64cfb0fedfa..f05fea2db18 100644 --- a/beacon_node/src/config.rs +++ b/beacon_node/src/config.rs @@ -508,6 +508,7 @@ pub fn get_config( if cli_args.is_present("reconstruct-historic-states") { client_config.chain.reconstruct_historic_states = true; + client_config.chain.genesis_backfill = true; } let raw_graffiti = if let Some(graffiti) = cli_args.value_of("graffiti") { @@ -780,6 +781,9 @@ pub fn get_config( client_config.chain.optimistic_finalized_sync = !cli_args.is_present("disable-optimistic-finalized-sync"); + if cli_args.is_present("genesis-backfill") { + client_config.chain.genesis_backfill = true; + } // Payload selection configs if cli_args.is_present("always-prefer-builder-payload") { client_config.always_prefer_builder_payload = true; diff --git a/beacon_node/store/src/metadata.rs b/beacon_node/store/src/metadata.rs index 8e9b3599b14..eca8fc834f0 100644 --- a/beacon_node/store/src/metadata.rs +++ b/beacon_node/store/src/metadata.rs @@ -99,8 +99,10 @@ pub struct AnchorInfo { impl AnchorInfo { /// Returns true if the block backfill has completed. - pub fn block_backfill_complete(&self) -> bool { - self.oldest_block_slot == 0 + /// This is a comparison between the oldest block slot and the target backfill slot (which is + /// likely to be the closest WSP). + pub fn block_backfill_complete(&self, target_slot: Slot) -> bool { + self.oldest_block_slot <= target_slot } } diff --git a/lighthouse/tests/beacon_node.rs b/lighthouse/tests/beacon_node.rs index 08760611170..7e647c904d7 100644 --- a/lighthouse/tests/beacon_node.rs +++ b/lighthouse/tests/beacon_node.rs @@ -345,6 +345,23 @@ fn trusted_peers_flag() { }); } +#[test] +fn genesis_backfill_flag() { + CommandLineTest::new() + .flag("genesis-backfill", None) + .run_with_zero_port() + .with_config(|config| assert_eq!(config.chain.genesis_backfill, true)); +} + +/// The genesis backfill flag should be enabled if historic states flag is set. +#[test] +fn genesis_backfill_with_historic_flag() { + CommandLineTest::new() + .flag("reconstruct-historic-states", None) + .run_with_zero_port() + .with_config(|config| assert_eq!(config.chain.genesis_backfill, true)); +} + #[test] fn always_prefer_builder_payload_flag() { CommandLineTest::new() From 6235e452e1f49c0d3e20d42aedfb4c989ef567d7 Mon Sep 17 00:00:00 2001 From: Jack McPherson Date: Mon, 8 May 2023 07:15:26 +0000 Subject: [PATCH 10/11] Do not attempt to resubscribe to core topics (#4271) This commit adds a check to the networking service when handling core gossipsub topic subscription requests. If the BN is already subscribed to the core topics, we won't attempt to resubscribe. ## Issue Addressed #4258 ## Proposed Changes - In the networking service, check if we're already subscribed to all of the core gossipsub topics and, if so, do nothing ## Additional Info N/A --- beacon_node/network/src/service.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/beacon_node/network/src/service.rs b/beacon_node/network/src/service.rs index 3e86d2099f0..d630cf9c398 100644 --- a/beacon_node/network/src/service.rs +++ b/beacon_node/network/src/service.rs @@ -13,6 +13,7 @@ use futures::future::OptionFuture; use futures::prelude::*; use futures::StreamExt; use lighthouse_network::service::Network; +use lighthouse_network::types::GossipKind; use lighthouse_network::{prometheus_client::registry::Registry, MessageAcceptance}; use lighthouse_network::{ rpc::{GoodbyeReason, RPCResponseErrorCode}, @@ -23,7 +24,7 @@ use lighthouse_network::{ MessageId, NetworkEvent, NetworkGlobals, PeerId, }; use slog::{crit, debug, error, info, o, trace, warn}; -use std::{net::SocketAddr, pin::Pin, sync::Arc, time::Duration}; +use std::{collections::HashSet, net::SocketAddr, pin::Pin, sync::Arc, time::Duration}; use store::HotColdDB; use strum::IntoStaticStr; use task_executor::ShutdownReason; @@ -671,6 +672,10 @@ impl NetworkService { source, } => self.libp2p.goodbye_peer(&peer_id, reason, source), NetworkMessage::SubscribeCoreTopics => { + if self.subscribed_core_topics() { + return; + } + if self.shutdown_after_sync { if let Err(e) = shutdown_sender .send(ShutdownReason::Success( @@ -909,6 +914,16 @@ impl NetworkService { crit!(self.log, "Unknown new enr fork id"; "new_fork_id" => ?new_enr_fork_id); } } + + fn subscribed_core_topics(&self) -> bool { + let core_topics = core_topics_to_subscribe(self.fork_context.current_fork()); + let core_topics: HashSet<&GossipKind> = HashSet::from_iter(&core_topics); + let subscriptions = self.network_globals.gossipsub_subscriptions.read(); + let subscribed_topics: HashSet<&GossipKind> = + subscriptions.iter().map(|topic| topic.kind()).collect(); + + core_topics.is_subset(&subscribed_topics) + } } /// Returns a `Sleep` that triggers after the next change in the beacon chain fork version. From d64be0dd7848ccfc68aaf0d980b61dfdc1492c71 Mon Sep 17 00:00:00 2001 From: Jack McPherson Date: Mon, 8 May 2023 12:20:19 +0000 Subject: [PATCH 11/11] Add branching instructions to the contribution guide (#4272) ## Issue Addressed N/A ## Proposed Changes - Add an explicit base branch name (i.e., `unstable`) to the [contributing guide](https://github.com/sigp/lighthouse/blob/stable/CONTRIBUTING.md). ## Additional Info N/A --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ef23e1ed573..a408fcdd52f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -45,8 +45,8 @@ questions. 2. **Work in a feature branch** of your personal fork (github.com/YOUR_NAME/lighthouse) of the main repository (github.com/sigp/lighthouse). -3. Once you feel you have addressed the issue, **create a pull-request** to merge - your changes into the main repository. +3. Once you feel you have addressed the issue, **create a pull-request** with + `unstable` as the base branch to merge your changes into the main repository. 4. Wait for the repository maintainers to **review your changes** to ensure the issue is addressed satisfactorily. Optionally, mention your PR on [discord](https://discord.gg/cyAszAh).