From e3410abee75d443fb3cdf4d0556e94a26303a46c Mon Sep 17 00:00:00 2001 From: conache Date: Tue, 28 Apr 2026 20:09:02 +0300 Subject: [PATCH 1/6] Update flag names to match spec --- bin/ethlambda/src/main.rs | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/bin/ethlambda/src/main.rs b/bin/ethlambda/src/main.rs index 3c3f816..c168167 100644 --- a/bin/ethlambda/src/main.rs +++ b/bin/ethlambda/src/main.rs @@ -47,7 +47,15 @@ const ASCII_ART: &str = r#" #[command(name = "ethlambda", author = "LambdaClass", version = version::CLIENT_VERSION, about = "ethlambda consensus client")] struct CliOptions { #[arg(long)] - custom_network_config_dir: PathBuf, + genesis: PathBuf, + #[arg(long)] + validators: PathBuf, + #[arg(long)] + bootnodes: PathBuf, + #[arg(long)] + validator_config: PathBuf, + #[arg(long)] + hash_sig_keys_dir: PathBuf, #[arg(long, default_value = "9000")] gossipsub_port: u16, #[arg(long, default_value = "127.0.0.1")] @@ -121,15 +129,11 @@ async fn main() -> eyre::Result<()> { info!(node_key=?options.node_key, "got node key"); - let config_path = options.custom_network_config_dir.join("config.yaml"); - let bootnodes_path = options.custom_network_config_dir.join("nodes.yaml"); - let validators_path = options - .custom_network_config_dir - .join("annotated_validators.yaml"); - let validator_config = options - .custom_network_config_dir - .join("validator-config.yaml"); - let validator_keys_dir = options.custom_network_config_dir.join("hash-sig-keys"); + let config_path = options.genesis; + let bootnodes_path = options.bootnodes; + let validators_path = options.validators; + let validator_config = options.validator_config; + let validator_keys_dir = options.hash_sig_keys_dir; let config_yaml = std::fs::read_to_string(&config_path).expect("Failed to read config.yaml"); let genesis_config: GenesisConfig = From a4d6fafe5e5d4b26110272413666192451f99412 Mon Sep 17 00:00:00 2001 From: conache Date: Tue, 28 Apr 2026 20:49:13 +0300 Subject: [PATCH 2/6] Align cli flags with lean-quickstart spec --- bin/ethlambda/src/main.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bin/ethlambda/src/main.rs b/bin/ethlambda/src/main.rs index c168167..d09439c 100644 --- a/bin/ethlambda/src/main.rs +++ b/bin/ethlambda/src/main.rs @@ -46,14 +46,19 @@ const ASCII_ART: &str = r#" #[derive(Debug, clap::Parser)] #[command(name = "ethlambda", author = "LambdaClass", version = version::CLIENT_VERSION, about = "ethlambda consensus client")] struct CliOptions { + /// Path to the chain genesis config (config.yaml). #[arg(long)] genesis: PathBuf, + /// Path to the validator registry (annotated_validators.yaml). #[arg(long)] validators: PathBuf, + /// Path to the bootnode list (nodes.yaml). #[arg(long)] bootnodes: PathBuf, + /// Path to validator-config.yaml (validator name registry for metrics labels). #[arg(long)] validator_config: PathBuf, + /// Directory containing per-validator XMSS keys (hash-sig-keys/). #[arg(long)] hash_sig_keys_dir: PathBuf, #[arg(long, default_value = "9000")] From 8be8cd8c9fc06473349ae6ca1c0bbd1eac5e4fb0 Mon Sep 17 00:00:00 2001 From: conache Date: Tue, 28 Apr 2026 21:02:30 +0300 Subject: [PATCH 3/6] Update docs based on the client flags updates --- docs/checkpoint_sync.md | 8 ++++++-- docs/fork_choice_visualization.md | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/checkpoint_sync.md b/docs/checkpoint_sync.md index b2a6c20..79d2f12 100644 --- a/docs/checkpoint_sync.md +++ b/docs/checkpoint_sync.md @@ -6,14 +6,18 @@ Checkpoint sync allows a new consensus node to skip replaying the entire chain f ## Usage -Checkpoint sync still requires a full network config directory (`--custom-network-config-dir`). The genesis config is needed to verify the downloaded state: checkpoint sync only replaces the starting state, not node configuration. +Checkpoint sync still requires the network config files (genesis, validators, bootnodes, etc.). The genesis config is needed to verify the downloaded state: checkpoint sync only replaces the starting state, not node configuration. Pass the `--checkpoint-sync-url` flag when starting ethlambda: ```bash ethlambda \ --checkpoint-sync-url \ - --custom-network-config-dir ./network-config \ + --genesis ./network-config/config.yaml \ + --validators ./network-config/annotated_validators.yaml \ + --bootnodes ./network-config/nodes.yaml \ + --validator-config ./network-config/validator-config.yaml \ + --hash-sig-keys-dir ./network-config/hash-sig-keys \ --node-key ./node.key \ --node-id ethlambda_0 ``` diff --git a/docs/fork_choice_visualization.md b/docs/fork_choice_visualization.md index 10b27fd..f30928c 100644 --- a/docs/fork_choice_visualization.md +++ b/docs/fork_choice_visualization.md @@ -29,7 +29,11 @@ The local devnet runs 3 ethlambda nodes with metrics ports 8085, 8086, and 8087. ```bash cargo run --release -- \ - --custom-network-config-dir ./config \ + --genesis ./config/config.yaml \ + --validators ./config/annotated_validators.yaml \ + --bootnodes ./config/nodes.yaml \ + --validator-config ./config/validator-config.yaml \ + --hash-sig-keys-dir ./config/hash-sig-keys \ --node-key ./keys/node.key \ --node-id 0 \ --api-port 5052 From b130fa6580eadfbf51e200169a443a522957ce6e Mon Sep 17 00:00:00 2001 From: conache Date: Tue, 28 Apr 2026 21:02:48 +0300 Subject: [PATCH 4/6] Update claude skill with the latest details --- .../references/long-lived-devnet.md | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/.claude/skills/devnet-runner/references/long-lived-devnet.md b/.claude/skills/devnet-runner/references/long-lived-devnet.md index 7bcd3bd..a27ac24 100644 --- a/.claude/skills/devnet-runner/references/long-lived-devnet.md +++ b/.claude/skills/devnet-runner/references/long-lived-devnet.md @@ -53,7 +53,11 @@ done docker run -d --restart unless-stopped --name ethlambda_0 --network host \ -v $GENESIS:/config -v $DATA/ethlambda_0:/data \ $IMAGE \ - --custom-network-config-dir /config \ + --genesis /config/config.yaml \ + --validators /config/annotated_validators.yaml \ + --bootnodes /config/nodes.yaml \ + --validator-config /config/validator-config.yaml \ + --hash-sig-keys-dir /config/hash-sig-keys \ --gossipsub-port 9001 --node-id ethlambda_0 \ --node-key /config/ethlambda_0.key \ --http-address 0.0.0.0 --api-port 5052 --metrics-port 8081 @@ -61,7 +65,11 @@ docker run -d --restart unless-stopped --name ethlambda_0 --network host \ docker run -d --restart unless-stopped --name ethlambda_1 --network host \ -v $GENESIS:/config -v $DATA/ethlambda_1:/data \ $IMAGE \ - --custom-network-config-dir /config \ + --genesis /config/config.yaml \ + --validators /config/annotated_validators.yaml \ + --bootnodes /config/nodes.yaml \ + --validator-config /config/validator-config.yaml \ + --hash-sig-keys-dir /config/hash-sig-keys \ --gossipsub-port 9002 --node-id ethlambda_1 \ --node-key /config/ethlambda_1.key \ --http-address 0.0.0.0 --api-port 5053 --metrics-port 8082 @@ -69,7 +77,11 @@ docker run -d --restart unless-stopped --name ethlambda_1 --network host \ docker run -d --restart unless-stopped --name ethlambda_2 --network host \ -v $GENESIS:/config -v $DATA/ethlambda_2:/data \ $IMAGE \ - --custom-network-config-dir /config \ + --genesis /config/config.yaml \ + --validators /config/annotated_validators.yaml \ + --bootnodes /config/nodes.yaml \ + --validator-config /config/validator-config.yaml \ + --hash-sig-keys-dir /config/hash-sig-keys \ --gossipsub-port 9003 --node-id ethlambda_2 \ --node-key /config/ethlambda_2.key \ --http-address 0.0.0.0 --api-port 5054 --metrics-port 8083 @@ -77,7 +89,11 @@ docker run -d --restart unless-stopped --name ethlambda_2 --network host \ docker run -d --restart unless-stopped --name ethlambda_3 --network host \ -v $GENESIS:/config -v $DATA/ethlambda_3:/data \ $IMAGE \ - --custom-network-config-dir /config \ + --genesis /config/config.yaml \ + --validators /config/annotated_validators.yaml \ + --bootnodes /config/nodes.yaml \ + --validator-config /config/validator-config.yaml \ + --hash-sig-keys-dir /config/hash-sig-keys \ --gossipsub-port 9004 --node-id ethlambda_3 \ --node-key /config/ethlambda_3.key \ --is-aggregator \ @@ -141,7 +157,11 @@ sleep 60 docker run -d --restart unless-stopped --name ethlambda_0 --network host \ -v $GENESIS:/config -v $DATA/ethlambda_0:/data \ $NEW_IMAGE \ - --custom-network-config-dir /config \ + --genesis /config/config.yaml \ + --validators /config/annotated_validators.yaml \ + --bootnodes /config/nodes.yaml \ + --validator-config /config/validator-config.yaml \ + --hash-sig-keys-dir /config/hash-sig-keys \ --gossipsub-port 9001 --node-id ethlambda_0 \ --node-key /config/ethlambda_0.key \ --http-address 0.0.0.0 --api-port 5052 --metrics-port 8081 \ From f3ee38dfeaf019b9850a255bda3a46df834f2194 Mon Sep 17 00:00:00 2001 From: conache Date: Wed, 29 Apr 2026 13:17:51 +0300 Subject: [PATCH 5/6] Tweak flag comments --- bin/ethlambda/src/main.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/ethlambda/src/main.rs b/bin/ethlambda/src/main.rs index d09439c..354fdbb 100644 --- a/bin/ethlambda/src/main.rs +++ b/bin/ethlambda/src/main.rs @@ -46,19 +46,19 @@ const ASCII_ART: &str = r#" #[derive(Debug, clap::Parser)] #[command(name = "ethlambda", author = "LambdaClass", version = version::CLIENT_VERSION, about = "ethlambda consensus client")] struct CliOptions { - /// Path to the chain genesis config (config.yaml). + /// Path to the chain genesis config (e.g., config.yaml). #[arg(long)] genesis: PathBuf, - /// Path to the validator registry (annotated_validators.yaml). + /// Path to the validator registry (e.g., annotated_validators.yaml). #[arg(long)] validators: PathBuf, - /// Path to the bootnode list (nodes.yaml). + /// Path to the bootnode list (e.g., nodes.yaml). #[arg(long)] bootnodes: PathBuf, /// Path to validator-config.yaml (validator name registry for metrics labels). #[arg(long)] validator_config: PathBuf, - /// Directory containing per-validator XMSS keys (hash-sig-keys/). + /// Directory containing per-validator XMSS keys (e.g., hash-sig-keys/). #[arg(long)] hash_sig_keys_dir: PathBuf, #[arg(long, default_value = "9000")] From 9a80e4093576932df2756b33eb631c5e643d59e1 Mon Sep 17 00:00:00 2001 From: conache Date: Wed, 29 Apr 2026 16:25:30 +0300 Subject: [PATCH 6/6] ci: update preview-config.nix to use the updated CLI flags --- preview-config.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/preview-config.nix b/preview-config.nix index 9f0576c..13138a4 100644 --- a/preview-config.nix +++ b/preview-config.nix @@ -90,7 +90,11 @@ let WorkingDirectory = "${dataDir}/${name}"; ExecStart = builtins.concatStringsSep " " ([ binaryPath - "--custom-network-config-dir" genesisDir + "--genesis" "${genesisDir}/config.yaml" + "--validators" "${genesisDir}/annotated_validators.yaml" + "--bootnodes" "${genesisDir}/nodes.yaml" + "--validator-config" "${genesisDir}/validator-config.yaml" + "--hash-sig-keys-dir" "${genesisDir}/hash-sig-keys" "--gossipsub-port" (toString gossipPort) "--node-id" name "--node-key" "${genesisDir}/${name}.key"