Skip to content

Sync committee duties missed for exited validators still in the committee period #4711

Open

Description

@KaloyanTanev

Summary

When a validator exits, Charon immediately stops performing its sync committee duties — even though sync committee membership is fixed for the whole ~27h period and an exited validator remains obligated to produce sync committee messages (and contributions) until that period ends. The beacon node keeps assigning it sync duties, so these are actively missed.

Root cause

Charon filters validators by ValidatorState.IsActive() (true only for active_ongoing/active_exiting/active_slashed). Once a validator reaches exited_unslashed/exited_slashed, it is dropped at every sync-committee gate:

  1. core/validatorapi.SubmitSyncCommitteeMessages — rejects the VC's message with validator not found. This is the primary miss: sync messages are VC-pushed and never touch the scheduler, so this gate alone breaks them.
  2. core/validatorapi.SubmitSyncCommitteeContributions and SyncCommitteeSelections — same rejection for the aggregation path.
  3. core/scheduler.resolveActiveValidators — excludes exited validators, so DutySyncContribution is never scheduled.

Note the VC still learns it is in the committee, because Charon proxies SyncCommitteeDuties straight to the beacon node unfiltered — so the VC dutifully signs and pushes messages that Charon then rejects.

Expected behaviour

Sync committee duties (messages, contributions, selections) should be performed for validators that have exited but are still within their sync committee period (state exited_*, not yet withdrawal_*). Attestation and proposal duties must remain active-only — an exited validator must not attest or propose.

Affected versions

All released versions with sync committee support. Fix targeted at v1.11.1.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingprotocolProtocol Team tickets

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions