Releases: ethereum-optimism/op-geth
v1.101500.0 - L1 Pectra Readiness
L1 Pectra Readiness
❗ All node operators must upgrade to this release by the time their chain's L1 activates Pectra.
❗ If you run a full node, don't directly upgrade to this release, but start up once with version v1.101411.8. See its release notes for more details. Archival nodes don't need to follow this upgrade path.
Corresponding op-node release: v1.11.0
This release prepares the OP Stack to handle L1 chains activating Pectra. It includes all changes from the go-ethereum upstream release 1.14.11 and a subset of changes from the 1.15.0 release, all commits on master
up to f0e8a3e fix README.md
(ethereum/go-ethereum#31076). In particular, support for the new SetCode
transaction type 4 is included.
The superchain-registry bindings are also updated to pull in new chain configurations. It is not included as a Go module any more, but instead bundled inside the repo since this release. Downstream dependencies like the Optimism monorepo also use the bundled configurations of op-geth going forward.
What's Changed
- all: update to geth v1.14.12 by @protolambda in #452
- Add bindings for SR2.0 by @mslipper in #466
- feat: add Isthmus fork rules by @meyer9 in #471
- Add getters for SR2 superchain tomls by @mslipper in #476
- Align HoloceneTime printout in banner by @geoknee in #477
- Separate loading config and genesis files by @mslipper in #482
- crypto: add IsOnCurve check (#31100) by @sebastianst in #485
- chore: add missing Isthmus chain config options by @meyer9 in #484
- scr: Update superchain-registry by @sebastianst in #486
- all: Merge upstream pre-v1.15.0, based on #474, plus review fixes by @protolambda in #480
- fix(db): improve log for NewDatabaseWithFreezer. by @scharissis in #488
- ci: Remove check releases job by @ajsutton in #489
- cmd/geth: add RollupEnableTxPoolAdmissionFlag to node flags by @pengin7384 in #434
- feat: ensure requests array empty post-Isthmus by @meyer9 in #478
- feat: add BLS precompile size limits for Isthmus by @meyer9 in #490
- eth/catalyst: Check that extraData is empty in newPayload pre-Holocene by @sebastianst in #492
- Use CrossUnsafe for Interop Ingress Filter by @axelKingsley in #428
- node: Enable miner rpc in authrpc if enabled in http by @ferranbt in #491
- pathdb: Pathdb full write-buffer check by @protolambda in #497
- Add bootnodes ran by UL by @trianglesphere in #502
- sr: update to 4e0b67b7fa7d652d613e6f2f0e73d9656023c770 to add uni-mainnet by @sebastianst in #505
New Contributors
- @meyer9 made their first contribution in #471
- @scharissis made their first contribution in #488
- @pengin7384 made their first contribution in #434
- @ferranbt made their first contribution in #491
🚢 Docker Image: https://us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101500.0
Full Changelog: v1.101411.5...v1.101500.0
v1.101411.8 - upgrade path to v1.101500.0
This release contains a fix to the upstream journaling code (b79c44a) to ensure no critical state is lost when upgrading full nodes and the journal is thrown away due to a journal format update. Any full node operator who intends to upgrade their v1.101411.x
op-geth node to v1.101500.0
should first restart their node once with this release. When you run this release and shut it down again, search the shutdown logs for a message
Persisting dirty state to disk
and its buffer_layers
argument. It should be lower than 128. If that's the case, you can safely go on to upgrade to v1.101500.0
.
As steps:
- You're running
v1.101411.x
- Start up
v1.101411.8
once, let it run for a while, shut down. - Check shutdown logs for
Persisting dirty state to disk
message, check thatbuffer_layers
argument is <128 - You're good to upgrade to
v1.101500.0
The background is that updating the upstream geth dependencies between v1.101411.x
and v1.101500.0
, there were two journal format updates in the underlying geth versions from v1.14.11
to v1.15.0
. This causes the journal do be dropped at startup of the new release v1.101500.0
. A full node should be able to recover from this, but we suspect a bug in geth (ethereum/go-ethereum#31131) means that more than 128 layers are part of the journal, so when it's thrown away at startup, the node may be missing critical state and needs to heal its state.
🚢 Docker Image: https://us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101411.8
Full Changelog: v1.101411.6...v1.101411.8
v1.101411.6 - P2P Fix
❗ All node operators are strongly recommended to upgrade to this release. It contains an urgent security fix (CVE-2025-24883). This fix is the only difference to the prior release v1.101411.5
.
Also upgrade your L1 go-ethereum nodes to v1.14.13, which contains the same fix.
🚢 Docker Image: https://us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101411.6
Full Changelog: v1.101411.5...v1.101411.6
v1.101411.5
What's Changed
- Isthmus: re-introduce withdrawals root in block header by @vdamle in #451
- beacon: add nil check for AccessEvents receiver before invocation by @vdamle in #453
- go: update SCR dependency to include Soneium Mainnet by @sebastianst in #465
Full Changelog: v1.101411.4...v1.101411.5
🚢 Docker Image: https://us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101411.5
v1.101411.4 - Holocene Mainnet Superchain
✨🔴 Holocene Mainnet Superchain Release
This release contains the Holocene activation timestamp for the Mainnet Superchain, on
Thu 09 Jan 2025 18:00:01 UTC
- unix timestamp
1736445601
The corresponding op-node release can be found here.
OP Mainnet Approval
The OP Mainnet Holocene activation is still subject to approval by the governance process on Optimism Upgrade Proposal #11. In the unlike event of a veto by Dec 25, we will publish a new release with the OP Mainnet Holocene activation disabled. The Holocene activation can also be disabled for this release by setting the override flag --override.holocene
(or the corresponding env var) to a far-future timestamp, e.g. --override.holocene 2736445601
.
Database Rewind panic
fix (#446)
This release also contains a fix that again enables op-geth to properly rewind its database in case of a missed Holocene activation and subsequent configuration fix. Without this fix, before attempting to rewind the database to one block before the activation block, a panic would occur:
panic: invalid eip-1559 params in extradata
If you see this after correcting a Holocene timestamp, upgrading to this release should help.
What's Changed
- core: fix call to post-validation evm message hook by @protolambda in #437
- op-batcher: exit building loop early if there's not enough DA capacity by @roberto-bayardo in #439
- chore: fix some problematic function names in comment by @mountcount in #438
- core: make isForkTimestampIncompatible return false when either fork is post genesis by @geoknee in #447
- Isthmus: withdrawals root in block header by @protolambda in #383
- Prepare Holocene mainnet release by @sebastianst in #448
- Revert "Isthmus: withdrawals root in block header" by @protolambda in #449
- core: Move blockchain head verification after possible rewind by @sebastianst in #446
- superchain: update superchain registry dependency by @geoknee in #450
New Contributors
- @mountcount made their first contribution in #438
Full Changelog: v1.101411.3...v1.101411.4
🚢 Docker Image: https://us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101411.4
v1.101411.3
What's Changed
- miner: fix config unmarshalling by @denis-pingin in #433
- Update superchain-registry dependency to include Unichain Sepolia
holocene_time
by @geoknee in #436
New Contributors
- @denis-pingin made their first contribution in #433
Full Changelog: v1.101411.2...v1.101411.3
🚢 Docker Image: https://us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101411.3
v1.101411.2 - Sepolia Holocene
Sepolia Holocene Release
❗ All node operators of Sepolia chains that follow the Sepolia Superchain must upgrade to this release of op-geth and op-node v1.10.0.
The Sepolia Superchain activates Holocene on Tue Nov 26 15:00:00 UTC 2024
(unix ts 1732633200
). This comprises op
, base
, mode
, metal
, and zora
.
What's Changed
- core/types/rollup.go: add unscaled version of EstimatedL1Size and rename EstimatedDASize by @roberto-bayardo in #424
- interop: experimental sequencer executing message check support by @protolambda in #372
- interop: Ingress Filtering for Interop Enabled Mempool by @axelKingsley in #422
- miner: remove tcount adding after
miner.commitTransaction
by @islishude in #419 - miner/payload_builder_test.go: fix name of payload building test by @roberto-bayardo in #423
- Prepare Holocene devnet & testnet release by @sebastianst in #429
- Update superchain-registry to include metal-sepolia by @sebastianst in #431
New Contributors
- @islishude made their first contribution in #419
Full Changelog: v1.101411.1...v1.101411.2
🚢 Docker Image: https://us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101411.2
v1.101411.1
❗ It is strongly recommended for all chain operators to upgrade to this release.
Batcher Sequencer Throttling (#421)
This release contains a new batcher-driven sequencer-throttling control loop. This is to avoid sudden spikes in L1 DA-usage consuming too much available gas and causing a backlog in batcher transactions. The batcher can throttle the sequencer’s data throughput instantly when it sees too much batcher data built up.
See the op-stack v1.9.5 release notes for more background information and configuration details.
What's Changed
- Add missing depositTxWithNonce case to MarshalJSON / SourceHash / Mint by @mdehoog in #395
- Holocene: extensions for configurable EIP-1559 params by @roberto-bayardo in #398
- feat(rpc): implement debug_executionWitness API by @0x00101010 in #397
- Holocene: use extraData instead of nonce for eip-1559 parameters by @roberto-bayardo in #402
- consistently use uint64 for Holocene eip-1559 params by @roberto-bayardo in #406
- core: fix genesis op-mainnet hash by @protolambda in #405
- update fork.yaml to cover Holocene eip-1559 parameter configurability by @roberto-bayardo in #411
- core: avoid add
l1Cost
twice whenGasFeeCap
is nil by @zhiqiangxu in #391 - core/types/rollup_cost.go: export a function to estimate the l1 batch size of a transaction by @roberto-bayardo in #416
- core/types/rolloup_cost.go: clarify that the estimated l1 size is scaled up by 1e6 by @roberto-bayardo in #418
- core/types: transaction conditional KnownAccounts fix && HexOrDecimal deser by @hamdiallam in #414
- skip state db op when NoBaseFee is true by @zhiqiangxu in #417
- add ability to control DA required by blocks produced by the builder by @roberto-bayardo in #421
New Contributors
- @zhiqiangxu made their first contribution in #391
Full Changelog: v1.101411.0...v1.101411.1
🚢 Docker Image: https://us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101411.1
v1.101411.0 - upstream geth v1.14.11 merge
This release contains the upstream go-ethereum changes until v1.14.11 (#396).
What's Changed
- core/vm: evm options to ignore max-bytecode-size and support caller overriding by @protolambda in #366
- fork.yaml: document pathdb journal change by @protolambda in #369
- internal/sequencerapi,miner: move conditional rate limiter to the rpc layer instead of miner by @hamdiallam in #377
- Holocene: handle Holocene l1 attributes in l1 data fee computation by @roberto-bayardo in #384
- fix: Only apply effective gas limit when building new blocks by @BrianBland in #394
- Revert "Holocene: handle Holocene l1 attributes... by @roberto-bayardo in #393
- Update op-geth depdency to 1.14.11 base by @0x00101010 in #396
New Contributors
- @BrianBland made their first contribution in #394
Full Changelog: v1.101408.0...v1.101411.0
🚢 Docker Image: https://us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101411.0
v1.101408.0 - Optimistic Granite Mainnet release
✨🔴 Optimistic Granite Mainnet Release
❗ Mainnet operators are required to update to this release to follow the chain post-Granite. This release contains an optimistic Granite Mainnet activation time of Wed 11 Sep 2024 16:00:01 UTC.
The corresponding monorepo op-node release is op-node/v1.9.1.
Optimism Governance Voting Cycle 26
The Granite activation contained in this release is still subject to approval during the currently ongoing Optimism Governance voting cycle 26, see the Governance Proposal of the Granite Protocol Upgrade. The reflection voting period ended on Aug 28 while the veto period ends on Sept 4, 19:00 UTC.
In the unlikely event that the veto period ends in a veto, we will publish a Veto Release. The granite activation can also be disabled by setting the override.granite
configuration flag to a date in the far future, e.g. --override.granite 2281580442
. Always confirm in startup logs that overrides have been applied correctly.
State Scheme Highlights
Per recently introduced changes from upstream geth (from the upstream Asteria release):
- The default state trie representation is changed from
hash
mode topath
mode (i.e.--state.scheme
flipped fromhash
topath
). Users running full nodes must specify--state.scheme=hash
if they're currently using hash-based db. Otherwise, op-geth will assume apath
state scheme and will fail to follow the chain. Archive nodes do not need to specify--state.scheme
as they will continue to run on hash mode. - That said, it's recommended that full nodes switch to the path-based state scheme as it's much more performant. The main advantage is built-in, online historical state pruning; no more runaway state growth. This will require a re-sync if the existing database uses the
hash
scheme.
What's Changed
- merge upstream geth 1.14.x (0-7) releases by @danyalprout in #349
- Add Holocene fork references by @sebastianst in #357
- core/vm: improve precompile overrides functionality by @protolambda in #359
- Cherry pick fix for go1.23 from go-ethereum by @anacrolix in #355
- pebble: Update to v1.1.2 by @ajsutton in #362
- geth/v1.14.8 upstream merge by @sebastianst in #363
- Granite mainnet release (optimistic) by @Inphi in #364
- Update superchain-registry: Fix granite mainnet activation by @Inphi in #367
- triedb/pathdb: support v0 journal format by @protolambda in #368
New Contributors
- @anacrolix made their first contribution in #355
Full Changelog: v1.101315.3...v1.101408.0
🚢 Docker Image: https://us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:v1.101408.0