feat(slasher): slash checkpoint equivocation between P2P and L1 (A-980)#23436
Open
PhilWindle wants to merge 3 commits into
Open
Conversation
The archiver's L1 synchronizer already detects when a locally-stored proposed checkpoint disagrees with the L1-confirmed checkpoint at the same slot, but it only logged the divergence and evicted the local entry. Both sides are signed by the slot proposer, so the proposer equivocated. Emit a CheckpointEquivocationDetected event from the archiver when this divergence is detected, and add a CheckpointEquivocationWatcher in the slasher that subscribes to it, resolves the slot proposer via the epoch cache, and emits a DUPLICATE_PROPOSAL want-to-slash event. This closes the gap where a proposer broadcasts one checkpoint via gossip and submits a different one to L1 — the existing AttestationPool duplicate detection can't see this because only one of the two proposals is gossiped.
Enable the slasher in the equivocation harness with a non-zero slashDuplicateProposalPenalty and poll getSlashOffenses across the live validator nodes after the network heals. The offense fires on B/C as soon as L1 sync exposes A's checkpoint, well before the healing assertions complete, so the wait window is short.
…-980) Tighten the assertion: instead of accepting any observer recording the DUPLICATE_PROPOSAL offense, require both B and C to have it for the submission slot.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
tryBuildPublishedCheckpointFromProposed), but until now it only logged the divergence and evicted the local entry. Both sides are signed by the slot proposer, so the proposer equivocated.Fixes A-980.
Test plan