From c69c3eafe73c6cb0a55809c6c0b819c055b195f9 Mon Sep 17 00:00:00 2001 From: Paul Hauner Date: Tue, 28 Sep 2021 14:22:21 +1000 Subject: [PATCH] Partially implement --terminal-block-hash-override --- beacon_node/client/src/builder.rs | 4 ++++ beacon_node/client/src/config.rs | 4 +++- beacon_node/src/cli.rs | 15 +++++++++++++-- beacon_node/src/config.rs | 2 ++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/beacon_node/client/src/builder.rs b/beacon_node/client/src/builder.rs index 0079d3ec59..c3498397c9 100644 --- a/beacon_node/client/src/builder.rs +++ b/beacon_node/client/src/builder.rs @@ -150,12 +150,16 @@ where let terminal_total_difficulty = config .terminal_total_difficulty_override .unwrap_or(spec.terminal_total_difficulty); + let terminal_block_hash = config + .terminal_block_hash + .unwrap_or(spec.terminal_block_hash); let execution_layer = if let Some(execution_endpoints) = config.execution_endpoints { let context = runtime_context.service_context("exec".into()); let execution_layer = ExecutionLayer::from_urls( execution_endpoints, terminal_total_difficulty, + terminal_block_hash, config.fee_recipient, context.executor.clone(), context.log().clone(), diff --git a/beacon_node/client/src/config.rs b/beacon_node/client/src/config.rs index f950d3922d..d1fb4bd98a 100644 --- a/beacon_node/client/src/config.rs +++ b/beacon_node/client/src/config.rs @@ -4,7 +4,7 @@ use sensitive_url::SensitiveUrl; use serde_derive::{Deserialize, Serialize}; use std::fs; use std::path::PathBuf; -use types::{Address, Graffiti, PublicKeyBytes, Uint256}; +use types::{Address, Graffiti, Hash256, PublicKeyBytes, Uint256}; /// Default directory name for the freezer database under the top-level data dir. const DEFAULT_FREEZER_DB_DIR: &str = "freezer_db"; @@ -76,6 +76,7 @@ pub struct Config { pub eth1: eth1::Config, pub execution_endpoints: Option>, pub terminal_total_difficulty_override: Option, + pub terminal_block_hash: Option, pub fee_recipient: Option
, pub http_api: http_api::Config, pub http_metrics: http_metrics::Config, @@ -99,6 +100,7 @@ impl Default for Config { eth1: <_>::default(), execution_endpoints: None, terminal_total_difficulty_override: None, + terminal_block_hash: None, fee_recipient: None, disabled_forks: Vec::new(), graffiti: Graffiti::default(), diff --git a/beacon_node/src/cli.rs b/beacon_node/src/cli.rs index e130518106..24edfdf2c4 100644 --- a/beacon_node/src/cli.rs +++ b/beacon_node/src/cli.rs @@ -376,8 +376,19 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { .help("Used to coordinate manual overrides to the TERMINAL_TOTAL_DIFFICULTY parameter. \ This flag should only be used if the user has a clear understanding that \ the broad Ethereum community has elected to override the terminal difficulty. \ - Failure to do so will cause your node to experience a consensus failure. \ - Be extremely careful with the use of this flag.") + Incorrect use of this flag will cause your node to experience a consensus + failure. Be extremely careful with this flag.") + .takes_value(true) + ) + .arg( + Arg::with_name("terminal-block-hash-override") + .long("terminal-block-hash-override") + .value_name("TERMINAL_BLOCK_HASH") + .help("Used to coordinate manual overrides to the TERMINAL_BLOCK_HASH parameter. \ + This flag should only be used if the user has a clear understanding that \ + the broad Ethereum community has elected to override the terminal PoW block. \ + Incorrect use of this flag will cause your node to experience a consensus + failure. Be extremely careful with this flag.") .takes_value(true) ) .arg( diff --git a/beacon_node/src/config.rs b/beacon_node/src/config.rs index ea0a0ba148..96dbaf8cc9 100644 --- a/beacon_node/src/config.rs +++ b/beacon_node/src/config.rs @@ -238,6 +238,8 @@ pub fn get_config( } client_config.fee_recipient = clap_utils::parse_optional(cli_args, "fee-recipient")?; + client_config.terminal_block_hash = + clap_utils::parse_optional(cli_args, "terminal-block-hash")?; if let Some(freezer_dir) = cli_args.value_of("freezer-dir") { client_config.freezer_db_path = Some(PathBuf::from(freezer_dir));