You might be reading this because you've noticed that some validator on mainnet are earning extra rewards.
This is due to a new feature of the beacon chain added in the Altair fork called sync committees. Sync committees are groups of 512 validators which are randomly selected every 256 epochs (~27 hours) to perform additional duties. They sign a message called a SyncCommitteeMessage
every slot, which is similar to an attestation. For more information, you can read Vitalik's write-up in the annotated spec:
https://github.com/ethereum/annotated-spec/blob/master/altair/sync-protocol.md
So far none of the explorers show the sync committees explicitly, so they are chronicled here in the meantime.
Some of the early sync committees are included below as sync_committee_$epoch.txt
files, where $epoch
is the epoch at which that committee begins performing duties. Each line of the file is a validator index (512 total). You'll notice that the first two committees are identical: this is intentional (it simplified the fork logic).
The sync committees can be fetched from a running beacon node using the HTTP API like so:
# Current committee
curl "http://localhost:5052/eth/v1/beacon/states/head/sync_committees" | jq -r '.data.validators | map(. | tonumber) | join("\n")' | sort -n > sync_committee.txt
You can also see one period (256 epochs) in advance by passing the ?epoch
query parameter:
# By epoch:
curl "http://localhost:5052/eth/v1/beacon/states/head/sync_committees?epoch=74752" | jq -r '.data.validators | map(. | tonumber) | join("\n")' | sort -n > sync_committee_74752.txt
Finally, an explanation of how rewards have changed with Altair is here: