On Jan 12th, 2026, the Polygon PoS Mainnet experienced a delay in block finalization starting at approximately 16.00 UTC, caused by repeated proposal rejections at the consensus layer.
The incident was triggered by a deterministic mismatch between PrepareProposal and ProcessProposal logic in Heimdall, leading validators to reject otherwise valid block proposals due to an account sequence inconsistency. Finalization resumed after the offending logic was removed and validators converged on a consistent proposal execution path.
PrepareProposal and never included in the proposal, due to a bug.ProcessProposal, validators attempted to execute the included transaction in isolation, without having applied the skipped transaction.Execution of message handlers during ProcessProposal introduced an invalid assumption about account sequence progression.
Specifically:
PrepareProposal is allowed to skip invalid transactions when constructing a proposal.ProcessProposal, however, must not assume that skipped transactions were executed.execMsgHandler in ProcessProposal attempted to execute message handlers against a cached state context.When multiple transactions from the same sender were involved:
x) was skipped in PrepareProposal,x+1) was included,ProcessProposal would reject the proposal due to a sequence mismatch.This violated the fundamental Cosmos SDK invariant that state transitions (including sequence increments) must only occur during block execution, not proposal validation.
The issue was fully deterministic and reproducible under these conditions.
This was not caught earlier because:
ProcessProposal.The failure mode only manifests when:
This edge case was not covered by existing proposal-level tests.
execMsgHandler) was removed from ProcessProposal.