aggregator committee: deduplicate messages if validator has already been seen for a subnet#2681
Conversation
Greptile OverviewGreptile SummaryOptimizes sync committee selection proof generation by deduplicating messages when multiple validator sync committee indices map to the same subnet. Since selection proofs depend only on slot and subcommittee index (not the specific validator index), generating multiple signatures for the same subnet is redundant. The change tracks seen subnets and skips duplicate signature generation while maintaining the correct Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant R as AggregatorCommitteeRunner
participant BN as BeaconNode
participant S as Signer
Note over R: executeDuty for BNRoleSyncCommitteeContribution
R->>R: Initialize seenSubnets map
loop For each ValidatorSyncCommitteeIndex
R->>BN: SyncCommitteeSubnetID(index)
BN-->>R: subnet
alt subnet already seen
R->>R: Skip (continue)
else subnet not seen
R->>R: Mark subnet as seen
R->>R: Create SyncAggregatorSelectionData(slot, subnet)
R->>S: signBeaconObject(data)
S-->>R: partialSig with SigningRoot
R->>R: Append to messages
R->>R: Store rootToSyncCommitteeIdx[SigningRoot] = index
end
end
Note over R: Result: One signature per unique subnet instead of per index
|
Codecov Report✅ All modified and coverable lines are covered by tests. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
iurii-ssv
left a comment
There was a problem hiding this comment.
LGTM, could also mention that this PR pins down the golangci-lint version (in the PR description)
The linter issue actually applies to the base branch as well, so I pulled the latest changes from it |
@nkryuchkov I think we have linter pipelines failing for stage branch too since recently, should we create a PR to merge it there too ? |
|
9e2ce0a to
fb90446
Compare
On hold until it's implemented in spec due to broken spec testsssvlabs/ssv-spec#603