Skip to main content
Version: v0.3.0

Charon CLI reference

caution

The charon client is under heavy development, interfaces are subject to change until a first major version is published.

The following is a reference for charon version 0.3.0. Find the latest release on our Github.

charon --help
Charon enables the operation of Ethereum validators in a fault tolerant manner by splitting the validating keys across a group of trusted parties using threshold cryptography.

Usage:
charon [command]

Available Commands:
bootnode Starts a p2p-udp discv5 bootnode
completion Generate the autocompletion script for the specified shell
create-cluster Create a local charon cluster
enr Return this node's ENR
gen-p2pkey Generates a new p2p key
help Help about any command
run Runs the Charon middleware
version Print version and exit

Flags:
-h, --help Help for charon

Use "charon [command] --help" for more information about a command.
charon create-cluster --help
Create a local charon cluster including validator keys, charon p2p keys, and a cluster manifest. See flags for supported features.

Usage:
charon create-cluster [flags]

Flags:
--clean Delete the cluster directory before generating it.
--cluster-dir string The target folder to create the cluster in. (default "./charon/cluster")
--config Enables creation of local non-docker config files.
--config-binary string Path of the charon binary to use in the config files. Defaults to this binary if empty. Requires --config.
--config-port-start int Starting port number used in config files. Requires --config. (default 16000)
--config-simnet Configures a simulated network cluster with mock beacon node and mock validator clients. It showcases a running charon in isolation. Requires --config. (default true)
-h, --help Help for create-cluster
-n, --nodes int The number of charon nodes in the cluster. (default 4)
--split-existing-keys Enables splitting of existing non-dvt validator keys into distributed threshold private shares (instead of creating new random keys).
--split-keys-dir string Directory containing keys to split. Expects keys in keystore-*.json and passwords in keystore-*.txt. Requires --split-validator-keys.
-t, --threshold int The threshold required for signature reconstruction. Minimum is n-(ceil(n/3)-1). (default 3)

charon run --help
Starts the long-running Charon middleware process to perform distributed validator duties.

Usage:
charon run [flags]

Flags:
--beacon-node-endpoint string Beacon node endpoint URL (default "http://localhost/")
--data-dir string The directory where charon will store all its internal data (default "./charon/data")
-h, --help Help for run
--jaeger-address string Listening address for jaeger tracing
--jaeger-service string Service name used for jaeger tracing (default "charon")
--log-format string Log format; console, logfmt or json (default "console")
--log-level string Log level; debug, info, warn or error (default "info")
--manifest-file string The path to the manifest file defining distributed validator cluster (default "./charon/manifest.json")
--monitoring-address string Listening address (ip and port) for the monitoring API (prometheus, pprof) (default "127.0.0.1:16001")
--p2p-allowlist string Comma-separated list of CIDR subnets for allowing only certain peer connections. Example: 192.168.0.0/16 would permit connections to peers on your local network only. The default is to accept all connections.
--p2p-bootmanifest Enables using manifest ENRs as discv5 bootnodes. Allows skipping explicit bootnodes if key generation ceremony included correct IPs.
--p2p-bootnode-relay Enables using bootnodes as libp2p circuit relays. Useful if some charon nodes are not have publicly accessible.
--p2p-bootnodes strings Comma-separated list of discv5 bootnode URLs or ENRs. Example: enode://<hex node id>@10.3.58.6:30303?discport=30301.
--p2p-denylist string Comma-separated list of CIDR subnets for disallowing certain peer connections. Example: 192.168.0.0/16 would disallow connections to peers on your local network. The default is to accept all connections.
--p2p-external-hostname string The DNS hostname advertised by libp2p. This may be used to advertise an external DNS.
--p2p-external-ip string The IP address advertised by libp2p. This may be used to advertise an external IP.
--p2p-peerdb string Path to store a discv5 peer database. Empty default results in in-memory database.
--p2p-tcp-address strings Comma-separated list of listening TCP addresses (ip and port) for libP2P traffic. (default [127.0.0.1:16003])
--p2p-udp-address string Listening UDP address (ip and port) for discv5 discovery. (default "127.0.0.1:16004")
--simnet-beacon-mock Enables an internal mock beacon node for running a simnet.
--simnet-validator-mock Enables an internal mock validator client when running a simnet. Requires simnet-beacon-mock.
--validator-api-address string Listening address (ip and port) for validator-facing traffic proxying the beacon-node API (default "127.0.0.1:16002")