Skip to content

Alpenglow: UpdateParent has an incorrect allow list for is_update_parent_recoverable_replay_error #13788

Description

@mixy1-osec

is_update_parent_recoverable_replay_error classifies optimistic-prefix failures through an incomplete allowlist. It omits

FailedToLoadEntries(InvalidShredData(_) | BlockAborted(_))

Also I haven't confirmed any of the below, but it then delegates to another incomplete allowlist, which also omits the following:
GenesisCertificateOnNonChild
GenesisCertificateAlreadyPopulated
SpuriousUpdateParent
Which I think should be able to trigger the divergence too.

A malicious leader can send every validator the same signed shred stream but schedule delivery so one honest cohort executes the failing optimistic prefix and permanently marks the slot dead, while another observes UpdateParent first, starts replay at its FEC boundary, skips that prefix, and accepts the suffix.

This is a post-migration divergence issue. I'm not exactly sure how much it can be escalated. But I have observed nodes going offline on a test-cluster.

Metadata

Metadata

Assignees

Labels

consensus-teamIssues relevant to the consensus team

Type

No type

Fields

Priority

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions