chore(deps): bump Lighthouse to unstable HEAD e58ec88fe and migrate sign_attestations to SingleAttestation - #1215
Conversation
…ign_attestations to SingleAttestation Bump the Lighthouse pin from 81d576943 to e58ec88fe (EIP-7688 merge) and adapt to the interface changes in the window: - Mirror Lighthouse's six EIP-7688 [patch.crates-io] git pins into the root workspace so the patched SSZ stack applies. - Migrate the validator_store attestation path to the de-generified AttestationToSign / SingleAttestation interface (LH #9578), with duty-identity checks that withhold mismatched duties from publication without stalling the committee's exact-count signature collection. - Add fork-aware decode helpers on DataVersion (EIP-7688 progressive shapes at Gloas, Heze fails closed) and bind leader-supplied versions to our own candidate in both aggregator validators (SIP-94). - Merkleize BlindedExecutionPayloadEnvelope as a progressive container to preserve blinded/full root parity at the new pin (SIP-94). - Fill Heze DataVersion arms and adopt the EnrExt dialable_multiaddrs rename. Closes sigp#1214
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## epbs #1215 +/- ##
==========================================
+ Coverage 69.67% 70.11% +0.44%
==========================================
Files 165 166 +1
Lines 32475 32959 +484
==========================================
+ Hits 22626 23109 +483
- Misses 9849 9850 +1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
# Conflicts: # Cargo.lock # Cargo.toml
|
@claude, please take a look |
|
Claude finished @shane-moore's task in 5m 42s —— View job Review: PR #1215 — Lighthouse pin bump +
|
…ty-mismatch attestations
|
Claude finished @shane-moore's task in 33s —— View job Follow-up:
|
…of withholding The duty's attester_index/committee_index are not part of the signing root and the beacon node validates them authoritatively on publish, so a true mismatch cannot land on chain, while withholding could suppress a valid attestation whenever the slot-start snapshot went stale mid-slot (dependent-root change). The comparison stays as a diagnostic: warn for attester_index mismatches (indices are permanent, so always a real fault), info for committee drift, plus a reason-labelled anchor_attestation_duty_identity_mismatches_total counter. Removes AttestationCandidate, the publishable flag, and the withheld metrics label; every slash-safe attestation is returned for publication and slashing-DB recording is unchanged.
|
@claude, please review the new commit 147af27: the identity-mismatch action flips from withhold-from-publication to publish-with-diagnostic. The identity fields are not part of the signing root and the beacon node validates them authoritatively, so withholding could only suppress valid attestations when the slot-start snapshot went stale mid-slot. The |
|
Claude finished @shane-moore's task in 2m 25s —— View job Review: commit 147af27 — identity mismatch flips to publish-with-diagnostic
I reviewed What I verifiedDesign rationale is sound. Reason classification is correct and exhaustive ( Simplification is a net win. Metrics wiring is complete ( Test updated coherently ( Minor, optional (non-blocking)
Verification
Looks good — the flip is well-justified and the surrounding cleanup is a genuine simplification. |
|
Queued — the merge queue status continues in this comment ↓. |
Merge Queue Status
This pull request spent 29 minutes 13 seconds in the queue, including 27 minutes 39 seconds running CI. Required conditions to merge
|
Problem, Evidence, and Context (Required)
Change Overview (Required)
[patch.crates-io]git pins into our root workspace (Cargo only applies patches from the root workspace).validator_storeto the new signing interface:AttestationToSignis no longer generic and carries onlyAttestationData;sign_attestationsnow returnsSingleAttestationbatches. Duty identity fields (attester_index,committee_index) are compared against our own metadata as a diagnostic only (warn/info log plus a reason-labelled counter); publication proceeds regardless, since the fields are not part of the signing root and the beacon node validates them authoritatively. A duty cannot be dropped before signature collection because the committee's partial-signature batch size is exact and dropping would stall the whole committee.DataVersioninssv_types(one forAttestation, one forAggregateAndProof). Gloas decodes the EIP-7688 progressive shapes; Heze fails closed until a wire shape is pinned upstream. All four fork-conditional decode sites now go through them.versionto our own candidate in both aggregator validators, matching the existing proposer check.BlindedExecutionPayloadEnvelopeas a progressive container so blinded/full root parity holds at the new pin (SIP-94 section 6).DataVersionarms, EnrExtdialable_multiaddrs_*rename.Cargo.toml, thenssv_types/src/consensus.rs(helpers, version binding, envelope), thenvalidator_store/src/lib.rs(migration), then tests.Risks, Trade-offs, and Mitigations (Required)
Validation (Required)
cargo fmt, clippy, andcargo check --workspace --all-targetsclean.Rollback (Required for behavior or runtime changes; optional otherwise)
Blockers / Dependencies (Optional)