Skip to main content

Voluntarily exit a validator

A voluntary exit is when a validator chooses to stop performing its duties, and exits the Beacon Chain permanently.

To voluntarily exit, the validator must continue performing its validator duties until successfully exited to avoid penalties.

important

To voluntarily exit, you must have a running beacon node with the REST API enabled.

warning

A validator cannot rejoin the network once it voluntarily exits. You can set up a new validator with the withdrawn funds.

Initiate a voluntary exit

Use the voluntary-exit subcommand to initiate a voluntary exit for specified validators.

Example
teku voluntary-exit                                \
--beacon-node-api-endpoint=http://127.0.0.1:5051 \
--validator-keys=validator/keys/validator_1e9f2a.json:validator/passwords/validator_1e9f2a.txt

In the command:

  • Specify the location of the beacon node using the --beacon-node-api-endpoint option.
  • Specify the validators to exit using the --validator-keys option.
  • Specify the earliest epoch at which to exit using the --epoch option. If not specified, the default value is the current epoch. You cannot specify a future epoch.

If using an external signer such as Web3Signer, then specify the external signer URL and public key of the exiting validator:

Example
teku voluntary-exit                                      \
--beacon-node-api-endpoint=http://127.0.0.1:5051 \
--validators-external-signer-url=http://localhost:9000 \
--validators-external-signer-public-keys=1e9f2afcc0737f4502e8d4238e4fe82d45077b2a549902b61d65367acecbccba

Use the /eth/v1/beacon/pool/voluntary_exits API to check the pending exit queue.

Create but don't submit an exit

Use the voluntary-exit subcommand to create a signed exit for the specified validators, but not submit it to the beacon node.

Example
teku voluntary-exit                                \
--beacon-node-api-endpoint=http://127.0.0.1:5051 \
--save-exits-path=. \
--validator-keys=validator/keys/validator_1e9f2a.json:validator/passwords/validator_1e9f2a.txt

In the command:

In this example, a JSON file is written to the current folder (.) containing a signed exit message for validator 1e9f2a. At a future time when this exit needs to be processed, you can use the beacon API to submit this message using a POST request to /eth/v1/beacon/voluntary_exits.