Skip to content

fix(L1): reject proof games for not-yet-reached L2 timestamps - #406

Merged
jackchuma merged 1 commit into
mainfrom
jack/cantina-21-reject-future-l2-claims
Aug 19, 2026
Merged

fix(L1): reject proof games for not-yet-reached L2 timestamps#406
jackchuma merged 1 commit into
mainfrom
jack/cantina-21-reject-future-l2-claims

Conversation

@jackchuma

@jackchuma jackchuma commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

What changed? Why?

  • Reject AggregateVerifier initialization when the deterministic timestamp of the claimed L2 block is later than L1 block.timestamp. This prevents a game from pinning a ProtocolVersions activation that can still be cleared or delayed, fixing Cantina finding #21.

Notes to reviewers

  • The check runs before activatedScheduleId is read. Once L1 reaches the claim timestamp, ProtocolVersions prevents changes to that activation.
  • Regenerated the AggregateVerifier ABI and semver-lock snapshots for the new error.

How has it been tested?

  • just test — 1208 passed, 0 failed, 1 skipped.
  • Added a regression test for the future-timestamp revert and successful initialization once L1 reaches the claim timestamp; updated affected fixtures to create games at valid timestamps.

`AggregateVerifier.initializeWithInitData` pinned `scheduleId` from the claimed
L2 block's deterministic timestamp without requiring that timestamp to have
passed on L1. Because post-Fjord batch validation allows an L2 timestamp up to
1800s ahead of its L1 origin, a modified sequencer could open a game pinning an
activation that `ProtocolVersions` still allowed the owner to clear or delay,
leaving the game permanently bound to a schedule the canonical chain rolled
back. Requiring the claim timestamp to be at or before the L1 block timestamp
closes that window, since an activation becomes immutable once L1 reaches it.

Cantina finding #21.

Co-authored-by: Cursor <cursoragent@cursor.com>
@cb-heimdall

cb-heimdall commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

✅ Heimdall Review Status

Requirement Status More Info
Reviews 1/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@refcell refcell left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice ty

@jackchuma
jackchuma merged commit e5b4782 into main Aug 19, 2026
6 checks passed
@jackchuma
jackchuma deleted the jack/cantina-21-reject-future-l2-claims branch August 19, 2026 17:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants