Skip to content

system-config: remove batchInbox getter and setGasConfig - #922

Merged
mds1 merged 2 commits into
mainfrom
mds/remove-systemconfig-batch-inbox-start-block
Jul 30, 2026
Merged

system-config: remove batchInbox getter and setGasConfig#922
mds1 merged 2 commits into
mainfrom
mds/remove-systemconfig-batch-inbox-start-block

Conversation

@mds1

@mds1 mds1 commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Spec side of ethereum-optimism/optimism#21641, which removes batchInbox() and the deprecated setGasConfig from the SystemConfig at op-contracts v8.0.0.

Changes:

  1. The batchInbox and setGasConfig sections stay as historical record rather than being deleted, each marked (-op-contracts/v8.0.0) and noting that it was removed in SystemConfig v4.0.0. Their TOC entries stay too.

  2. initialize's batch inbox MUST is split into a versioned pair: (-op-contracts/v8.0.0) sets the Batch Inbox address, (+op-contracts/v8.0.0) clears the legacy slot. Nothing in the OP Stack read that copy — derivation takes the batch inbox from the rollup config — and keeping it meant OPCMv2's reinitialization could recompute it with the new-chain addressing scheme, which is what rotated it for every pre-OPCM chain during U19.

  3. Version markers now spell out which scheme they mean. (+op-contracts/vX.Y.Z) and (-op-contracts/vX.Y.Z) are op-contracts releases; a version written as SystemConfig vX.Y.Z is the contract's own semver. There is a one-line note to that effect at the top of the Function Specification section, and the existing markers in system-config.md and stage-1.md are normalized to the full identifier.

    The existing (+v4.1.0) markers were genuinely ambiguous, so to be explicit about why they are releases: at op-contracts/v4.1.0 the feature-flag and optional-ETHLockbox pause behavior those markers describe is present, while SystemConfig is at 3.7.0 and SuperchainConfig at 2.3.0. Neither contract has ever been at 4.1.0 — SuperchainConfig is still at 2.4.3 today — and setFeatureEnabled is absent at op-contracts/v4.0.0.

  4. ConfigUpdate type 1 records that as of SystemConfig v4.0.0 the overhead entry is always zero, and that the payload stays two words so its length is unchanged. _setGasConfigEcotone hardcodes the zero because op-node ignores the overhead after Ecotone, but the event data has to stay 64 bytes.

  5. The post-Ecotone Overhead note says it is no longer writable, since setGasConfig was its only writer, and that setGasConfigEcotone emits zero in its place. The variable and getter are kept, so overhead() still works.

  6. The Batch Inbox address heading in configurability.md loses its stale SystemConfig.sol#L176 permalink and says the value is defined in the rollup configuration and, as of SystemConfig v4.0.0, is no longer stored onchain.

Not doing here, per the review discussion: a separate per-contract Changelog section. The (+v)/(-v) markers already carry this change now that they say which versioning scheme they use. Happy to open a follow-up issue for the Changelog idea if we want it.

The batch inbox address is defined in the rollup configuration, and nothing in the OP Stack read
it from the SystemConfig. Keeping the onchain copy meant OPCMv2's reinitialization could recompute
it with the new-chain addressing scheme, which is what rotated it for every pre-OPCM chain during
U19. `initialize` now clears the legacy slot instead of setting it.

`setGasConfig` goes too. It could only write version-0 scalars and did not update the
`basefeeScalar`/`blobbasefeeScalar` mirrors that OPCM reads, so calling it desynchronized
`scalar` from those mirrors and the next upgrade silently reverted the change. Removing it makes
the mirrors agree with `scalar` by construction. `overhead` is therefore immutable, which is
fine because op-node ignores it after Ecotone.

`startBlock` is unchanged — it is only written when unset, so reinitialization preserves it.
@mds1
mds1 force-pushed the mds/remove-systemconfig-batch-inbox-start-block branch from 8572127 to fbbe1d3 Compare July 27, 2026 15:31
@mds1 mds1 changed the title system-config: remove batchInbox and startBlock system-config: remove batchInbox getter and setGasConfig Jul 27, 2026

@sebastianst sebastianst left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We usually keep historical information in the protocol specs, but I can see how this gets increasingly awkward, see comments. Wondering if we want instead switch to a description of the present state only and keep a separate Changelog section where we describe the diffs of each contract change.

Comment thread specs/protocol/system-config.md
Comment thread specs/protocol/system-config.md
Comment thread specs/protocol/system-config.md Outdated
Comment thread specs/protocol/system-config.md Outdated
Comment thread specs/protocol/system-config.md
…markers

Per seb, the protocol specs keep historical information, so restore the
`batchInbox` and `setGasConfig` sections with their TOC entries rather than
deleting them, each marked `(-op-contracts/v8.0.0)` and noting removal in
`SystemConfig` v4.0.0. Split the `initialize` batch inbox MUST into a versioned
pair so the old behavior stays recorded next to the new one.

The existing `(+v4.1.0)` markers were ambiguous between an op-contracts release
and a contract semver. They mean the release: at `op-contracts/v4.1.0` the
feature-flag and optional-ETHLockbox pause work is present while SystemConfig is
at 3.7.0 and SuperchainConfig at 2.3.0, and no contract has ever been at 4.1.0.
Make that explicit with the full `op-contracts/vX.Y.Z` identifier, normalize the
existing markers in system-config.md and stage-1.md, and add a note to the
Function Specification section saying which scheme is which.

Also record what the monorepo PR actually changed about the overhead:
`ConfigUpdate` type 1 now always carries a zero in the `overhead` entry, and the
payload stays two words so its length is unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Comment thread specs/protocol/stage-1.md
Comment thread specs/protocol/stage-1.md
@mds1
mds1 merged commit e161d6f into main Jul 30, 2026
1 check passed
@mds1
mds1 deleted the mds/remove-systemconfig-batch-inbox-start-block branch July 30, 2026 22:05
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