-
Notifications
You must be signed in to change notification settings - Fork 980
Closed
Labels
Description
Description
We have quite a few minor errors on the slasher like:
Dec 03 23:37:38.417 DEBG Unable to obtain indexed form of attestation for slasher, error: UnknownTargetRoot(0x72eff6e4116a060b103f0731aa7590c96a3b8cd23441144aa6d9d214019e04d9), attestation_root: 0x2aa4ab96fd4d42386c23a5988f9d6955b98edc9d804026f451a783c5b3675d8f, service: beacon
I think this error means:
- We processed an attestation for which we did know the head block (
beacon_block_root). - However, we didn't know the
target_root. This is an invalid type of attestation, as it implies the target isn't an ancestor of the head. - Because the target is unknown, the beacon node fails to load the beacon state for the target block, which the slasher needs to verify the signature. Therefore the attestation gets discarded without being checked for slashability (a potential blind spot!).
Steps to resolve
- Confirm that this is what's happening, e.g. invalid attestations where the
beacon_block_rootdoes not descend from thetarget_root. - Decide on a mitigation strategy:
a) Use the attestation's head state to verify the signatures when the target block is unknown. This should not result in any errors, as attestations are only sent for processing once their head block is known (otherwise they get requeued).
b) Add a different queue for the slasher which waits for the target root to be known. From the logs it seems that many of the target blocks are actually valid (and canonical), so it might just be a race where a peer attestshead=N - 1andtarget=Nat the start of slotNbefore we've had time to import blockN. - Work out which peers are sending these attestations, as it probably indicates a bug in some client software, or (less likely) someone experimenting with attack strategies.
I think I prefer 2a for its simplicity. We just have to make sure we don't get DoS'd by state loads, as attestation head states likely don't lie on epoch boundaries and are more expensive to fetch than target states in general. Tree states will help with this ;)
Version
Lighthouse v4.5.0
Reactions are currently unavailable