Skip to content

Conversation

@shane-moore
Copy link

@shane-moore shane-moore commented Oct 30, 2025

Changes

  • added polling of ptc duties to the VC per spec

How This Works

  • The VC is currently checking whether one of its registered validators are in a voting committee, such as sync or attestation, or if they are the proposer for a slot. With epbs, it's possible for a validator to also be in a ptc committee for at most one slot of the epoch. More context on how validators are selected to be in a ptc was discussed on discord.

Implemented in the PR

duties_service will now spawn a background polling task for the current and next epoch to check whether any of the registered validators are in a ptc committee. Since re-org is possible, we also poll every slot. The beacon node querying is performed by new request endpoint POST validator/duties/ptc/{epoch} per beacon api spec.

To save on bandwidth similar to attestation committee polling, the ptc polling will make a tiny initial requests to learn the dependent_root, compare with the cached dependent_root, and only fetch full duties for the epoch if the root has changed (or if the root is unknown like for a new epoch). Old duties are pruned based on HISTORICAL_DUTIES_EPOCHS.

Todo

  • add tests noted in the diffs
  • create beacon node (server side) response that will send the ptc duties to the VC. Some of this work has already been done in other PR's such as the get_ptc helper, but the warp implementation still needs to be complete as to send the response to the VC

@ethDreamer
@eserilev

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants