Problem Statement / Feature Objective
Bulk attestation submissions use BLS signature aggregation to combine multiple validator signatures into a single aggregate signature. Operators need a verification panel that displays aggregation efficiency, tracks individual signer contributions, and validates aggregate signature correctness using the BLS12-381 pairing check – all without requiring a full beacon node RPC call for verification.
Technical Invariants & Bounds
- Aggregation efficiency = (individual_sig_size × num_signers) / aggregate_sig_size – minimum bar: >90% efficiency required
- Pairing check verification must complete in <500ms for up to 100 signers using WebAssembly-compressed BLS library
- Signer contribution tracking: each signer's participation logged per aggregation round, stored for 24h rolling window
- Anomaly detection: flag any signer whose signature appears in <95% of aggregation rounds as potentially faulty
- Aggregation history retained for 7 days in IndexedDB, compressed via delta encoding (≈70% space reduction)
Codebase Navigation Guide
src/hooks/useBulkAggregation.ts – hook for aggregation data
src/components/validators/BLSAggregationPanel.tsx – main panel component
src/services/blsService.ts – BLS operation service wrapper
src/wasm/blsPairingCheck.wasm – WebAssembly BLS pairing check module
src/utils/deltaEncoding.ts – delta encoding for compression
src/store/aggregationSlice.ts – state management
Implementation Blueprint
- Integrate
@chainsafe/blst-based WASM module as src/wasm/blsPairingCheck.ts – exposes verifyAggregateSignature(publicKeys, message, signature) → boolean
- Create
src/utils/aggregationEfficiency.ts – computes efficiency ratio and tracks per-signer contribution
- Build
src/hooks/useBulkAggregation.ts – subscribes to attestation aggregation events via beacon node event stream, maintains 24h signer history
- Implement delta encoding compressor
src/utils/deltaEncoding.ts – stores/retrieves aggregation history in IndexedDB with 70% compression target
- Create
src/components/validators/BLSAggregationPanel.tsx with:
- Efficiency gauge (semi-circular, 90% threshold marker)
- Signer participation table (validator index, participation %, last_seen, status)
- Aggregate signature verification trigger (manual button + auto-verify every 100th aggregation)
- Anomaly highlighting for signers below 95% participation
- Mount in
ValidatorDashboard.tsx as a collapsible "BLS Aggregation" section
Problem Statement / Feature Objective
Bulk attestation submissions use BLS signature aggregation to combine multiple validator signatures into a single aggregate signature. Operators need a verification panel that displays aggregation efficiency, tracks individual signer contributions, and validates aggregate signature correctness using the BLS12-381 pairing check – all without requiring a full beacon node RPC call for verification.
Technical Invariants & Bounds
Codebase Navigation Guide
src/hooks/useBulkAggregation.ts– hook for aggregation datasrc/components/validators/BLSAggregationPanel.tsx– main panel componentsrc/services/blsService.ts– BLS operation service wrappersrc/wasm/blsPairingCheck.wasm– WebAssembly BLS pairing check modulesrc/utils/deltaEncoding.ts– delta encoding for compressionsrc/store/aggregationSlice.ts– state managementImplementation Blueprint
@chainsafe/blst-based WASM module assrc/wasm/blsPairingCheck.ts– exposesverifyAggregateSignature(publicKeys, message, signature) → booleansrc/utils/aggregationEfficiency.ts– computes efficiency ratio and tracks per-signer contributionsrc/hooks/useBulkAggregation.ts– subscribes to attestation aggregation events via beacon node event stream, maintains 24h signer historysrc/utils/deltaEncoding.ts– stores/retrieves aggregation history in IndexedDB with 70% compression targetsrc/components/validators/BLSAggregationPanel.tsxwith:ValidatorDashboard.tsxas a collapsible "BLS Aggregation" section