Skip to main content

Method 1: Configure CSM Fee Recipient on validator keys

Note: You will have to import your CSM validator keystores into your validator client first. Refer to the key import steps in the Method 2 section if you are unsure about how to proceed.

Validator Clients

Assuming your Teku validator client is already set up, stop it:

sudo systemctl stop tekuvalidator.service

Find your non‑CSM validator keystore pubkeys:

sudo find /var/lib -name "keystore*.json"

Extract each pubkey:

grep -oP '"pubkey": *"\K[^"]+' RESULTING_FILEPATH

Create a proposer configuration file:

sudo nano /var/lib/teku_validator/validator/proposer_configuration.json

Paste:

{
"proposer_config": {
"YOUR_PUBKEY_01": {"fee_recipient":"YOUR_WALLET_ADDRESS","builder":{"enabled":true}},
"YOUR_PUBKEY_02": {"fee_recipient":"YOUR_WALLET_ADDRESS","builder":{"enabled":true}},
"YOUR_PUBKEY_03": {"fee_recipient":"YOUR_WALLET_ADDRESS","builder":{"enabled":true}}
},
"default_config": {"fee_recipient":"LIDO_EXECUTION_LAYER_REWARDS_VAULT","builder":{"enabled":true}}
}

Replace YOUR_PUBKEY_*, YOUR_WALLET_ADDRESS, and LIDO_EXECUTION_LAYER_REWARDS_VAULT (e.g. 0x388C818CA8B9251b393131C08a736A67ccB19297 for Mainnet).

Save (Ctrl+O, Enter) and exit (Ctrl+X).

Set permissions:

sudo chown -R teku_validator:teku_validator /var/lib/teku_validator/validator

Edit the systemd service:

sudo nano /etc/systemd/system/tekuvalidator.service

Add the --validators-proposer-config flag and remove the default fee-recipient flag. For example:

[Service]
ExecStart=/usr/local/bin/teku/bin/teku vc \
--network=hoodi \
--data-path=/var/lib/teku_validator \
--validators-proposer-config=/var/lib/teku_validator/validator/proposer_configuration.json \
--validators-builder-registration-default-enabled=true \
--validators-graffiti="your_graffiti" \
--metrics-enabled=true

Reload and restart:

sudo systemctl daemon-reload
sudo systemctl start tekuvalidator.service
sudo systemctl status tekuvalidator.service

Monitor logs:

sudo journalctl -fu tekuvalidator -o cat

Automation Tools

With ETH Docker (ethd up), list keys and set recipient:

./ethd keys list
./ethd keys set-recipient <pubkey> <address>