Skip to content

feat(aggregator): own subnet + one neighbor for --aggregate-subnet-ids#175

Open
ch4r10t33r wants to merge 2 commits into
mainfrom
feat/aggregator-coverage-own-plus-one
Open

feat(aggregator): own subnet + one neighbor for --aggregate-subnet-ids#175
ch4r10t33r wants to merge 2 commits into
mainfrom
feat/aggregator-coverage-own-plus-one

Conversation

@ch4r10t33r
Copy link
Copy Markdown
Contributor

Summary

Aggregators previously received --aggregate-subnet-ids 0,1,...,N-1 everywhere, so each gossip attestation was duplicated across every subscribed subnet topic. That contributed to libxev thread load on multi-subnet devnets (context: blockblaz/zeam#863).

This change gives each aggregator its own attestation subnet plus exactly one neighbor: subnet i subscribes to \{i, (i+1) mod N\}. Every subnet still has at least two aggregators (native + previous subnet's neighbor). Per-aggregator topic count drops from N to 2 when N ≥ 2 (e.g. four subnets → two topics per aggregator).

Changes

  • compute-aggregate-subnet-ids.sh: shared helper; prefers per-row subnet:, else validator_index % attestation_committee_count (aligned with spin-node.sh _node_subnet).
  • parse-vc.sh: builds aggregateSubnetIds per node via the helper (local / spin-node.sh).
  • Ansible (zeam, ethlambda roles): same helper, per host (no run_once) so each deployed aggregator gets the correct pair.
  • client-cmds/*: comment updates only; existing isAggregator && CSV contains , guard unchanged.

Notes

  • N = 1: output is a single id (no comma); clients omit --aggregate-subnet-ids as before.
  • N = 2: result is still 0,1 for every node (same as old global CSV).

Each aggregator passes --aggregate-subnet-ids as {i,(i+1) mod N}
instead of 0..N-1, cutting gossip fan-in per node (see zeam#863).

- Add compute-aggregate-subnet-ids.sh (shared by parse-vc.sh and Ansible)
- Zeam/ethlambda roles: per-host CSV via helper (no run_once)
- Update client-cmd comments to match new semantics
compute-aggregate-subnet-ids.sh no longer appends a neighbor subnet, so
client-cmds and Ansible stop passing --aggregate-subnet-ids for the
usual one-aggregator-per-subnet layout; gossip follows validator-derived
subnets. Update comments in parse-vc, roles, and client wrappers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant