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.
To voluntarily exit, you must have a running beacon node with the REST API enabled.
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.
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:
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.
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:
- 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 path at which to save the generated exit messages using the
--save-exits-path
option.
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
.