From 0f71c85468854853bf691068d0567083138aa35e Mon Sep 17 00:00:00 2001 From: Wolmin <44748271+Wolmin@users.noreply.github.com> Date: Wed, 27 Nov 2024 13:29:30 +0100 Subject: [PATCH 1/7] Update README with nimbus data --- README.md | 122 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 68 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index 7e73c7d..48a75c5 100644 --- a/README.md +++ b/README.md @@ -13,20 +13,21 @@ The LUKSO CLI is a command line tool to install, manage and set up validators of The LUKSO CLI is able to install multiple clients for running the node. - Execution Clients: [Geth](https://geth.ethereum.org/), [Erigon](https://github.com/ledgerwatch/erigon), [Nethermind](https://github.com/NethermindEth/nethermind), [Besu](https://www.hyperledger.org/projects/besu) -- Consensus Clients: [Prysm](https://github.com/prysmaticlabs/prysm), [Lighthouse](https://github.com/sigp/lighthouse), [Teku](https://github.com/Consensys/teku) +- Consensus Clients: [Prysm](https://github.com/prysmaticlabs/prysm), [Lighthouse](https://github.com/sigp/lighthouse), [Teku](https://github.com/Consensys/teku), [Nimbus (eth-2)](https://nimbus.guide/index.html) - Validator Staking Clients: [Prysm](https://docs.prylabs.network/docs/how-prysm-works/prysm-validator-client), [Lighthouse](https://github.com/sigp/lighthouse), [Teku](https://github.com/Consensys/teku) ### Client versions -| Client | Version | Release | -|------------|----------|-----------------------------------------------------------------| -| Geth | v1.14.7 | https://github.com/ethereum/go-ethereum/releases/tag/v1.14.7 | -| Erigon | v2.60.4 | https://github.com/ledgerwatch/erigon/releases/tag/v2.60.4 | -| Nethermind | v1.27.0 | https://github.com/NethermindEth/nethermind/releases/tag/1.27.0 | -| Besu | v24.7.0 | https://github.com/hyperledger/besu/releases/tag/24.7.0 | -| Prysm | v5.0.4 | https://github.com/prysmaticlabs/prysm/releases/tag/v5.0.4 | -| Lighthouse | v5.2.1 | https://github.com/sigp/lighthouse/releases/tag/v5.2.1 | -| Teku | v24.6.1 | https://github.com/Consensys/teku/releases/tag/24.6.1 | +| Client | Version | Release | +| -------------- | -------- | --------------------------------------------------------------- | +| Geth | v1.14.7 | https://github.com/ethereum/go-ethereum/releases/tag/v1.14.7 | +| Erigon | v2.60.4 | https://github.com/ledgerwatch/erigon/releases/tag/v2.60.4 | +| Nethermind | v1.27.0 | https://github.com/NethermindEth/nethermind/releases/tag/1.27.0 | +| Besu | v24.7.0 | https://github.com/hyperledger/besu/releases/tag/24.7.0 | +| Prysm | v5.0.4 | https://github.com/prysmaticlabs/prysm/releases/tag/v5.0.4 | +| Lighthouse | v5.2.1 | https://github.com/sigp/lighthouse/releases/tag/v5.2.1 | +| Teku | v24.6.1 | https://github.com/Consensys/teku/releases/tag/24.6.1 | +| Nimbus (eth-2) | v24.10.0 | https://github.com/status-im/nimbus-eth2/releases/tag/v24.10.0 | > More clients will be added in the future. @@ -110,6 +111,7 @@ lukso-node │ ├───nethermind // Config for Nethermind Client │ ├───besu // Config for Besu Client │ ├───teku // Config for Teku Client +│ ├───nimbus2 // Config for Nimbus (eth-2) Client │ └───lighthouse // Config for Lighthouse Client │ ├───[network_type]-keystore // Network's Validator Wallet @@ -132,7 +134,7 @@ lukso-node ## Available Commands | Command | Description | -|---------------------------------------------|-----------------------------------------------------------------------------------------------------------------| +| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | [`install` ](#install) | Installs choosen clients (Execution, Consensus, Validator) and their binary dependencies | | [`update` ](#update) | Update all currently selected clients to their newest versions | | [`update configs` ](#update-configs) | Update chain configuration files. This commands overwrites your oldchain configs, but keeps your client configs | @@ -197,7 +199,7 @@ $ lukso install --geth-tag 1.14.7 --geth-commit-hash aa55f5ea #### Options for `install` | Option | Description | Default | -|--------------------------------|-----------------------------------------------------|------------| +| ------------------------------ | --------------------------------------------------- | ---------- | | --agree-terms | Automatically accept Terms and Conditions | false | | --geth-tag value | Tag for Geth | "1.14.7" | | --geth-commit-hash value | A hash of commit that is bound to given release tag | "aa55f5ea" | @@ -207,14 +209,17 @@ $ lukso install --geth-tag 1.14.7 --geth-commit-hash aa55f5ea | --lighthouse-tag value | Tag for Lighthouse | "v5.2.1" | | --teku-tag value | Tag for Teku | "24.6.1" | | --besu-tag value | Tag for Besu | "24.7.0" | +| --nimbus2-tag value | Tag for Nimbus2 | "24.10.0" | | --nethermind-tag value | Tag for Teku | "1.27.0" | | --nethermind-commit-hash value | A hash of commit that is bound to given release tag | "220b5b85" | -| --help, -h | show help | false | +| --help, -h | show help | false | ### `update` -`update` will install the newest verions of the clients that you selected duing installation process. + +`update` will install the newest verions of the clients that you selected duing installation process. #### How to update clients + ```sh # starts an update of your selected clients - note that your node must be STOPPED before proceeding with update $ lukso update @@ -222,14 +227,17 @@ $ lukso update ``` ### `update configs` + `update configs` Update chain configuration files. This commands overwrites your oldchain configs, but keeps your client configs. -In order to update your configs, you need to: -1) Have your node stopped -2) Be in the LUKSO CLI initialized directory +In order to update your configs, you need to: + +1. Have your node stopped +2. Be in the LUKSO CLI initialized directory #### How to update chain config files + ```sh -# starts an update of chain config files. +# starts an update of chain config files. $ lukso update configs ``` @@ -327,48 +335,53 @@ $ lukso start --testnet --lighthouse-checkpoint-sync-url=https://checkpoints.tes ``` #### Possible issues + - When starting prysm <=v4.0.8 after the [v0.16.0](https://github.com/lukso-network/network-configs/pull/131) CLI update, you may encounter some configuration issues: + ``` time="2024-02-27 11:32:55" level=error msg="There were some issues parsing the config from a yaml file" error="yaml: unmarshal errors: line 113: field DENEB_FORK_VERSION not found in type params.BeaconChainConfig line 119: field DENEB_FORK_EPOCH not found in type params.BeaconChainConfig" ``` + Please note that this won't affect your node in any way. #### Options for `start` -| Option | Description | -|---------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| -| **NETWORK** | | -| --mainnet | Starts the LUKSO node with mainnet data [default] (./configs/mainnet) | -| --testnet | Starts the LUKSO node with testnet data (./configs/tesnet) | -| --devnet | Starts the LUKSO node with devnet data (./configs/devnet) | -| **VALIDATOR** | | -| --validator | Starts the validator client | -| --validator-keys [string] | Directory of the validator keys (default: "./\[network_type\]-keystore") | -| --validator-wallet-password [string] | Location of password file that you used for generated validator keys | -| --validator-config [string] | Path to prysms validator.yaml config file | -| --transaction-fee-recipient [string] | The address that receives block reward from transactions (required for --validator flag) | -| --genesis-json [string] | The path to genesis JSON file | -| --genesis-ssz [string] | The path to genesis SSZ file | -| --no-slasher | Disables slasher | -| **CLIENT OPTIONS** | | -| --logs-folder [string] | Sets up a custom logs directory (default: "./\[network_type\]-logs") | -| --geth-config [string] | Defines the path to geth TOML config file | -| --prysm-config [string] | Defines the path to prysm YAML config file | -| --erigon-config [string] | Defines the path to erigon TOML config file | -| --nethermind-config [string] | Defines the path to nethermind CFG config file | -| --besu-config [string] | Defines the path to besu TOML config file | -| --teku-config [string] | Defines the path to teku YAML config file | -| --validator-config [string] | Defines the path to teku validator YAML config file | -| --geth-[command] | The `command` will be passed to the Geth client. [See the client docs for details](https://geth.ethereum.org/docs/fundamentals/command-line-options) | -| --prysm-[command] | The `command` will be passed to the Prysm client. [See the client docs for details](https://docs.prylabs.network/docs/prysm-usage/parameters) | -| --lighhouse-[command] | The `command` will be passed to the Lighthouse client. [See the client docs for details](https://lighthouse-book.sigmaprime.io/advanced-datadir.html) | -| --erigon-[command] | The `command` will be passed to the Erigon client. [See the client docs for details](https://github.com/ledgerwatch/erigon) | -| --teku-[command] | The `command` will be passed to the Teku client. [See the client docs for details](https://github.com/ledgerwatch/erigon) | -| --besu-[command] | The `command` will be passed to the Besu client. [See the client docs for details](https://github.com/hyperledger/besu) | -| --nethermind-[command] | The `command` will be passed to the Nethermind client. [See the client docs for details](https://github.com/NethermindEth/nethermind) | -| --checkpoint-sync | Run a node with checkpoint sync feature | +| Option | Description | +| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| **NETWORK** | | +| --mainnet | Starts the LUKSO node with mainnet data [default] (./configs/mainnet) | +| --testnet | Starts the LUKSO node with testnet data (./configs/tesnet) | +| --devnet | Starts the LUKSO node with devnet data (./configs/devnet) | +| **VALIDATOR** | | +| --validator | Starts the validator client | +| --validator-keys [string] | Directory of the validator keys (default: "./\[network_type\]-keystore") | +| --validator-wallet-password [string] | Location of password file that you used for generated validator keys | +| --validator-config [string] | Path to prysms validator.yaml config file | +| --transaction-fee-recipient [string] | The address that receives block reward from transactions (required for --validator flag) | +| --genesis-json [string] | The path to genesis JSON file | +| --genesis-ssz [string] | The path to genesis SSZ file | +| --no-slasher | Disables slasher | +| **CLIENT OPTIONS** | | +| --logs-folder [string] | Sets up a custom logs directory (default: "./\[network_type\]-logs") | +| --geth-config [string] | Defines the path to geth TOML config file | +| --prysm-config [string] | Defines the path to prysm YAML config file | +| --erigon-config [string] | Defines the path to erigon TOML config file | +| --nethermind-config [string] | Defines the path to nethermind CFG config file | +| --besu-config [string] | Defines the path to besu TOML config file | +| --teku-config [string] | Defines the path to teku YAML config file | +| --nimbsu2-config [string] | Defines the path to nimbus TOML config file | +| --validator-config [string] | Defines the path to validator YAML config file | +| --geth-[command] | The `command` will be passed to the Geth client. [See the client docs for details](https://geth.ethereum.org/docs/fundamentals/command-line-options) | +| --prysm-[command] | The `command` will be passed to the Prysm client. [See the client docs for details](https://docs.prylabs.network/docs/prysm-usage/parameters) | +| --lighhouse-[command] | The `command` will be passed to the Lighthouse client. [See the client docs for details](https://lighthouse-book.sigmaprime.io/advanced-datadir.html) | +| --erigon-[command] | The `command` will be passed to the Erigon client. [See the client docs for details](https://github.com/ledgerwatch/erigon) | +| --teku-[command] | The `command` will be passed to the Teku client. [See the client docs for details](https://github.com/ledgerwatch/erigon) | +| --besu-[command] | The `command` will be passed to the Besu client. [See the client docs for details](https://github.com/hyperledger/besu) | +| --nethermind-[command] | The `command` will be passed to the Nethermind client. [See the client docs for details](https://github.com/NethermindEth/nethermind) | +| --nimbus2-[command] | The `command` will be passed to the Nethermind client. [See the client docs for details](https://nimbus.guide/index.html) | +| --checkpoint-sync | Run a node with checkpoint sync feature | ### `stop` @@ -683,17 +696,18 @@ $ rm -rf ~/myNodeFolder ``` ## Known Issues + - [Minor] With the [v0.16.0](https://github.com/lukso-network/network-configs/pull/131) update, LUKSO CLI clients support the Cancun hardfork. To avoid uncontrolled forking, the LUKSO team -have updated the chain config files, which can cause config unmarshalling errors for Prysm <=4.0.8. -Client is still functioning as intended. -Example Prysm Error log: + have updated the chain config files, which can cause config unmarshalling errors for Prysm <=4.0.8. + Client is still functioning as intended. + Example Prysm Error log: + ``` time="2024-02-27 11:32:55" level=error msg="There were some issues parsing the config from a yaml file" error="yaml: unmarshal errors: line 113: field DENEB_FORK_VERSION not found in type params.BeaconChainConfig line 119: field DENEB_FORK_EPOCH not found in type params.BeaconChainConfig" ``` - ## Contributing If you want to contribute to this repository, please check [`CONTRIBUTING.md`](./CONTRIBUTING.md). From f970e15d6399c11e790b4b8768f6082221547b3d Mon Sep 17 00:00:00 2001 From: Wolmin <44748271+Wolmin@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:05:59 +0100 Subject: [PATCH 2/7] Resolve conflicts --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 48a75c5..85804c1 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ The LUKSO CLI is able to install multiple clients for running the node. | Client | Version | Release | | -------------- | -------- | --------------------------------------------------------------- | -| Geth | v1.14.7 | https://github.com/ethereum/go-ethereum/releases/tag/v1.14.7 | +| Geth | v1.14.12 | https://github.com/ethereum/go-ethereum/releases/tag/v1.14.12 | | Erigon | v2.60.4 | https://github.com/ledgerwatch/erigon/releases/tag/v2.60.4 | | Nethermind | v1.27.0 | https://github.com/NethermindEth/nethermind/releases/tag/1.27.0 | | Besu | v24.7.0 | https://github.com/hyperledger/besu/releases/tag/24.7.0 | @@ -201,15 +201,16 @@ $ lukso install --geth-tag 1.14.7 --geth-commit-hash aa55f5ea | Option | Description | Default | | ------------------------------ | --------------------------------------------------- | ---------- | | --agree-terms | Automatically accept Terms and Conditions | false | -| --geth-tag value | Tag for Geth | "1.14.7" | -| --geth-commit-hash value | A hash of commit that is bound to given release tag | "aa55f5ea" | -| --validator-tag value | Tag for validator binary | "v5.0.4" | -| --prysm-tag value | Tag for Prysm | "v5.0.4" | +| --geth-tag value | Tag for Geth | "1.14.12" | +| --geth-commit-hash value | A hash of commit that is bound to given release tag | "293a300d" | +| --validator-tag value | Tag for validator binary | "v5.1.2" | +| --prysm-tag value | Tag for Prysm | "v5.1.2" | | --erigon-tag value | Tag for Erigon | "2.60.4" | | --lighthouse-tag value | Tag for Lighthouse | "v5.2.1" | | --teku-tag value | Tag for Teku | "24.6.1" | | --besu-tag value | Tag for Besu | "24.7.0" | | --nimbus2-tag value | Tag for Nimbus2 | "24.10.0" | +| --nimbus2-commit-hash value | A hash of commit that is bound to given release tag | "c4037d63" | | --nethermind-tag value | Tag for Teku | "1.27.0" | | --nethermind-commit-hash value | A hash of commit that is bound to given release tag | "220b5b85" | | --help, -h | show help | false | From c45f1e1790ea782be76ead93175c172a2dc6afa6 Mon Sep 17 00:00:00 2001 From: Wolmin <44748271+Wolmin@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:54:14 +0100 Subject: [PATCH 3/7] Don't warn missing checkpoint on nimbus startup --- commands/start.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/commands/start.go b/commands/start.go index c6a07d5..21e040d 100644 --- a/commands/start.go +++ b/commands/start.go @@ -88,6 +88,8 @@ func StartClients(ctx *cli.Context) (err error) { consArgs = append(consArgs, fmt.Sprintf("--genesis-beacon-api-url=%s", checkpointURL)) case clients.Lighthouse: consArgs = append(consArgs, fmt.Sprintf("--checkpoint-sync-url=%s", checkpointURL)) + case clients.Nimbus2: + // nimbus doesn't have a checkpoint flag, rather it has a separate process. Catching so the WARN doesn't trigger. default: log.Warnf("️⚠️ Checkpoint sync not configured for %s: continuing without checkpoint sync", consensusClient.Name()) } From f28bd479792e07cf65f745d2548e7d1c9313d46c Mon Sep 17 00:00:00 2001 From: Wolmin Date: Thu, 28 Nov 2024 10:03:48 +0100 Subject: [PATCH 4/7] Rearrange client versions --- dependencies/clients/shared.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dependencies/clients/shared.go b/dependencies/clients/shared.go index 9c3e746..ed9ae12 100644 --- a/dependencies/clients/shared.go +++ b/dependencies/clients/shared.go @@ -98,14 +98,14 @@ var ( AllClientNames = []string{ gethDependencyName, erigonDependencyName, + nethermindDependencyName, + besuDependencyName, prysmDependencyName, - lighthouseDependencyName, prysmValidatorDependencyName, + lighthouseDependencyName, lighthouseValidatorDependencyName, tekuDependencyName, tekuValidatorDependencyName, - nethermindDependencyName, - besuDependencyName, nimbus2DependencyName, nimbus2ValidatorDependencyName, } From ae604e0bfefd1068a45d1794db657c568137da28 Mon Sep 17 00:00:00 2001 From: Wolmin Date: Thu, 28 Nov 2024 10:24:24 +0100 Subject: [PATCH 5/7] Correct old prysm version --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 85804c1..e00be70 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ The LUKSO CLI is able to install multiple clients for running the node. | Erigon | v2.60.4 | https://github.com/ledgerwatch/erigon/releases/tag/v2.60.4 | | Nethermind | v1.27.0 | https://github.com/NethermindEth/nethermind/releases/tag/1.27.0 | | Besu | v24.7.0 | https://github.com/hyperledger/besu/releases/tag/24.7.0 | -| Prysm | v5.0.4 | https://github.com/prysmaticlabs/prysm/releases/tag/v5.0.4 | +| Prysm | v5.1.2 | https://github.com/prysmaticlabs/prysm/releases/tag/v5.1.2 | | Lighthouse | v5.2.1 | https://github.com/sigp/lighthouse/releases/tag/v5.2.1 | | Teku | v24.6.1 | https://github.com/Consensys/teku/releases/tag/24.6.1 | | Nimbus (eth-2) | v24.10.0 | https://github.com/status-im/nimbus-eth2/releases/tag/v24.10.0 | From 21d2fafdf963432a8a94d105e035663522e6eec7 Mon Sep 17 00:00:00 2001 From: Wolmin Date: Thu, 28 Nov 2024 10:34:39 +0100 Subject: [PATCH 6/7] Add README entry about version clients command --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index e00be70..42fa7ee 100644 --- a/README.md +++ b/README.md @@ -149,6 +149,7 @@ lukso-node | [`validator list`](#validator-list) | Display the imported validator keys | | [`validator exit`](#validator-exit) | Issue an exit for your validator | | [`version`](#version) | Display the version of the LUKSO CLI that is currently installed | +| [`version clients`](#version-clients) | Display versions of installed LUKSO CLI client dependencies | | [`help`, `h`](#help) | Shows the full list of commands, global options, and their usage | ## Global Help Flag @@ -490,6 +491,15 @@ $ lukso reset --devnet $ lukso version ``` +### `version clients` + +#### How to check the versions of installed LUKSO CLI clients + +```sh +# Displays a list of clients and their installed versions, as well as indications that clients are missing +$ lukso version clients +``` + ### `help` In addition to the help command, the global help flag can be used to generate help pages for commands From bce3bb1a1a62dbcc9ada87a7cc241e65b5b595f7 Mon Sep 17 00:00:00 2001 From: Wolmin Date: Thu, 28 Nov 2024 10:53:22 +0100 Subject: [PATCH 7/7] Add missing nimbus flag to README --- README.md | 3 ++- flags/flag_names.go | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 42fa7ee..3fe6c07 100644 --- a/README.md +++ b/README.md @@ -373,7 +373,8 @@ Please note that this won't affect your node in any way. | --nethermind-config [string] | Defines the path to nethermind CFG config file | | --besu-config [string] | Defines the path to besu TOML config file | | --teku-config [string] | Defines the path to teku YAML config file | -| --nimbsu2-config [string] | Defines the path to nimbus TOML config file | +| --nimbus2-config [string] | Defines the path to nimbus TOML config file | +| --nimbus2-validator-config [string] | Defines the path to nimbus validator TOML config file | | --validator-config [string] | Defines the path to validator YAML config file | | --geth-[command] | The `command` will be passed to the Geth client. [See the client docs for details](https://geth.ethereum.org/docs/fundamentals/command-line-options) | | --prysm-[command] | The `command` will be passed to the Prysm client. [See the client docs for details](https://docs.prylabs.network/docs/prysm-usage/parameters) | diff --git a/flags/flag_names.go b/flags/flag_names.go index 3ed0b81..5b12bd3 100644 --- a/flags/flag_names.go +++ b/flags/flag_names.go @@ -49,8 +49,8 @@ const ( Nimbus2CommitHashFlag = "nimbus2-commit-hash" Nimbus2NetworkFlag = "nimbus2-network" Nimbus2DatadirFlag = "nimbus2-datadir" - Nimbus2ConfigFileFlag = "nimbus2-config-file" - Nimbus2ValidatorConfigFileFlag = "nimbus2-validator-config-file" + Nimbus2ConfigFileFlag = "nimbus2-config" + Nimbus2ValidatorConfigFileFlag = "nimbus2-validator-config" MainnetFlag = "mainnet" TestnetFlag = "testnet"