mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-29 18:53:32 +00:00
Add validator-manager (#3502)
## Issue Addressed Addresses #2557 ## Proposed Changes Adds the `lighthouse validator-manager` command, which provides: - `lighthouse validator-manager create` - Creates a `validators.json` file and a `deposits.json` (same format as https://github.com/ethereum/staking-deposit-cli) - `lighthouse validator-manager import` - Imports validators from a `validators.json` file to the VC via the HTTP API. - `lighthouse validator-manager move` - Moves validators from one VC to the other, utilizing only the VC API. ## Additional Info In98bcb947cI've reduced some VC `ERRO` and `CRIT` warnings to `WARN` or `DEBG` for the case where a pubkey is missing from the validator store. These were being triggered when we removed a validator but still had it in caches. It seems to me that `UnknownPubkey` will only happen in the case where we've removed a validator, so downgrading the logs is prudent. All the logs are `DEBG` apart from attestations and blocks which are `WARN`. I thought having *some* logging about this condition might help us down the track. In856cd7e37dI've made the VC delete the corresponding password file when it's deleting a keystore. This seemed like nice hygiene. Notably, it'll only delete that password file after it scans the validator definitions and finds that no other validator is also using that password file.
This commit is contained in:
@@ -12,6 +12,9 @@
|
||||
* [Run a Node](./run_a_node.md)
|
||||
* [Become a Validator](./mainnet-validator.md)
|
||||
* [Validator Management](./validator-management.md)
|
||||
* [The `validator-manager` Command](./validator-manager.md)
|
||||
* [Creating validators](./validator-manager-create.md)
|
||||
* [Moving validators](./validator-manager-move.md)
|
||||
* [Slashing Protection](./slashing-protection.md)
|
||||
* [Voluntary Exits](./voluntary-exit.md)
|
||||
* [Partial Withdrawals](./partial-withdrawal.md)
|
||||
@@ -41,7 +44,7 @@
|
||||
* [Remote Signing with Web3Signer](./validator-web3signer.md)
|
||||
* [Database Configuration](./advanced_database.md)
|
||||
* [Database Migrations](./database-migrations.md)
|
||||
* [Key Management](./key-management.md)
|
||||
* [Key Management (Deprecated)](./key-management.md)
|
||||
* [Key Recovery](./key-recovery.md)
|
||||
* [Advanced Networking](./advanced_networking.md)
|
||||
* [Running a Slasher](./slasher.md)
|
||||
|
||||
@@ -1,9 +1,30 @@
|
||||
# Key Management
|
||||
# Key Management (Deprecated)
|
||||
|
||||
[launchpad]: https://launchpad.ethereum.org/
|
||||
|
||||
>
|
||||
> **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) 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.**
|
||||
**⚠️ The information on this page refers to tooling and process that have been deprecated. Please read the "Deprecation Notice". ⚠️**
|
||||
|
||||
## Deprecation Notice
|
||||
|
||||
This page recommends the use of the `lighthouse account-manager` tool to create
|
||||
validators. This tool will always generate keys with the withdrawal credentials
|
||||
of type `0x00`. This means the users who created keys using `lighthouse
|
||||
account-manager` will have to update their withdrawal credentials in a
|
||||
separate step to receive staking rewards.
|
||||
|
||||
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.
|
||||
|
||||
Rather than continuing to read this page, we recommend users visit either:
|
||||
|
||||
- The [Staking Launchpad][launchpad] for detailed, beginner-friendly instructions.
|
||||
- The [staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli) for a CLI tool used by the [Staking Launchpad][launchpad].
|
||||
- The [validator-manager documentation](./validator-manager.md) for a Lighthouse-specific tool for streamlined validator management tools.
|
||||
|
||||
## The `lighthouse account-manager`
|
||||
|
||||
Lighthouse uses a _hierarchical_ key management system for producing validator
|
||||
keys. It is hierarchical because each validator key can be _derived_ from a
|
||||
|
||||
@@ -13,6 +13,10 @@ standard directories and do not start their `lighthouse vc` with the
|
||||
this document. However, users with more complex needs may find this document
|
||||
useful.
|
||||
|
||||
The [lighthouse validator-manager](./validator-manager.md) command can be used
|
||||
to create and import validators to a Lighthouse VC. It can also be used to move
|
||||
validators between two Lighthouse VCs.
|
||||
|
||||
## Introducing the `validator_definitions.yml` file
|
||||
|
||||
The `validator_definitions.yml` file is located in the `validator-dir`, which
|
||||
|
||||
206
book/src/validator-manager-create.md
Normal file
206
book/src/validator-manager-create.md
Normal file
@@ -0,0 +1,206 @@
|
||||
# Creating and Importing Validators
|
||||
|
||||
[Ethereum Staking Launchpad]: https://launchpad.ethereum.org/en/
|
||||
|
||||
The `lighthouse validator-manager create` command derives validators from a
|
||||
mnemonic and produces two files:
|
||||
|
||||
- `validators.json`: the keystores and passwords for the newly generated
|
||||
validators, in JSON format.
|
||||
- `deposits.json`: a JSON file of the same format as
|
||||
[staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli) which can
|
||||
be used for deposit submission via the [Ethereum Staking
|
||||
Launchpad][].
|
||||
|
||||
The `lighthouse validator-manager import` command accepts a `validators.json`
|
||||
file (from the `create` command) and submits those validators to a running
|
||||
Lighthouse Validator Client via the HTTP API.
|
||||
|
||||
These two commands enable a workflow of:
|
||||
|
||||
1. Creating the validators via the `create` command.
|
||||
1. Importing the validators via the `import` command.
|
||||
1. Depositing validators via the [Ethereum Staking
|
||||
Launchpad][].
|
||||
|
||||
The separation of the `create` and `import` commands allows for running the
|
||||
`create` command on an air-gapped host whilst performing the `import` command on
|
||||
an internet-connected host.
|
||||
|
||||
The `create` and `import` commands are recommended for advanced users who are
|
||||
familiar with command line tools and the practicalities of managing sensitive
|
||||
cryptographic material. **We recommend that novice users follow the workflow on
|
||||
[Ethereum Staking Launchpad][] rather than using the `create` and `import`
|
||||
commands.**
|
||||
|
||||
## Simple Example
|
||||
|
||||
Create validators from a mnemonic with:
|
||||
|
||||
```bash
|
||||
lighthouse \
|
||||
validator-manager \
|
||||
create \
|
||||
--network mainnet \
|
||||
--first-index 0 \
|
||||
--count 2 \
|
||||
--eth1-withdrawal-address <ADDRESS> \
|
||||
--suggested-fee-recipient <ADDRESS> \
|
||||
--output-path ./
|
||||
```
|
||||
> If the flag `--first-index` is not provided, it will default to using index 0.
|
||||
> The `--suggested-fee-recipient` flag may be omitted to use whatever default
|
||||
> value the VC uses. It does not necessarily need to be identical to
|
||||
> `--eth1-withdrawal-address`.
|
||||
> The command will create the `deposits.json` and `validators.json` in the present working directory. If you would like these files to be created in a different directory, change the value of `output-path`, for example `--output-path /desired/directory`. The directory will be created if the path does not exist.
|
||||
|
||||
Then, import the validators to a running VC with:
|
||||
|
||||
```bash
|
||||
lighthouse \
|
||||
validator-manager \
|
||||
import \
|
||||
--validators-file validators.json \
|
||||
--vc-token <API-TOKEN-PATH>
|
||||
```
|
||||
> This is assuming that `validators.json` is in the present working directory. If it is not, insert the directory of the file.
|
||||
> Be sure to remove `./validators.json` after the import is successful since it
|
||||
> contains unencrypted validator keystores.
|
||||
|
||||
## Detailed Guide
|
||||
|
||||
This guide will create two validators and import them to a VC. For simplicity,
|
||||
the same host will be used to generate the keys and run the VC. In reality,
|
||||
users may want to perform the `create` command on an air-gapped machine and then
|
||||
move the `validators.json` and `deposits.json` files to an Internet-connected
|
||||
host. This would help protect the mnemonic from being exposed to the Internet.
|
||||
|
||||
### 1. Create the Validators
|
||||
|
||||
Run the `create` command, substituting `<ADDRESS>` for an execution address that
|
||||
you control. This is where all the staked ETH and rewards will ultimately
|
||||
reside, so it's very important that this address is secure, accessible and
|
||||
backed-up. The `create` command:
|
||||
|
||||
```bash
|
||||
lighthouse \
|
||||
validator-manager \
|
||||
create \
|
||||
--first-index 0 \
|
||||
--count 2 \
|
||||
--eth1-withdrawal-address <ADDRESS> \
|
||||
--output-path ./
|
||||
```
|
||||
|
||||
If successful, the command output will appear like below:
|
||||
|
||||
```bash
|
||||
Running validator manager for mainnet network
|
||||
|
||||
Enter the mnemonic phrase:
|
||||
<REDACTED>
|
||||
Valid mnemonic provided.
|
||||
|
||||
Starting derivation of 2 keystores. Each keystore may take several seconds.
|
||||
Completed 1/2: 0x8885c29b8f88ee9b9a37b480fd4384fed74bda33d85bc8171a904847e65688b6c9bb4362d6597fd30109fb2def6c3ae4
|
||||
Completed 2/2: 0xa262dae3dcd2b2e280af534effa16bedb27c06f2959e114d53bd2a248ca324a018dc73179899a066149471a94a1bc92f
|
||||
Keystore generation complete
|
||||
Writing "./validators.json"
|
||||
Writing "./deposits.json"
|
||||
```
|
||||
|
||||
This command will create validators at indices `0, 1`. The exact indices created
|
||||
can be influenced with the `--first-index` and `--count` flags. Use these flags
|
||||
with caution to prevent creating the same validator twice, this may result in a
|
||||
slashing!
|
||||
|
||||
The command will create two files:
|
||||
|
||||
- `./deposits.json`: this file does *not* contain sensitive information and may be uploaded to the [Ethereum Staking Launchpad].
|
||||
- `./validators.json`: this file contains **sensitive unencrypted validator keys, do not share it with anyone or upload it to any website**.
|
||||
|
||||
### 2. Import the validators
|
||||
|
||||
The VC which will receive the validators needs to have the following flags at a minimum:
|
||||
|
||||
- `--http`
|
||||
- `--http-port 5062`
|
||||
- `--enable-doppelganger-protection`
|
||||
|
||||
Therefore, the VC command might look like:
|
||||
|
||||
```bash
|
||||
lighthouse \
|
||||
vc \
|
||||
--http \
|
||||
--http-port 5062 \
|
||||
--enable-doppelganger-protection
|
||||
```
|
||||
|
||||
In order to import the validators, the location of the VC `api-token.txt` file
|
||||
must be known. The location of the file varies, but it is located in the
|
||||
"validator directory" of your data directory. For example:
|
||||
`~/.lighthouse/mainnet/validators/api-token.txt`. We will use `<API-TOKEN-PATH>`
|
||||
to subsitute this value. If you are unsure of the `api-token.txt` path, you can run `curl http://localhost:5062/lighthouse/auth` which will show the path.
|
||||
|
||||
|
||||
Once the VC is running, use the `import` command to import the validators to the VC:
|
||||
|
||||
```bash
|
||||
lighthouse \
|
||||
validator-manager \
|
||||
import \
|
||||
--validators-file validators.json \
|
||||
--vc-token <API-TOKEN-PATH>
|
||||
```
|
||||
|
||||
If successful, the command output will appear like below:
|
||||
|
||||
```bash
|
||||
Running validator manager for mainnet network
|
||||
Validator client is reachable at http://localhost:5062/ and reports 0 validators
|
||||
Starting to submit 2 validators to VC, each validator may take several seconds
|
||||
Uploaded keystore 1 of 2 to the VC
|
||||
Uploaded keystore 2 of 2 to the VC
|
||||
```
|
||||
|
||||
The user should now *securely* delete the `validators.json` file (e.g., `shred -u validators.json`).
|
||||
The `validators.json` contains the unencrypted validator keys and must not be
|
||||
shared with anyone.
|
||||
At the same time, `lighthouse vc` will log:
|
||||
```bash
|
||||
INFO Importing keystores via standard HTTP API, count: 1
|
||||
WARN No slashing protection data provided with keystores
|
||||
INFO Enabled validator voting_pubkey: 0xab6e29f1b98fedfca878edce2b471f1b5ee58ee4c3bd216201f98254ef6f6eac40a53d74c8b7da54f51d3e85cacae92f, signing_method: local_keystore
|
||||
INFO Modified key_cache saved successfully
|
||||
```
|
||||
The WARN message means that the `validators.json` file does not contain the slashing protection data. This is normal if you are starting a new validator. The flag `--enable-doppelganger-protection` will also protect users from potential slashing risk.
|
||||
The validators will now go through 2-3 epochs of [doppelganger
|
||||
protection](./validator-doppelganger.md) and will automatically start performing
|
||||
their duties when they are deposited and activated.
|
||||
|
||||
If the host VC contains the same public key as the `validators.json` file, an error will be shown and the `import` process will stop:
|
||||
|
||||
```bash
|
||||
Duplicate validator 0xab6e29f1b98fedfca878edce2b471f1b5ee58ee4c3bd216201f98254ef6f6eac40a53d74c8b7da54f51d3e85cacae92f already exists on the destination validator client. This may indicate that some validators are running in two places at once, which can lead to slashing. If you are certain that there is no risk, add the --ignore-duplicates flag.
|
||||
Err(DuplicateValidator(0xab6e29f1b98fedfca878edce2b471f1b5ee58ee4c3bd216201f98254ef6f6eac40a53d74c8b7da54f51d3e85cacae92f))
|
||||
```
|
||||
|
||||
If you are certain that it is safe, you can add the flag `--ignore-duplicates` in the `import` command. The command becomes:
|
||||
|
||||
```bash
|
||||
lighthouse \
|
||||
validator-manager \
|
||||
import \
|
||||
--validators-file validators.json \
|
||||
--vc-token <API-TOKEN-PATH> \
|
||||
--ignore-duplicates
|
||||
```
|
||||
and the output will be as follows:
|
||||
|
||||
```bash
|
||||
Duplicate validators are ignored, ignoring 0xab6e29f1b98fedfca878edce2b471f1b5ee58ee4c3bd216201f98254ef6f6eac40a53d74c8b7da54f51d3e85cacae92f which exists on the destination validator client
|
||||
Re-uploaded keystore 1 of 6 to the VC
|
||||
```
|
||||
|
||||
The guide is complete.
|
||||
188
book/src/validator-manager-move.md
Normal file
188
book/src/validator-manager-move.md
Normal file
@@ -0,0 +1,188 @@
|
||||
# Moving Validators
|
||||
|
||||
The `lighthouse validator-manager move` command uses the VC HTTP API to move
|
||||
validators from one VC (the "src" VC) to another VC (the "dest" VC). The move
|
||||
operation is *comprehensive*; it will:
|
||||
|
||||
- Disable the validators on the src VC.
|
||||
- Remove the validator keystores from the src VC file system.
|
||||
- Export the slashing database records for the appropriate validators from the src VC to the dest VC.
|
||||
- Enable the validators on the dest VC.
|
||||
- Generally result in very little or no validator downtime.
|
||||
|
||||
It is capable of moving all validators on the src VC, a count of validators or
|
||||
a list of pubkeys.
|
||||
|
||||
The `move` command is only guaranteed to work between two Lighthouse VCs (i.e.,
|
||||
there is no guarantee that the commands will work between Lighthouse and Teku, for instance).
|
||||
|
||||
The `move` command only supports moving validators using a keystore on the local
|
||||
file system, it does not support `Web3Signer` validators.
|
||||
|
||||
Although all efforts are taken to avoid it, it's possible for the `move` command
|
||||
to fail in a way that removes the validator from the src VC without adding it to the
|
||||
dest VC. Therefore, it is recommended to **never use the `move` command without
|
||||
having a backup of all validator keystores (e.g. the mnemonic).**
|
||||
|
||||
## Simple Example
|
||||
|
||||
The following command will move all validators from the VC running at
|
||||
`http://localhost:6062` to the VC running at `http://localhost:5062`.
|
||||
|
||||
```bash
|
||||
lighthouse \
|
||||
validator-manager \
|
||||
move \
|
||||
--src-vc-url http://localhost:6062 \
|
||||
--src-vc-token ~/src-token.txt \
|
||||
--dest-vc-url http://localhost:5062 \
|
||||
--dest-vc-token ~/.lighthouse/mainnet/validators/api-token.txt \
|
||||
--validators all
|
||||
```
|
||||
|
||||
## Detailed Guide
|
||||
|
||||
This guide describes the steps to move validators between two validator clients (VCs) which are
|
||||
able to SSH between each other. This guide assumes experience with the Linux command line and SSH
|
||||
connections.
|
||||
|
||||
There will be two VCs in this example:
|
||||
|
||||
- The *source* VC which contains the validators/keystores to be moved.
|
||||
- The *destination* VC which is to take the validators/keystores from the source.
|
||||
|
||||
There will be two hosts in this example:
|
||||
|
||||
- Host 1 (*"source host"*): Is running the `src-vc`.
|
||||
- Host 2 (*"destination host"*): Is running the `dest-vc`.
|
||||
|
||||
The example assumes
|
||||
that Host 1 is able to SSH to Host 2.
|
||||
|
||||
In reality, many host configurations are possible. For example:
|
||||
|
||||
- Both VCs on the same host.
|
||||
- Both VCs on different hosts and the `validator-manager` being used on a third host.
|
||||
|
||||
### 1. Configure the Source VC
|
||||
|
||||
The source VC needs to have the following flags at a minimum:
|
||||
|
||||
- `--http`
|
||||
- `--http-port 5062`
|
||||
- `--http-allow-keystore-export`
|
||||
|
||||
Therefore, the source VC command might look like:
|
||||
|
||||
```bash
|
||||
lighthouse \
|
||||
vc \
|
||||
--http \
|
||||
--http-port 5062 \
|
||||
--http-allow-keystore-export
|
||||
```
|
||||
|
||||
### 2. Configure the Destination VC
|
||||
|
||||
The destination VC needs to have the following flags at a minimum:
|
||||
|
||||
- `--http`
|
||||
- `--http-port 5062`
|
||||
- `--enable-doppelganger-protection`
|
||||
|
||||
Therefore, the destination VC command might look like:
|
||||
|
||||
```bash
|
||||
lighthouse \
|
||||
vc \
|
||||
--http \
|
||||
--http-port 5062 \
|
||||
--enable-doppelganger-protection
|
||||
```
|
||||
|
||||
> The `--enable-doppelganger-protection` flag is not *strictly* required, however
|
||||
> it is recommended for an additional layer of safety. It will result in 2-3
|
||||
> epochs of downtime for the validator after it is moved, which is generally an
|
||||
> inconsequential cost in lost rewards or penalties.
|
||||
>
|
||||
> Optionally, users can add the `--http-store-passwords-in-secrets-dir` flag if they'd like to have
|
||||
> the import validator keystore passwords stored in separate files rather than in the
|
||||
> `validator-definitions.yml` file. If you don't know what this means, you can safely omit the flag.
|
||||
|
||||
### 3. Obtain the Source API Token
|
||||
|
||||
The VC API is protected by an *API token*. This is stored in a file on each of the hosts. Since
|
||||
we'll be running our command on the destination host, it will need to have the API token for the
|
||||
source host on its file-system.
|
||||
|
||||
On the **source host**, find the location of the `api-token.txt` file and copy the contents. The
|
||||
location of the file varies, but it is located in the "validator directory" of your data directory,
|
||||
alongside validator keystores. For example: `~/.lighthouse/mainnet/validators/api-token.txt`. If you are unsure of the `api-token.txt` path, you can run `curl http://localhost:5062/lighthouse/auth` which will show the path.
|
||||
|
||||
Copy the contents of that file into a new file on the **destination host** at `~/src-token.txt`. The
|
||||
API token should be similar to `api-token-0x03eace4c98e8f77477bb99efb74f9af10d800bd3318f92c33b719a4644254d4123`.
|
||||
|
||||
### 4. Create an SSH Tunnel
|
||||
|
||||
In the **source host**, open a terminal window, SSH to the **destination host** and establish a reverse-SSH connection
|
||||
between the **destination host** and the **source host**.
|
||||
|
||||
```bash
|
||||
ssh dest-host
|
||||
ssh -L 6062:localhost:5062 src-host
|
||||
```
|
||||
|
||||
It's important that you leave this session open throughout the rest of this tutorial. If you close
|
||||
this terminal window then the connection between the destination and source host will be lost.
|
||||
|
||||
### 5. Move
|
||||
|
||||
With the SSH tunnel established between the `dest-host` and `src-host`, from the **destination
|
||||
host** run the command to move the validators:
|
||||
|
||||
```bash
|
||||
lighthouse \
|
||||
validator-manager \
|
||||
move \
|
||||
--src-vc-url http://localhost:6062 \
|
||||
--src-vc-token ~/src-token.txt \
|
||||
--dest-vc-url http://localhost:5062 \
|
||||
--dest-vc-token ~/.lighthouse/mainnet/validators/api-token.txt \
|
||||
--validators all
|
||||
```
|
||||
|
||||
The command will provide information about the progress of the operation and
|
||||
emit `Done.` when the operation has completed successfully. For example:
|
||||
|
||||
```bash
|
||||
Running validator manager for mainnet network
|
||||
Validator client is reachable at http://localhost:5062/ and reports 2 validators
|
||||
Validator client is reachable at http://localhost:6062/ and reports 0 validators
|
||||
Moved keystore 1 of 2
|
||||
Moved keystore 2 of 2
|
||||
Done.
|
||||
```
|
||||
At the same time, `lighthouse vc` will log:
|
||||
```bash
|
||||
INFO Importing keystores via standard HTTP API, count: 1
|
||||
INFO Enabled validator voting_pubkey: 0xab6e29f1b98fedfca878edce2b471f1b5ee58ee4c3bd216201f98254ef6f6eac40a53d74c8b7da54f51d3e85cacae92f, signing_method: local_keystore
|
||||
INFO Modified key_cache saved successfully
|
||||
Once the operation completes successfully, there is nothing else to be done. The
|
||||
validators have been removed from the `src-host` and enabled at the `dest-host`.
|
||||
If the `--enable-doppelganger-protection` flag was used it may take 2-3 epochs
|
||||
for the validators to start attesting and producing blocks on the `dest-host`.
|
||||
If you would only like to move some validators, you can replace the flag `--validators all` with one or more validator public keys. For example:
|
||||
|
||||
```bash
|
||||
lighthouse \
|
||||
validator-manager \
|
||||
move \
|
||||
--src-vc-url http://localhost:6062 \
|
||||
--src-vc-token ~/src-token.txt \
|
||||
--dest-vc-url http://localhost:5062 \
|
||||
--dest-vc-token ~/.lighthouse/mainnet/validators/api-token.txt \
|
||||
--validators 0x9096aab771e44da149bd7c9926d6f7bb96ef465c0eeb4918be5178cd23a1deb4aec232c61d85ff329b54ed4a3bdfff3a,0x90fc4f72d898a8f01ab71242e36f4545aaf87e3887be81632bb8ba4b2ae8fb70753a62f866344d7905e9a07f5a9cdda1
|
||||
```
|
||||
Any errors encountered during the operation should include information on how to
|
||||
proceed. Assistance is also available on our
|
||||
[Discord](https://discord.gg/cyAszAh).
|
||||
35
book/src/validator-manager.md
Normal file
35
book/src/validator-manager.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# Validator Manager
|
||||
|
||||
[Ethereum Staking Launchpad]: https://launchpad.ethereum.org/en/
|
||||
[Import Validators]: #import-validators
|
||||
|
||||
## Introduction
|
||||
|
||||
The `lighthouse validator-manager` tool provides utilities for managing validators on a *running*
|
||||
Lighthouse Validator Client. The validator manager performs operations via the HTTP API of the
|
||||
validator client (VC). Due to limitations of the
|
||||
[keymanager-APIs](https://ethereum.github.io/keymanager-APIs/), only Lighthouse VCs are fully
|
||||
supported by this command.
|
||||
|
||||
The validator manager tool is similar to the `lighthouse account-manager` tool,
|
||||
except the latter creates files that will be read by the VC next time it starts
|
||||
whilst the former makes instant changes to a live VC.
|
||||
|
||||
The `account-manager` is ideal for importing keys created with the
|
||||
[staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli). On the
|
||||
other hand, the `validator-manager` is ideal for moving existing validators
|
||||
between two VCs or for advanced users to create validators at scale with less
|
||||
downtime.
|
||||
|
||||
The `validator-manager` boasts the following features:
|
||||
|
||||
- One-line command to arbitrarily move validators between two VCs, maintaining the slashing protection database.
|
||||
- Generates deposit files compatible with the [Ethereum Staking Launchpad][].
|
||||
- Generally involves zero or very little downtime.
|
||||
- The "key cache" is preserved whenever a validator is added with the validator
|
||||
manager, preventing long waits at start up when a new validator is added.
|
||||
|
||||
## Guides
|
||||
|
||||
- [Creating and importing validators using the `create` and `import` commands.](./validator-manager-create.md)
|
||||
- [Moving validators between two VCs using the `move` command.](./validator-manager-move.md)
|
||||
Reference in New Issue
Block a user