Skip to content

Commit 00ef6a0

Browse files
committed
add-validators instructions
1 parent cb2663d commit 00ef6a0

1 file changed

Lines changed: 36 additions & 15 deletions

File tree

README.md

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
![Obol Logo](https://obol.tech/obolnetwork.png)
1+
![Obol Logo](https://obol.org/obolnetwork.png)
22

33
<h1 align="center">Charon Distributed Validator Node</h1>
44

5-
This repo contains the [docker-compose](https://docs.docker.com/compose/) files needed to run one node in a [charon](https://github.com/ObolNetwork/charon) [Distributed Validator Cluster](https://docs.obol.tech/docs/int/key-concepts#distributed-validator-cluster).
5+
This repo contains the [docker-compose](https://docs.docker.com/compose/) files needed to run one node in a [charon](https://github.com/ObolNetwork/charon) [Distributed Validator Cluster](https://docs.obol.org/docs/int/key-concepts#distributed-validator-cluster).
66

77
A distributed validator node is a machine running:
88

@@ -15,31 +15,52 @@ A distributed validator node is a machine running:
1515

1616
# Quickstart
1717

18-
Check the Obol [docs](https://docs.obol.tech/docs/start/quickstart_overview) for detailed instructions on how to get started using this repo.
18+
Check the Obol [docs](https://docs.obol.org/docs/start/quickstart_overview) for detailed instructions on how to get started using this repo.
1919

20-
# Examples
20+
# Adding Validators
2121

22-
A default example configuration of a full validator node is found in the root `docker-compose.yml` file.
22+
Starting with charon v1.6, you can add validators to your cluster using the `charon alpha add-validators` command. Note that this is an experimental feature and should not be used in production (Mainnet) yet. The example below is designed for the default configuration provided by this repository and assumes the stack uses the Lodestar validator client.
2323

24-
The `examples/` directory is under development, you will find a collection of docker compose configuration files that demonstrate various clients and their configurations for running a Distributed Validator Node. These files are with filenames as {EC}-{CC}-{VC}.yml (where EC: Execution Client, CC: Consensus Client, VC: Validator Client). For example, if you wish to run a DV node with Geth EL, Teku CL and Lighthouse VC, you can run `geth_teku_lighthouse.yml`.
24+
1. Review the `add-validators` command [CLI reference](https://docs.obol.org/next/learn/charon/charon-cli-reference).
25+
2. Ensure this folder contains a valid `.charon` directory currently used by the running node. Keep the DV node running during the process.
26+
3. Run the following command to collectively generate and add 10 new validators with other node operators (similar to DKG):
2527

26-
⚠️⚠️⚠️ **Important:**
27-
The configurations provided are meant for demonstration purposes only and may not be suitable for production environments.
28-
These examples are primarily intended for advanced users who are familiar with Docker and have a good understanding of execution and consensus clients.
29-
Please exercise caution when using them and ensure that you thoroughly review and customize the configurations according to your specific requirements.
28+
```sh
29+
charon alpha add-validators --num-validators 10 --withdrawal-addresses=0x<your_withdrawal_address> --fee-recipient-addresses=0x<your_fee_recipient_address>
30+
```
31+
32+
This command will create a new cluster configuration that includes both existing and new validators. It will also generate the necessary keys for the new validators and deposit-data files. The new configuration will be saved in the `.charon-add-validators` directory.
3033

31-
To run the default example, use the following command:
34+
4. To start using the new configuration (with the added validators), stop the current charon and validator client instances:
3235

3336
```sh
34-
docker compose up
37+
docker compose stop charon lodestar
3538
```
3639

37-
To run any of the other examples, found in `examples/` use the following command:
40+
5. Back up and remove the existing `.charon` directory, then move the `.charon-add-validators` directory to `.charon`:
3841

3942
```sh
40-
docker compose -f examples/nethermind_teku_lighthouse.yml up
43+
mv .charon .charon-backup
44+
mv .charon-add-validators .charon
4145
```
4246

47+
6. Restart the charon and validator client instances:
48+
49+
```sh
50+
docker compose up -d charon lodestar
51+
```
52+
53+
Lodestar's boot script (`lodestar/run.sh`) will automatically import all keys, removing any existing keys and cache. Charon will load the new `cluster-lock.json` and recognize all validators in the cluster.
54+
55+
Steps 4–6 must be performed independently by all node operators, likely at different times. During this process, some nodes will use the old configuration and others the new one. Once the number of upgraded nodes reaches the BFT threshold, the newly added validators will begin participating in the cluster.
56+
57+
## Current limitations:
58+
59+
- The new cluster configuration will not be reflected in Launchpad.
60+
- The new cluster configuration will have a new cluster hash, so the observability stack will display new cluster data under a different identifier.
61+
- The `add-validators` command supports the KeyManager API (similar to the `dkg` command), but since it does not have direct access to the keys, it cannot produce valid cluster lock signatures. In this case, you must use the `--unverified` flag, which produces empty signatures. This requires adding the `--no-verify` flag to the `charon run` command.
62+
- If you use different validator clients, review the keys import script. The old keys in `.charon/validator_keys` remain unchanged, so verify that importing the same keys will not disrupt the validator client's state.
63+
4364
# FAQs
4465

45-
Check the Obol docs for frequent [errors and resolutions](https://docs.obol.tech/docs/faq/errors)
66+
Check the Obol docs for frequent [errors and resolutions](https://docs.obol.org/docs/faq/errors)

0 commit comments

Comments
 (0)