mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-22 06:14:38 +00:00
Implement weak subjectivity safety checks (#7347)
Closes #7273 https://github.com/ethereum/consensus-specs/pull/4179 Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu> Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com> Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com> Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>
This commit is contained in:
@@ -1404,6 +1404,16 @@ pub fn cli_app() -> Command {
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::new("ignore-ws-check")
|
||||
.long("ignore-ws-check")
|
||||
.help("Using this flag allows a node to run in a state that may expose it to long-range attacks. \
|
||||
For more information please read this blog post: https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity \
|
||||
If you understand the risks, you can use this flag to disable the Weak Subjectivity check at startup.")
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::new("builder-fallback-skips")
|
||||
.long("builder-fallback-skips")
|
||||
|
||||
@@ -780,6 +780,8 @@ pub fn get_config<E: EthSpec>(
|
||||
|
||||
client_config.chain.paranoid_block_proposal = cli_args.get_flag("paranoid-block-proposal");
|
||||
|
||||
client_config.chain.ignore_ws_check = cli_args.get_flag("ignore-ws-check");
|
||||
|
||||
/*
|
||||
* Builder fallback configs.
|
||||
*/
|
||||
|
||||
@@ -22,14 +22,9 @@ use types::{ChainSpec, Epoch, EthSpec, ForkName};
|
||||
pub type ProductionClient<E> =
|
||||
Client<Witness<SystemTimeSlotClock, E, BeaconNodeBackend<E>, BeaconNodeBackend<E>>>;
|
||||
|
||||
/// The beacon node `Client` that will be used in production.
|
||||
/// The beacon node `Client` that is used in production.
|
||||
///
|
||||
/// Generic over some `EthSpec`.
|
||||
///
|
||||
/// ## Notes:
|
||||
///
|
||||
/// Despite being titled `Production...`, this code is not ready for production. The name
|
||||
/// demonstrates an intention, not a promise.
|
||||
pub struct ProductionBeaconNode<E: EthSpec>(ProductionClient<E>);
|
||||
|
||||
impl<E: EthSpec> ProductionBeaconNode<E> {
|
||||
|
||||
Reference in New Issue
Block a user