Skip to content

[Aura -> BABE] Committee rotation proceeds after session key registration failure #1895

Description

@Klapeyron

Committee session key registration silently drops validators

Field Value
Risk High
Confidence High
Likelihood Medium
Grounding Runtime review (hybrid)

Summary

register_committee_keys ignores errors from SessionInterface::set_keys. When a duplicate or stale KeyOwner entry causes upstream pallet_session to reject registration, new_session still returns the full committee. Downstream, pallet_session omits validators without registered keys from the active authority set.

What happens

  1. Committee rotation calls register_committee_keys for each member.
  2. SessionInterface::set_keys(account, keys) fails (e.g. DuplicatedKey when a session key is already owned by another validator).
  3. The failure is logged and ignored.
  4. new_session / new_session_genesis return all committee account IDs regardless.
  5. When the session starts, pallet_session queue construction skips validators for which NextKeys is absent.
  6. Aura/GRANDPA run with a partial or unexpectedly empty authority set.

Root cause

The registration loop treats set_keys as best-effort. It does not:

  • abort rotation on failure,
  • reject the committee, or
  • verify that every returned validator has matching keys in pallet_session.

Why it matters

Aura/GRANDPA can omit an intended committee member or produce an unexpectedly empty/partial authority set, risking liveness and finality.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions