ethereum-optimism / ethereum-optimism/optimism

op-supernode: Do not invalidate blocks on initiating-log storage errors

Open
#22,846 0 comments 0 reactions 1 assignee Claimed by @karlfloersch View on GitHub
Dominant language
Go
Stars
6.5k
Forks
4k
Avg merge
2d 15h
Merged PRs (30d)
145

Description

**Claude:** I found this during the interop implementation review.

Op-supernode converts initiating-log storage failures into protocol invalidity.

Event sequence:

1. `verifyExecutingMessage` calls `sourceDB.Contains` (`activity/interop/algo.go:213-215`).
2. `Contains` can return WAL read or block-record decode errors (`raftwallogdb/db.go:301-307`).
3. `verifyInteropMessages` treats every returned error as an invalid executing message (`algo.go:122-145`).
4. The round returns an invalid head and applies `DecisionInvalidate` (`interop.go:510-517,721-887`).
5. Op-supernode can therefore replace an otherwise valid block because its local log store failed.

This differs from executing-block reads. `OpenBlock` errors abort the verification round and retry later (`algo.go:100-103`).

Default backfill already covers the complete expiry window. This issue concerns storage errors, not custom backfill configuration.

Expected behavior: distinguish protocol-invalid lookups from local storage failures. Retry or halt on storage failures without invalidating the L2 block.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.