Test harness for running Ethereum networks with Charon Distributed Validator clusters, powered by Kurtosis and ObolNetwork's ethereum-package fork.
A single kurtosis run command spins up the full stack: EL + CL + Charon DV middleware + VC. All 36 CL x VC combinations (6 CLs x 6 VCs) are defined as self-contained args-files in deployments/.
- Docker
- kurtosis-cli 1.20.0+
make start-local/lighthouse-lodestarWatch the Kurtosis enclave come up, then inspect with kurtosis enclave inspect lighthouse-lodestar.
make stop-local/lighthouse-lodestar
# or clean all enclaves:
make cleanmake status-localLaunch all 36 combos on EC2 (one instance per combo):
export CHARON_VERSION=v1.11.0
export PROMETHEUS_REMOTE_WRITE_TOKEN=<your-token>
make start-awsFilter with --only:
# All combos with lighthouse CL (6 combos)
ONLY=cl:lighthouse make start-aws
# Specific combo
ONLY=lighthouse-vouch make start-aws
# Multiple filters (union)
ONLY=cl:lighthouse,vc:vouch make start-awsmake stop-awsmake status-awsSee aws/README.md for full details.
The DV runner (local/runner/) runs 24/7, cycling all 36 combos and reporting results to Slack. It uses charon:next by default for bleeding-edge testing. See local/runner/README.md for configuration.
Args-files live in deployments/<cl>-<vc>.yaml. They use $CHARON_VERSION as a placeholder, substituted at runtime by the runner and AWS runner. Client versions are pinned directly in each YAML file.
Each combo runs 3 participant nodes with 128 validator keys each (384 total). Two nodes run a traditional CL+VC stack. The third runs a 4-node Charon DV cluster with DVT-aware VCs.
When running Nimbus as a consensus client, Charon must use JSON request format instead of SSZ. The args-files for Nimbus CL combos include CHARON_FEATURE_SET_ENABLE: json_requests automatically.