Checking my eth validator's sync committee duties

Avoid missing extra ETH income and get rewarded for 24hours of sync committee duties.

⏩ Quick steps guide

The following steps align with our mainnet guide. You may need to adjust file names and directory locations where appropriate. The core concepts remain the same.

πŸ—‘οΈ Why do I want to check my sync committee duties ?

  • Since the Altair Hard Fork, checking sync committee membership is a must before performing any maintenance. This will give you up to ~27 hours of advanced notice in case your validators have been selected for sync committee duties.

  • Understanding the schedule of your validator's duties better, you can find the best time to plan consensus/execution client updates, system reboots or outages.

πŸ€– Pre-requisites

  • Linux bash shell or command line

  • Assumes you will be running this script on the beacon node. If running remotely, you might need to change your beacon node's http API to bind from localhost to 0.0.0.0

  • Your ETH validator index number(s) -- Enter your validator's public key on https://beaconcha.in/ or https://beaconscan.com/ Example of Validator index # 12345 is shown below.

Given your validator's public key, the index number is shown. Example of Validator 12345 from https://beaconcha.in/validator/12345

🚧 How to Check Sync Committee Duties script

1. Create a check_sync_committee.sh script with a text editor, nano.

2. Paste the following script content and then save your file. CTRL+O, enter, then CTRL+X.

3. Add execute permissions to the script.

4. Enter your validator index numbers as parameters to the script.

Sample Output of the script:

This output indicates the following:

  • it is currently epoch 75115

  • and validator #123511 is in current sync committee from epoch 75008 to epoch 75263

  • and validator #124216 is in next sync committee from epoch 75264 to epoch 75520

If there is no output, then no validators are scheduled for current or next sync committee.

❓Troubleshooting:

  • The python script calls the http API

  • Ensure the http API is enabled for your consensus layer client.

    • teku: --rest-api-enabled=true

  • Teku by default uses port 5051, rather than 5052. Replace the port number before using.

    • example: BEACON_NODE="http://localhost:5051"