| name | add-validators |
| description | Add new validators to an existing Charon distributed validator cluster |
| user-invokable | true |
Add Validators
Warning: This is an alpha feature and is not yet recommended for production use.
Add new validators to an existing Charon distributed validator cluster. All operators must run this simultaneously as it requires a P2P ceremony.
Prerequisites
Before running, verify:
.env file exists with NETWORK and VC variables set
.charon/cluster-lock.json and .charon/deposit-data*.json exist
- Docker is running
jq is installed
Read scripts/edit/add-validators/README.md for full details if needed.
Gather Arguments
Ask the user for the following required arguments using AskUserQuestion:
- Number of validators (
--num-validators): How many new validators to add (positive integer)
- Withdrawal addresses (
--withdrawal-addresses): Comma-separated Ethereum withdrawal address(es)
- Fee recipient addresses (
--fee-recipient-addresses): Comma-separated fee recipient address(es)
Also ask whether they want to:
- Run with
--dry-run first to preview the operation
- Use
--unverified flag (skip key verification, used for remote KeyManager API setups)
Execution
Run the script from the repository root:
./scripts/edit/add-validators/add-validators.sh \
--num-validators <N> \
--withdrawal-addresses <addrs> \
--fee-recipient-addresses <addrs> \
[--unverified] [--dry-run]
Set WORK_DIR env var to override the repository root directory if running from a custom location.
The script will:
- Validate prerequisites
- Display current cluster info (operators, validators)
- Run a P2P ceremony (all operators must participate simultaneously)
- Stop containers if they were running
- Backup
.charon/ to ./backups/
- Install new configuration
- Print commands to start containers manually
Remind the user that all operators must run this script at the same time for the P2P ceremony to succeed.